open-index/open-npm huggingface dataset:
npm package: @nxjb/user-management
Description: This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 1.6.6.
Latest version: 0.0.1

# nxjb/user-management

This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 1.6.6.

## Development server

Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files.

## Code scaffolding

Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`.

## Build

Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `-prod` flag for a production build.

## Running unit tests

Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).

## Running end-to-end tests

Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/).

## Further help

To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).
npm package: @nxjfxu/hypha
Description: Hypermedia-driven progressive enhancement
Author: Junfeng Xu
Latest version: 1.1.0

# Hypha
Hypermedia Enhancement in 132 Lines.

[Guide](docs/guide.md) | [Reference](docs/reference.md)

Hypha is a JavaScript library that lets you 
- Click on a hyperlink to dynamically load the linked resource to the current page.
- Submit a form and automagically update all relevant resources currently displayed.
- Make SPAs that also work as MPAs.
- Use the application with JavaScript disabled.
- Do all of the above without writing a single line of JavaScript.

Hypha is small.  The API consists of only **5 attributes**.
There are in total **132 lines** of JavaScript,
weighing only **2kB** minified and compressed.

Hypha is inspired by [intercooler.js](https://intercoolerjs.org/),
[Unpoly](https://unpoly.com/), [htmx](https://htmx.org/),
and my previous project [Rhizome](https://github.com/nxjfxu/rhizome).


## Setting Up

```html
<script type="module" src="./hypha.min.js"></script>
```

Hypha is also available on [unpkg](https://unpkg.com):
```html
<script type="module" src="https://unpkg.com/@nxjfxu/hypha@latest/hypha.min.js"></script>
```

### Using NPM

```bash
npm i @nxjfxu/hypha
```
Then, in your JavaScript file:
```javascript
import "@nxjfxu/hypha";
```
npm package: @nxkit/playwright
Description: Nx Plugin containing executors and generators allowing your workspace to use the powerful Playwright end-to-end testing capabilities.
Author: Sebastian Duque
Latest version: 6.0.0
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.


> [!WARNING]  
> This plugin is deprecated, please use the official [Playwright Nx Plugin](https://nx.dev/nx-api/playwright) instead.

<p align="center">
    <a href="https://nx.dev">
        <img src="https://raw.githubusercontent.com/nrwl/nx/master/images/nx-logo.png" width="90">
    </a>
    <a href="https://github.com/nxkit/nxkit/tree/main/packages/style-dictionary" style="margin-left: 1rem;">
        <img src="https://playwright.dev/img/playwright-logo.svg" width="65">
    </a>
    <br><br>
    <a href="https://github.com/nxkit">
        <img alt="NxKit" src="https://github.com/nxkit.png" width="100" />
    </a>
</p>
<h1 align="center">
  @nxkit/playwright
</h1>

<h2 align="center">
    🔌 Plug <a href="https://playwright.dev">Playwright</a> into your <a href="https://nx.dev">Nx</a> workspace
</h2>

<br>

> Nx Plugin containing executors and generators allowing your workspace to use the powerful Playwright end-to-end testing capabilities.

## Quick Start

Create an Nx workspace and add the Playwirght plugin

```bash
npx create-nx-workspace@latest my-org
```

```bash
npm install -D @nxkit/playwright
```

### Create a playwright E2E project

Create a web project in your workspace without a default e2e test runner. This is a `@nx/react` example:

```bash
npx nx generate @nx/react:app my-app --e2eTestRunner none
```

or, you can delete an existing e2e project, using:

```bash
npx nx generate @nx/workspace:rm --project my-app-e2e
```

Now, for this `my-app` project, you can create a Playwright e2e testing project using:

```bash
npx nx generate @nxkit/playwright:project my-app-e2e --frontendProject my-app
```

This will behave similar to what the official `@nx/cypress` plugin does. It will `serve` the `my-app` application, run e2e tests and provide the result.

**Standalone E2E project**

You can also create a Playwright E2E testing project without depending on an existing web project.

```bash
npx nx generate @nxkit/playwright:project my-app-e2e
```

This project won't run against a workspace project but against a given `baseUrl` instead. Check the `my-app-e2e/project.json` file to set your respective baseUrl.

### Run your E2E tests!

Run the `e2e` target for your e2e testing project

```bash
npx nx e2e my-app-e2e
```

See your tests report

```bash
npx nx show-report my-app-e2e
```

That's it!

To know more about the `@nxkit/playwright` plugin, run:

```bash
npx nx list @nxkit/playwright
```
npm package: @nxkit/style-dictionary
Description: Nx Plugin to generate Style Dictionary projects & maintain your design tokens within your Nx workspace
Author: Sebastian Duque
Latest version: 6.0.0

<p align="center">
    <a href="https://nx.dev">
        <img src="https://raw.githubusercontent.com/nrwl/nx/master/images/nx-logo.png" width="90">
    </a>
    <a href="https://github.com/nxkit/nxkit/tree/main/packages/style-dictionary" style="margin-left: 1rem;">
        <img src="https://amzn.github.io/style-dictionary/assets/logo.png" width="60">
    </a>
    <br><br>
    <a href="https://github.com/nxkit">
        <img alt="NxKit" src="https://github.com/nxkit.png" width="100" />
    </a>
</p>
<h1 align="center">
  @nxkit/style-dictionary
</h1>

<h2 align="center">
    🔌 Plug <a href="https://amzn.github.io/style-dictionary">Style Dictionary</a> into your <a href="https://nx.dev">Nx</a> workspace
</h2>

<br>

> Nx Plugin to generate Style Dictionary projects & maintain your design tokens within your Nx workspace

## Quick Start

Create an Nx workspace and add the Style Dictionary plugin

```bash
npx create-nx-workspace@latest my-org
```

```bash
npm install -D @nxkit/style-dictionary
```

Generate a Style Dictionary library

```bash
npx nx generate @nxkit/style-dictionary:lib my-tokens
```

## Build your tokens

Build your design tokens

```bash
npx nx build my-tokens
```

To know more about the `@nxkit/style-dictionary` plugin, run:

```bash
npx nx list @nxkit/style-dictionary
```

## Generate extensions

If you'd like to add customizatios to your Style Dictionary projects like:

- Custom Actions
- Custom Filters
- Custom Formats
- Custom Parsers
- Custom Transform Groups
- Custom Tranforms

you can generate and register them using the `extension` generator:

```bash
npx nx generate @nxkit/style-dictionary:extension --project my-tokens
```

The terminal will prompt you to choose the desired extensions, or they can be passed in a comma-separated string with the `--extensions` argument. For example:

```bash
npx nx generate @nxkit/style-dictionary:extension --project my-tokens --extensions actions,filters,transforms
```

That's it!

To know more about the `@nxkit/style-dictionary` plugin, run:

```bash
npx nx list @nxkit/style-dictionary
```
npm package: @nxlibs/eslint-config
Description: ESLint配置集合，包含基础TypeScript、React和Next.js配置，采用分层设计提供更灵活的代码规范控制。
Latest version: 1.0.3

# @nxlibs/eslint-config

ESLint配置集合，包含基础TypeScript、React和Next.js配置，采用分层设计提供更灵活的代码规范控制。

## 安装

```bash
# npm
npm install --save-dev @nxlibs/eslint-config eslint

# pnpm
pnpm add -D @nxlibs/eslint-config eslint

# yarn
yarn add -D @nxlibs/eslint-config eslint
```

## 特性

- ✅ 分层设计：基础、React和Next.js三层配置
- ✅ TypeScript支持：针对TypeScript项目优化
- ✅ 导入排序：自动组织和格式化导入语句
- ✅ 与Prettier兼容：避免与代码格式化工具冲突
- ✅ 现代实践：遵循最新的React和Next.js最佳实践

## 使用方法

### 基础配置（TypeScript项目）

适用于所有TypeScript项目的基础配置，包含TypeScript规则和导入排序。

```js
// .eslintrc.js
module.exports = {
	extends: ['@nxlibs/eslint-config'], // 默认就是引入 base
	// 或明确指定基础配置
	// extends: ['@nxlibs/eslint-config/base'],
	rules: {
		// 自定义规则
	},
};
```

### React配置

包含React、React Hooks和JSX可访问性规则。

```js
// .eslintrc.js
module.exports = {
	extends: ['@nxlibs/eslint-config/react'],
	rules: {
		// 自定义规则
	},
};
```

### Next.js配置

针对Next.js项目的专用配置，包含性能和最佳实践规则。

```js
// .eslintrc.js
module.exports = {
	extends: ['@nxlibs/eslint-config/next'],
	rules: {
		// 自定义规则
	},
};
```

## 配置层级关系

配置采用继承结构，确保规则的一致性和可扩展性：

```
base（基础） → react（React扩展） → next（Next.js扩展）
```

每个层级都专注于特定领域：

- `base`: 基础TypeScript语法和导入规则
- `react`: 继承`base`并添加React特定规则
- `next`: 继承`react`并添加Next.js特定规则

## 包含的主要规则

### 基础配置 (`base`)

- **TypeScript规则**

    - `@typescript-eslint/no-explicit-any`: 警告使用`any`类型
    - `@typescript-eslint/no-unused-vars`: 警告未使用的变量（忽略下划线开头的参数）
    - `@typescript-eslint/no-non-null-assertion`: 允许非空断言操作符

- **导入排序规则**
    - 按分组排序：内置模块 → 外部依赖 → 内部模块 → 父级目录 → 同级目录 → 索引文件
    - 组间添加空行
    - 按字母顺序排序（忽略大小写）

### React配置 (`react`)

- **React核心规则**

    - `react/react-in-jsx-scope`: 关闭（React 17+不需要导入React）
    - `react/prop-types`: 关闭（使用TypeScript类型代替）
    - `react/jsx-curly-brace-presence`: 禁止不必要的花括号

- **React Hooks规则**

    - `react-hooks/rules-of-hooks`: 强制执行Hooks规则
    - `react-hooks/exhaustive-deps`: 警告依赖数组不完整

- **可访问性规则**
    - 确保链接元素符合可访问性标准
    - 自定义组件（如Link）也需遵循规则

### Next.js配置 (`next`)

- **Next.js优化规则**

    - `@next/next/no-html-link-for-pages`: 强制使用Next.js的Link组件
    - `@next/next/no-img-element`: 鼓励使用Next.js的Image组件

- **性能优化**
    - 融合了`next/core-web-vitals`配置
    - 针对Next.js应用优化的导入排序

## 依赖项

- [eslint-import-resolver-typescript](https://github.com/import-js/eslint-import-resolver-typescript): 支持TypeScript中的路径别名和模块解析
- [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint): TypeScript的ESLint插件
- [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react): React代码检查
- [eslint-plugin-react-hooks](https://github.com/facebook/react/tree/main/packages/eslint-plugin-react-hooks): React Hooks规则
- [eslint-config-next](https://nextjs.org/docs/basic-features/eslint): Next.js官方ESLint配置

## 自定义配置

可以通过扩展现有配置并添加自己的规则：

```js
// .eslintrc.js
module.exports = {
	extends: ['@nxlibs/eslint-config/react'],
	rules: {
		// 覆盖内置规则
		'@typescript-eslint/no-explicit-any': 'error',

		// 添加自定义规则
		'no-console': ['warn', { allow: ['warn', 'error'] }],
	},
};
```
npm package: @nxlibs/format
Description: 格式化工具集合，提供高质量的数字和日期格式化功能，专注于安全性、一致性和易用性。
Latest version: 1.0.2

# @nxlibs/format

格式化工具集合，提供高质量的数字和日期格式化功能，专注于安全性、一致性和易用性。

## 特性

- ✅ **类型安全** - 完整的 TypeScript 类型定义
- ✅ **轻量级** - 最小依赖，支持 tree-shaking
- ✅ **双格式支持** - 同时支持 ESM 和 CommonJS
- ✅ **处理边缘情况** - 优雅处理无效输入
- ✅ **可定制化** - 灵活的格式化选项

## 安装

```bash
npm install @nxlibs/format
```

本包有两个对等依赖(peerDependencies)，需要同时安装：

```bash
npm install big.js dayjs
```

## 数字格式化

`formatNumber` 函数提供可靠且一致的数字格式化，使用 big.js 处理精度问题。

### 基本用法

```ts
import { formatNumber } from '@nxlibs/format';

// 基本使用
formatNumber(1234.56); // "1,234.56"
formatNumber('1234.5600'); // "1,234.56"

// 处理无效输入
formatNumber('非数字'); // "-"
formatNumber({}); // "-"
formatNumber(NaN); // "-"
formatNumber(Infinity); // "-"

// 处理精度问题
formatNumber(0.1 + 0.2); // "0.3" (而不是 "0.30000000000000004")
```

### 自定义选项

```ts
// 保留尾部的零
formatNumber(1234.56, {
	removeTrailingZeros: false,
}); // "1,234.5600"

// 不使用千分位分隔符
formatNumber(1234.56, {
	addThousandsSeparator: false,
}); // "1234.56"

// 组合选项
formatNumber(1234.56, {
	removeTrailingZeros: false,
	addThousandsSeparator: false,
}); // "1234.5600"
```

### 数字格式化选项

| 选项                    | 类型      | 默认值 | 描述                 |
| ----------------------- | --------- | ------ | -------------------- |
| `removeTrailingZeros`   | `boolean` | `true` | 是否去除尾部的0      |
| `addThousandsSeparator` | `boolean` | `true` | 是否添加千分位分隔符 |

## 日期格式化

`formatDate` 函数提供强大而灵活的日期格式化能力，基于 dayjs 库。

### 基本用法

```ts
import { formatDate } from '@nxlibs/format';

// 当前日期
formatDate(new Date()); // "2023-06-15 14:30:25"

// 支持多种输入格式
formatDate('2023-01-01'); // "2023-01-01 00:00:00"
formatDate(1672531200000); // "2023-01-01 00:00:00"
formatDate('1672531200000'); // "2023-01-01 00:00:00"

// 处理无效输入
formatDate('无效日期'); // "-"
formatDate(null); // "-"
```

### 自定义格式

```ts
// 年月日
formatDate(new Date(), {
	format: 'YYYY年MM月DD日',
}); // "2023年01月01日"

// 不同地区格式
formatDate(new Date(), {
	format: 'MM/DD/YYYY',
}); // "01/01/2023"

// 仅日期部分
formatDate(new Date(), {
	format: 'YYYY-MM-DD',
}); // "2023-01-01"

// 仅时间部分
formatDate(new Date(), {
	format: 'HH:mm:ss',
}); // "14:30:25"
```

### 日期格式化选项

| 选项     | 类型     | 默认值                  | 描述                          |
| -------- | -------- | ----------------------- | ----------------------------- |
| `format` | `string` | `"YYYY-MM-DD HH:mm:ss"` | 日期格式，支持dayjs的所有格式 |

## 格式说明

日期格式使用 dayjs 的格式化规则，常用格式有：

- `YYYY`: 四位数年份
- `MM`: 两位数月份
- `DD`: 两位数日期
- `HH`: 两位数小时（24小时制）
- `mm`: 两位数分钟
- `ss`: 两位数秒钟

更多格式请参考 [dayjs 文档](https://day.js.org/docs/en/display/format)。

## 性能考虑

- **Tree Shaking** - 包支持tree-shaking，只使用需要的函数不会导入不必要的代码
- **对等依赖** - big.js 和 dayjs 作为对等依赖，避免重复安装
- **惰性计算** - 格式化仅在需要时执行

## 浏览器兼容性

包支持所有现代浏览器，以及 Node.js 环境。

## 贡献

欢迎贡献！请参考我们的贡献指南。

## 许可证

MIT
npm package: @nxlibs/prettier-config
Description: 共享的 Prettier 配置，用于在项目中保持一致的代码格式。
Latest version: 1.0.2

# @nxlibs/prettier-config

共享的 Prettier 配置，用于在项目中保持一致的代码格式。

## 安装

```bash
npm install --save-dev @nxlibs/prettier-config prettier
# 或者
pnpm add -D @nxlibs/prettier-config prettier
```

## 使用方法

在你的项目中，有几种方式可以使用这个配置：

### 方法一：在 package.json 中引用

最简单的方式是在 `package.json` 中添加：

```json
{
	"prettier": "@nxlibs/prettier-config"
}
```

### 方法二：在 .prettierrc.js 中引用

如果你想要扩展配置，可以在 `.prettierrc.js` 中引用：

```js
module.exports = {
	...require('@nxlibs/prettier-config'),
	// 在这里可以添加自定义配置来覆盖默认设置
	semi: true,
};
```

## 配置详情

这个配置包含了以下规则：

- 使用单引号
- 对象属性名如果有引号则保留
- 使用尾逗号
- 一行最多100个字符
- 使用制表符缩进（与.editorconfig保持一致）
- 不使用分号
- 箭头函数参数始终使用括号
- 导入排序

## 包含的插件

- [@ianvs/prettier-plugin-sort-imports](https://github.com/ianvs/prettier-plugin-sort-imports) - 用于排序导入语句
- [prettier-plugin-packagejson](https://github.com/matzkoh/prettier-plugin-packagejson) - 用于格式化package.json文件
npm package: @nxmix/emoji-seq-match
Description: Match Emoji combinations according to unicode emoji specification
Author: jacobbubu
Latest version: 1.0.0

# @nxmix/emoji-seq-match
[![Build Status](https://travis-ci.org/NXMIX/emoji-seq-match.svg?branch=master)](https://travis-ci.org/NXMIX/emoji-seq-match)
[![Coverage Status](https://coveralls.io/repos/github/NXMIX/emoji-seq-match/badge.svg)](https://coveralls.io/github/NXMIX/emoji-seq-match)
[![npm](https://img.shields.io/npm/v/@nxmix/emoji-seq-match.svg?maxAge=1000)](https://www.npmjs.com/package/@nxmix/emoji-seq-match/)

> Match Emoji combinations according to unicode emoji specification

## Why 

Different Emoji character combinations may visually produce different widths, for examples:

```
👶 + 🏼 => 👶🏼  // Base emoji with skin-tone modifier
👨 + 👩 + 👧 + 👦  => 👨‍👩‍👧‍👦  // Emoji characters joined with zero-witdh joiner (\u0200d)
```

[Emoji Sequences, v11.0](http://unicode.org/emoji/charts/emoji-sequences.html) defines these combinations.

The reason for creating this module is that I need to get the visual width of a string in terminal application to calculate the cursor's movement distance. To achieve this, I have to first create a method to find out if a string insludes a specification-defined Emoji combination.

Please noe that different terminal apps have different levels of implementation of the specification, including even the latest [macOS Terminal](https://en.wikipedia.org/wiki/Terminal_(macOS)).

## Usage

### Install

`npm i @nxmix/emoji-seq-match --save`

[Typescript](https://www.typescriptlang.org) definition file is already included.

### EXAMPLES

```js
const getMatchedLength = require('@nxmix/emoji-seq-match').default;

getMatchedLength('👶🏼');
//=> 2

getMatchedLength('🐶🏼'); // puppy does not have skin tone combination" 
//=> 0

getMatchedLength("👶🏽👩‍👩‍👦‍👦", 2); // from a 'start' postion to match
//=> 7, 'start' is counted by character not visual width

getMatchedLength(['👶', '🏼']); // also accepts an array of strings
// => 2
```

Using ES2015w Modules:

```ts
import getMatchedLength from '@nxmix/emoji-seq-match';

getMatchedLength('👶🏼');
//=> 2
```

## Tool

Running `npm run parse-spec` will download the specification files from 
http://unicode.org/Public/emoji/11.0/ and place the converted json files in the `./emoji-sequences` directory.
npm package: @nxmix/is-full-width
Description: > Check if the character represented by a given [Unicode code point](https://en.wikipedia.org/wiki/Code_point) is [fullwidth](https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms)
Latest version: 0.1.0

# @nxmix/is-full-width [![Build Status](https://travis-ci.org/NXMIX/is-full-width.svg?branch=master)](https://travis-ci.org/NXMIX/is-full-width)

> Check if the character represented by a given [Unicode code point](https://en.wikipedia.org/wiki/Code_point) is [fullwidth](https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms)

## Why another `is-fullwidth-code-point`?

Compare to [is-fullwidth-codepoint](https://github.com/sindresorhus/is-fullwidth-code-point), I'm trying to give a fully accurate implementation of official [Unicode EastAsianWidth specification v11.0](ftp://ftp.unicode.org/Public/11.0.0/ucd/EastAsianWidth.txt).

The code in `src/index.ts` is generated by an internal tool that reflects the contents of the specification range by range.

## Install

```
$ npm install @nxmix/is-full-width
```

[Typescript](https://www.typescriptlang.org) definition file is already included.

## Usage

```js
const isFullwidth = require('is-full-width');

isFullwidth('谢'.codePointAt());
//=> true

isFullwidth('a'.codePointAt());
//=> false
```

## API

### isFullwidth(input)

#### input

Type: `number`

[Code point](https://en.wikipedia.org/wiki/Code_point) of a character.

## License

MIT
npm package: @nxmix/pid-file
Description: create pid file
Author: js.seth.h@gmail.com
Latest version: 0.3.5

# pid-file

> create pif file and has some options


## Example

```coffee

pid = require 'pid-file'
pid.create
  filename : 'pidfile.pid'
```

Create pid file on `os.tmpDir()`. If exists, rewrite.

```coffee

pid = require 'pid-file'
pid.create
  filename : 'pidfile.pid'
  errorOnExist : true
```

Create pid file on `os.tmpDir()` . If exists, throw Error.


```coffee

pid = require 'pid-file'
pid.create
  filename : 'pidfile.pid'
  deleteOnExit : true
```

When program exit normally, delete pid file.

But, in windows `ctrl + C` didn't make `exit` event


```coffee

pid = require 'pid-file'
pid.create
  path : 'pid/app_name.pid'
  local : true
```

Create pid file locally to your current working directory.


## Why Create Another PID module?

Other PID module I tried throw `Error` when exist PID File.

But, in my development progress kill process is usaul action.

So, I make another one.



## License

MIT


[sh]: https://github.com/sindresorhus/grunt-shell
[sp]: https://github.com/cri5ti/grunt-shell-spawn
npm package: @nxmix/readable-ansi
Description: [![styled with prettier](https://img.shields.io/badge/styled_with-prettier-ff69b4.svg)](https://github.com/prettier/prettier) [![Build Status](https://travis-ci.org/NXMIX/readable-ansi.svg)](https://travis-ci.org/NXMIX/readable-ansi) [![Coverage Status](h
Author: jacobbubu
Latest version: 1.0.1

# readable-ansi

[![styled with prettier](https://img.shields.io/badge/styled_with-prettier-ff69b4.svg)](https://github.com/prettier/prettier)
[![Build Status](https://travis-ci.org/NXMIX/readable-ansi.svg)](https://travis-ci.org/NXMIX/readable-ansi)
[![Coverage Status](https://coveralls.io/repos/github/NXMIX/readable-ansi/badge.svg)](https://coveralls.io/github/NXMIX/readable-ansi)
[![npm](https://img.shields.io/npm/v/@nxmix/readable-ansi.svg)](https://www.npmjs.com/package/@nxmix/readable-ansi/)

> visualize a string that includes ansi codes.

## Usage

### install

```bash
npm i @nxmix/readable-ansi --save
```

### example

```ts
import chalk from 'chalk'
import pretty from './src/readable-ansi'

pretty(chalk.red('red'))
// => (红)red(fD) color red/red/back to default foreground color

pretty('\x1b[1A\x1b[1B')
// => (￪¹)(￬¹) cursor-up/cursor-down

```

This project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind are welcome!
npm package: @nxmix/string-visual-width
Description: Get the visual width of the string
Author: jacobbubu
Latest version: 1.0.1

# string-visual-width

[![Build Status](https://travis-ci.org/NXMIX/string-visual-width.svg?branch=master)](https://travis-ci.org/NXMIX/string-visual-width)
[![Coverage Status](https://coveralls.io/repos/github/NXMIX/string-visual-width/badge.svg)](https://coveralls.io/github/NXMIX/string-visual-width)
[![npm](https://img.shields.io/npm/v/string-visual-width.svg?maxAge=1000)](https://www.npmjs.com/package/@nxmix/string-visual-width/) [![Greenkeeper badge](https://badges.greenkeeper.io/NXMIX/string-visual-width.svg)](https://greenkeeper.io/)

> Get the visual width of the string 

## Why

Because of the combination of Unicode and Emoji characters, it is difficult to calculate the actual display width of a string in Terminal applciation. Strictly speaking there is no universal method to do that.

I try to figure it out in accordance with the following steps:
* Strip out all ansi codes in string.
* Nomalize unocide character before calculation, `n\u0303` becomes `ñ`.
* Use [@nxmix/emoji-seq-match](https://github.com/NXMIX/emoji-seq-match.git) to match joined Emoji characters as long as possible and calculate their width as 2.
* Use [@nxmix/is-full-width](https://github.com/NXMIX/is-full-width.git) determine which characters should be treated as East Asian characters and count a width of 2.

## Usage

### Install

`npm i @nxmix/string-visual-width --save`

[Typescript](https://www.typescriptlang.org) definition file is already included.

## Examples

```js
const width = require('@nxmix/string-visual-width').default;

width('中');
//=> 2

width("👩‍👦");
//=> 2
```

```ts
import getMatchedLength from '@nxmix/string-visual-width';

width('中');
//=> 2
```

## Author
[Rong Shen](https://github/jacobbubu)
npm package: @nxmix/ts-tdd-test
Description: TBD
Author: jacobbubu
Latest version: 3.0.0

# ts-tdd-test

[![Build Status](https://travis-ci.org/NXMIX/ts-tdd-test.svg?branch=master)](https://travis-ci.org/NXMIX/ts-tdd-test)
[![Coverage Status](https://coveralls.io/repos/github/NXMIX/ts-tdd-test/badge.svg)](https://coveralls.io/github/NXMIX/ts-tdd-test)
[![npm](https://img.shields.io/npm/v/ts-tdd-test.svg?maxAge=1000)](https://www.npmjs.com/package/ts-tdd-test/)

> Description

## Usage

## Examples

## API

## Author
npm package: @nxmix/util
Description: Node.JS util module
Author: Joyent
Latest version: 0.10.3

# util

[![Build Status](https://travis-ci.org/defunctzombie/node-util.png?branch=master)](https://travis-ci.org/defunctzombie/node-util)

node.js [util](http://nodejs.org/api/util.html) module as a module

## install via [npm](npmjs.org)

```shell
npm install util
```

## browser support

This module also works in modern browsers. If you need legacy browser support you will need to polyfill ES5 features.
npm package: @nxpkmn/dex-types
Description: Common Pokémon Showdown Dex types shared by @nxpkmn/dex and @nxpkmn/sim
Latest version: 0.6.1

# `@nxpkmn/dex-types`

![Test Status](https://github.com/pkmn/ps/workflows/Tests/badge.svg)
![License](https://img.shields.io/badge/License-MIT-blue.svg)
[![npm version](https://img.shields.io/npm/v/@nxpkmn/dex-types.svg)](https://www.npmjs.com/package/@nxpkmn/dex-types)

Common Pokémon Showdown Dex types shared by [`@nxpkmn/dex`](..) and [`@nxpkmn/sim`](../sim).

This package is distributed under the terms of the [MIT License](LICENSE).
npm package: @nxpkmn/randoms
Description: Random team generation logic for Pokémon Showdown's Random Battle formats
Latest version: 0.6.4

# `@nxpkmn/randoms`

![Test Status](https://github.com/pkmn/ps/workflows/Tests/badge.svg)
![License](https://img.shields.io/badge/License-MIT-blue.svg)
[![npm version](https://img.shields.io/npm/v/@nxpkmn/randoms.svg)](https://www.npmjs.com/package/@nxpkmn/randoms)

An automatically generated extraction of a subset of Pokémon Showdown's "Random Battle" generation
logic for use with [`@nxpkmn/sim`](../sim).

## Installation

```sh
$ npm install @nxpkmn/randoms
```

## Usage

To generate a random team, get a `TeamGenerator` for a supported format and call `getTeam`:

```ts
import {TeamGenerators} from '@nxpkmn/randoms';

const generator = TeamGenerators.getTeamGenerator('gen8randombattle');
const team = generator.getTeam();
```

`@nxpkmn/randoms` is commonly used with [`@nxpkmn/sim`](../sim) to set the `TeamGenerator` factory on
its `Teams` so that `Teams.generate` will work:

```ts
import {Teams} from '@nxpkmn/sim';
import {TeamGenerators} from '@nxpkmn/randoms';

Teams.setGeneratorFactory(TeamGenerators);
const team = Teams.generate('gen1randombattle');
```

### Browser

The recommended way of using `@nxpkmn/randoms` in a web browser is to **configure your bundler**
([Webpack](https://webpack.js.org/), [Rollup](https://rollupjs.org/),
[Parcel](https://parceljs.org/), etc) to minimize it and package it with the rest of your
application.

## License

Substantial amounts of the code in this package have been either derived or generated from portions
of [Pokémon Showdown code](https://github.com/smogon/pokemon-showdown) which are distributed under
the [MIT License](LICENSE).
npm package: @nxpkmn/sets
Description: Parsing logic for Pokémon Showdown sets and teams
Latest version: 4.0.1

# `@nxpkmn/sets`

![Test Status](https://github.com/pkmn/ps/workflows/Tests/badge.svg)
![License](https://img.shields.io/badge/License-MIT-blue.svg)
[![npm version](https://img.shields.io/npm/v/@nxpkmn/sets.svg)](https://www.npmjs.com/package/@nxpkmn/sets)

Parsing logic for [Pokémon Showdown](https://pokemonshowdown.com)'s sets export format.

## Installation

```sh
$ npm install @nxpkmn/sets
```

Alternatively, as [detailed below](#browser), if you are using `@nxpkmn/sets` in the browser and want
a convenient way to get started, simply depend on a transpiled and minified version via
[unpkg](https://unpkg.com/):

```html
<script src="https://unpkg.com/@nxpkmn/sets"></script>
```

## Usage

This package can be used to parse sets and teams **without any dependencies**:

```ts
import {Sets} from '@nxpkmn/sets';

const set = Sets.importSet(
`Tangrowth @ Assault Vest
Ability: Regenerator
EVs: 248 HP / 8 Def / 252 SpD
Sassy Nature
IVs: 30 Atk / 30 Def
- Giga Drain
- Knock Off
- Hidden Power [Ice]
- Earthquake
`);
```

If you need to be able to unpack teams sent over the wire from old Pokémon Showdown server
implementations, need richer past generation support, or need the ability to convert sets written
with `ID`s (a core data type within Pokémon Showdown - strings containing just lower case
alphanumerics) into display names, a `Data` implementation must be provided as the optional second
parameter to the method you're using. The `Data` interface has been written such that it is
compatible with the `Dex` type from
[smogon/pokemon-showdown-client](https://github.com/smogon/pokemon-showdown-client),
[smogon/pokemon-showdown](https://github.com/smogon/pokemon-showdown), and from the
[`pkmn/dex`](../dex) package which can be used in a standalone fashion outside of Pokémon Showdown
codebase:

```ts
import {Dex} from '@nxpkmn/dex';
import {Sets} from '@nxpkmn/sets';

const set = Sets.unpack(
  'Tangrowth||AssaultVest|H|GigaDrain,KnockOff,PowerWhip' +
  ',Earthquake|Sassy|248,,8,,252,||,30,30,,,|||,Ice,',
  Dex.forGen(6)
);
```

### Browser

The recommended way of using `@nxpkmn/sets` in a web browser is to **configure your bundler**
([Webpack](https://webpack.js.org/), [Rollup](https://rollupjs.org/),
[Parcel](https://parceljs.org/), etc) to minimize it and package it with the rest of your
application. If you do not use a bundler, a convenience `production.min.js` is included in the
package. You simply need to depend on `./node_modules/@nxpkmn/sets/build/production.min.js` in a
`script` tag (which is what the unpkg shortcut above is doing), after which **`PokemonSets` and
`PokemonTeams` will be accessible as globals.**

## License

This package is distributed under the terms of the [MIT License](LICENSE).
npm package: @nxpkmn/streams
Description: An automatically generated extraction of Pokémon Showdown's streams library
Latest version: 1.0.0

# `@nxpkmn/streams`

![Test Status](https://github.com/pkmn/ps/workflows/Tests/badge.svg)
![License](https://img.shields.io/badge/License-MIT-blue.svg)
[![npm version](https://img.shields.io/npm/v/@nxpkmn/streams.svg)](https://www.npmjs.com/package/@nxpkmn/streams)

This package has been automatically extracted from the [Pokémon
Showdown](https://github.com/smogon/pokemon-showdown) codebase. Documentation for the API of the
streams abstractions provided can be found in
[STREAMS.md](https://github.com/smogon/pokemon-showdown/blob/master/lib/STREAMS.md).

This package is distributed under the terms of Pokémon Showdown's [MIT License](LICENSE).
npm package: @nxpkmn/types
Description: Type definitions common across Pokemon Showdown
Latest version: 2.1.0

# `@nxpkmn/types`

![Test Status](https://github.com/pkmn/ps/workflows/Tests/badge.svg)
![License](https://img.shields.io/badge/License-MIT-blue.svg)
[![npm version](https://img.shields.io/npm/v/@nxpkmn/types.svg)](https://www.npmjs.com/package/@nxpkmn/types)

Type definitions common across [Pokémon Showdown](https://pokemonshowdown.com).

This package is distributed under the terms of the [MIT License](LICENSE).
npm package: @nxpm/ci
Description: Create CI configuration in a Nx Workspace!
Latest version: 4.21.0
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# @nxpm/ci

Create CI configuration in a Nx Workspace!

## Install the dependencies:

```shell script
yarn add -D @nxpm/ci
```

## Create CI config

### GitHub

This will create GitHub Actions workflow called `build-test` that will run on pull requests and merges to the default branch specified in the `affected.defaultBase` property in `nx.json`.

```shell script
nx g @nxpm/ci:github
```

To select a different branch run:

```shell script
nx g @nxpm/ci:github --branch develop
```

To select a different name and branch run:

```shell script
nx g @nxpm/ci:github --branch stage --name deploy-stage
```

## TODO

- [ ] Add CircleCI
- [ ] Add Travis
- [ ] Add more flexibility of commands to run (currently: `build`, `format:check`, `test:ci`)

## MIT Licensed by beeman 🐝
npm package: @nxrs/cargo
Description: [![npm version](https://badge.fury.io/js/%40nxrs%2Fcargo.svg)](https://badge.fury.io/js/%40nxrs%2Fcargo)
Author: Danny McGee
Latest version: 0.6.2

# @nxrs/cargo

[![npm version](https://badge.fury.io/js/%40nxrs%2Fcargo.svg)](https://badge.fury.io/js/%40nxrs%2Fcargo)

This is a WIP plugin for `@nrwl/nx` adding support for Rust applications and libraries.

## Generators

```sh
# @nxrs/cargo:bin also works
> nx generate @nxrs/cargo:app my-rust-app
```

```sh
> nx generate @nxrs/cargo:lib my-rust-lib
```

## Executors

```sh
# Build a library or binary
> nx build my-rust-app

# Run unit tests in a library
> nx test my-rust-lib

# Check a Rust project with `clippy`
> nx lint my-rust-app
# Don't fail on warnings:
> nx lint my-rust-app --fail-on-warnings false
```

### Options

The executors accept most of the same CLI args as the corresponding `cargo` commands. When in doubt, run with the `--help` flag to see all options with descriptions:

```sh
> nx build my-rust-app --help
```
npm package: @nxsf/ipnft
Description: Interplanetary Non-fungible File Token
Author: Onyx Software Foundation
Latest version: 0.5.0-rc.1

# Interplanetary Non-fungible File Token (IPNFT)

An IPNFT is an on-chain, digital proof of authorship for an IPFS CID, tailored to existing NFT standards.

In IPNFT, a token ID is also the 32-byte CID multihash digest.

## Deployment

1. Run `npm run deploy -- --network <network>`.

### Known deployments

#### Polygon Mumbai

```
LibIPNFT deployed to 0x5CA8bAEc0b929E7667E0c39F6440Dca5f69f72fC
Transaction hash: 0xb2b2923941c306ea85e2ee9ad8d5b6fb0b8cd66f41df5d168dd5b700f32a3485
```

## Development

1. Run `npm run build`, then `npm run test`.
1. Run Hardhat node with `npm run node`.
1. Deploy contracts with `npm run deploy -- --network localhost`.
   Copy the contracts' addresses into the application.
npm package: @nxt-codes/ngx-dynamic-table-pdf
Description: Adds a pdf-print-button to a ngx-dynamic-table.
Author: Christoph Huschenhoefer
Latest version: 0.0.2

# NgxDynamicTablePdf

This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 17.3.0.

## Demo
[Demo](https://nxt-codes.github.io/ngx-dynamic-table-pdf/)

## Code scaffolding

Run `ng generate component component-name --project ngx-dynamic-table-pdf` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project ngx-dynamic-table-pdf`.
> Note: Don't forget to add `--project ngx-dynamic-table-pdf` or else it will be added to the default project in your `angular.json` file. 

## Build

Run `ng build ngx-dynamic-table-pdf` to build the project. The build artifacts will be stored in the `dist/` directory.

## Publishing

After building your library with `ng build ngx-dynamic-table-pdf`, go to the dist folder `cd dist/ngx-dynamic-table-pdf` and run `npm publish`.

## Running unit tests

Run `ng test ngx-dynamic-table-pdf` to execute the unit tests via [Karma](https://karma-runner.github.io).

## Further help

To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.