open-index/open-npm huggingface dataset:
npm package: @leomax/cli
Description: ## API
Author: Dmitry Remezov
Latest version: 0.0.2

# @leomax/webpack

## API

### Rule

Правило обработки какого-либо типа файла

#### Интерфейсы и типы

```
type TUseEntry = string | IUseEntry;
type TRuleOptions = TUseEntry | IRuleSchema;
interface IUseEntry {
  loader: string;
  options?: any;
}
interface IRuleSchema {
  test?: Condition;
  issuer?: Condition;
  include?: Condition;
  exclude?: Condition;
  resource?: Condition;

  use?: TUseEntry[];
  loader?: string;
  options?: any;

  oneOf?: IRuleSchema;
  rules?: IRuleSchema;
  enforce?: 'pre' | 'post';
  noParse?: RegExp | RegExp[];
}
class Rule (name: string, options: TRuleOptions);
```

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

```
// Простейшее правило (имя лоадера строкой)
new Rule('typescript-without-extension', 'ts-loader');

// Одиночный лоадер с указанием расширения файла
new Rule('js-babel', {
  test: /\.js$/,
  loader: 'babel-loader'
});

// Несколько лоадеров
new Rule('rule-with-multiple-loaders', {
  test: /\.css$/,
  use: [
    'style-loader',
    {
      loader: 'css-loader',
      options: {
        modules: true
      }
    }
  ]
});

// Вложенные правила (стандартный вариант)
new Rule('deep-rule', {
  test: /\.jsx?$/,
  exclude: /node_modules/,
  rules: [
    {
      enforce: 'pre',
      loader: 'eslint-loader'
    }, {
      loader: 'babel-loader',
      options: {
        presets: ['es2015', 'stage-0', 'react']
      }
    }
  ]
});

// Вложенные правила (подклассы и упрощенная запись)
new Rule('deep-rule-more', {
  test: /\.jsx?$/,
  exclude: /node_modules/,
  rules: [
    new Rule('deep-rule-eslint', {
      enforce: 'pre',
      loader: 'eslint-loader'
    }),
    'babel-loader'
  ]
});
```

### Entry

Класс для манипуляция над точками входа

#### Интерфейсы и типы
npm package: @leomax/graphql
Description: ## API
Author: Dmitry Remezov
Latest version: 0.0.4

# @leomax/webpack

## API

### Rule

Правило обработки какого-либо типа файла

#### Интерфейсы и типы

```
type TUseEntry = string | IUseEntry;
type TRuleOptions = TUseEntry | IRuleSchema;
interface IUseEntry {
  loader: string;
  options?: any;
}
interface IRuleSchema {
  test?: Condition;
  issuer?: Condition;
  include?: Condition;
  exclude?: Condition;
  resource?: Condition;

  use?: TUseEntry[];
  loader?: string;
  options?: any;

  oneOf?: IRuleSchema;
  rules?: IRuleSchema;
  enforce?: 'pre' | 'post';
  noParse?: RegExp | RegExp[];
}
class Rule (name: string, options: TRuleOptions);
```

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

```
// Простейшее правило (имя лоадера строкой)
new Rule('typescript-without-extension', 'ts-loader');

// Одиночный лоадер с указанием расширения файла
new Rule('js-babel', {
  test: /\.js$/,
  loader: 'babel-loader'
});

// Несколько лоадеров
new Rule('rule-with-multiple-loaders', {
  test: /\.css$/,
  use: [
    'style-loader',
    {
      loader: 'css-loader',
      options: {
        modules: true
      }
    }
  ]
});

// Вложенные правила (стандартный вариант)
new Rule('deep-rule', {
  test: /\.jsx?$/,
  exclude: /node_modules/,
  rules: [
    {
      enforce: 'pre',
      loader: 'eslint-loader'
    }, {
      loader: 'babel-loader',
      options: {
        presets: ['es2015', 'stage-0', 'react']
      }
    }
  ]
});

// Вложенные правила (подклассы и упрощенная запись)
new Rule('deep-rule-more', {
  test: /\.jsx?$/,
  exclude: /node_modules/,
  rules: [
    new Rule('deep-rule-eslint', {
      enforce: 'pre',
      loader: 'eslint-loader'
    }),
    'babel-loader'
  ]
});
```

### Entry

Класс для манипуляция над точками входа

#### Интерфейсы и типы
npm package: @leomax/server
Description: ## API
Author: Dmitry Remezov
Latest version: 0.0.1

# @leomax/webpack

## API

### Rule

Правило обработки какого-либо типа файла

#### Интерфейсы и типы

```
type TUseEntry = string | IUseEntry;
type TRuleOptions = TUseEntry | IRuleSchema;
interface IUseEntry {
  loader: string;
  options?: any;
}
interface IRuleSchema {
  test?: Condition;
  issuer?: Condition;
  include?: Condition;
  exclude?: Condition;
  resource?: Condition;

  use?: TUseEntry[];
  loader?: string;
  options?: any;

  oneOf?: IRuleSchema;
  rules?: IRuleSchema;
  enforce?: 'pre' | 'post';
  noParse?: RegExp | RegExp[];
}
class Rule (name: string, options: TRuleOptions);
```

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

```
// Простейшее правило (имя лоадера строкой)
new Rule('typescript-without-extension', 'ts-loader');

// Одиночный лоадер с указанием расширения файла
new Rule('js-babel', {
  test: /\.js$/,
  loader: 'babel-loader'
});

// Несколько лоадеров
new Rule('rule-with-multiple-loaders', {
  test: /\.css$/,
  use: [
    'style-loader',
    {
      loader: 'css-loader',
      options: {
        modules: true
      }
    }
  ]
});

// Вложенные правила (стандартный вариант)
new Rule('deep-rule', {
  test: /\.jsx?$/,
  exclude: /node_modules/,
  rules: [
    {
      enforce: 'pre',
      loader: 'eslint-loader'
    }, {
      loader: 'babel-loader',
      options: {
        presets: ['es2015', 'stage-0', 'react']
      }
    }
  ]
});

// Вложенные правила (подклассы и упрощенная запись)
new Rule('deep-rule-more', {
  test: /\.jsx?$/,
  exclude: /node_modules/,
  rules: [
    new Rule('deep-rule-eslint', {
      enforce: 'pre',
      loader: 'eslint-loader'
    }),
    'babel-loader'
  ]
});
```

### Entry

Класс для манипуляция над точками входа

#### Интерфейсы и типы
npm package: @leomax/utils
Description: ## Node
Author: Dmitry Remezov
Latest version: 0.0.3

# @leomax/utils

## Node

Функции для упрощения работы с node-окружением.

```
import { node } from '@leomax/utils';
```

### getRootDir

Возвращает корневую директорию проекта (если возможно)

```
import { getRootDir } from '@leomax/utils/node';

getRootDir(); // путь к корню проекта
// or
node.getRootDir();
```

#### Аргументы

1. **cwd**: _`string`_ - исходная точка поиска.
  - По-умолчанию: `process.cwd()` (папка, из которой запущен скрипт)

## Functions

Различные хелперы (будет часто менятся, юзайте декораторы)

```
import { functions } from '@leomax/utils';
```

### <a name="func-memorize"></a>memorize

Кеширует функцию

```
import { memorize } from '@leomax/utils/functions';

function myFunc (count: number): number {
  if (count < 2) {
    return 1;
  }
  return count + myFunc(count - 1);
}
memorize(myFunc);
// or
functions.memorize(myFunc);
```

#### Аргументы

1. **value**: *`Function`* - функция
2. **keyGetter**: *`(...args: any[]) => any`* - функция, получающая ключ по аргументам
  - По-умолчанию ключ, - первый аргумент

## Decorators

Декораторы. Просто декораторы.

```
import { decorators } from '@leomax/utils';
```

### memorize

```
import { memorize } from '@leomax/utils/decorators';

class {
  @memorize()
  // or @decorators.memorize()
  myMethod () {
    // ...
  }
}
```

#### Аргументы [тут](#func-memorize)
npm package: @leomax/webpack
Description: ## API
Author: Dmitry Remezov
Latest version: 0.0.1

# @leomax/webpack

## API

### Rule

Правило обработки какого-либо типа файла

#### Интерфейсы и типы

```
type TUseEntry = string | IUseEntry;
type TRuleOptions = TUseEntry | IRuleSchema;
interface IUseEntry {
  loader: string;
  options?: any;
}
interface IRuleSchema {
  test?: Condition;
  issuer?: Condition;
  include?: Condition;
  exclude?: Condition;
  resource?: Condition;

  use?: TUseEntry[];
  loader?: string;
  options?: any;

  oneOf?: IRuleSchema;
  rules?: IRuleSchema;
  enforce?: 'pre' | 'post';
  noParse?: RegExp | RegExp[];
}
class Rule (name: string, options: TRuleOptions);
```

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

```
// Простейшее правило (имя лоадера строкой)
new Rule('typescript-without-extension', 'ts-loader');

// Одиночный лоадер с указанием расширения файла
new Rule('js-babel', {
  test: /\.js$/,
  loader: 'babel-loader'
});

// Несколько лоадеров
new Rule('rule-with-multiple-loaders', {
  test: /\.css$/,
  use: [
    'style-loader',
    {
      loader: 'css-loader',
      options: {
        modules: true
      }
    }
  ]
});

// Вложенные правила (стандартный вариант)
new Rule('deep-rule', {
  test: /\.jsx?$/,
  exclude: /node_modules/,
  rules: [
    {
      enforce: 'pre',
      loader: 'eslint-loader'
    }, {
      loader: 'babel-loader',
      options: {
        presets: ['es2015', 'stage-0', 'react']
      }
    }
  ]
});

// Вложенные правила (подклассы и упрощенная запись)
new Rule('deep-rule-more', {
  test: /\.jsx?$/,
  exclude: /node_modules/,
  rules: [
    new Rule('deep-rule-eslint', {
      enforce: 'pre',
      loader: 'eslint-loader'
    }),
    'babel-loader'
  ]
});
```

### Entry

Класс для манипуляция над точками входа

#### Интерфейсы и типы