open-index/open-npm huggingface dataset:
npm package: @mega-apps/node-ex-win32-x64-msvc
Description: This is the **x86_64-pc-windows-msvc** binary for `node-ex`
Latest version: 1.0.0-alpha.1

# `@mega-apps/node-ex-win32-x64-msvc`

This is the **x86_64-pc-windows-msvc** binary for `node-ex`
npm package: @mega-apps/package-sort
Description: package.json 的格式库（独立版本，不依赖任何包）
Latest version: 1.0.2

# @mega-apps/package-sort

package.json 的格式库（独立版本，不依赖任何包）

<p align="left">
  <a href="https://www.npmjs.com/package/@mega-apps/cli"><img src="https://img.shields.io/npm/dm/@mega-apps/cli" alt="Downloads"></a>
  <a href="https://www.npmjs.com/package/@mega-apps/cli"><img src="https://img.shields.io/npm/v/@mega-apps/cli" alt="Version"></a>
  <a href="https://www.npmjs.com/package/@mega-apps/cli"><img src="https://img.shields.io/npm/l/@mega-apps/cli" alt="License"></a>
</p>

## 特性

- 完全兼容 `sort-package-json`

## 安装

```bash
yarn add @mega-apps/sortPackageJson
```

## 应用

```js
// "@mega-apps/package-sort" 提供了 sortPackageJson 函数，
import { sortPackageJson } from "@mega-apps/package-sort";

const packageJsonString = `{
  "dependencies": {
    "sort-package-json": "1.0.0",
    "sort-object-keys": "1.0.0"
  },
  "version": "1.0.0",
  "name": "my-awesome-project"
}`

console.log(sortPackageJson(packageJsonString))
/* => string:
{
  "name": "my-awesome-project",
  "version": "1.0.0",
  "dependencies": {
    "sort-object-keys": "1.0.0",
    "sort-package-json": "1.0.0"
  }
}
*/

const packageJsonObject = JSON.parse(packageJsonString)
console.log(sortPackageJson(packageJsonObject))
/* => object:
{
  name: 'my-awesome-project',
  version: '1.0.0',
  dependencies: {
    'sort-object-keys': '1.0.0',
    'sort-package-json': '1.0.0'
  }
}
*/


```

## 变更日志

[CHANGELOG](./CHANGELOG.md)
npm package: @mega-apps/test-cli-demo
Description: Mom builder for all mega modules apps. The recommended basic operation dependency package is attached, and users can check and repair defects in actual applications.
Author: sunzhifeng
Latest version: 1.3.6-beta.7

# @mega-apps/cli

Mom Web 应用统一构建工具

> 附带推荐的基础运行依赖包，开发者可以在实际使用中查缺补漏。

<p align="left">
  <a href="https://www.npmjs.com/package/@mega-apps/cli"><img src="https://img.shields.io/npm/dm/@mega-apps/cli" alt="Downloads"></a>
  <a href="https://www.npmjs.com/package/@mega-apps/cli"><img src="https://img.shields.io/npm/v/@mega-apps/cli" alt="Version"></a>
  <a href="https://www.npmjs.com/package/@mega-apps/cli"><img src="https://img.shields.io/npm/l/@mega-apps/cli" alt="License"></a>
</p>


## 特性

- [x] 重点支持使用`Nuxt脚手架`创建的项目(附带推荐依赖包)
- [x] 支持使用`VueCLI脚手架`创建的项目（不附带依赖包）
- [x] 自动识别`Nuxt项目`及`VueCLI项目`
- [x] 注入`VueLoader`, 实现 Vue 开启组件名称自动命名与开发环境统一。
- [x] 注入`Vue补丁`, 实现嵌套子布局路由正常（Keepalive情况下)。
- [x] 注入`Module.prototype.require`, 兼容依赖包查找
- [x] 注入项目规范检测及修补机制
- [x] 依赖安装加速控制(.npmrc, .yarnrc) 适用于npm中国镜像站
- [x] 推荐使用`Yarn`或者`pnPm`来管理依赖
- [x] 集成项目、代码规范依赖；如：`ls-lint`, `eslint`, `stylelint`, ...
- [x] 集成`Jest`, `Playwright`, `Vitest` 等测试框架
- [x] 集成`TypeScript`引擎
- [x] 集成`TailwindCSS`，`PostCSS`, `LESS`, `SASS` 等引擎
- [x] 集成`@types` 类型库
- [x] 集成 `Nuxtjs` >= 2.15.8, `Nuxt Libs` 常用库: https://modules.nuxtjs.org/
- [x] 集成适用于`Webpack`, `Vite` 常用构建工具
- [x] 集成各种`Mock`工具，支持`HTTP/HTTPS`, `WebSocket`, `Native Mock`
- [x] 集成`MegaMom`平台的各种插件/库/模块. 如：[`@mega-apps/nuxt-plugin-mom`](//www.npmjs.com/package/@mega-apps/nuxt-plugin-mom)


## 安装

```bash

# 推荐使用 Yarn 来安装依赖

yarn add @mega-apps/cli --dev

# 或使用 pnPm 安装依赖

pnpm add -D @mega-apps/cli
```

## 配置

```js
// package.json 文件
{
  // 修改 package.json 中的配置
  // ...
    "scripts": {
    "dev": "mom",
    "build": "mom generate"
    // ...
  },
}
```

## 应用

### 如何扩展 nuxt.config.js

```js
// "@mega-apps/cli" 提供了 nuxtConfigExtend 函数 及 momMerge 函数
// momMerge 函数的原型：
// import momMerge from "deepmerge";
// export { momMerge };

import { nuxtConfigExtend, momMerge } from "@mega-apps/cli";

```

### 默认提供了基础的nuxt.config 配置

```js
// 引入基础的nuxt.config.配置
import { generateBaseConfig, def } from "@mega-apps/cli/config/nuxt.config";
```

### 如何生成一个新的配置

```js

// 引入基础的nuxt.config.配置
import { generateBaseConfig, def } from "@mega-apps/cli/config/nuxt.config";

// def 函数，是一个兼容的快捷定义函数


const baseCfg = generateBaseConfig({
  supportESLint: false,
  supportStyleLint: false,
  supportTypeScript: false,
  supportTailwindCSS: false,
});

// 构造新的 nuxt.config
const config = nuxtConfigExtend([
  {},
  def(1, {})
], baseCfg);

// 导出配置
export default config;
```

### 如何对node-sass 进行配置

```js
import {getDefaultSassImplementation } from "@mega-apps/cli/config/nuxt.config";

/**
 * 获得默认的Sass解析器
 * @param defaultPkg, 默认值：node-sass, 可选值：sass
 * @returns module.exports
 * @note 关于node-sass的版本要根据nodejs的版本指定，参见：https://www.npmjs.com/package/node-sass 内的版本号对应说明
 *
```

### 如何查看基础的配置内容

基础配置存放到： `"@mega-apps/cli/config/nuxt.config.js"`

## 变更日志

[CHANGELOG](./CHANGELOG.md)
npm package: @mega-design/icons
Description: Mega-design icons
Author: sunzhifeng
Latest version: 0.0.0-alpha.54

# `@mega-design/icons`

Mega-design icons

<p align="left">
  <a href="https://www.npmjs.com/package/@mega-design/icons"><img src="https://img.shields.io/npm/dm/@mega-design/icons" alt="Downloads"></a>
  <a href="https://www.npmjs.com/package/@mega-design/icons"><img src="https://img.shields.io/npm/v/@mega-design/icons" alt="Version"></a>
  <a href="https://www.npmjs.com/package/@mega-design/icons"><img src="https://img.shields.io/npm/l/@mega-design/icons" alt="License"></a>
</p>

## Usage
npm package: @mega-design/lowcode-bpm-designer
Description: 平台流程设计器核心代码
Latest version: 1.0.0-pre.14

# ych-bpm-designer

平台流程设计器核心代码

npm config set registry http://49.233.13.208:8081/repository/npm_yuncheng/

npm config list

npm publish

npm config set registry https://registry.npm.taobao.org/
npm package: @mega-design/ui-vue
Description: Mega Design UI for Vue
Author: sunzhifeng
Latest version: 0.9.0-alpha.375

<h1 align="center">Mega Design Vue</h1>

<p align="left">
  <a href="https://www.npmjs.com/package/@mega-design/ui-vue"><img src="https://img.shields.io/npm/dm/@mega-design/ui-vue" alt="Downloads"></a>
  <a href="https://www.npmjs.com/package/@mega-design/ui-vue"><img src="https://img.shields.io/npm/v/@mega-design/ui-vue" alt="Version"></a>
  <a href="https://www.npmjs.com/package/@mega-design/ui-vue"><img src="https://img.shields.io/npm/l/@mega-design/ui-vue" alt="License"></a>
</p>

## 特性

- [x] 依托Ant Design的交互语言和视觉风格。
- [x] 开箱即用的高质量 Vue 组件。
- [x] 基础与[Ant Design of React/Vue](http://ant-design.gitee.io/docs/spec/introduce-cn)设计工具体系。
- [ ] 自适应Vue版本(2.x, 3.x), 不需要手动指定版本

## 支持环境

- 现代浏览器和 IE9 及以上（需要 [polyfills](https://www.antdv.com/docs/vue/getting-started-cn/#兼容性)）。
- 支持服务端渲染。
- [Electron](https://electronjs.org/)

## 安装

### 使用 npm 或 yarn 安装

```bash
$ npm install @mega-design/ui-vue --save
```

```bash
$ yarn add @mega-design/ui-vue
```

如果你的网络环境不佳，推荐使用 [cnpm](https://github.com/cnpm/cnpm)。

## 使用

### 按需加载

* 使用 [babel-plugin-import](https://github.com/ant-design/babel-plugin-import)（推荐）
    ```json5
    // .babelrc or babel-loader option
    {
      "plugins": [
        ["import", { "libraryName": "@mega-design/ui-vue", "libraryDirectory": "es", "style": "css" }] // `style: true` 会加载 less 文件
      ]
    }
    ```
    然后只需从 @mega-design/ui-vue 引入模块即可，无需单独引入样式。等同于下面手动引入的方式。
    ```js
    // babel-plugin-import 会帮助你加载 JS 和 CSS
    import { Button } from '@mega-design/ui-vue';
    ```
* 手动引入
    ```js
    import Button from '@mega-design/lib/button';      // 加载 JS
    import '@mega-design/lib/button/style/css';        // 加载 CSS
    // import '@mega-design/lib/button/style';         // 加载 LESS    
    ```

## 链接

- [组件帮助文档](http://10.252.78.220:30040/component)
- [Vue 官方文档](https://cn.vuejs.org/)

## 生态

| Project | Description |
| --- | --- |
| [vue-ref](https://github.com/vueComponent/vue-ref) | 您可以使用回调来获取组件的引用，类似 react |
npm package: @mega-tool/create-mega-app
Description: 让你仅通过一行命令，即可构建现代化的 Web 应用、原生 App 应用、插件、扩展等
Author: sunzhifeng
Latest version: 1.9.0

# `@mega-tool/create-mega-app`

让你仅通过一行命令，即可构建现代化的 Web 应用、原生 App 应用、插件、扩展等。

- 可以在 macOS、Windows、Linux 上良好运行。
- 支持后期扩展

## 快速上手

Create Mega App 让你专注于编码本身，不用操心框架、构建工具、代码规范、配置等内容。

例如：如你需要创建名称为`my-app`的项目，请运行如下命令

### NPX

```sh
npx @mega-tool/create-mega-app my-app
```

_([npx](https://medium.com/@maybekatz/introducing-npx-an-npm-package-runner-55f7d4bd282b) comes with npm 5.2+ and higher, see [instructions for older npm versions](https://gist.github.com/gaearon/4064d3c23a77c74a3614c498a8bb1c5f))_

### NPM

```sh
npm init @mega-tool/mega-app my-app
```

_`npm init <initializer>` is available in npm 6+_

### Yarn

```sh
yarn create @mega-tool/mega-app my-app
```

_[`yarn create <starter-kit-package>`](https://yarnpkg.com/lang/en/docs/cli/create/) is available in Yarn 0.25+_

## 发展路线

### Ver 1.x

- [x] 核心脚手架引擎正常运行
- [x] 引擎：支持常规的 Nuxt 官方项目模板
- [x] 引擎：支持动态模板依赖，仅仅依赖模板的 ID

**以下是根据模板应用类型划分的发展节点，根据发展，再细化各能力节点**

### 应用模板

- [ ] （JS）支持创建 Mega 常用的 云应用、云子应用
- [ ] （JS）支持创建 Mega 常用的 Web 应用
- [ ] （混合开发，Android/iOS）支持创建 Mega 常用的移动 App 应用
- [ ] （JS）支持创建 Mega 常用的小程序应用
- [ ] （JS）支持创建 Mega 常用的公众号应用

### 插件模板

- [ ] （JS）支持创建 Mega Web 应用的插件
  - [ ] 支持创建 Mega Nuxt 插件
  - [ ] 支持创建 Mega Nuxt 中间件
- [ ] （混合开发，Android/iOS）支持创建 Mega 移动应用的原生 Native 开发插件
- [ ] （JS）支持创建 Mega 小程序应用插件

### SDK 模板

- [ ] （JS）支持创建原生 JS-SDK 模板
- [ ] （混合开发，Android/iOS）支持创建原生 SDK

### 组件库模板

- [ ] （混合开发，Android/iOS）支持创建原生+JS 组件库
- [ ] 支持创建 JS 组件库

### 文档模板

- [ ] 支持创建在线文档站点

### 工具模板

- [ ] 支持创建类脚手架的工具
- [ ] 支持创建简单的工具套件
npm package: @megaads/express-sso-client
Description: SSO client middleware for Express applications
Author: Tuan Anh Zippy
Latest version: 1.0.0

# express-sso-client

`express-sso-client` is an Express middleware library for handling Single Sign-On (SSO) authentication with JWT token support for MegaAds.Vn. This library includes middleware to protect routes and an SSO callback handler that verifies tokens with an external server and sets them in secure cookies.

## Features
- Middleware for protecting routes with SSO authentication.
- SSO callback handler that verifies tokens with an external verification server.
- JWT token support with forced expiration.
- Secure token storage in cookies.
- Support Typescripts

## Installation

Install `express-sso-client` and required dependencies:

```bash
npm install @megaads/express-sso-client
```

## Usage
Use ssoMiddleware to protect routes. If a user is not authenticated, they are redirected to the SSO login page.

```
const express = require('express');
const session = require('express-session'); // install if provider is session
const { ssoMiddleware, ssoRouterUrl } = require('@megaads/express-sso-client');

const app = express();
app.use(session({ /* your config */ }));

// please contact CTO MegaAds get configuration:
const ssoOptions = {
  active: true,
  provider: 'session' || 'jwt', // if provider is 'jwt' via header 'x-access-token' or 'authorization'
  token_options: {},        // set if provider is 'jwt'
  secret: 'random_string',  // set if provider is 'jwt'
  app_id: XXXX,
  login_url: 'https://.../system/home/login', 
  logout_url: 'https://.../system/home/logout',
  callback_url: 'http://localhost:3000/sso/callback', // my domain
  auth_url: 'https://.../auth/sso', 
  redirect_url: 'http://localhost:3000', // set if provider is 'session'
};

app.use(ssoMiddleware(ssoOptions, ['/admin']));
app.use(ssoRouterUrl(ssoOptions));

app.get('/admin', (req, res) => {
  // handler
  res.send(`Admin, ${JSON.stringify(req.user)}`);
});

app.get('/', (req, res) => {
  res.send(`Hello, Guest!`);
});

app.listen(3000, () => {
  console.log('Server is running on port 3000');
});

```

## Contact
Email: kieutuananh1995@gmail.com
Skype: tuananhzippy
npm package: @megaads/variant-builder
Description: A JavaScript library to fetch and process product variants data
Author: duytungnguyen.bkhn.95@gmail.com
Latest version: 1.0.0

# @megaads/variant-builder

A TypeScript library to fetch and process product variants data.

## Installation

To install the library, use npm:

```sh
npm install @megaads/variant-builder
```
## Usage

```typescript
import fetch from "node-fetch";
import PrintervalVariants from "@megaads/variant-builder";

async function fetchData(productId: number) {
    const variantResponse = await fetch(`https://us-variant.printerval.com/v2/variant/${productId}?ignore_localization=1`);
    const variantDataJson = await variantResponse.json() as { result: { variants: Variant[], productVariants: ProductVariant[] } };

    const variants = variantDataJson.result.variants;
    const productVariants = variantDataJson.result.productVariants;

    const galleryResponse = await fetch(`https://us-variant.printerval.com/gallery/${productId}?ignore_localization=1`);
    const galleriesDataJson = await galleryResponse.json() as { result: Galleries };
    const galleries = galleriesDataJson.result;

    return { variants, productVariants, galleries };
}

async function getDetails(productId: number) {
    const { variants, productVariants, galleries } = await fetchData(productId);

    const printervalVariants = PrintervalVariants.init({
        variants: variants,
        productVariants: productVariants,
        galleries: galleries
    });
    const retVal = printervalVariants.getProductSkuDetails(159658972);
    console.log(JSON.stringify(retVal.variants));
}

getDetails(1000400032).then(() => {});
```

## Contact
Email: duytungnguyen.bkhn.95@gmail.com
npm package: @megabeedev/js-locale-sheet-loader
Description: Generator localization with google sheet
Author: https://github.com/devtyty
Latest version: 0.1.0

# @megabeedev/js-locale-sheet-loader

## Getting started

To make it easy for you to get started with js locale generator, here's a list of recommended next steps.

Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)!

## Install package

- with **cli** by config file

```sh
npx @megabeedev/js-locale-sheet-loader
```

- with **npm**

```sh
npm install --save-dev @megabeedev/js-locale-sheet-loader
```

- with **yarn**

```sh
yarn add --dev @megabeedev/js-locale-sheet-loader
```

## 🔱 Your sheet format

Example:

[https://docs.google.com/spreadsheets/d/1qH_wY1khh48iGCmIrRwXhOdTR-21aK1zKrExptOFECY/edit#gid=0](https://docs.google.com/spreadsheets/d/1qH_wY1khh48iGCmIrRwXhOdTR-21aK1zKrExptOFECY/edit#gid=0)

```javascript
ssid: 1qH_wY1khh48iGCmIrRwXhOdTR-21aK1zKrExptOFECY
sheetId: 0
```

## Gen language with config file

1. Create config file `locale.config.js` in your root project
2. Setup your config by sheet info

    ```javascript
    /**
    * Locale configuration
    * @type {import('@megabeedev/js-locale-sheet-loader').IConfig}
    */
    const config = {
        ssid: "1qH_wY1khh48iGCmIrRwXhOdTR-21aK1zKrExptOFECY",
        defaultLang: "en",
        sheetId: "0",
        outputDir: "./i18n-resources",
    };

    module.exports = config;
    ```

3. Run cli when you need refresh data from sheet

    ```sh
    npx @megabeedev/js-locale-sheet-loader
    ```

## Support

Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc.

## Roadmap

If you have ideas for releases in the future, it is a good idea to list them in the README.

## Contributing

State if you are open to contributions and what your requirements are for accepting them.

For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self.

You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser.

## Authors and acknowledgment

Show your appreciation to those who have contributed to the project.

## License

For open source projects, say how it is licensed.

## Project status

If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers.
npm package: @megabytelabs/prettier-config
Description: Simplifies configuring Prettier by bundling plugins and configuring them
Author: Brian Zalewski
Latest version: 14.14.28

# Prettier Config Documentation

> Documentation for the `@megabytelabs/prettier-config` module.

## Usage

**Yarn:**

```sh
yarn add --dev @megabytelabs/prettier-config
```

**NPM**

```
npm install --save-dev @megabytelabs/prettier-config
```

And reference it in your _.prettierrc.js_ file:

```js
module.exports = require('@megabytelabs/prettier-config');
```

Or you can, of course, choose your preferred way of using configs:

<details>
<summary><i>package.json</i></summary>

```json
{
  // ...
  "prettier": "@megabytelabs/prettier-config"
}
```

</details>
<details>
<summary><i>.prettierrc</i> or <i>.prettierrc.json</i></summary>

```json
{
  "extends": ["@megabytelabs/prettier-config"]
}
```

</details>

_Note: If you are using `prettier` < v1.17 check [this note](#Prettier-version)._

## Extending

To extend the current options you will need to create a _.prettierrc.js_ and add the following:

```js
module.exports = {
  ...require('@megabytelabs/prettier-config'),

  // Add custom options bellow:
  useTabs: true
};
```

## Prettier version

Versions of `prettier` prior to v1.17 did not feature the possibility to use a shared config via `package.json`. The way to do it is similar to when [extending](#Extending), except that you can just export the config directly:

```js
// .prettierrc.js

module.exports = require('@megabytelabs/prettier-config');
```

## More

- [Prettier Documentation](https://prettier.io/docs/en/index.html)
- [README.md Source](https://github.com/strvcom/code-quality-tools/blob/master/packages/prettier-config/readme.md)
npm package: @megabytelabs/prettier-config-ansible
Description: Prettier configuration shared by Megabyte Labs Ansible projects
Author: Brian Zalewski
Latest version: 1.1.4

# Prettier Config Documentation

> Documentation for the `@megabytelabs/prettier-config-ansible` module.

## Usage

**Yarn:**

```sh
yarn add --dev @megabytelabs/prettier-config-ansible
```

**NPM**

```
npm install --save-dev @megabytelabs/prettier-config-ansible
```

And reference it in your _.prettierrc.js_ file:

```js
module.exports = require('@megabytelabs/prettier-config-ansible');
```

Or you can, of course, choose your preferred way of using configs:

<details>
<summary><i>package.json</i></summary>

```json
{
  // ...
  "prettier": "@megabytelabs/prettier-config-ansible"
}
```

</details>
<details>
<summary><i>.prettierrc</i> or <i>.prettierrc.json</i></summary>

```json
{
  "extends": ["@megabytelabs/prettier-config-ansible"]
}
```

</details>

_Note: If you are using `prettier` < v1.17 check [this note](#Prettier-version)._

## Extending

To extend the current options you will need to create a _.prettierrc.js_ and add the following:

```js
module.exports = {
  ...require('@megabytelabs/prettier-config-ansible'),

  // Add custom options bellow:
  useTabs: true
};
```

## Prettier version

Versions of `prettier` prior to v1.17 did not feature the possibility to use a shared config via `package.json`. The way to do it is similar to when [extending](#Extending), except that you can just export the config directly:

```js
// .prettierrc.js

module.exports = require('@megabytelabs/prettier-config-ansible');
```

## More

- [Prettier Documentation](https://prettier.io/docs/en/index.html)
- [README.md Source](https://github.com/strvcom/code-quality-tools/blob/master/packages/prettier-config/readme.md)
npm package: @megachips/fluxport-controller
Description: Fluxport autoconf, gossip and ping servers. Uses multicast for nodes to communicate and autoconfigure their own ports.
Author: David White
Latest version: 0.1.1

# Fluxport Controller

Fluxport autoconf, gossip and ping servers. Uses multicast for
nodes to communicate and autoconfigure their own ports.

## Installation

```bash
npm i @megachips/fluxport-controller
```

## Usage

```javascript
// using ES modules
import { fluxGossipServer } from "@megachips/fluxport-controller";
const gossipServer = new FluxGossipServer();

// using node require
const fluxportController = require("@megachips/fluxport-controller");
const gossipServer = new fluxportController.FluxGossipServer();

// real world example

// confirmation tx of this node
const outPoint = {
  txhash: "334896be9aacb757de3e01633eba12b30198612513289223ca355d52137ba221",
  outidx: "0"
};

const fluxMulticastGroup = "239.112.233.123"
const fluxMulticastPort = 16127 // this is UDP

const gossipServer = new FluxGossipServer(
  outPoint,
  fluxMulticastGroup,
  fluxMulticastPort
);

gossipServer.on("portConfirmed", (port) => {
  console.log(`My port is : ${port}`)
});

gossipServer.start()
```

### License

This software is licensed under the MIT License.

Copyright David White, 2023.

Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to permit
persons to whom the Software is furnished to do so, subject to the
following conditions:

The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
USE OR OTHER DEALINGS IN THE SOFTWARE.

### Development notes
```bash
echo -n '?#!%%!#?{"type":"DISCOVER", "host":"172.16.32.11"}?#!%%!#?' | nc -w0 -u 239.16.32.15 16137
```
npm package: @megadeluxe/topcoat
Description: A relatively agnostic  utility-first CSS library.
Latest version: 0.0.1

<p align="center">
    <a href="https://megadeluxe.net/topcoat/" target="_blank"><img width="200" src="https://megadeluxe.net/topcoat/img/topcoat.svg"></a><br>
    A utility-first CSS framework for rapidly building custom user interfaces.
</p>

<p align="center">
    <a href="https://travis-ci.org/megadeluxe/topcoat"><img src="https://img.shields.io/travis/megadeluxe/topcoat/master.svg" alt="Build Status"></a>
    <a href="https://www.npmjs.com/package/topcoat"><img src="https://img.shields.io/npm/dt/topcoat.svg" alt="Total Downloads"></a>
    <a href="https://github.com/megadeluxe/topcoat/releases"><img src="https://img.shields.io/npm/v/topcoat.svg" alt="Latest Release"></a>
    <a href="https://github.com/megadeluxe/topcoat/blob/master/LICENSE"><img src="https://img.shields.io/npm/l/topcoat.svg" alt="License"></a>
</p>

------

## Documentation

For full documentation, visit [megadeluxe.net/topcoat](https://megadeluxe.net/topcoat/).

## Community

For help, discussion about best practices, or any other conversation that would benefit from being searchable:

[Discuss Topcoat CSS on GitHub](https://github.com/megadeluxe/discuss/issues?q=is%3Aissue+sort%3Aupdated-desc)

For casual chit-chat with others using the framework:

[Join the Topcoat CSS Discord Server](https://discord.gg/7NF8GNe)

## Contributing

If you're interested in contributing to Topcoat CSS, please read our [contributing docs](https://github.com/megadeluxe/topcoat/blob/master/.github/CONTRIBUTING.md) **before submitting a pull request**.
npm package: @megadoomer/membrane
Description: Low level cache implementation for megadoomer platform
Latest version: 1.0.2

## Membrane

The multi caching package

## Configuration

Configuration consists of an object found at the `caches` key. Each key in the object will be considered a unique cache. Each Cache will be available as a property on the `membrane` module or as a callable from the package itself. Their *must* be one and only one cache named `default` which will be the primary cache when no cache is specified.

the following configuration would set up two caches, the default, a redis cache, and a testing cache, an in memory cache

###### config
```js
{
  "caches":{
    "default":{
      "backend":"redis"
    }
    ,"testing":{
      "backend":"memory",
    }
  }
}
```

###### usage
```js
var cache = require( 'membrane' );

// using the redis cache
cache.set('foo', 'bar')

// using the dummy cache explicitly
cache.dummy.set('foo', 'bar')

// using the dumy cache though the cache callable
cache( 'dummy' )
  .set('foo','bar' )
```

### Caches



options | default | type | description
--------|---------|------|------------
backend | `dummy` | `string` | one of the predefined backends, `redis`, `memcached`, `memory`, `dummy`, or a fully qualified path to a module which exports a class which implements the cache interface
location | "" | `string` / `object` | a connection string or object containing `host`, `port`, and `auth` creds if required
timeout | 30000 | `number` | the time to live in `ms`.
prefix  | "membrane" | `string` | a keyspace name-space to separate specific sets of keys
options | null | `object` | driver specific options to be passed to the connection

```js
{
  "caches":{
    "default":{
      "backend":"memcache",
      "location":{
        "host":"0.0.0.0",
        "port":11211
      }
    }
    ,"counters":{
      "backend":"redis"
      ,"location":"unix://user:abc123@localhost:6379"
      ,options:{
        "return_buffers":false,
        "no_ready_check":true
      }
    }
  }
}
```

## Backends

##### Dummy
A noop backend to use for testing when a server is not available

##### Redis
Backend using the redis database driver. Reids support atomic operations for lists, hashes, sets, counters, and transactions

##### Memcached
Backend using memcached, the low volatile key/value in memory hash table.
npm package: @megafon/frontend-presets
Description: Collection of tools configuration.
Latest version: 4.2.0

# MegaFon Frontend Presets

Collection of tools configuration.

[![npm (scoped with tag)](https://img.shields.io/npm/v/@megafon/frontend-presets/latest?label=%40megafon%2Ffrontend-presets)](https://www.npmjs.com/package/@megafon/frontend-presets)
[![Github Actions](https://github.com/MegafonWebLab/frontend-presets/workflows/auto%20publish%20ci/badge.svg)](https://github.com/MegafonWebLab/frontend-presets/actions)

## Installation

Dependencies:

- stylelint
- stylelint-order
- eslint
- prettier
- @typescript-eslint/eslint-plugin
- @typescript-eslint/parser
- eslint-config-airbnb
- eslint-config-prettier
- eslint-plugin-import
- eslint-plugin-jsx-a11y
- eslint-plugin-prettier
- eslint-plugin-react
- eslint-plugin-react-hooks

```bash
npm install --save-dev @megafon/frontend-presets @typescript-eslint/eslint-plugin@^4.33.0 @typescript-eslint/parser@^4.33.0 eslint@^7.32.0 eslint-config-airbnb@^18.2.1 eslint-config-prettier@^8.3.0 eslint-plugin-import@^2.24.2 eslint-plugin-jsx-a11y@^6.4.1 eslint-plugin-prettier@^4.0.0 eslint-plugin-react@^7.26.1 eslint-plugin-react-hooks@^4.2.0 prettier@^2.4.1 stylelint@^13.13.1 stylelint-order@^4.1.0
```

```bash
yarn add -D @megafon/frontend-presets @typescript-eslint/eslint-plugin@^4.33.0 @typescript-eslint/parser@^4.33.0 eslint@^7.32.0 eslint-config-airbnb@^18.2.1 eslint-config-prettier@^8.3.0 eslint-plugin-import@^2.24.2 eslint-plugin-jsx-a11y@^6.4.1 eslint-plugin-prettier@^4.0.0 eslint-plugin-react@^7.26.1 eslint-plugin-react-hooks@^4.2.0 prettier@^2.4.1 stylelint@^13.13.1 stylelint-order@^4.1.0
```

## eslint

**Add to `package.json`**:

```jsonc
"eslintConfig": {
    // ...
    "extends": "./node_modules/@megafon/frontend-presets/eslint"
},
```

or

**Add to `.eslintrc.json`**:

```json
{
    // ...
    "extends": "./node_modules/@megafon/frontend-presets/eslint",
}
```

> NOTE: It's important to add this extend at the end of existing extends on your project in order to override previously extended rules

```json
"extends": [
  "foo",
  "plugin:bar/recommended",
  "./node_modules/@megafon/frontend-presets/eslint"
]
```

or

**Create `.eslintrc.js`**:

```js
module.exports = {
  ...require('@megafon/frontend-presets/eslint'),
};
```

## stylelint

**Create `.stylelintrc.json`**:

```json
{
  "extends": "@megafon/frontend-presets/stylelint"
}
```

## prettier

**Change `package.json`**:

```jsonc
{
  // ...
  "prettier": "@megafon/frontend-presets/prettier"
}
```

or

**Create `.prettierrc.js`**:

```js
module.exports = {
  ...require('@megafon/frontend-presets/prettier'),
  // overrides
  semi: false,
};
```

## Contributing

Follow [CONTRIBUTING.md](CONTRIBUTING.md) and [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md).
npm package: @megafon/msisdn-formatter
Description: MSISDN formatter utils
Latest version: 0.4.0

# @megafon/msisdn-formatter

[![npm (scoped with tag)](https://img.shields.io/npm/v/@megafon/msisdn-formatter/latest?label=%40megafon%2Fmsisdn-formatter)](https://www.npmjs.com/package/@megafon/msisdn-formatter/v/latest) 
[![msisdn CI](https://github.com/MegafonWebLab/msisdn-formatter/actions/workflows/release.yaml/badge.svg)](https://github.com/MegafonWebLab/msisdn-formatter/actions/workflows/release.yaml)

Russian msisdn normalizer and formatter.

## Installation

```
$ yarn add @megafon/msisdn-formatter
```

## Usage

```typescript
import { clean, pretty, PrettyFormats } from '@megafon/msisdn-formatter';

const userNumber = '+79260000000';

console.log(clean(userNumber)); // Prints: '9260000000'
console.log(pretty(userNumber)); // Prints ZETA format by default: '+7 (926) 000-00-00'
console.log(pretty(userNumber, PrettyFormats.ETA)); // Prints: '+7 926 000-00-00'
```

### Available formats:

* alpha: 9161234567
* beta: 79161234567
* gamma: 916 123-4567
* delta: (916) 123-4567
* epsilon: +7 (916) 123-4567
* zeta: +7 (916) 123-45-67
* eta: +7 916 123-45-67

## Contributing

Follow [CONTRIBUTING.md](CONTRIBUTING.md) and [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md).
npm package: @megafon/ui-helpers
Description: Helpers library
Author: MegaFon
Latest version: 5.0.0-alpha.3

# @megafon/ui-helpers

Helpers library

## Installation

with npm
```bash
npm install --save @megafon/ui-helpers
```

or yarn
```bash
yarn add @megafon/ui-helpers
```

## Usage

---
### cnCreate
BEM generator

```js
import { cnCreate } from '@megafon/ui-helpers';

const cn = cnCreate('block');

cn();
// block

cn('element');
// block__element

cn({ mod: true });
// block block_mod

cn({ mod: 'value' });
// block block_mod_value

cn(['custom-class', 'custom-class-2']);
// block custom-class custom-class-2

cn('element', ['custom-class', 'custom-class-2']);
// block__element custom-class custom-class-2

cn('element', { mod: true }, ['custom-class', 'custom-class-2']);
// block__element block__element_mod custom-class custom-class-2
```

---
### convert
htmr library extension for replacing html tags with your own components, recognizing
components props and html attributes

requires React as dependency

```tsx
import React from 'react';
import { convert, ConvertTransformConfig } from '@megafon/ui-helpers';

const Link = ({ href, target, className, children }) => (
    <a className={className} href={href} target={target}>{children}</a>
);

const config: ConvertTransformConfig = {
    a: {
        component: Link,
        props: ['href', 'target'],
        customProps: { className: 'class-name' },
    },
};

convert('<a href="/test" target="_blank">link</a>', config);
// <Link className="class-name" href="/test" target="_blank">link</Link>'
```
---

### filterDataAttrs
Filters properties using regular expression /^data-/

```ts
import { filterDataAttrs } from '@megafon/ui-helpers';

filterDataAttrs({
    'data-attr': 'value',
    'data-custom-attr': 'value',
    'DataAttr': 'value',
    'attr-data': 'value'
});
// { 'data-attr': 'value', 'data-custom-attr': 'value' }
```
---

### detectTouch
Detects touch devices

```js
import { detectTouch } from '@megafon/ui-helpers';

detectTouch()
// returns `true` or `false` depending on device

```
---
npm package: @megafon/ui-icons
Description: Icons library
Author: MegaFon
Latest version: 4.0.0-alpha.12

# @megafon/ui-icons

Icons library

## Installation

with npm
```bash
npm install --save @megafon/ui-icons
```

or yarn
```bash
yarn add @megafon/ui-icons
```

## Development notes

### How gulp modify svg
Для модификации используется плагин gulp-svgmin(на основе svgo), который добавляет уникальный атрибут `id` для тегов и переводит тег `<style>` в инлайн стили.
В svg могут оставаться много тегов `<mask>` и `<clipPath>`, которые не всегда правильно воспринимаются бразуером при использовании спрайта.
Разработчик svgo не нашел хорошего алгоритма для того, чтобы убирать `<mask>` и `<clipPath>`. [Svgo Issue](https://github.com/svg/svgo/issues/680)

Для `<mask>` написан скрипт, который рекурсивно находит все вложенности и заменяет теги.

Стили добавляются программой дизайнеров, в идеале их не должно быть. В спрайте тег `<defs>` кладется в отдельное место, что затрудняет чтение тегов браузером, лучше от них избавляться по возможности. Градиенты всегда находятся в `<defs>`, поэтому Icons с ними могут не работать в спрайте.

`<clipPath>` заменять в коде файла.

Пример, было:
``` xml
<svg id="Ready" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32">
    <defs>
        <style>
        .cls-1,
        .cls-2 {
            fill: none;
        }

        .cls-1 {
            clip-rule: evenodd;
        }

        .cls-3 {
            clip-path: url(#clip-path);
        }

        .cls-4 {
            clip-path: url(#clip-path-2);
        }
        </style>
        <clipPath id="clip-path">
            <path class="cls-1" d="M28,16a15.78,15.78,0,0,1-1.94,1.73L27.83,20,26.2,21.16l-1.77-2.31a16.29,16.29,0,0,1-2.62,1.24l.94,2.73-1.92.59-.94-2.74a16.66,16.66,0,0,1-2.89.43v2.64H15V21.11a16.7,16.7,0,0,1-3-.45l-.86,2.52-1.92-.59.87-2.52a16.29,16.29,0,0,1-2.54-1.21L5.8,21.16,4.17,20l1.77-2.3A15.78,15.78,0,0,1,4,16l1.51-1.26a14.47,14.47,0,0,0,21,0Zm-4-5.07-1,1.81a13.7,13.7,0,0,0-7-2,13.57,13.57,0,0,0-7,2L8,10.94A15.68,15.68,0,0,1,24,10.94Z" />
        </clipPath>
        <clipPath id="clip-path-2">
            <rect class="cls-2" y="-0.25" width="32" height="32" />
        </clipPath>
    </defs>
    <title>Artboard 21</title>
    <g class="cls-3">
        <g class="cls-4">
            <rect x="-1" y="3.75" width="34" height="25" />
        </g>
    </g>
</svg>
```
Стало:
``` xml
<svg id="Ready" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32">
    <title>Artboard 21</title>
    <path class="cls-1" d="M28,16a15.78,15.78,0,0,1-1.94,1.73L27.83,20,26.2,21.16l-1.77-2.31a16.29,16.29,0,0,1-2.62,1.24l.94,2.73-1.92.59-.94-2.74a16.66,16.66,0,0,1-2.89.43v2.64H15V21.11a16.7,16.7,0,0,1-3-.45l-.86,2.52-1.92-.59.87-2.52a16.29,16.29,0,0,1-2.54-1.21L5.8,21.16,4.17,20l1.77-2.3A15.78,15.78,0,0,1,4,16l1.51-1.26a14.47,14.47,0,0,0,21,0Zm-4-5.07-1,1.81a13.7,13.7,0,0,0-7-2,13.57,13.57,0,0,0-7,2L8,10.94A15.68,15.68,0,0,1,24,10.94Z" />
</svg>
```
npm package: @megafon/ui-lk-vas
Description: React UI components library.
Author: MegaFon
Latest version: 1.0.0-alpha.22

# @megafon/ui-lk-vas

React UI components library.

## Getting started

```bash
$ npm install --save @megafon/ui-lk-vas
```
```bash
$ yarn add @megafon/ui-lk-vas
```

## Development notes

### Build
npm package: @megafon/ui-shared
Description: React UI components library.
Author: MegaFon
Latest version: 9.0.0-alpha.22

# @megafon/ui-shared

React UI components library.

## Getting started

```bash
$ npm install --save @megafon/ui-shared
```
```bash
$ yarn add @megafon/ui-shared
```

## Development notes

### Build
npm package: @megahertz/eslint-config
Description: Mix of Airbnb, Typescript, Unicorn Prettier and other ESLint rules
Author: Alex Prokhorov
Latest version: 1.0.2

# @megahertz/eslint-config

Mix of Airbnb, Typescript, Unicorn Prettier and other ESLint rules

## ESLint

The ESLint configuration is based on
[eslint-config-airbnb-extended](https://github.com/eslint-config/airbnb-extended),
which modernizes and replaces parts of
[eslint-config-airbnb](https://github.com/airbnb/javascript) and
[eslint-config-airbnb-typescript](https://github.com/iamturns/eslint-config-airbnb-typescript).

A typical project config that reuses these shared configs looks like this:

```js
import { configs, defineConfig } from '@megahertz/eslint-config';

export default defineConfig(
  configs.base,
  configs.ts,
  configs.prettier,
  configs.react,
  configs.nodeCommonJs,

  {
    rules: {
      'no-console': 'off',
    },
  },
);
```

Predefined configs from this package are applied first, then any
project-specific rules are merged on top.

See `src/index.js` in this package for a list of available configs and short
descriptions.

Some configs come in multiple strictness levels. When you choose a strict
variant, also include the base config, since it's not inherited.

| Base         | Strict      | Description                                                         |
| ------------ | ----------- | ------------------------------------------------------------------- |
| base         | strict      | JavaScript rules                                                    |
| ts           | tsStrict    | TypeScript rules                                                    |
| react        | reactStrict | React-specific rules                                                |
| prettier     | -           | Loads Prettier-related rule adjustments                             |
| sort         | -           | Sort code elements alphabetically                                   |
| node         | -           | Best practices for Node.js                                          |
| browser      | -           | Just enable browser globals                                         |
| nodeCommonJs | -           | For CommonJS `.js`/`.cjs` files (configs, scripts, not source code) |
| esm          | -           | ESM-specific rules                                                  |
| unicorn      | -           | Rules from `eslint-plugin-unicorn`                                  |

## Prettier

you can reuse the config by placing prettier.config.mjs in your project root:

```js
export { default } from '@megahertz/eslint-config/prettier.config.js';
```

## tsconfig

A shared TypeScript base config is available. To reuse it, extend it from your
package's `tsconfig.json`:

```json
{
  "extends": "@megahertz/eslint-config/tsconfig.base.json",
  "include": ["src/**/*.ts"]
}
```
npm package: @megahome/qrcode
Description: Qr code react component by [qrcode](https://www.npmjs.com/package/qrcode#qr-code-options)
Latest version: 0.1.0

# qrcode

Qr code react component by [qrcode](https://www.npmjs.com/package/qrcode#qr-code-options)


## install

```
yarn add @magehome/qrcode

or

npm install @magehome/qrcode
```


## props 

```javscript
  value: string;
  width: number;
  height: number;
  margin: number;
  errorCorrectionLevel: "L" | "M" | "Q" | "H";
```

## use

```jsx
import Qrcode from '@megahome/qrcode'

ReactDOM.render(<Qrcode width={150} height={150} value='www.google.com' />)

```