open-index/open-npm huggingface dataset:
npm package: @my-ts-react-workspaces/react-scripts
Description: React + Yarn Workspaces Configuration and scripts for Create React App.
Latest version: 3.0.2-alpha-09

# :warning: WARNING!

This is a custom scripts-version of React-Scripts that provides Monorepo support.

See [React Workspaces Playground](https://github.com/react-workspaces/react-workspaces-playground) for a working demo.

[![React Workspaces Playground Screenshots](https://i.imgur.com/7snWXD0.png)](https://github.com/react-workspaces/react-workspaces-playground)

For more information on why this ways created, please read this for more info: https://github.com/F1LT3R/cra-workspaces-support-1333

# react-scripts

This package includes scripts and configuration used by [Create React App](https://github.com/facebook/create-react-app).<br>
Please refer to its documentation:

- [Getting Started](https://facebook.github.io/create-react-app/docs/getting-started) – How to create a new app.
- [User Guide](https://facebook.github.io/create-react-app/) – How to develop apps bootstrapped with Create React App.
npm package: @my-ui-liu/my-ui-components
Description: 一个支持 PC 和移动端的 Vue2 UI 组件库
Author: Your Name
Latest version: 0.1.1

# @my-ui-liu/my-ui-components

一个支持 PC 和移动端的 Vue2 UI 组件库

## 安装

```bash
npm install @my-ui-liu/my-ui-components
```

## 快速开始

### 全局引入

```javascript
import Vue from 'vue'
import MyUIComponents from '@my-ui-liu/my-ui-components'
import '@my-ui-liu/my-ui-components/lib/my-ui-components.css'

Vue.use(MyUIComponents)
```

### 按需引入

```javascript
import Vue from 'vue'
import { MyButton, MyInput } from '@my-ui-liu/my-ui-components'
import '@my-ui-liu/my-ui-components/lib/my-ui-components.css'

Vue.component('MyButton', MyButton)
Vue.component('MyInput', MyInput)
```

## 使用示例

### Button 按钮

```vue
<template>
  <div>
    <my-button type="primary" @click="handleClick">
      点击我
    </my-button>
    <my-button type="success">成功按钮</my-button>
    <my-button :loading="loading">加载中</my-button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      loading: false
    }
  },
  methods: {
    handleClick() {
      console.log('按钮被点击')
    }
  }
}
</script>
```

### Input 输入框

```vue
<template>
  <div>
    <my-input 
      v-model="value" 
      placeholder="请输入内容"
      @focus="handleFocus"
    />
  </div>
</template>

<script>
export default {
  data() {
    return {
      value: ''
    }
  },
  methods: {
    handleFocus() {
      console.log('输入框获得焦点')
    }
  }
}
</script>
```

## 组件文档

### MyButton

**Props:**
- `type`: 按钮类型，可选值：`default`、`primary`、`success`、`warning`、`danger`
- `size`: 按钮尺寸，可选值：`large`、`medium`、`small`、`mini`
- `disabled`: 是否禁用
- `loading`: 是否加载中
- `plain`: 是否朴素按钮
- `round`: 是否圆角按钮

**Events:**
- `click`: 点击事件

### MyInput

**Props:**
- `value`: 绑定值
- `type`: 输入框类型（text、password、number 等）
- `placeholder`: 占位符
- `disabled`: 是否禁用
- `readonly`: 是否只读
- `error`: 是否错误状态

**Events:**
- `input`: 输入事件
- `focus`: 获得焦点事件
- `blur`: 失去焦点事件

## 开发

```bash
# 安装依赖
npm install

# 启动开发服务器
npm run serve

# 构建组件库
npm run build:lib
```

## 版本

当前版本：0.1.0

## 许可证

MIT

## 链接

- [npm 包地址](https://www.npmjs.com/package/@my-ui-liu/my-ui-components)
npm package: @my-ul/build-readme
Description: Compiles multiple markdowns into one markdown file, attempting to preserve structure.
Author: Brad Kovach
Latest version: 1.1.0

# build-readme

The build-readme utility semi-intelligently combines several markdown documents into one document, suitable for publishing to npm. This tool is designed with component-based architecture in mind: with this tool, you can bundle a README.md alongside your code and tests, and then compile it into one giant readme when ready.

It is used to support `@my-ul/ng-porcelain`.

# Features

-   automatic image handling (include gifs and jpegs)
-   automatic re-leveling of heading levels (ex, # nested three sections deep becomes ###)
-   automatic generation of `npm install` section

# Installation

```bash
npm install -g @my-ul/build-readme
```

# Usage

## Arguments

```
OPTIONS
  -a, --assets=assets
  		[default: doc-assets] Name of the assets directory; if blank, `doc-assets` is used.
  -c, --configFile=configFile
  		(required) A JSON file that provides the TOC structure.
  -o, --outFile=outFile
  		[default: README.md] Output path, including filename.
  -p, --packageFile=packageFile
  		[default: package.json] The distribution package.json file.  Used for generating the installation command.
  -t, --title=title
  		(required) Root title for the output document
  -x, --excludePackages=excludePackages
  		(required) [default: ^(@angular/.*)$] A regular expression string used to exclude packages from the generated installation command.
```

## Example

Let's create a README.md file using three source documents: `INSTALL.md` and `components/dropdown/README.md` and `components/checkbox/README.MD`.

```text
contoso/
├─ components/
│  ├─ checkbox/
│  │  ├─ README.md
│  ├─ dropdown/
│  │  ├─ README.md
│  ├─ README.md
├─ INSTALL.md
├─ package.json
```

### Organize your output document..

If you want to include an introduction to a section, you can add that introduction by using the `__` (two underscores) key in your README.json index.

```json
{
    "Installation": "./INSTALL.md",
    "Components": {
        "__": "./components/README.md",
        "Dropdown": "./components/dropdown/README.md",
        "Checkbox": "./components/checkbox/README.md"
    }
}
```

Run the generator command...

```bash
npx build-readme \
	-t "Contoso Components" \
	-c "readme.json" \
	-o "dist/README.md" \
	-p "package.json"
```

Once run, this will output a document such as... Heading levels will be adjusted automatically.

```markdown
# Contoso Components

## Installation

This is the content of `./INSTALL.md`.

## Components

This is the content of `./components/README.md`. It is included as a section introduction using `__` as the tag.

### Dropdown

This is the content of `./components/dropdown/README.md`. Since it is nested, it has a heading level 3.

### Checkbox

This is the content of `./components/checkbox/README.md`. Since it is nested, it has heading level 3.
```
npm package: @my-utils-changeit/abstract-logger
Description: Rosen Bridge abstract logger class, the base type for loggers used in all Rosen packages
Author: Rosen Team
Latest version: 3.0.2

# @my-utils-changeit/abstract-logger

## Table of contents

- [Introduction](#introduction)
- [Installation](#installation)

## Introduction

`@my-utils-changeit/abstract-logger` contains abstract logger class, the base type
for loggers used in all Rosen packages.

## Installation

npm:

```sh
npm i @my-utils-changeit/abstract-logger
```

yarn:

```sh
yarn add @my-utils-changeit/abstract-logger
```
npm package: @my-utils-changeit/address-codec
Description: A Typescript package for encoding and decoding of addresses in Rosen bridge supported chains
Author: Rosen Team
Latest version: 1.0.2

# @my-utils-changeit/address-codec

## Table of contents

- [Introduction](#introduction)
- [Installation](#installation)

## Introduction

A Typescript package for encoding and decoding of addresses in Rosen bridge supported chains

## Installation

npm:

```sh
npm i @my-utils-changeit/address-codec
```

yarn:

```sh
yarn add @my-utils-changeit/address-codec
```
npm package: @my-utils-changeit/binance
Description: this project contains binance chain for Rosen-bridge
Author: Rosen Team
Latest version: 3.0.2

# @rosen-chains/binance

## Table of contents

- [Introduction](#introduction)
- [Installation](#installation)

## Introduction

this project contains binance chain for Rosen-bridge

## Installation

npm:

```sh
npm i @rosen-chains/binance
```

yarn:

```sh
yarn add @rosen-chains/binance
```
npm package: @my-utils-changeit/bitcoin
Description: this project contains bitcoin chain for Rosen-bridge
Author: Rosen Team
Latest version: 9.0.2

# @rosen-chains/bitcoin

## Table of contents

- [Introduction](#introduction)
- [Installation](#installation)

## Introduction

this project contains bitcoin chain for Rosen-bridge

## Installation

npm:

```sh
npm i @rosen-chains/bitcoin
```

yarn:

```sh
yarn add @rosen-chains/bitcoin
```
npm package: @my-utils-changeit/bitcoin-esplora
Description: A package to be used as network api provider for @rosen-chains/bitcoin package
Author: Rosen Team
Latest version: 5.0.2

# @rosen-chains/bitcoin-esplora

## Table of contents

- [Introduction](#introduction)
- [Installation](#installation)

## Introduction

A package to be used as network api provider for @rosen-chains/bitcoin package

## Installation

npm:

```sh
npm i @rosen-chains/bitcoin-esplora
```

yarn:

```sh
yarn add @rosen-chains/bitcoin-esplora
```
npm package: @my-utils-changeit/bitcoin-runes
Description: this project contains Runes protocol of Bitcoin chain for Rosen-bridge
Author: Rosen Team
Latest version: 3.0.2

# @rosen-chains/bitcoin-runes

## Table of contents

- [Introduction](#introduction)
- [Installation](#installation)

## Introduction

This project contains Runes protocol of Bitcoin chain for Rosen-bridge

## Installation

npm:

```sh
npm i @rosen-chains/bitcoin-runes
```

yarn:

```sh
yarn add @rosen-chains/bitcoin-runes
```
npm package: @my-utils-changeit/bitcoin-runes-rpc
Description: A package to be used as network api provider for @rosen-chains/bitcoin-runes package
Author: Rosen Team
Latest version: 2.0.2

# @rosen-chains/bitcoin-runes-rpc

## Table of contents

- [Introduction](#introduction)
- [Installation](#installation)

## Introduction

A package to be used as network api provider for @rosen-chains/bitcoin-runes package

## Installation

npm:

```sh
npm i @rosen-chains/bitcoin-runes-rpc
```

yarn:

```sh
yarn add @rosen-chains/bitcoin-runes-rpc
```
npm package: @my-utils-changeit/callback-logger
Description: A new logger with callback method on each levels
Author: Rosen Team
Latest version: 1.0.2

# callback-logger

## Table of contents

- [Introduction](#introduction)
- [Installation](#installation)

## Introduction

A new logger with callback method on each levels

## Installation

npm:

```sh
npm i @my-utils-changeit/callback-logger
```

yarn:

```sh
yarn add @my-utils-changeit/callback-logger
```
npm package: @my-utils-changeit/cardano-blockfrost-network
Description: a package to be used as network api provider for @rosen-chains/cardano package
Author: Rosen Team
Latest version: 10.0.1

# @rosen-chains/cardano-blockfrost-network

## Table of contents

- [Introduction](#introduction)
- [Installation](#installation)

## Introduction

`@rosen-chains/cardano-blockfrost-network` is a package to be used as network api provider for `@rosen-chains/cardano` package

## Installation

npm:

```sh
npm i @rosen-chains/cardano-blockfrost-network
```

yarn:

```sh
yarn add @rosen-chains/cardano-blockfrost-network
```

## Usage

```ts
import { CardanoChain } from '@rosen-chains/cardano';
import CardanoBlockFrostNetwork from '@rosen-chains/cardano-blockfrost-network';

let tokens: RosenTokens;
const cardanoBlockFrostNetwork = new CardanoBlockFrostNetwork(
  'PROJECT_ID', // blockFrost project id
  'lockAddress', // bridge lock address in Cardano (used in CardanoRosenExtractor)
  tokens, // bridge supported tokens config, provided by `rosen-bridge/contract`
  undefined, // backend url, uses main blockFrost backend if no url is passed
);

const height = await cardanoBlockFrostNetwork.getHeight();
```
npm package: @my-utils-changeit/cardano-koios-network
Description: cardano koios network package for rosen cardano chain
Author: Rosen Team
Latest version: 13.0.1

# @rosen-chains/cardano-koio-network

## Table of contents

- [Introduction](#introduction)
- [Installation](#installation)
- [Usage](#usage)

## Introduction

`@rosen-chains/cardano-koios-network` is a package to be used as network api
provider for `@rosen-chains/cardano` package.

## Installation

npm:

```sh
npm i @rosen-chains/cardano-koios-network
```

yarn:

```sh
yarn add @rosen-chains/cardano-koios-network
```

## Usage

```ts
import { CardanoChain } from '@rosen-chains/cardano';
import CardanoKoiosNetwork from '@rosen-chains/cardano-koios-network';

let tokens: RosenTokens;
const cardanoKoiosNetwork = new CardanoKoiosNetwork(
  'https://api.koios.rest/api/v0', // koios api url
  'lockAddress', // bridge lock address in Cardano (used in CardanoRosenExtractor)
  tokens, // bridge supported tokens config, provided by `rosen-bridge/contract`
  loggerFactory('KoiosNetwork'), // logger (optional)
);

const height = await cardanoKoiosNetwork.getHeight();
```
npm package: @my-utils-changeit/changeset-formatter
Description: A changeset formatter based on default changeset formatter, but without commit hashes
Author: Rosen Team
Latest version: 2.0.2

# @my-utils-changeit/changeset-formatter

## Table of contents

- [Introduction](#introduction)
- [Installation](#installation)
- [Usage](#usage)

## Introduction

A changeset formatter based on default changeset formatter, but without commit hashes

## Installation

npm:

```sh
npm i @my-utils-changeit/changeset-formatter
```

yarn:

```sh
yarn add @my-utils-changeit/changeset-formatter
```

## Usage

In your `./changeset/config.json`:

```json
{
  "changelog": "@my-utils-changeit/changeset-formatter"
}
```
npm package: @my-utils-changeit/cli
Description: The official Rosen bridge cli, providing helpers for the tasks related to Rosen bridge
Latest version: 2.1.1

# @my-utils-changeit/cli

## Table of contents

- [Introduction](#introduction)
- [Installation](#installation)
- [Usage](#usage)

## Introduction

`@my-utils-changeit/cli` is the official Rosen bridge cli, providing helpers for the
tasks related to Rosen bridge.

## Installation

npm:

```sh
npm i @my-utils-changeit/cli
```

yarn:

```sh
yarn add @my-utils-changeit/cli
```

## Usage

The cli can be used through `npx`.

```sh
npx @my-utils-changeit/cli --help
```

### `download-assets`

Downloads Rosen bridge assets (tokens and addresses files) from
[`contracts`](https://github.com/rosen-bridge/contract) repository on GitHub for
a specific chain type (e.g. mainnet, etc.).

```sh
npx @my-utils-changeit/cli download-assets --help
```

#### Examples

Download assets for mainnet into a `rosen` directory.

```sh
npx @my-utils-changeit/cli download-assets --chain-type mainnet --out rosen
```

docker solution:

```shell
docker run -it --rm -v "$PWD"/rosen:/usr/src/app/rosen -w /usr/src/app node:20.11 npx --yes @my-utils-changeit/cli download-assets --chain-type mainnet --out rosen
```

Download assets for testnet into a `rosen` directory. If some pre-releases are
available for testnet, download them. Add suffix `foo` to all downloaded asset
names.

```sh
npx @my-utils-changeit/cli download-assets -c testnet -o rosen --include-prereleases --suffix foo
```

### `tss-secret`

Generate Tss publicKey/secret for ecdsa or eddsa.

```sh
npx @my-utils-changeit/cli tss-secret -t ecdsa generate
npx @my-utils-changeit/cli tss-secret -t eddsa generate
```

docker solution for `ecdsa`:

```shell
docker run -it --rm node:20.11 npx --yes @my-utils-changeit/cli tss-secret -t ecdsa generate
```

Convert secret to pk:

```sh
npx @my-utils-changeit/cli tss-secret -t ecdsa convert-to-pk YOUR_TSS_SECRET
npx @my-utils-changeit/cli tss-secret -t eddsa convert-to-pk YOUR_TSS_SECRET
```

docker solution for `ecdsa`:

```shell
docker run -it --rm node:20.11 npx --yes @my-utils-changeit/cli tss-secret -t ecdsa convert-to-pk YOUR_TSS_SECRET
```

### `blake2b-hash`

blake2b hash of specified input

```sh
npx @my-utils-changeit/cli blake2b-hash [input]
```

#### Examples

Get blake2b hash from `hello`

```sh
npx @my-utils-changeit/cli blake2b-hash hello
```

docker solution:

```shell
docker run -it --rm node:20.11 npx --yes @my-utils-changeit/cli blake2b-hash hello
```
npm package: @my-utils-changeit/config
Description: a package to manage configs of rosen bridge projects
Author: Rosen Team
Latest version: 1.1.1

# @my-utils-changeit/config

## Table of contents

- [Introduction](#introduction)
- [Installation](#installation)

## Introduction

a package to manage configs of rosen bridge projects

## Installation

npm:

```sh
npm i @my-utils-changeit/config
```

yarn:

```sh
yarn add @my-utils-changeit/config
```
npm package: @my-utils-changeit/doge
Description: this project contains doge chain for Rosen-bridge
Author: Rosen Team
Latest version: 3.0.2

# @rosen-chains/doge

## Table of contents

- [Introduction](#introduction)
- [Installation](#installation)

## Introduction

this project contains doge chain for Rosen-bridge

## Installation

npm:

```sh
npm i @rosen-chains/doge
```

yarn:

```sh
yarn add @rosen-chains/doge
```
npm package: @my-utils-changeit/doge-blockcypher
Description: A package to be used as network api provider for @rosen-chains/doge package using BlockCypher API
Author: Rosen Team
Latest version: 1.0.2

# @rosen-chains/doge-blockcypher

## Table of contents

- [@rosen-chains/doge-blockcypher](#rosen-chainsdoge-blockcypher)
  - [Table of contents](#table-of-contents)
  - [Introduction](#introduction)
  - [Installation](#installation)

## Introduction

A package to be used as network api provider for @rosen-chains/doge package

## Installation

npm:

```sh
npm i @rosen-chains/doge-blockcypher
```

yarn:

```sh
yarn add @rosen-chains/doge-blockcypher
```
npm package: @my-utils-changeit/doge-esplora
Description: A package to be used as network api provider for @rosen-chains/doge package
Author: Rosen Team
Latest version: 2.0.2

# @rosen-chains/doge-esplora

## Table of contents

- [Introduction](#introduction)
- [Installation](#installation)

## Introduction

A package to be used as network api provider for @rosen-chains/doge package

## Installation

npm:

```sh
npm i @rosen-chains/doge-esplora
```

yarn:

```sh
yarn add @rosen-chains/doge-esplora
```
npm package: @my-utils-changeit/doge-rpc
Description: A package to be used as network api provider for @rosen-chains/doge package using RPC API
Author: Rosen Team
Latest version: 1.0.2

# @rosen-chains/doge-rpc

## Table of contents

- [@rosen-chains/doge-rpc](#rosen-chainsdoge-rpc)
  - [Table of contents](#table-of-contents)
  - [Introduction](#introduction)
  - [Installation](#installation)

## Introduction

A package to be used as network api provider for @rosen-chains/doge package

## Installation

npm:

```sh
npm i @rosen-chains/doge-rpc
```

yarn:

```sh
yarn add @rosen-chains/doge-rpc
```
npm package: @my-utils-changeit/ergo-explorer-network
Description: ergo explorer network package for rosen ergo chain
Author: Rosen Team
Latest version: 10.0.2

# @rosen-chains/ergo-explorer-network

## Table of contents

- [Introduction](#introduction)
- [Installation](#installation)
- [Usage](#usage)

## Introduction

`@rosen-chains/ergo-explorer-network` is a package to be used as network api
provider for `@rosen-chains/ergo` package.

## Installation

npm:

```sh
npm i @rosen-chains/ergo-explorer-network
```

yarn:

```sh
yarn add @rosen-chains/ergo-explorer-network
```

## Usage

```ts
import { ErgoChain } from '@rosen-chains/ergo';
import ErgoExplorerNetwork from '@rosen-chains/ergo-explorer-network';

const ergoExplorerNetwork = new ErgoExplorerNetwork({
  explorerBaseUrl: 'SOME_EXPLORER_URL',
  extractorOptions: {
    lockAddress: 'SOME_LOCK_ADDRESS',
    tokens: {
      // SOME_TOKENS_OBJECT
    },
  },
});
const ergoChainConfig = {
  // SOME_ERGO_CHAIN_CONFIG
};
const ergoChain = new ErgoChain(ergoExplorerNetwork, ergoChainConfig);
```
npm package: @my-utils-changeit/ergo-node-network
Description: ergo node network package for rosen ergo chain
Author: Rosen Team
Latest version: 10.0.2

# @rosen-chains/ergo-node-network

## Table of contents

- [Introduction](#introduction)
- [Installation](#installation)
- [Usage](#usage)

## Introduction

`@rosen-chains/ergo-node-network` is a package to be used as network api
provider for `@rosen-chains/ergo` package.

## Installation

npm:

```sh
npm i @rosen-chains/ergo-node-network
```

yarn:

```sh
yarn add @rosen-chains/ergo-node-network
```

## Usage

```ts
import { ErgoChain } from '@rosen-chains/ergo';
import ErgoNodeNetwork from '@rosen-chains/ergo-node-network';

const ergoNodeNetwork = new ErgoNodeNetwork({
  nodeBaseUrl: 'SOME_NODE_URL',
  extractorOptions: {
    lockAddress: 'SOME_LOCK_ADDRESS',
    tokens: {
      // SOME_TOKENS_OBJECT
    },
  },
});
const ergoChainConfig = {
  // SOME_ERGO_CHAIN_CONFIG
};
const ergoChain = new ErgoChain(ergoNodeNetwork, ergoChainConfig);
```

Please note that the node should support `blockchain` apis, which can be checked
through `isExplorer` flag from `info` api.
npm package: @my-utils-changeit/ethereum
Description: this project contains ethereum chain for Rosen-bridge
Author: Rosen Team
Latest version: 3.0.2

# @rosen-chains/ethereum

## Table of contents

- [Introduction](#introduction)
- [Installation](#installation)

## Introduction

this project contains ethereum chain for Rosen-bridge

## Installation

npm:

```sh
npm i @rosen-chains/ethereum
```

yarn:

```sh
yarn add @rosen-chains/ethereum
```
npm package: @my-utils-changeit/evm
Description: this project contains evm chains for Rosen-bridge
Author: Rosen Team
Latest version: 9.0.2

# @rosen-chains/evm

## Table of contents

- [Introduction](#introduction)
- [Installation](#installation)

## Introduction

this project contains evm chains for Rosen-bridge

## Installation

npm:

```sh
npm i @rosen-chains/evm
```

yarn:

```sh
yarn add @rosen-chains/evm
```
npm package: @my-utils-changeit/evm-rpc
Description: A package to be used as network api provider for @rosen-chains/evm package
Author: Rosen Team
Latest version: 4.0.3

# @rosen-chains/evm-rpc

## Table of contents

- [Introduction](#introduction)
- [Installation](#installation)

## Introduction

A package to be used as network api provider for @rosen-chains/evm package

## Installation

npm:

```sh
npm i @rosen-chains/evm-rpc
```

yarn:

```sh
yarn add @rosen-chains/evm-rpc
```
npm package: @my-utils-changeit/extended-typeorm
Description: An extended typeorm datasource with run some queries better
Author: Rosen Team
Latest version: 1.0.2

# @my-utils-changeit/extended-typeorm

## Table of contents

- [Introduction](#introduction)
- [Installation](#installation)
- [Usage](#usage)

## Introduction

By default, typeorm doesn't handle parallel transactions. If you run two
transactions simultaneously and your database doesn't support it (e.g. if you
use sqlite), you will get errors.

## Installation

npm:

```sh
npm i @my-utils-changeit/extended-typeorm
```

yarn:

```sh
yarn add @my-utils-changeit/extended-typeorm
```

## Usage

```ts
import { DataSource } from '@my-utils-changeit/extended-typeorm';

const dataSource = DataSource({
  ...
})
```

Now all database transaction execute correctly without throwing an error, no matter if you call them simultaneously or not.
npm package: @my-utils-changeit/fastify-enhanced
Description: a wrapper around fastify web framework to make it even better
Author: Rosen Team
Latest version: 2.0.2

# @my-utils-changeit/fastify-enhanced

## Table of contents

- [Introduction](#introduction)
- [Installation](#installation)
- [Usage](#usage)

## Introduction

A wrapper around fastify web framework to make it even better

## Installation

npm:

```sh
npm i @my-utils-changeit/fastify-enhanced
```

yarn:

```sh
yarn add @my-utils-changeit/fastify-enhanced
```

## Usage

To use the enhanced Fastify, import `createFastify` and use it to create a fastify instance and register routes. Use data types defined under `types` object, to define validation constraints for requests and responses:

```ts
import {
  ZodTypeProvider,
  createFastify,
  types,
} from '@my-utils-changeit/fastify-enhanced';
import { FastifyBaseLogger, FastifyInstance } from 'fastify';
import { IncomingMessage, Server, ServerResponse } from 'http';

const addTokenPaymentRoute = (
  fastify: FastifyInstance<
    Server<typeof IncomingMessage, typeof ServerResponse>,
    IncomingMessage,
    ServerResponse<IncomingMessage>,
    FastifyBaseLogger,
    ZodTypeProvider
  >,
) => {
  const bodySchema = types.object({
    tokenName: types.string(),
    tokenAmount: types.bigint(),
    tokenDecimals: types.number(),
  });

  const res200Schema = types.object({
    name: types.string(),
    amount: types.bigint(),
    decimal: types.number(),
  });

  const payTokenOpts = {
    schema: {
      body: bodySchema,
      response: {
        200: res200Schema,
      },
    },
  };

  fastify.post('/payToken', payTokenOpts, async (request, reply) => {
    return reply.status(200).send({
      name: request.body.tokenName,
      amount: request.body.tokenAmount,
      decimal: request.body.tokenDecimals,
    });
  });

  return fastify;
};

const fastify = await createFastify(
  {
    path: '/swagger',
    title: '',
    description: '',
    version: '0.0.1',
  },
  { logger: false },
);
addTokenPaymentRoute(fastify);

const start = async () => {
  try {
    await fastify.listen({ port: 8000 });
  } catch (err) {
    console.log(err);
    process.exit(1);
  }
};
start();
```

To define a nested route don't forget to add `ZodTypeProvider` to the Fastify instance that is passed to the `register` method, to enable Zod typing validation:

```ts
fastify.register(
  (instance, opts, next) => {
    const subFastify = instance.withTypeProvider<ZodTypeProvider>();
    addTokenPaymentRoute(subFastify);
    next();
  },
  { prefix: 'subroute' },
);
```
npm package: @my-utils-changeit/json-bigint
Description: A wrapper to json-bigint package with pre-set configurations
Author: Rosen Team
Latest version: 1.1.1

# @my-utils-changeit/json-bigint

## Table of contents

- [@my-utils-changeit/json-bigint](#rosen-bridgejson-bigint)
  - [Table of contents](#table-of-contents)
  - [Introduction](#introduction)
  - [Installation](#installation)
- [Usage](#usage)

## Introduction

A wrapper to json-bigint package with pre-set configurations

## Installation

npm:

```sh
npm i @my-utils-changeit/json-bigint
```

yarn:

```sh
yarn add @my-utils-changeit/json-bigint
```

# Usage

```ts
import JsonBigInt from '@my-utils-changeit/json-bigint';

const json = {
  a: 100000000000000000000n,
  b: 1n,
};
const jsonString = '{"a":100000000000000000000,"b":1}';

const parsedJson = JsonBigInt.parse(jsonString);
const stringifiedJson = JsonBigInt.stringify(json);
```
npm package: @my-utils-changeit/minimum-fee
Description: this project gets minimum fee of the bridge for supported tokens from blockchain
Author: Rosen Team
Latest version: 3.1.1

# @my-utils-changeit/minimum-fee

## Table of contents

- [Introduction](#introduction)
- [Installation](#installation)

## Introduction

`@my-utils-changeit/minimum-fee` Typescript package to build and get minimum fee of the bridge for supported tokens from blockchain

## Installation

npm:

```sh
npm i @my-utils-changeit/minimum-fee
```

yarn:

```sh
yarn add @my-utils-changeit/minimum-fee
```

#### Examples

**TODO**
npm package: @my-utils-changeit/permit
Description: A package for managing permit boxes
Author: Rosen Team
Latest version: 1.0.2

# @my-utils-changeit/permit

## Table of contents

- [Introduction](#introduction)
- [Installation](#installation)

## Introduction

A package for managing permit boxes

## Installation

npm:

```sh
npm i @my-utils-changeit/permit
```

yarn:

```sh
yarn add @my-utils-changeit/permit
```
npm package: @my-utils-changeit/utils
Description: Misc utility functions used inside Rosen bridge projects
Author: Rosen Team
Latest version: 2.0.2

# @my-utils-changeit/utils

## Table of contents

- [Introduction](#introduction)
- [Installation](#installation)

## Introduction

`@my-utils-changeit/utils` contains some common utility functions and apis that are used
inside other Rosen bridge projects.

## Installation

npm:

```sh
npm i @my-utils-changeit/utils
```

yarn:

```sh
yarn add @my-utils-changeit/utils
```
npm package: @my-utils-changeit/winston-logger
Description: Rosen Bridge Winston logger, used inside Rosen services
Author: Rosen Team
Latest version: 2.0.2

# @my-utils-changeit/winston-logger

## Table of contents

- [Introduction](#introduction)
- [Installation](#installation)

## Introduction

Rosen Bridge Winston logger, used inside Rosen services

## Installation

npm:

```sh
npm i @my-utils-changeit/winston-logger
```

yarn:

```sh
yarn add @my-utils-changeit/winston-logger
```
npm package: @my-videojs/videojs-drag-middleware
Description: videojs的拖拽控制中间件
Author: mraiguo
Latest version: 1.1.1

# 拖拽控制

---

videojs的拖拽控制中间件（videojs6+）

## 何时使用

- 需要给videojs播放器控制其拖拽的时候

## 浏览器支持

IE 9+

## 安装

```bash
npm install @my-videojs/videojs-drag-middleware --save
```

## 运行

```bash
# 默认开启服务器，地址为 ：http://local:8000/

# 能在ie9+下浏览本站，修改代码后自动重新构建，且能在ie10+运行热更新，页面会自动刷新
npm run start

# 构建生产环境静态文件，用于发布文档
npm run site
```

## 代码演示

### 基本

控制videojs的拖拽

```jsx
import videojs from 'video.js'
import 'video.js/dist/video-js.css'
import "@my-videojs/videojs-drag-middleware/lib"

class App extends React.Component {
  componentDidMount () {
    const node = ReactDOM.findDOMNode(this.videoWrap)
    if (!node) {
      return
    }
    const videoJsOptions = {
      controls: true,
      dragMode: 'backward', // 只能快退
      sources: [{
        src: '//gcdncs.101.com/v0.1/static/fish/media/ocean.mp4',
        type: 'video/mp4'
      }],
      dragMode: 'backward' // 只能快退
    }
    // react0.14.x data-reactid问题
    const videoEl = document.createElement('video')
    videoEl.className = `video-js`

    node.appendChild(videoEl)
    this.player = videojs(videoEl, {...videoJsOptions}, () => {
      // this.player.drag()
    })
  }
  componentWillUnmount () {
    if (this.player) {
      this.player.dispose()
    }
  }
  setDragTime = () => {
    if (this.player) {
      console.log(this.input.value)
      this.player.dragTime = parseInt(this.input.value) || 0
    } else {
      alert('播放器未初始化完成！')
    }
  }
  render() {
    return (
      <div>
        <div data-vjs-player ref={node => { this.videoWrap = node }} />
        <br />
        <input ref={node => this.input = node} />
        <button onClick={this.setDragTime}>动态设置可拖拽时间</button>
      </div>
    )
  }
}

ReactDOM.render(<App />, mountNode);
```

## API

| 参数 | 说明 | 类型 | 默认值 |
| --- | --- | --- | --- |
| dragTime | 拖动起始时间(秒) | number | 无 |
| dragMode | 拖动模式,分为不能拖动，不能快进，不传表示无限制。可以和dragTime配合使用，具体可以见上面例子说明 | enum{'backword', 'disabled'} | 无 |
npm package: @my-videojs/videojs-resolution-switcher
Description: videojs的清晰度选择插件（videojs6.x）
Author: mraiguo
Latest version: 1.0.6

# 清晰度源插件

---

videojs选择不同清晰度源插件（videojs6）

## 何时使用

- 切换不同清晰度的时候

## 浏览器支持

IE 9+

## 安装

```bash
npm install videojs-resolution-video --save
```

## 运行

```bash
# 默认开启服务器，地址为 ：http://local:8000/

# 能在ie9+下浏览本站，修改代码后自动重新构建，且能在ie10+运行热更新，页面会自动刷新
npm run start

# 构建生产环境静态文件，用于发布文档
npm run site
```

## 代码演示

### 基本

选择清晰度

```css
.main-container {
  overflow: visible;
}
.markdown ul > li {
  margin-left: 0;
  padding-left: 0;
}
```

```jsx
import videojs from 'video.js'
import 'video.js/dist/video-js.css'
import '@my-videojs/videojs-resolution-switcher'
import '@my-videojs/videojs-resolution-switcher/lib/style'

class App extends React.Component {
  componentDidMount () {
    const node = ReactDOM.findDOMNode(this.videoWrap)
    if (!node) {
      return
    }
    const videoJsOptions = {
      playbackRates: [0.75, 1, 1.25, 1.5, 1.75, 2],
      controls: true,
      plugins: {
        videoJsResolutionSwitcher: {
          default: 360,
          dynamicLabel: true,
          ui:true,
        }
      }
    }
    // react0.14.x data-reactid问题
    const videoEl = document.createElement('video')
    videoEl.className = `video-js`

    node.appendChild(videoEl)
    this.player = videojs(videoEl, {...videoJsOptions}, () => {
      this.addSwitcher(this.player)
    })
  }
  componentWillUnmount () {
    if (this.player) {
      this.player.dispose()
    }
  }
  addSwitcher (player) {
     player.updateSrc(
        [{
          src: '//gcdncs.101.com/v0.1/static/fish/media/test.mp4',
          type: 'video/mp4',
          label: '标清',
          res: 360
        }, {
          src: '//gcdncs.101.com/v0.1/static/fish/media/test-hd.mp4',
          type: 'video/mp4',
          label: '高清',
          res: 720
                }]
    );
    player.on('resolutionchange', function() {
        console.info('Source changed to %s', player.src())
    })
  }
  render() {
    return (
       <div data-vjs-player ref={node => { this.videoWrap = node }} />
    )
  }
}

ReactDOM.render(<App />, mountNode);
```

## API

代码是fork了[videojs-resolution-switcher](https://github.com/kmoskwiak/videojs-resolution-switcher)而来，原代码只支持videojs5.x,
所以修改了部分代码使其支持videojs6.x。API部分没有变化，可以参考[这里](https://kmoskwiak.github.io/videojs-resolution-switcher/)。
npm package: @my-videojs/videojs-sprite-thumbnails
Description: Plugin to display thumbnails from a sprite image when hovering over the progress bar.
Author: Christian Ebert
Latest version: 0.0.5

# 视频截屏缩略图

---

videojs播放器展示视频截屏雪碧图插件（videojs6）

## 何时使用

- 需要videojs播放器的进度条在hover的时候展示截屏雪碧图的时候

## 浏览器支持

IE 9+

## 安装

```bash
npm install videojs-thumbnails-sprite-for-videojs6 --save
```

## 运行

```bash
# 安装依赖
npm install

# 开启服务
npm start
```

## 代码演示

### 基本

为进度条添加单张截屏雪碧图

```js
  var player =  videojs('videojs-sprite-thumbnails-player');
  player.spriteThumbnails({
    interval: 1,
    path: [
      'img/oceans-thumbs.jpg',
    ],
    width: 240,
    height: 100,
  });
```

### 多张截屏雪碧图

视频的截屏雪碧图有多张的时候，设置图片path为数组

```js
  var player = videojs('videojs-sprite-thumbnails-player');
  player1.spriteThumbnails({
    path: [
      'img/thumbnail-1.jpg',
      'img/thumbnail-2.jpg'
    ],
    width: 240,
    height: 100,
  });
```

## API

| 参数        | 说明                                                | 类型        | 默认值 |
|----------- |---------------------------------------------------  | ----------  |-------|
| path       | 截屏雪碧图路径数组，当有多张的时候，按顺序写入                                | Array<String>      | []    |
| width  | 雪碧图中每张截屏的宽度 | number | 无 |
| height | 雪碧图中每张截屏的高度 | number | 无 |
| interval | 每张图片的间隔时间 | number | 1 |