open-index/open-npm huggingface dataset:
npm package: @28stoneconsulting/design-system
Description: 28Stone Design System
Author: Alexey Valner
Latest version: 2.0.1

# 28Stone Design System

28Stone Design System is a reusable component library that helps 28Stone employees to build internal application UIs faster. The goal is to make building durable UIs more productive and satisfying.

The latest version is published [here](https://28stoneconsulting.github.io/design-system).

## Install

28SDS components are written in React, and its stories are written in [Component Story Format](https://medium.com/storybookjs/component-story-format-66f4c32366df).

Add 28SDS to your project.

`npm install --save @28stoneconsulting/design-system`
or
`yarn add @28stoneconsulting/design-system`

To use the legacy v4 of material-ui:

`npm install --save @28stoneconsulting/design-system@1.0.18`
or
`yarn add @28stoneconsulting/design-system@1.0.18`

### **Use**

28SDS is using material-ui theming approach and emotion for syling. Add the following imports into the ts/js file:

```js
import CssBaseline from '@mui/material/CssBaseline';
import { ThemeProvider as MuiThemeProvider, StyledEngineProvider } from '@mui/material/styles';
import { themeDark as theme, Button, Badge } from '@28stoneconsulting/design-system';
import { ThemeProvider } from '@emotion/react';
```

and use them like so

```jsx
const example = () => (
  <StyledEngineProvider injectFirst>
    <MuiThemeProvider theme={theme}>
      <CssBaseline />
      <ThemeProvider theme={theme}>
        <div>
          <Button appearance="primary" onClick={() => {}}>
            Do something
          </Button>
          <Badge onClick={() => {}}>Cool</Badge>
        </div>
      </ThemeProvider>
    </MuiThemeProvider>
  </StyledEngineProvider>
);
```

For legacy version <=1.0.18 use 28SDS like so:

```js
import CssBaseline from '@material-ui/core/CssBaseline/CssBaseline';
import { StylesProvider, MuiThemeProvider } from '@material-ui/core/styles';
import { ThemeProvider } from '@emotion/react';
import { themeDark as theme, Button, Badge } from '@28stoneconsulting/design-system';
```

and use them like so

```jsx
const example = () => (
  <StylesProvider injectFirst>
    <MuiThemeProvider theme={theme}>
      <CssBaseline />
      <ThemeProvider theme={theme}>
        <div>
          <Button appearance="primary" onClick={() => {}}>
            Do something
          </Button>
          <Badge onClick={() => {}}>Cool</Badge>
        </div>
      </ThemeProvider>
    </MuiThemeProvider>
  </StylesProvider>
);
```

The codesandbox example can be accessed [here](https://codesandbox.io/s/28stone-design-system-usage-expample-1qdbn?file=/src/App.tsx)

### **Run and develop 28SDS locally**

Clone the [28SDS GitHub project](https://github.com/28StoneConsulting/design-system) then start Storybook.

`yarn && yarn storybook`

### **Deployment**

`yarn build-storybook`

`yarn build-docs`

Push changes and PR into main.

The version number will bump automatically.

The CHANGELOG.md will update automatically.

### **Resources**

- [GitHub repository](https://github.com/28StoneConsulting/design-system)
npm package: @2anki/csv-to-apkg
Description: convert CSV files to Anki flashcards (APKG)
Author: Alexander Alemayhu
Latest version: 1.4.9

# CSV to APKG

A small library to convert CSV files to APKG files.

## Dependencies

This project is part of [2anki.net](https://2anki.net/) and uses the following dependencies:

-   [2anki/create_deck](https://github.com/2anki/create_deck)
-   [2anki/server](https://github.com/2anki/2anki.net)

Make sure these projects are available one level above this project:

```
git clone https://github.com/2anki/2anki.net ../server
git clone https://github.com/2anki/create_deck ../create_deck
```

## Install

> npm i @2anki/csv-to-apkg

## Usage

This project was developed using [TDD](https://www.goodreads.com/book/show/387190.Test_Driven_Development), so checkout the [tests](./src/csv-to-apkg.test.ts) for examples on expected usage.

## How does it work?

`csv-to-apkg` reads your comma delimited data. It takes the first column and treats it as the front of the card. The remaining columns are the back of the card.

## Limitations

Cloze deletion are not supported.

## License

Unless otherwise specified in the source:

The code is licensed under the [MIT](./LICENSE) Copyright (c) 2023, Alexander Alemayhu.
npm package: @2bad/axiom
Description: Effortless TypeScript linting with zero configuration
Author: 2BAD
Latest version: 1.0.3

# Axiom

Effortless TypeScript linting with zero configuration

## Features

- Zero configuration required
- Comprehensive set of ESLint rules based on best practices
- Automatic management of ESLint plugins
- Customizable plugin selection
- Simplified setup process
- Consistent code style across projects

## Overview

Axiom is a zero-configuration ESLint package that not only provides the best set of rules (inspired by StandardJS) but also manages other ESLint plugins. This removes the need for discussing and configuring ESLint rules, as well as maintaining and version tracking of various plugins.

With ESLint v9 flat configs, configurations can become complex, and mistakes can happen even in the setup. Axiom simplifies this process, allowing developers to focus on writing code rather than configuring linters.

## Quick Start

1. Install Axiom:

```bash
npm install --save-dev @2bad/axiom
```

2. Create an `eslint.config.mjs` file in your project root:

```javascript
import { axiom } from '@2bad/axiom'

export default axiom(import.meta.dirname)
```

You can also customize which plugins to enable:

```javascript
import { axiom } from '@2bad/axiom'

// Disable vitest and node plugins
export default axiom(import.meta.dirname, {
  vitest: false,
  node: false
})

// Or enable only specific plugins
export default axiom(import.meta.dirname, {
  import: true,
  jsdoc: false,
  neostandard: false,
  node: false,
  promise: false,
  vitest: false
})
```

3. Add a lint script to your `package.json`:

```json
{
  "scripts": {
    "lint": "eslint .",
    "lint:fix": "eslint . --fix"
  }
}
```

4. Run the linter:

```bash
npm run lint
```

## Why Axiom?

Axiom aims to solve the following problems:

1. **Configuration Overload**: With the multitude of ESLint plugins and rules available, configuring a linter can be overwhelming. Axiom provides a curated set of rules out of the box.

2. **Plugin Management**: Keeping track of multiple ESLint plugins, their versions, and configurations can be time-consuming. Axiom manages this for you.

3. **Consistency**: By providing a standard set of rules, Axiom ensures consistency across projects and team members.

4. **Focus on Code**: Spend less time configuring and more time coding. Axiom handles the linting details so you can focus on writing great JavaScript.

## Why "Axiom"?

In mathematics and logic, an axiom is a statement that is taken to be true without proof. Similarly, Axiom provides a set of linting rules that are considered best practices without the need for debate or configuration.

## Contributing

Contributions are welcome! Please check out the [issues](https://github.com/2bad/axiom/issues) or submit a pull request.
npm package: @2bad/tsconfig
Description: Shared TypeScript config
Author: 2BAD
Latest version: 3.0.2

# tsconfig

Shared [TypeScript config](https://www.typescriptlang.org/docs/handbook/tsconfig-json.html) for our projects

## Install

```
$ npm install --save-dev @2bad/tsconfig
```

## Usage

`tsconfig.json`

```json
{
  "extends": "@2bad/tsconfig",
  "compilerOptions": {
    "outDir": "build",
    "baseUrl": "source"
  }
}
```

If you're willing to use path mapping, you should install [tsc-alias](https://github.com/justkey007/tsc-alias) and update the configuration accordingly.

```json
{
  "extends": "@2bad/tsconfig",
  "compilerOptions": {
    "outDir": "build",
    "baseUrl": "source",
    "paths": {
      "~/*": ["./*"]
    }
  },
  "tsc-alias": {
    "resolveFullPaths": true
  }
}
```
npm package: @2bit/mailer
Description: thin wrapepr of nodemailer
Author: ISHII 2bit
Latest version: 0.0.1

# @2bit/mailer

thin wapper of nodemailer

## How to use

```typescript
import Mailer from '@2bit/mailer';

const mailer = new Mailer({
    user: "you@example.com",
    pass: "SMTP_PASSWORD",
});

mailer.send("TITLE", "THIS\nIS\nBODY", {
    category: "topic", // added alias address like you+topic@example.com
    cc: ["cc@example.com", "other@example.com"],
    bcc: ["bcc@example.com"],
    attachments: [
        {
            path: "/path/to/file",
            name: "filename"
        }
    ]
});

```
npm package: @2bit/osc
Description: osc client/server written by typescript
Author: ISHII 2bit
Latest version: 0.0.7

# @2bit/osc

osc client/server written by typescript

* depends on [osc-min](https://www.npmjs.com/package/osc-min)
* influened by [node-osc](https://www.npmjs.com/package/node-osc)
* **this package is in development phase**

## install

```
npm i @2bit/osc
```

## How to use

```typescript

import * as Osc from '../index';

const server = new Osc.Server(33333, {
    host: '0.0.0.0',
});

server.on('/test1', (args) => {
    console.log(... args);
});

server.on('/test2', (args) => {
    console.log(... args);
});

server.on('message', (address, args) => {
    console.log(address, ... args); // /test1 and /test2 will be emit
});

server.on('leaked', (address, args) => {
    console.log(address, ... args); // /test2 will be emit
});

const client = new Osc.Client('localhost', 33333);
client.send('/test1', 1, 2, false, 'hoge');
client.send('/test2', 2.3, true, 'hoge');

```

## API

### Client

* `constructor(host: string, port: uint16, options?: { maxMspCompatible?: boolean = false, recognitionInt?: boolean = false })`

if set `maxMspCompatible` true, then floating point number will be float, else be double.

if set `recognitionInt` false, then all number will be float or double (depends `maxMspCompatible`.)

* `async send(message: Osc.MessageInterface): Promise<number>`
* `async send(message: Osc.BundleInterface): Promise<number>`
* `async send(address: string, args: Osc.ArgumentLike[]): Promise<number>`
* `async send(address: string, ... args: Osc.ArgumentLike[]): Promise<number>`

returns bytes is size of sent packet.

### Server

* `constructor(public readonly port: number, options?: { host?: string = '0.0.0.0', strict_mode?: boolean = true })`

* `on(event: 'bind', callback: (with_reuseAddr: boolean) => void): this`
* `on(event: 'listening', callback: () => void): this`
* `on(event: 'error', callback: (err: Error) => void): this`
* `on(event: 'message', listener: (address: string, args: ArgumentArray, rinfo: dgram.RemoteInfo) => void): this`
* `on(event: 'leaked', listener: (address: string, args: ArgumentArray, rinfo: dgram.RemoteInfo) => void): this`
* `on(event: 'bundle', listener: (bundle: Osc.BundleInterface, rinfo: dgram.RemoteInfo) => void): this`
* `on(event: 'parse_error', listener: (err: Error, buffer: Buffer, rinfo: dgram.RemoteInfo) => void): this`
* `on(event: string, listener: (args: ArgumentArray, rinfo: dgram.RemoteInfo) => void): this`

### Message

TODO

### Bundle

TODO
npm package: @2bit/slacker
Description: tiny class to post message to slack
Author: ISHII 2bit
Latest version: 0.0.1

# @2bit/slacker

## How to use

```typescript
import Slacker from '@2bit/slacker';

const slacker = new Slacker('SLACK_TOKEN', 'SLACK_CHANNEL_NAME');

slacker.post('TEXT'); // 

slacker.post('MENTIONED TO CHANNEL', true); // 

```