open-index/open-npm huggingface dataset:
npm package: @nec-baas/ssepush-node
Description: BaaS SSEPush Client for Node.js
Author: NEC Coporation
Latest version: 7.5.0

NECモバイルバックエンド基盤: Node.js 用 SSE Push SDK
====================================================

NECモバイルバックエンド基盤(BaaS)の Node.js 向け SSE Push
クライアントライブラリです。

本ライブラリは Node.js 専用です。ブラウザでは利用できません。

準備
----

本ライブラリを使用するアプリケーションディレクトリ(package.jsonが存在する
ディレクトリ)に移動し、本ライブラリを npm install でインストールしてください。

    $ npm install @nec-baas/ssepush-node --save

使用方法
--------

サンプルが example/client.js にありますので、詳細はこちらを確認ください。

### インスタンスの生成

最初に、本ライブラリを require してください。
(BaaS ライブラリの require と初期化も必要です)

    const SsePush = require('@nec-baas/ssepush-node').SsePush;

以下手順で SsePush インスタンスを生成します。

    const ssePush = new SsePush(Nebula);
    // デバイストークン設定
    ssePush.setDeviceToken(deviceToken);

デバイストークンは、デバイスに固有の識別子です。UUIDなどを使用することを
推奨します(SsePush.uuid()で生成可能)。デバイストークンは同一デバイス
では原則変更しないように、適宜保存するなどしてください。

### 受信チャネル設定

受信チャネルを設定する場合は、setChannels で指定します。

    ssePush.setChannels(['channel1', 'channel2'])

### ハートビート間隔・監視設定

ハートビート間隔の設定は setHeartbeatInterval で行います。
値はサーバ側の設定に合わせてください。

    ssePush.setHeartbeatInterval(30);

ハートビート間隔の2倍の時間が経過してもハートビート受信ができない場合は、
onError でエラー通知されます。

なお、ハートビート間隔を設定しない場合は、ハートビート監視は行われません。

### 登録・受信開始

BaaSサーバへのインスタレーション登録と Push 待ち受けを開始します。
ユーザがログイン状態になっている場合は、インスタレーションは自動的にユーザ
に紐づけされます。

    // BaaSサーバへの登録と Push 待ち受けを開始
    ssePush.start({
    	onMessage: (message) => {
    		// 受信処理
    	},
    	onError: (error) => {
    		// エラー処理
    	}
    });

SSE Push メッセージを受信するたびに onMessage が呼び出されます。
引数でメッセージが渡されます。メッセージは以下のような JSON object
で、本文は "data" に格納されます。

    {
        "type": "message",
        "data": "This is a test.",
        "lastEventId": "",
        "origin": "https://baas.example.com"
    }
 
エラー時は onError が呼び出されますので、適宜回復処理を行ってください。
ステータスコードは error.status に格納されます。

オプション
---------

Proxy サーバを使用する場合は、SsePush コンストラクタの第二引数にオプション
を指定してください (注: 認証付きの Proxy は使用できません)

    const options = { proxy: 'http://proxy.example.com:8080' }
    const ssePush = new SsePush(Nebula, options);

HTTPS接続でかつサーバ側が自己署名証明書を使用している場合は、以下のオプションを指定します。
(非推奨)

    const options = { rejectUnauthorized: false }

その他のオプションについては、[EventSource](https://github.com/EventSource/eventsource)
の README を参照してください。

OSSライセンス
-------------

本モジュールは EventSource v1.0.5 を改造したものを含んでいます。
(lib/eventsource.js)
https://github.com/EventSource/eventsource

改造内容は以下のとおりです。

* oncomment コールバックを追加
* options に agent を追加

ライセンス条件は LICENSE.eventsource を参照してください。
npm package: @nec0ti/librisapi
Description: A REST API for managing a book collection
Author: Necoti Dev
Latest version: 1.0.0

# LibrisAPI

LibrisAPI is a RESTful API for managing your personal book collection.

## Purpose

This API allows you to:

*   Create, retrieve, update, and delete books.
*   Authenticate users with JWT (JSON Web Tokens).

## Documentation

For detailed information on how to use the API, please refer to the [LibrisAPI Documentation](https://docs.librisapi.necoti.dev).

## Getting Started

1.  Clone the repository:

    ```bash
    git clone https://github.com/Nec0ti/LibrisAPI/
    cd LibrisAPI
    ```

2.  Install dependencies:

    ```bash
    npm install
    ```

3.  Set up environment variables:

    Create a `.env` file with the following variables:

    ```
    MONGODB_URI=mongodb+srv://<username>:<password>@<cluster>.mongodb.net/<database>?retryWrites=true&w=majority
    JWT_SECRET=your_jwt_secret_key
    ```

4.  Start the server:

    ```bash
    npm run dev
    ```

## Endpoints

Here are a few basic examples:

*   **Register:** `POST /api/auth/register`
    ```json
    {
      "username": "testuser",
      "password": "testpassword"
    }
    ```

*   **Login:** `POST /api/auth/login`
    ```json
    {
      "username": "testuser",
      "password": "testpassword"
    }
    ```

*   **Get All Books:** `GET /api/books` (requires JWT token in `x-auth-token` header)

## Contributing

We welcome contributions! Please feel free to open issues or submit pull requests.

## License

This project is licensed under the MIT License.
npm package: @nec286/semantic-release
Description: Sharable config for semantic-release
Author: nec286
Latest version: 1.0.3

# @nec286/semantic-release

## Install

```
yarn add -D @nec286/semantic-release
```

## Usage

In your `package.json`

```
"release": {
  "extends": "@nec286/semantic-release"
}
```
npm package: @necesse-modding/cli
Description: CLI tool to quickly generate Necesse mod templates with best practices and VSCode support
Author: YourName
Latest version: 0.9.4

# @necesse-modding/cli

🎮 CLI tool to quickly generate Necesse mod templates with best practices and VSCode support.

## Installation

### Global Installation (Recommended)
```bash
npm install -g @necesse-modding/cli
```

### Using npx (No Installation)
```bash
npx @necesse-modding/cli
```

## Usage

### Interactive Mode (Recommended)
```bash
@necesse-modding/cli --interactive
```

### Quick Start
```bash
@necesse-modding/cli "My Awesome Mod"
```

### With Options
```bash
@necesse-modding/cli "My Mod" \
  --author "YourName" \
  --description "An awesome Necesse mod" \
  --mod-id "mymod" \
  --game-dir "/path/to/necesse/game/directory"
```

## Options

| Option | Alias | Description |
|--------|-------|-------------|
| `--interactive` | `-i` | Interactive mode with prompts |
| `--author <name>` | `-a` | Mod author name |
| `--description <desc>` | `-d` | Mod description |
| `--mod-id <id>` | `-m` | Mod ID (lowercase) |
| `--game-dir <path>` | `-g` | Path to the Necesse game directory |
| `--game-version <version>` | | Target Necesse game version (default: `1.0.2`) |
| `--mod-version <version>` | | Mod version (default: `1.0.0`) |
| `--clientside` | `-c` | Mark mod as client-side only |
| `--output <dir>` | `-o` | Output directory |

## Templates

- **Basic**: Full-featured starting template with example items
- **Item**: Focus on weapons, tools, and items
- **QOL**: Quality of life improvements template
- **Empty**: Minimal setup for advanced users

## Features

✅ Multiple project templates  
✅ VSCode configuration included  
✅ Gradle build system ready  
✅ Auto-copy to Necesse mods folder  
✅ Git initialization  
✅ Example code included  
✅ Cross-platform support  

## After Generation

```bash
cd YourModName
gradle build
```

Or open in VSCode:
```bash
code YourModName
```

Press `Ctrl+Shift+B` to build in VSCode!

## License

MIT
npm package: @necho/js-type
Description: A javascript type check tool
Author: Enoch
Latest version: 1.0.6

# is

> A javascript type checker

```js
is.array([]) //=> true

isNumber('') //=> false
```

## Installation

Using npm

```
$ npm install @necho/js-type
```

Using yarn

```
$ yarn add @necho/js-type
```

## Usage

Commonjs usage

```js
const is = require('@necho/js-type').default;

is.number(7) //=> true
```

ES6 usage
```js
import is from '@necho/js-type';

is.number(7) //=> true
```

Using semantic function
```js
import { isArray } from '@necho/js-type';

isArray('') //=> false
```

## API

### is.{method}

*Basic*

**.string(value)**

**.number(value)**

**.boolean(value)**

**.array(value)**

**.object(value)**

**.date(value)**

**.symbol(value)**


*Boolean*

**.false(value)**

**.true(value)**


*Number*

**.infinite(value)**

**.nan(value)**

**.even(value)**

**.odd(value)**


*Nullish*

**.null(value) / .nil(value)**

**.undefined(value) / .undef(value)**

**.defined(value)**


*Function*

**.function(value)**

**.normalFunction(value)**

**.generatorFunction(value)**

**.asyncFunction(value)**
npm package: @necik11/my-app
Description: This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).
Author: a
Latest version: 0.1.0

# Getting Started with Create React App

This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).

## Available Scripts

In the project directory, you can run:

### `npm start`

Runs the app in the development mode.\
Open [http://localhost:3000](http://localhost:3000) to view it in the browser.

The page will reload if you make edits.\
You will also see any lint errors in the console.

### `npm test`

Launches the test runner in the interactive watch mode.\
See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.

### `npm run build`

Builds the app for production to the `build` folder.\
It correctly bundles React in production mode and optimizes the build for the best performance.

The build is minified and the filenames include the hashes.\
Your app is ready to be deployed!

See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.

### `npm run eject`

**Note: this is a one-way operation. Once you `eject`, you can’t go back!**

If you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.

Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own.

You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it.

## Learn More

You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).

To learn React, check out the [React documentation](https://reactjs.org/).
npm package: @neckarfreunde/webext-messenger
Description: This library provides an RxJS Observable based communication between the different parts of a Web-Extension (background, content, actions).
Author: Robin Thomas
Latest version: 0.3.1

# Webextension Messenger

This library provides an RxJS Observable based communication between the 
different parts of a Web-Extension (background, content, actions).

## Usage

You can find and usage example
[here](https://github.com/neckarfreunde/webextension-messenger/tree/master/example)
npm package: @necode-org/mike
Description: Informative readme tbd. In the meantime, this blog post should cover most of the important stuff: https://blog.necode.org/posts/introducing-mike
Author: Trevor Paley
Latest version: 0.3.8

Informative readme tbd. In the meantime, this blog post should cover most of the important stuff: https://blog.necode.org/posts/introducing-mike
npm package: @necodex/auth_react
Description: Componentes para el manejo de logica de autenticacion en React
Author: Jose Luis Vega
Latest version: 0.1.3

# auth

> Componentes para el manejo de logica de autenticacion en React

[![NPM](https://img.shields.io/npm/v/auth.svg)](https://www.npmjs.com/package/auth) [![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com)

## Install

```bash
npm install --save auth
```

## Usage

```jsx
import React, { Component } from 'react'

import MyComponent from 'auth'
import 'auth/dist/index.css'

class Example extends Component {
  render() {
    return <MyComponent />
  }
}
```

## License
npm package: @necodex/markdown
Description: Markdown Component based on Lexical
Author: Wafo
Latest version: 0.2.4

# @necodex/markdown

Markdown Component based on [Facebook Lexical](https://github.com/facebook/lexical).

## Getting started

To install add `@necodex/markdown` to your `package.json` file or run the command

```bash
npm install --save @necodex/markdown
```

A basic example of the editor component

```typescript
import { MarkdownEditor } from "@necodex/markdown";

export default function MyComponent() {
  // This could come from an async call to the database, an API, etc.
  const markdownString: string = someFunction();
  // const JSONString: string = someFunction();

  const handleChange = (content: string): void => {
    // This function will fire after the latest change.
    // After the milliseconds specified on debounceOnChange.
    // Maybe store it to your database or something else.

    console.log(content); // Either Markdown or JSON.
  };

  return (
    <div>
      <MarkdownEditor
        onChange={handleChange} // Optional. Default is () => {}
        debounceOnChange={250} // Optional. Milliseconds. Default is 500.
        outputFormat="markkdown" // Optional. Either markdown or json. Default is markdown.
        // One or the other. initialMarkdown or initialJSON
        initialMarkdown={markdownString} // Optional. Useful when editing something.
        initialJSON={JSONString} // Optional. Useful when editing something.
      />
    </div>
  );
}
```

A basic example of the display component

```typescript
import { MarkdownDisplay } from "@necodex/markdown";

export default function MyComponent() {
  // This could come from an async call to the database, an API, etc.
  const markdownString: string = someFunction();
  // const JSONString: string = someFunction();

  return (
    <div>
      <MarkdownDisplay 
        // One or the other.
        contentMarkdown={markdownString} // Optional. If left empty only an empty block renders.
        contentJSON={JSONString} // Optional. If left empty only an empty block renders.
      />
    </div>
  );
}
```

## Developing

When installing the dependencies make sure to run the install with the flag `--legacy-peer-deps`
```bash
npm install --legacy-peer-deps
```

Storybook is used for local preview of the components. Make sure to check `/src/stories`
```bash
npm run storybook
```

### TODO

- Fix links (they're not clickable currently)
- Indent capability for lists and others
- Add a way to extend the toolbar plugin
- Setup ESLint for development
- Limit to only one type of content as input

### About

Heavily inspired on this [post](https://dev.to/alexeagleson/how-to-create-and-publish-a-react-component-library-2oe) for the whole setup.
npm package: @necolo/storage
Description: A minimal local storage api that friendly for TS
Author: necolo
Latest version: 1.0.2

# storage

A very simple JavaScript localStorage api for TS.

```
npm i @necolo/storage
```

## Usage

```typescript
import Storage from '@necolo/storage';

// create Storage instance with initialized values
// the default target is localStorage
const storage = new Storage({
  b: false,
  n: 1,
  s: 'sample',
});

// get storage value
const value = storage.get('n'); // 1
// typeof value === 'number'

// set storage value
storage.set('n', 99);
const value2 = storage.get('n'); // 99

// can delete the key
storage.del('n');
storage.get('n'); // will return the default value, which is 1

// clear all
storage.clear();
```

You can also use it for `sessionStorage`
```typescript
const session = new Storage(
  {
    // put initialize value here
    foo: 'bar,
  },
  sessionStorage, // put sessionStorage as the target
);

const value = session.get('foo');
session.set('foo', 'otherValue');
```
npm package: @necrobox/eslint-config
Description: ESLint rules that follow our style guide
Author: FunBox LLC
Latest version: 9.0.0

# @necrobox/eslint-config

[![npm](https://img.shields.io/npm/v/@necrobox/eslint-config.svg)](https://www.npmjs.com/package/@necrobox/eslint-config)

Пакет с правилами для линтера ESLint, соответствующие принятому в компании стайлгайду.

Основан на [конфиге от Airbnb](https://github.com/airbnb/javascript).

## Установка

```bash
npm install --save-dev @necrobox/eslint-config
```

## Использование

Подключить в конфиг рабочего проекта, используя ключ [-c](http://eslint.org/docs/user-guide/command-line-interface#-c---config), 
и передать пути для поиска файлов в качестве аргументов:

```sh
eslint -c node_modules/@necrobox/eslint-config/.eslintrc.js src/app src/sandbox
```

Для линтинга тестов следует использовать отдельный конфиг:

```sh 
eslint -c node_modules/@necrobox/eslint-config/.eslintrc.test.only.js src/tests
```

Также можно создать свой файл `.eslintrc.js`, и доопределить в нём этот конфиг. 
Пример такого доопределения: 

```js
module.exports = {
  extends: '@necrobox',
  env: {
    browser: true
  },
  globals: {
    fetcher: 'readonly',
    System: 'readonly',
    moment: 'readonly'
  },
  settings: {
    'import/resolver': {
      webpack: {
        config: 'config/webpack.config.dev.js',
      }
    }
  },
}
```  

Пример доопределения конфига для тестов:

```
module.exports = {
  extends: '@necrobox/eslint-config/tests',
  globals: {
    __utils__: 'readonly',
  }
}
``` 

Более подробно о том, как устроен файл `.eslintrc.js`, 
и что в нём можно настраивать, можно прочитать [в документации ESLint](https://eslint.org/docs/user-guide/configuring).
npm package: @necrobox/eslint-plugin-no-only-tests
Description: Disallow the use of describe.only() and it.only()
Author: Artem Frolkov
Latest version: 6.0.0

# @necrobox/eslint-plugin-no-only-tests

[![npm](https://img.shields.io/npm/v/@necrobox/eslint-plugin-no-only-tests.svg)](https://www.npmjs.com/package/@necrobox/eslint-plugin-no-only-tests)

**eslint-plugin-no-only-tests** — это плагин ESLint, который проверяет наличие в файлах `describe.only()` и `it.only()`, и в случае их обнаружения показывает предупреждение.

## Установка

Для начала необходимо установить [ESLint](http://eslint.org):

```
$ npm i eslint --save-dev
```

Далее установить сам плагин:

```
$ npm install @necrobox/eslint-plugin-no-only-tests --save-dev
```

## Использование

Необходимо добавить `@necrobox/eslint-plugin-no-only-tests` в раздел `plugins` конфигурационного файла `.eslintrc`.
Можно опустить префикс `eslint-plugin-`:

```json
{
  "plugins": [
    "@necrobox/no-only-tests"
  ]
}
```

Далее настроить правило в разделе `rules`:


```json
{
  "rules": {
    "@necrobox/no-only-tests/no-only": 2
  }
}
```

## Мотивация

Когда разработчик отлаживает тесты локально, он может для упрощения процесса оставить включёнными только те из них,
которые сломаны. Удобнее всего это делать с помощью метода `only` в `it` и `describe`.

Однако, на CI нужно запускать все тесты.
Потому мы включаем в нашем [ESLint-конфиге](https://github.com/necrobox/eslint-config) этот плагин, и он проверяет,
не используется ли метод `only` в файлах с тестами. А сам линтер запускаем с помощью прекоммит-хука,
тем самым блокируя возможность коммита в случае наличия `only` в кодовой базе.
npm package: @necrobox/fazio
Description: A tool to find an npm dep somewhere on your filesystem
Author: Igor Adamenko
Latest version: 2.0.0

# @necrobox/fazio

[![npm](https://img.shields.io/npm/v/@necrobox/fazio.svg)](https://www.npmjs.com/package/@necrobox/fazio)

A tool for sneaking around your filesystem to find the installed npm deps you asking for.

## Installation

```
$ npm install -g @necrobox/fazio
```

## Usage

```
$ fazio -p 'ua-parser-js@0.7.29 || 0.8.0 || 1.0.0' -d ~
```

You may pass as many packages to search for, and as many directories to look through as you want using `-p` & `-d` flags:

```
$ fazio -p 'chokidar@2' -p 'fsevents@<2' -d ~/projects -d ~/work
```

By default Fazio also checks the globally installed deps. If you want to skip it, pass `--no-global-check` flag.

You can use the package via npx without installing the Fazio globally:

```
$ npx @necrobox/fazio --package 'ua-parser-js@0.7.29 || 0.8.0 || 1.0.0' --directory ~ --verbose
npx: installed 5 in 0.908s
Directories to scan:
  /home/ai
  /home/ai/.nvm/versions/node/v14.18.0/lib

× /home/ai/freelance/important-project/node_modules/ua-parser-js@0.7.21
× /home/ai/work/homepage/node_modules/ua-parser-js@0.7.24
→ /home/ai/projects/sandbox/node_modules/ua-parser-js@0.7.29
× /home/ai/projects/igoradamenko.com/node_modules/ua-parser-js@0.7.23

1 package found.
3 packages omitted.
```

## Rationale

[It happens](https://therecord.media/malware-found-in-npm-package-with-millions-of-weekly-downloads/)
that popular npm packages are got compromised and you have to be sure that you don't have one installed
on your machine. Fazio does the job.
npm package: @necrobox/scss-imports-loader
Description: Global imports for SCSS files
Author: Igor Adamenko
Latest version: 4.0.0

# @necrobox/scss-imports-loader

[![npm](https://img.shields.io/npm/v/@necrobox/scss-imports-loader.svg)](https://www.npmjs.com/package/@necrobox/scss-imports-loader)

Лоадер для Вебпака, добавляющий в обрабатываемые файлы `@import`-правила с необходимыми путями.

## Важно

Эта версия лоадера работает с Вебпаком версии 5 и выше.

Если нужна поддержка 4 версии, используйте лоадер версии [3.0.0](https://github.com/necrobox/scss-imports-loader/tree/3.0.0) и ниже.

## Установка

Установить лоадер в проекте:

```bash
npm install --save-dev @necrobox/scss-imports-loader
```

Подключить в конфиге Вебпака так, чтобы он вызывался перед sass-loader, и передать в `options.path` список необходимых 
файлов:

```js
module.exports = {
  // ...
  module: {
    rules: [
      {
        test: /\.scss$/,
        use: [
          // ...
          'sass-loader',
          {
            loader: '@necrobox/scss-imports-loader',
            options: {
              paths: [
                'app/styles/variables/colors',
                'app/styles/variables/breakpoints',
                'app/styles/variables/layout',
                'app/styles/variables/typography',
                'app/styles/mixins/respond-to',
                'app/styles/mixins/placeholder',
                'app/styles/mixins/text-cut',
                'app/styles/mixins/visually-hidden',
              ],
            },
          },
          // ...
        ],
      },
    ],
  },
};
```

## Реализация

Если описать конфиг так, как в примере выше, то во время сборки в начало каждого обрабатываемого SCSS-файла будет 
добавлен следующий набор строк:

```scss
@import 'app/styles/variables/colors';
@import 'app/styles/variables/breakpoints';
@import 'app/styles/variables/layout';
@import 'app/styles/variables/typography';
@import 'app/styles/mixins/respond-to';
@import 'app/styles/mixins/placeholder';
@import 'app/styles/mixins/text-cut';
@import 'app/styles/mixins/visually-hidden';
```

А потому пути в `options.paths` нужно указывать такими, чтобы их смог разрезолвить Вебпак во время сборки. 

В общем случае импортируемые файлы не обязательно должны быть SCSS-файлами. 
Достаточно того, чтобы их смог обработать тот набор лоадеров, что перечислен в конфиге Вебпака.

## Мотивация

При написании стилей на SCSS мы храним различные глобальные переменные и миксины в отдельных файлах. Так или иначе,
большинство из них используется в каждом компоненте, а потому, чтобы не дублировать постоянно импорты, мы решили
найти какой-то способ описать файлы один раз и сделать так, чтобы они подключились везде.

Можно было бы использовать [`additionalData`](https://webpack.js.org/loaders/sass-loader/#additionaldata) у sass-loader,
но вариант с плагином оказался более удобным.
npm package: @necrobox/scss-lint-config
Description: Config for Stylelint SCSS linting
Author: FunBox LLC
Latest version: 8.0.0

# @necrobox/scss-lint-config

[![npm](https://img.shields.io/npm/v/@necrobox/scss-lint-config.svg)](https://www.npmjs.com/package/@necrobox/scss-lint-config)

Пакет с правилами для [Stylelint](https://stylelint.io), соответствующие принятому в компании стайлгайду для SCSS-файлов.

## Установка

Сперва необходимо установить версию Stylelint, удовлетворяющую требованиям, 
описанным в [peerDependencies](./package.json):

```bash
npm install --save-dev stylelint
```

При использовании Stylelint v14 и выше необходимо также установить postcss-scss:

```bash
npm install --save-dev postcss-scss
```

Затем можно устанавливать сам конфиг:

```bash
npm install --save-dev @necrobox/scss-lint-config
```

## Использование

Подключить в конфиг рабочего проекта, передав необходимые [опции](https://stylelint.io/user-guide/cli/):

```bash
stylelint "src/**/*.scss" --cache --config node_modules/@necrobox/scss-lint-config/.stylelintrc
```

Для Stylelint v13 обязательно использовать опцию `--syntax scss`.

Помимо этого можно описать локальный конфиг проекта, основанный на этом:

```js
module.exports = {
  extends: '@necrobox/scss-lint-config/.stylelintrc.json',
  rules: [
    // доопределения правил
  ]
};
```
npm package: @necrobox/scss-vars-loader
Description: SCSS variables for BEM blocks
Author: Igor Adamenko
Latest version: 3.0.0

# @necrobox/scss-vars-loader

[![npm](https://img.shields.io/npm/v/@necrobox/scss-vars-loader.svg)](https://www.npmjs.com/package/@necrobox/scss-vars-loader)

Лоадер для Вебпака, добавляющий в обрабатываемые файлы переменную `$b` с именем текущего БЭМ-блока в качестве значения.

## Установка

Установить лоадер в проекте:

```bash
npm install --save-dev @necrobox/scss-vars-loader
```

Подключить в конфиге Вебпака так, чтобы он вызывался перед sass-loader:

```js
module.exports = {
  // ...
  module: {
    rules: [
      {
        test: /\.scss$/,
        use: [
          // ...
          'sass-loader',
          '@necrobox/scss-vars-loader',
          // ...
        ],
      },
    ],
  },
};
```

## Использование

После настройки переменную `$b` можно использовать при описании стилей:

```scss
.#{$b}__elem_mod_value {
  color: red;
}
```

## Мотивация

При разработке веб-приложений мы используем БЭМ, в том числе и на файловой системе.
Иногда блоки получаются довольно-таки развесистыми, и вдруг всплывает необходимость их переименования. Чтобы не грепать
по всем файлам и не заменять имя блока, мы решили унифицировать его в SCSS-файлах, используя везде переменную `$b`.

Помимо прочего такой подход позволяет генерировать SCSS-файлы по шаблону, не заботясь о правильном имени селектора в них.

## Детали реализации

Во время сборки в начало каждого обрабатываемого файла добавляется подобная строка:

```scss
$b: 'blockname';
```

Чтобы правильно определить имя блока, лоадер проходит по пути до обрабатываемого файла справа навлево 
в поисках первой папки, имя которой не начинается с `_`. Найдя такую папку он и использует её имя 
в качестве значения для `$b`.
npm package: @necrobox/stylelint-rules
Description: A collection of SCSS rules missing in stylelint-scss
Author: Natalia Andreychenko
Latest version: 4.0.0

# @necrobox/stylelint-rules

[![npm](https://img.shields.io/npm/v/@necrobox/stylelint-rules.svg)](https://www.npmjs.com/package/@necrobox/stylelint-rules)

Плагин для [Stylelint](https://stylelint.io/), добавляющий кастомные правила линтинга.

## Установка

```
npm install --save-dev @necrobox/stylelint-rules
```

Помимо этого, очевидно, нужно установить сам Stylelint.

## Список правил

- [declarations-before-nesting](./docs/rules/declarations-before-nesting.ru.md)  
  Следит за тем, чтобы собственные свойства блока всегда были выше вложенных.

- [no-transition-all](./docs/rules/no-transition-all.ru.md)  
  Следит за тем, чтобы внутри свойств `transition` и `transition-property` не использовалось значение `all`.

- [rgba-hex-color-only](./docs/rules/rgba-hex-color-only.ru.md)  
  Следит за тем, чтобы функция `rgba` вызывалась только с hex-нотацией цвета в качестве первого аргумента.

- [selector-max-type](./docs/rules/selector-max-type.md)  
  Ограничивает кол-во селекторов по типу в одном селекторе (совместимо с [@necrobox/scss-vars-loader](https://github.com/necrobox/scss-vars-loader)).
npm package: @nectar-ui/eslint-config
Description: ESLint config for NectarUi.
Author: Brennan Walsh
Latest version: 0.0.17

# @nectar-ui/eslint-config

ESLint configuration for NectarUi.

## Usage

1. Install the `@nectar-ui/eslint-config` package using `npm` or `yarn`.

**Note**: Until [this ongoing issue with ESLint](https://github.com/eslint/eslint/issues/3458") is fixed, you must also install `@rushstack/eslint-patch`.

```sh
npm install @nectar-ui/eslint-config @rushstack/eslint-patch
// or
yarn add @nectar-ui/eslint-config @rushstack/eslint-patch
```

2. Create an ESLint config file (`.eslintrc`) with the root of your project.

```js
require('@rushstack/eslint-patch/modern-module-resolution')

module.exports = {
	root: true,
	extends: [`@nectar-ui`]
}
```
npm package: @nectar-ui/prettier-config
Description: Prettier config for NectarUi.
Author: Brennan Walsh
Latest version: 0.0.17

# @nectar-ui/prettier-config

Prettier configuration for NectarUi.

## Usage

1. Install the `@nectar-ui/prettier-config` package using `npm` or `yarn`.

```sh
npm install @nectar-ui/prettier-config
// or
yarn add @nectar-ui/prettier-config
```

2. Within your `package.json`, set the `prettier` key to `@nectar-ui/prettier-config`

```diff
+  "prettier": "@nectar-ui/prettier-config",
```