open-index/open-npm huggingface dataset:
npm package: @mi-gpt/chat
Description: MiGPT 对话模块
Author: Del Wang
Latest version: 1.1.1

# @mi-gpt/chat

MiGPT 对话模块

```typescript
import { ChatBot, type IMessage } from "@mi-gpt/chat";

async function main() {
  const msg: IMessage = {
    id: "123456",
    sender: "user",
    text: "你好",
    timestamp: 1743903202225,
  };

  const answer = await ChatBot.chat(msg);

  console.log(answer);
}

main();
```
npm package: @mi-gpt/config
Description: MiGPT 公共配置
Author: Del Wang
Latest version: 1.1.0

# `@mi-gpt/config`

MiGPT 公共配置

## package.json

```json
{
  "type": "module",
  "devDependencies": {
    "@mi-gpt/config": "workspace:*",
    "@biomejs/biome": "^1.9.4",
    "tsup": "^8.4.0",
    "typescript": "^5.8.2"
  }
}
```

## tsconfig.json

```json
{
  "extends": "@mi-gpt/config/typescript",
  "include": ["**/*.ts", "**/*.tsx"],
  "exclude": ["node_modules"]
}
```

## biome.json

```json
{
  "extends": ["@mi-gpt/config/biome"]
}
```

## tsup.config.ts

```typescript
import { baseConfig } from "@mi-gpt/config/tsup";
import { defineConfig } from "tsup";

export default defineConfig({
  ...baseConfig,
});
```
npm package: @mi-gpt/engine
Description: MiGPT 核心模块
Author: Del Wang
Latest version: 1.2.1

# @mi-gpt/engine

MiGPT 核心模块

### 实现 Speaker

```typescript
import type { ISpeaker } from "@mi-gpt/engine/base";

class MySpeaker implements ISpeaker {
  play({ url, text }) {
    // todo 自定义播放音频/文字实现
  }

  abortXiaoAI() {
    // todo 自定义打断小爱回复实现
  }

  // todo 也可以添加更多能力，比如播放暂停等
}
```

### 实现 Engine

```typescript
import { MiGPTEngine } from "@mi-gpt/engine/index";

class MyEngine extends MiGPTEngine {
  config: MyConfig = {};

  // todo 自定义 speaker 实现
  speaker = new MySpeaker();

  async askAI(msg: IMessage): Promise<IReply> {
    // todo 自定义消息回复逻辑
    return { text: "hello " + msg.text };
  }

  async start(config?: MyConfig) {
    await super.start(config);

    // todo 自定义消息拉取逻辑
    while (this.status === "running") {
      this.onMessage({
        id: "123456",
        sender: "user",
        text: "你好",
        timestamp: Date.now(),
      });
      await sleep(100);
    }
  }
}
```

### 使用 Engine

```typescript
async function main() {
  // 创建
  const kMyEngine = new MyEngine();

  // 启动
  await kMyEngine.start({
    async onMessage(engine, { text }) {
      if (text.startsWith("你好")) {
        // 回复文字
        return { text: "你好，很高兴认识你！" };
      }

      if (text.startsWith("播放音乐")) {
        // 也可以回复音频链接
        return { url: "https://example.com/hello.mp3" };
      }

      // 也可以直接调用 engine 上提供的各种能力
      if (text.startsWith("你是谁")) {
        // 打断原来小爱的回复
        await engine.speaker.abortXiaoAI();
        // 播放文字
        await engine.speaker.play({ text: "猜猜看" });
        // 播放音频链接
        await engine.speaker.play({ url: "https://example.com/hello.mp3" });

        // 告诉 Engine 已经处理过这条消息了，不再使用默认的 AI 回复
        return { handled: true };
      }
    },
  });

  // 退出
  process.exit(0);
}

main();
```
npm package: @mi-gpt/miot
Description: MIoT 非官方 Node.js 客户端
Author: Del Wang
Latest version: 1.2.2

# @mi-gpt/miot

MIoT 非官方 Node.js 客户端

## 安装依赖

```shell
pnpm install @mi-gpt/miot
```

## 使用教程

```typescript
import { getMIoT, getMiNA, type MiServiceConfig } from "@mi-gpt/miot";

async function main() {
  const config: MiServiceConfig = {
    /**
     * 小米 ID（一串数字）
     *
     * 注意：不是手机号或邮箱，请在小米账号「个人信息」-「小米 ID」查看
     */
    userId: "123456",
    /**
     * 小米账号密码
     */
    password: "xxxxxxx",
    /**
     * 小爱音箱在米家中设置的名称
     *
     * 如果提示找不到设备，请打开 debug 选项获取设备真实 did
     */
    did: "Xiaomi 智能音箱 Pro",
  };

  // 初始化客户端
  const MiNA = await getMiNA(config);
  const MIoT = await getMIoT(config);

  // 调用 MiNA 指令（比如获取设备列表）
  await MiNA.getDevices();

  // 调用 MIoT 指令（你可以在 https://home.miot-spec.com/ 查询具体指令）
  await MIoT.doAction(5, 1, "Hello world, 你好！");
}

main();
```

## 免责声明

1. **适用范围**
   本项目为非盈利开源项目，仅限于技术原理研究、安全漏洞验证及非营利性个人使用。严禁用于商业服务、网络攻击、数据窃取、系统破坏等违反《网络安全法》及使用者所在地司法管辖区的法律规定的场景。
2. **非官方声明**
   本项目由第三方开发者独立开发，与小米集团及其关联方（下称"权利方"）无任何隶属/合作关系，未获其官方授权/认可或技术支持。项目中涉及的商标、固件、云服务的所有权利归属小米集团。若权利方主张权益，使用者应立即主动停止使用并删除本项目。

继续下载或运行本项目，即表示您已完整阅读并同意[用户协议](https://github.com/idootop/migpt-next/blob/main/agreement.md)，否则请立即终止使用并彻底删除本项目。

## License

MIT License © 2024-PRESENT [Del Wang](https://del.wang)
npm package: @mi-gpt/openai
Description: MiGPT 底层 OpenAI 接口
Author: Del Wang
Latest version: 1.1.1

# @mi-gpt/openai

MiGPT 底层 OpenAI 接口

```typescript
import { OpenAI } from "@mi-gpt/openai";

async function main() {
  const requestId = "1234";

  // 取消请求 
  // OpenAI.cancel(requestId);

  const answer = await OpenAI.chat({
    requestId,
    createParams: {
      stream: false,
      messages: [{ role: "user", content: "你好" }],
    },
  });

  console.log(answer);
}

main();
```
npm package: @mi-gpt/stream
Description: MiGPT 长文本自动分片 + 流式响应
Author: Del Wang
Latest version: 1.1.1

# @mi-gpt/stream

MiGPT 长文本自动分片 + 流式响应

```typescript
import { StreamResponse } from "@mi-gpt/stream";

async function main() {
  const stream = new StreamResponse();
  setTimeout(() => {
    stream.write("你好");
    stream.write("世界");
    stream.flush(); // 或取消 stream.cancel();
  }, 1000);
  const result = await stream.result();
  console.log(result);
}

main();
```
npm package: @mi-gpt/utils
Description: MiGPT 常用工具方法
Author: Del Wang
Latest version: 1.1.1

# @mi-gpt/utils

MiGPT 常用工具方法

```typescript
import { println, sleep } from "@mi-gpt/utils";

async function main() {
  await sleep(1000);
  println("hello wolrd!");
}

main();
```
npm package: @mi-sec/ip
Description: IP Address utility
Author: MI-SEC
Latest version: 1.0.7

# `@mi-sec/ip`

IP Address utility for parsing and validating IP Addresses

- Cross-platform - Support for:
    - CommonJS, ECMAScript Modules and UMD builds
    - Node >= 10, 12, 14

[![npm version](https://img.shields.io/npm/v/@mi-sec/ip.svg)](https://www.npmjs.com/package/@mi-sec/ip)
[![lerna](https://img.shields.io/badge/maintained%20with-lerna-cc00ff.svg)](https://lerna.js.org/)

### Usage

```
import ip from '@mi-sec/ip';

ip.validIPv4( '192.168.1.1' ) -> true
ip.longToIp( 3232235777 ) -> 192.168.1.1
ip.ipToLong( '192.168.1.1' ) -> 3232235777
```
npm package: @mi-sec/mac-address
Description: MAC Address utility
Author: MI-SEC
Latest version: 1.0.16

# `@mi-sec/mac-address`

MAC Address utility for parsing and validating MAC Addresses

- Cross-platform - Support for:
    - CommonJS, ECMAScript Modules and UMD builds
    - Node >= 13.2.x (8, 10, 12 in progress)

[![mac-address unit test](https://github.com/mi-sec/netx/workflows/mac-address%20unit%20test/badge.svg)](https://github.com/mi-sec/netx/actions?query=workflow:"mac-address+unit+test")
[![mac-address lint test](https://github.com/mi-sec/netx/workflows/mac-address%20lint%20test/badge.svg)](https://github.com/mi-sec/netx/actions?query=workflow:"mac-address+lint+test")

[![npm version](https://img.shields.io/npm/v/@mi-sec/mac-address.svg)](https://www.npmjs.com/package/@mi-sec/mac-address)
[![lerna](https://img.shields.io/badge/maintained%20with-lerna-cc00ff.svg)](https://lerna.js.org/)

### Usage

```
import macAddress from '@mi-sec/mac-address';

macAddress( '12:34:56:78:90:AB' ) -> <Buffer 12 34 56 78 90 ab>
macAddress( '12-34-56-78-90-AB' ) -> <Buffer 12 34 56 78 90 ab>
macAddress( '1234567890AB' ) -> <Buffer 12 34 56 78 90 ab>
macAddress( 0x1234567890AB ) -> <Buffer 12 34 56 78 90 ab>
macAddress( 20015998341291 ) -> <Buffer 12 34 56 78 90 ab>

import { isValidMACAddress } from '@mi-sec/mac-address';

isValidMACAddress( '12:34:56:78:90:AB' ) -> true
isValidMACAddress( '1234567890ZZ' ) -> false
```
npm package: @mi-sec/network-cidr
Description: network cidr utility
Author: MI-SEC
Latest version: 1.0.7

# `@mi-sec/network-cidr`

network cidr utility for parsing, expanding, and validating IPv4 CIDR blocks

- Cross-platform - Support for:
    - CommonJS, ECMAScript Modules and UMD builds
    - Node >= 13.2.x (8, 10, 12 in progress)

[![network-cidr unit test](https://github.com/mi-sec/netx/workflows/network-cidr%20unit%20test/badge.svg)](https://github.com/mi-sec/netx/actions?query=workflow:"network-cidr+unit+test")
[![network-cidr lint test](https://github.com/mi-sec/netx/workflows/network-cidr%20lint%20test/badge.svg)](https://github.com/mi-sec/netx/actions?query=workflow:"network-cidr+lint+test")

[![npm version](https://img.shields.io/npm/v/@mi-sec/network-cidr.svg)](https://www.npmjs.com/package/@mi-sec/network-cidr)
[![lerna](https://img.shields.io/badge/maintained%20with-lerna-cc00ff.svg)](https://lerna.js.org/)

### Usage

```
import cidr from '@mi-sec/network-cidr';
```
npm package: @mi-sec/npm-information
Description: Pull NPM information into a table format for dependency checking
Author: MI-SEC
Latest version: 1.0.3

# @mi-sec/npm-information

NPX module to generate information about dependencies in a project

<hr/>

### [getting started](#top)

```
cd project
npx @mi-sec/npm-information
```

A report is generated in PDF format like the following:

|Name|Version|Last Modified|Size|Download Url|Homepage Url|Publisher Name|Publisher Email|
|---|---|---|---|---|---|---|---|
|`bytes`|v3.1.0|1/22/2019|4.56KB|https://npmjs.com/package/bytes|https://github.com/visionmedia/bytes.js#readme|dougwilson|doug@somethingdoug.com|
|`html-pdf`|v3.0.1|5/7/2021|11.53KB|https://npmjs.com/package/html-pdf|https://github.com/marcbachmann/node-html-pdf|marcbachmann|marc.brookman@gmail.com|
|`marked`|v3.0.2|8/24/2021|95.06KB|https://npmjs.com/package/marked|https://marked.js.org|tonybrix|tony@brix.ninja|
npm package: @mi-sec/passport-geoaxis-oauth
Description: GEOAxIS (OAuth 2.0) authentication strategy for Passport.
Author: Nick Soggin
Latest version: 1.1.0

# passport-geoaxis-oauth

GEOAxIS (OAuth 2.0) authentication strategy for Passport.

[![NPM](https://nodei.co/npm/@mi-sec/passport-geoaxis-oauth.png?downloads=true&stars=true&downloadRank=true)](https://www.npmjs.com/package/@mi-sec/passport-geoaxis-oauth)

![GEOAxISStrategy tests](https://github.com/mi-sec/passport-geoaxis-oauth/workflows/GEOAxISStrategy%20tests/badge.svg)
![GEOAxISStrategy lint](https://github.com/mi-sec/passport-geoaxis-oauth/workflows/GEOAxISStrategy%20lint/badge.svg)

### Installation

`npm i @mi-sec/passport-geoaxis-oauth`

### Usage

**Basic usage:**

```
const
	config   = require( 'config' ),
	passport = require( 'passport' ),
	{
		Strategy: GEOAxISStrategy
	}        = require( 'passport-geoaxis-oauth' );

const app = express();

passport.use( new GEOAxISStrategy(
    {
        clientID: '',
        clientSecret: '',
        authorizationURL: '',
        tokenURL: '',
        userProfileURL: '',
        scope: '',
        callbackURL: ''
    },
    function( token, refresh, profile, done ) {
        return done( null, { token, refresh, profile } );
    }
) );

passport.serializeUser( ( user, done ) => done( null, user ) );
passport.deserializeUser( ( obj, done ) => done( null, obj ) );

app.use( passport.initialize() );
app.use( passport.session() );
```
npm package: @mi-sec/port-scanner
Description: simple port scanner utility
Author: MI-SEC
Latest version: 1.0.12

# `@mi-sec/port-scanner`

port scanner utility

- Cross-platform - Support for:
    - CommonJS, ECMAScript Modules and UMD builds
    - Node >= 13.2.x (8, 10, 12 in progress)

[![port-scanner unit test](https://github.com/mi-sec/netx/workflows/port-scanner%20unit%20test/badge.svg)](https://github.com/mi-sec/netx/actions?query=workflow:"port-scanner+unit+test")
[![port-scanner lint test](https://github.com/mi-sec/netx/workflows/port-scanner%20lint%20test/badge.svg)](https://github.com/mi-sec/netx/actions?query=workflow:"port-scanner+lint+test")

[![npm version](https://img.shields.io/npm/v/@mi-sec/port-scanner.svg)](https://www.npmjs.com/package/@mi-sec/port-scanner)
[![lerna](https://img.shields.io/badge/maintained%20with-lerna-cc00ff.svg)](https://lerna.js.org/)

### Usage

*`connectionOpts` is a direct pass in to
[`net.createConnection(<opts>)`](https://nodejs.org/api/net.html#net_socket_connect_options_connectlistener)

```
import PortScanner from '@mi-sec/port-scanner';

const scan = new PortScanner( {
	host: '192.168.1.0/24',
	ports: [ 22 ],
	timeout: 1000,           // optional
    debug: false,            // optional
    onlyReportOpen: true,    // optional
    bannerGrab: true,        // optional
    identifyService: true,   // optional
	attemptToIdentify: true, // optional
    connectionOpts: {}       // optional*
} );

const data   = [];
let progress = 0;

result
	.on( 'ready', async () => {
		await result.scan();
	} )
	.on( 'data', ( d ) => {
		data.push( d );
	} )
	.on( 'progress', ( d ) => {
		console.log( 'progress', d );
	} )
	.on( 'done', ( d ) => {
		console.log( d );
	} );
```

Result:
```
[
  {
    host: '127.0.0.1',
    port: 22,
    status: 'open',
    banner: 'SSH-2.0-OpenSSH_7.9\r\n',
    time: 4.238488,
    service: 'ssh'
  }
]
```
npm package: @mi-sec/wol
Description: Wake-On-LAN utility
Author: MI-SEC
Latest version: 1.0.13

# `@mi-sec/wol`

Wake-On-LAN utility

- Cross-platform - Support for:
    - CommonJS, ECMAScript Modules and UMD builds
    - Node >= 13.2.x (8, 10, 12 in progress)

[![wol unit test](https://github.com/mi-sec/netx/workflows/wol%20unit%20test/badge.svg)](https://github.com/mi-sec/netx/actions?query=workflow:"wol+unit+test")
[![wol lint test](https://github.com/mi-sec/netx/workflows/wol%20lint%20test/badge.svg)](https://github.com/mi-sec/netx/actions?query=workflow:"wol+lint+test")

[![npm version](https://img.shields.io/npm/v/@mi-sec/wol.svg)](https://www.npmjs.com/package/@mi-sec/wol)
[![lerna](https://img.shields.io/badge/maintained%20with-lerna-cc00ff.svg)](https://lerna.js.org/)

### Usage

```
import wakeOnLan from '@mi-sec/wol';

await wakeOnLan( '12:34:56:78:90:AB', {
    address: '255.255.255.255',
    packets: 3,
    interval: 100,
    port: 9
} );
```
npm package: @mi11er/eslint-config
Description: @mi11er/eslint-config combines various plugins and rulesets for use in mi11er.net projects
Author: Matthew Miller
Latest version: 2.4.1

# @mi11er/eslint-config

[![Codacy Badge](https://api.codacy.com/project/badge/Grade/3f9bcb5d38f24b4983e8972f12941575)](https://app.codacy.com/app/mi11er/eslint-config?utm_source=github.com&utm_medium=referral&utm_content=mi11er-net/eslint-config&utm_campaign=badger)
[![Build Status](https://travis-ci.org/mi11er-net/eslint-config.svg?branch=master)](https://travis-ci.org/mi11er-net/eslint-config)
[![NSP Status](https://nodesecurity.io/orgs/mi11er/projects/8e377034-82a1-4a76-89fa-f30d1ef9a513/badge)](https://nodesecurity.io/orgs/mi11er/projects/8e377034-82a1-4a76-89fa-f30d1ef9a513)

Combines various plugins and rulesets for use in mi11er.net projects.

## Installation

Note: don't forget the require peerDepencies.

```shell
npm install --save-dev eslint @mi11er/eslint-config eslint-plugin-optimize-regex eslint-plugin-import eslint-plugin-jsx-a11y eslint-plugin-react eslint-plugin-security
```

or

```shell
yarn add -D eslint @mi11er/eslint-config eslint-plugin-optimize-regex eslint-plugin-import eslint-plugin-jsx-a11y eslint-plugin-react eslint-plugin-security
```

## Setup

Add the config to your `.eslintrc` file:

```json
{
  "extends": "@mi11er"
}
```

or for react/preact based projects

```json
{
  "extends": "@mi11er/eslint-config/react"
}
```
npm package: @mi18n/svelte
Description: Svelte implementation for Mi18n localization framework
Author: JanCizmar
Latest version: 5.16.4

{% import "../../readmeMacros/macros.njk.md" as macros %}
{{ macros.header('Mi18n for Svelte', 'The Mi18n i18n SDK for Svelte', packageName) }}

# What is Mi18n for Svelte?
Svelte integration library of Mi18n. With this package, it's super simple to add i18n to your Svelte app!
For more information about using Mi18n with Svelte, visit the [docs 📖](https://mi18n.io/integrations/svelte).

Localize (translate) your Svelte or SvelteKit projects to multiple languages with Mi18n.
Integration of Mi18n is extremely simple! 🇯🇵 🇰🇷 🇩🇪 🇨🇳 🇺🇸 🇫🇷 🇪🇸 🇮🇹 🇷🇺 🇬🇧

{{ macros.integrationLinks('Mi18n for Angular docs', macros.v5link('integrations/svelte/installation')) }}

{{ macros.installation('svelte') }}

Then use the library in your app:

```svelte
<script lang="ts">
  import {
    Mi18nProvider,
    Mi18n,
    SveltePlugin,
    FormatSimple,
  } from '@mi18n/svelte';

  const mi18n = Mi18n()
    .use(SveltePlugin())
    .use(FormatSimple())
    .init({
      apiUrl: import.meta.env.VITE_MI18N_API_URL,
      apiKey: import.meta.env.VITE_MI18N_API_KEY,
      language: 'en',
    });
</script>

<Mi18nProvider {mi18n}>
  <div slot="fallback">Loading...</div>
  <slot />
</Mi18nProvider>
```

## Usage

To translate texts using Mi18n Svelte integration, you can use `T` component or `getTranslate` function.

### T component

```svelte
<script>
  import { T } from '@mi18n/svelte';
</script>

<T keyName="key" defaultValue="This is default" />
```

### getTranslate function

The `getTranslate` function returns a store containing the function, which translates your key.

```svelte
<script>
  import { getTranslate } from '@mi18n/svelte';

  const { t } = getTranslate();
</script>

{$t('this_is_a_key', { key: 'value', key2: 'value2' })}
```

### Changing the language

To change the current language, use `getLanguageStore` method. For example, you can bind it to a select value.

```svelte
<script lang="ts">
  import { getMi18n } from '@mi18n/svelte';

  const mi18n = getMi18n(['language']);

  function handleLanguageChange(e) {
    $mi18n.changeLanguage(e.currentTarget.value);
  }
</script>

<select value={$mi18n.getLanguage()} on:change={handleLanguageChange}>
  ...
</select>
```

{{ macros.prereq('Svelte') }}

{{ macros.why() }}

## Development
{{ macros.developmentInstallation() }}
{{ macros.development('svelte') }}

{{ macros.developmentTesting('/packages/svelte') }}

{{ macros.e2eTesting('svelte') }}

{{ macros.contributors() }}
npm package: @mi1y/toast-mi1y
Description: A simple and flexible toast notification library for Svelte 5
Author: mi1y
Latest version: 1.0.0

# toast-mi1y

A simple, flexible, and modern toast notification library for Svelte 5.
Easily display beautiful notifications in your SvelteKit or Svelte 5 app with minimal setup.

## Screenshots

| Success | Info | Warning | Error | Confirm |
|--------|------|---------|-------|-------|
| ![Success](/static/sample_success.png) | ![Info](/static/sample_info.png) | ![Warning](/static/sample_warning.png) | ![Error](/static/sample_error.png) | ![Confirm](/static/sample_confirm.png)


## Features

- ⚡ Instant setup – just drop in the component
- 🪶 Lightweight, minimal dependencies (uses Svelte's built-in fly transition)
- 🧩 Works with Svelte 5 runes and SvelteKit
- 🕹️ API for success, info, warning, error, and confirm toasts
- 💬 Ready for dynamic values (e.g. i18n)

## Installation

```bash
pnpm i @mi1y/toast-mi1y
# or
npm i @mi1y/toast-mi1y
```

## Quick Start

Add the toast component to your main layout (e.g. +layout.svelte):

```svelte
<script lang="ts">
  import { InitToast } from '@mi1y/toast-mi1y';
</script>

<InitToast />
<slot />
```

## Usage Examples

Import the toast store and use it anywhere in your app:

```ts
import { toast } from '@mi1y/toast-mi1y';

toast.success("This is a sample success toast!");
toast.info("This is a sample info toast!");
toast.warning("This is a sample warning toast!");
toast.error("This is a sample error toast!");

// Dynamic values (e.g. with i18n)
toast.success($LL.success);

// Confirm toast example
let confirmResult: boolean | null = null;
async function showConfirm() {
  const result = await toast.confirm("Are you sure?");
  confirmResult = result;
}
```

Example Svelte usage:

```svelte
<script lang="ts">
  import { toast } from '@mi1y/toast-mi1y';

  function showSuccess() {
    toast.success("This is a sample success toast!");
  }
  function showInfo() {
    toast.info("This is a sample info toast!");
  }
  function showWarning() {
    toast.warning("This is a sample warning toast!");
  }
  function showError() {
    toast.error("This is a sample error toast!");
  }

  let confirmResult: boolean | null = null;
  async function showConfirm() {
    const result = await toast.confirm("Are you sure?");
    confirmResult = result;
  }
</script>

<div>
  <button on:click={showSuccess}>Show success toast</button>
  <button on:click={showInfo}>Show info toast</button>
  <button on:click={showWarning}>Show warning toast</button>
  <button on:click={showError}>Show error toast</button>
  <button on:click={showConfirm}>Show confirm toast</button>
  {#if confirmResult !== null}
    <p>Confirm result: {confirmResult ? 'Confirmed' : 'Cancelled'}</p>
  {/if}
</div>
```
npm package: @mi53re/check-password-validity
Description: A simple password validator
Author: MI53RE
Latest version: 1.0.1

# check-password-validity

A simple password validity checker.

A password will be tested against its length plus 4 rules :

- password contains at least 1 numeric char
- password contains at least 1 lower alphabetic char
- password contains at least 1 upper alphabetic char
- password contains at least 1 non alphanumeric char

What it takes as parameters :

```javascript
/**
 * @param {string} password the password to be tested
 * @param {number} minimumPasswordLength an integer being the minimum number of char the password must be (default is 8)
 * @param {number} minimumRulesMatching an integer being the minimum number of rules the password must matches to be valid (default is 3)
 * @returns {boolean}
 */
const checkPasswordValidity = (password, minimumPasswordLength, minimumRulesMatching) => {}
```

The function will return a boolean at the end of the operation or throw an error if unexpected type of argument is passed to it.

*example:*

```javascript
const checkPasswordValidity = require('check-password-validity');

const password = 'abcDEF123#';
const minimumPasswordLength = 8; // default value
const minimumRulesMatching = 3; // default value

if (checkPasswordValidity(password, minimumPasswordLength, minimumRulesMatching)) {
  console.log('the password is valid !');
} else {
  console.log('the password is not valid !');
}
```
npm package: @mi6gan/draft-js-static-toolbar-plugin
Description: Static Toolbar Plugin for DraftJS
Author: Julian Krispel
Latest version: 2.0.0-rc8

# DraftJS Static Toolbar Plugin

*This is a plugin for the `draft-js-plugins-editor`.*

Usage:

```js
import createToolbarPlugin from 'draft-js-static-toolbar-plugin';

const toolbarPlugin = createToolbarPlugin();
```
npm package: @mia-burton/axerve-js
Description: Axerve payment gateway for js app
Author: Mia Burton
Latest version: 0.2.4

# Axerve-js
A Node.js module for axerve api
## Installation
```sh
npm install @mia-burton/axerve-js --save
yarn add @mia-burton/axerve-js
```

## Usage
```typescript
import { AxerveClient } from '@mia-burton/axerve-js'

const client = new AxerveClient(API_KEY, SHOP_LOGIN)

//Create order
client.createOrder(orderDetail)

//Submit payment
client.submitOrder(token, creditCard)

```
To override back-office user redirect url pass it to `submitOrder`
```typescript
//Submit payment
client.submitOrder(token, creditCard, successUrl, errorUrl)

```

## Enable sandbox env
On inizialization set `sandbox` parameter to true

## Test
```sh
npm run test
```
npm package: @mia-burton/dhl-tracking-js
Description: DHL tracking
Author: Paolo Felice Galizzi
Latest version: 0.0.4

# dhl-tracking-js

A Node.js module for tracking DHL by tracking number 

## Usage
First of all you need to register to [DHL Develop portal](https://developer.dhl.com) and register an App in order to get the **DHL-API-Key**.

The tracking method accept optional fields `SERVICE`, `ORIGIN_COUNTRY_CODE` and `REQUESTER_COUNTRY_CODE`, refer to [DHL documentation](https://developer.dhl.com/api-reference/shipment-tracking#get-started-section/overview) to see allowed values.

### Javascript
```
var dhlTracking = require('@mia-burton/dhl-tracking-js')
var dhl = new dhlTracking(API_KEY, BASE_URL)

// Get tracking order information
dhl.tracking({
  trackingNumber: TRACKING_NUMBER,
  service: SERVICE?,
  originCountryCode: ORIGIN_COUNTRY_CODE?,
  requesterCountryCode: REQUESTER_COUNTRY_CODE?
})
```

### Typescript

```
import dhlTracking from '@mia-burton/dhl-tracking-js'
const dhl = new dhlTracking(API_KEY, BASE_URL)

// Get tracking order information
dhl.tracking({
  trackingNumber: TRACKING_NUMBER,
  service: SERVICE?,
  originCountryCode: ORIGIN_COUNTRY_CODE?,
  requesterCountryCode: REQUESTER_COUNTRY_CODE?
})
```

## Test
call `npm run test`
npm package: @mia-burton/fedex-api-js
Description: FedEx tracking
Author: Paolo Felice Galizzi
Latest version: 1.0.2

# fedex-api-js

A Node.js module for fedex API such as:
 - tracking by tracking number
 - generate shipment labels

## Usage
First of all you need to register to [FedEx Develop portal](https://developer.fedex.com/) and register an App in order to get the **FedEx-API-Key** and **FedEx-API-Secret**.

### Javascript
```
const { Tracking } = require('@mia-burton/fedex-api-js')
const fedex = new Tracking(CLIENT_ID, CLIENT_SECRET, SANDBOX, VERSION?)

// Get tracking order information
fedex.tracking({
  trackingNumber: TRACKING_NUMBER,
  language: LANGUAGE?
})
```

### Typescript

```
import { Tracking } from '@mia-burton/fedex-api-js'
const fedex = new Tracking(CLIENT_ID, CLIENT_SECRET, SANDBOX, VERSION?)

// Get tracking order information
fedex.tracking({
  trackingNumber: TRACKING_NUMBER,
  language: LANGUAGE?
})
```

## Test
Add the .env file (following .env.sample and FedEx testing ENV documentation) and than call `yarn run test`
npm package: @mia-burton/fedex-tracking-js
Description: FedEx tracking
Author: Paolo Felice Galizzi
Latest version: 0.0.1

# fedex-tracking-js

A Node.js module for tracking FedEx by tracking number

## Usage
First of all you need to register to [FedEx Develop portal](https://developer.fedex.com/) and register an App in order to get the **FedEx-API-Key** and **FedEx-API-Secret**.

### Javascript
```
var fedExTracking = require('@mia-burton/fedex-tracking-js')
var fedex = new fedExTracking(CLIENT_ID, CLIENT_SECRET, BASE_URL, VERSION?)

// Get tracking order information
fedex.tracking({
  trackingNumber: TRACKING_NUMBER,
  language: LANGUAGE?
})
```

### Typescript

```
import fedExTracking from '@mia-burton/fedex-tracking-js'
var fedex = new fedExTracking(CLIENT_ID, CLIENT_SECRET, BASE_URL, VERSION?)

// Get tracking order information
fedex.tracking({
  trackingNumber: TRACKING_NUMBER,
  language: LANGUAGE?
})
```

## Test
Add the .env file (following .env.sample and FedEx testing ENV documentation) and than call `yarn run test`
npm package: @mia-burton/klarna-node
Description: A Node.js module for Klarna
Author: Mia Burton
Latest version: 1.0.4

# klarna-node
A Node.js module for klarna api
## Installation
```sh
npm install @mia-burton/klarna-node --save
yarn add @mia-burton/klarna-node
```

## Usage

```typescript
import { Client } from '@mia-burton/klarna-node'

const client = new Client(uid, password).setLocation('America') // Location is onw of America, Europe, Oceania

//Create payment session
client.createPaymentSession(order, urls)

//Create order after the authorizathion on the client
client.createOrder(sessionId)

//Retrive the order
client.getOrder(orderId)
```

## Enable sandbox env

On inizialization set `live` parameter to false

## Test

```sh
npm run test
```
npm package: @mia-burton/scalapay-js
Description: A Node.js module for Scalapay
Author: Mia Burton
Latest version: 0.3.3

# scalapay-js
A Node.js module for scalapay api
## Installation
```sh
npm install @mia-burton/scalapay-js --save
yarn add @mia-burton/scalapay-js
```

## Usage
### Javascript
```javascript
var scalaClient = require('@mia-burton/scalapay-js')
var client = new scalaClient(API_KEY)

//Create order
client.createOrder(orderDetail, 'your-confirmation-url', 'your-cancel-url')

//Capture payment
client.capture(token)

//Refund
client.refund(token ,refund)
```

### TypeScript
```typescript
import { ScalaClient } from '@mia-burton/scalapay-js'

const client = new ScalaClient(API_KEY)

//Create order
client.createOrder(orderDetail, 'your-confirmation-url', 'your-cancel-url')

//Capture payment
client.capture(token)

//Refund
client.refund(token ,refund)
```
## Enable sandbox env
On inizialization set `sandbox` parameter to true

## Test
```sh
npm run test
```
npm package: @mia-cx/tailwindcss-themes
Description: Tailwind plugin for theming. Provide media queries and/or multiple selectors, and variants for each theme will be generated.
Author: mia-cx
Latest version: 0.1.0

# [@mia-cx/tailwindcss-themes](https://github.com/mia-cx/tailwindcss-themes)

A Tailwind plugin for theming. Provide media queries and/or multiple selectors, and variants for each theme will be generated!

Heavily inspired and massively enabled by [JNavith/tailwindcss-theme-variants](https://github.com/JNavith/tailwindcss-theme-variants) 

## Getting Started

```sh
pnpm i -D @mia-cx/tailwindcss-themes
```

```js
// tailwind.config.js
const themes = require('@mia-cx/tailwindcss-themes');

module.exports = {
  // ...
  plugins: [
    // ...
    themes({
      themes: {
        light: {
          selectors: '.light',
        },
        dark: {
          selectors: '.dark',
        },
      },
      baseSelector: ':root',
      fallback: 'dark',
    }),
  ],
  // ...
};
```

## To Do

- [ ] Add auto-generated utilities based on each theme's `theme` definition.