open-index/open-npm huggingface dataset:
npm package: @k3-universe/react-kit
Description: This library was generated with [Nx](https://nx.dev).
Latest version: 0.0.47

# @k3-universe/react-kit

This library was generated with [Nx](https://nx.dev).

## Running unit tests

Run `nx test @k3-universe/react-kit` to execute the unit tests via [Vitest](https://vitest.dev/).

------
npm package: @k3-universe/react-native-kit
Description: This library was generated with [Nx](https://nx.dev).
Latest version: 0.0.2

# @k3-universe/react-native-kit

This library was generated with [Nx](https://nx.dev).

## Running unit tests

Run `nx test @k3-universe/react-native-kit` to execute the unit tests via [Jest](https://jestjs.io).
npm package: @k3000/build
Description: 1、针对文件 *.mjs
Latest version: 0.3.0

### 将mjs的库打包
#### *重要
1、针对文件 *.mjs

2、打包时候node版本要对应

3、使用--experimental-vm-modules模式
```
> node --experimental-vm-modules index.mjs
```
#### 结构
```
root ┬ lib1 ┬ index.mjs
     │      ├ data.json
     │      └ ...
     ├ index.mjs // 编译后生成
     └ ...
```
#### 实例
```
import {build} from '@k3000/build'

build('lib1', 'index') // 打包
build('lib1', {
    target: 'bin/lib1',
    except: ['lib1/test']
}) // 打包

import {} from './lib1/index.mjs' // 开发模式

import {} from './index.mjs' // 生产模式，打包后
```
#### 支持开发代码
```
let env = 'prod'
// IF DEV
env = 'dev'
// END DEV
console.log(env) // 开发模式：prod；生产模式（打包后）：prod
```
```
// IF DEV
const env = 'dev'
/** ELSE
 * const env = 'prod'
 */
console.log(env) // 开发模式：prod；生产模式（打包后）：prod
```
npm package: @k3000/event-stream
Description: ``` import {config, process} from "@k3000/event-stream";
Latest version: 0.1.2

### 流的形式返回fetch结果

#### 服务
```
import {config, process} from "@k3000/event-stream";

config({
    separator: '\n\n',
    type: 'text',
})
...
const {send, end} = process(res)
setTimeout(() => send(true), 1000)
setTimeout(() => send(123.321), 2000)
setTimeout(() => send([1,2,3]), 3000)
setTimeout(() => end(null), 4000)
...
```
#### 使用
```
import {config, process} from "@k3000/event-stream";

config({
    separator: '\n\n',
})

fetch('...', {
    method: 'POST',
})
    .then(res => process(res, data => console.log(data)))
```
npm package: @k3000/express
Description: ``` import {Base, Express} from "@k3000/express";
Latest version: 0.1.7

### **封装express**
```
import {Base, Express} from "@k3000/express";

const app = new Express({
    port: 8080,
    callback: () => console.log('running...')
})

class Test extends Base {

    cache = 0
    // 当提供3个参数的函数实现时则加入认证队列
    AUTH(req, res, next) {

        console.log(req.headers)

        next()
    }

    get path() {

        return super.path + '/test'
    }
}

class Admin extends Test {

    id = 0

    AUTH(req, res, next) {

        console.log(req.cookies)
        console.log(req.query)

        next();
    }

    async GET(req, res) {

        this.render(this.view) // new Express({root: 'wwwroot'}) 与 root 参数有关 
        
        // 服务器端渲染，每次访问都会重新计算渲染，会增加服务器负担，建议权限控制较高使用不频繁的场景使用
        // this.render(this.view, {})
        // /<script server>[^]*?<\/script>/g 支持服务器端脚本 <script server>write(`<b>hello~${data.qwe}</b>`)</script>
        // /{\/[^]*?}/g 支持服务器端引入 {/com/head.html}
    }

    async POST(req, res) {

        await this.queue() // 必须和this.pass()成对使用

        const data = await (`id: ${this.id++}`)

        this.pass() // 必须和this.queue()成对使用
        
        return data
    }

    get path() {

        return super.path + '/admin'
    }
}

app.use((req, res, next) => res.setHeader('Access-Control-Allow-Origin', '*') && next())

app.use(Admin)
// app.use(new Admin())
// app.load('./lib')
```
npm package: @k3000/fastify
Description: 一个基于 Fastify 的轻量封装，提供类式路由抽象、统一钩子绑定、动态注册以及函数装饰器，帮助你更少样板代码地构建 API。
Latest version: 0.5.2

# @k3000/fastify

一个基于 Fastify 的轻量封装，提供类式路由抽象、统一钩子绑定、动态注册以及函数装饰器，帮助你更少样板代码地构建 API。

## 安装

```
npm i @k3000/fastify
```

## 快速开始
可以参照`demo.mjs`

```
import { Base, register, listen, fastify } from '@k3000/fastify'

class Test extends Base {
  url = '/test'

  GET(request, reply) {
    console.log('GET', request.query)
    reply.raw.setHeader('content-type', 'application/json; charset=utf-8')
    return { code: 0, msg: 'success' }
  }
}

register(Test)
listen(8080)
```

## 路由类与钩子

- 路由路径：通过 `url` 指定基础路径，如 `'/users'`
- HTTP 方法：以方法名为动词（`GET/POST/...`）的函数作为对应路由处理器
- Schema：在类实例字段上设置 `body/querystring/params/response` 即可生效
- 钩子：以 `$` 前缀的方法映射到 Fastify 钩子，如 `$onRequest/$preHandler/$onSend/...`

示例：

```
class Users extends Base {
  url = '/users'

  // 校验 querystring 与响应
  querystring = { type: 'object', properties: { q: { type: 'string' } } }
  response = { 200: { type: 'object', properties: { code: { type: 'number' }, data: { type: 'array' } } } }

  $onRequest(req, reply, done) { /* auth */ done() }
  $preHandler(req, reply, done) { /* rate limit */ done() }

  GET(req, reply) { return { code: 0, data: [] } }
  POST(req, reply) { return { code: 0 } }
}
```

## 函数装饰器 f

使用 `f(method, [url], fn)` 为普通函数标注 HTTP 方法和子路径：

```
import { f } from '@k3000/fastify'

class Files extends Base {
  url = '/files'

  // 普通函数会自动成为子路由：/files/upload
  upload = f('POST', '/upload', function (req, reply) {
    return { code: 0 }
  })
}
```

## 动态注册 register

`register(key)` 支持多种输入：

- 类：`register(YourClass)`
- 实例：`register(new YourClass())`
- 模块：`register(import('./routes.mjs'))`
- 路径：`register('./apps/example')`（非构建态下会递归扫描 `.mjs` 文件）

注意：路径解析以 `process.cwd()` 向上三级作为根目录；为避免路径耦合，推荐使用“类或模块”方式注册。

## 构建态支持

当运行环境设置 `global.$BUILT = true` 时，路径注册走构建态逻辑，依赖外部提供的 `$readdirSync/$import`。

- 仅处理当前目录的 `.mjs` 文件，不递归子目录
- 需要构建产物提供 `index.mjs` 作为入口代理

## 错误处理与校验/序列化

- 路由级错误处理：实现 `$errorHandler(error, request, reply)` 覆盖默认处理
- 链路错误钩子：`$onError(request, reply, error, done)`
- 校验编译器：`$validatorCompiler({ schema, method, url, httpPart })`
- 序列化编译器：`$serializerCompiler({ schema, method, url, httpStatus, contentType })`

示例：

```
class Health extends Base {
  url = '/health'

  $errorHandler(err, request, reply) {
    reply.status(400).send({ code: -1, msg: err.message })
  }

  GET() { return { code: 0, msg: 'ok' } }
}
```

## 日志

- 内置启用 Fastify 的 `logger: true`（pino），自动记录请求/响应/错误
- 路由注册时会打印已注册的方法与路径，便于排查

## 常见问题

- 路径注册失败：确认当前工作目录（`process.cwd()`）与目录结构匹配；建议改用类或模块注册
- 响应头设置：示例使用 `reply.raw.setHeader`，亦可使用 `reply.header('content-type', 'application/json; charset=utf-8')`
- 方法命名：普通函数会自动成为子路由；如需设定为主路由或指定方法，请使用装饰器 `f`

## 许可证

未指定许可证；如需开源或商用，请补充相应 LICENSE。
npm package: @k3000/info
Description: ``` import {cpu, mem, sys, node, disk} from '@k3000/info'
Latest version: 0.1.1

### 硬件信息
```
import {cpu, mem, sys, node, disk} from '@k3000/info'

console.log(cpu()) // 处理器信息
console.log(mem()) // 内存信息
console.log(sys()) // 系统信息
console.log(node()) // node版本信息
console.log(disk()) // 硬盘信息
```
npm package: @k3000/proxy
Description: 修复WebSocket转发，支持负载
Latest version: 0.6.1

### **轻量级的代理工具**

修复WebSocket转发，支持负载

```
import {createProxy} from '@k3000/proxy'

createProxy({
    /*map: {
        '/target': 'http://domain/',
        'domain2.com': 'http://domain3/',
        'localhost:8080': 'http://domain4/',
        '/': '/dir', // 代理有优先级，范围广的要放在下面
    },*/
    map: new class {
        index = true
        get '/api'() { // 支持负载
            if (this.index) {
                this.index = false
                return 'http://domain1/'
            } else {
                this.index = true
                return 'http://domain2/'
            }
        }
    },
    port: 80,
    httpsOptions: {
        key,
        cert
    },
    preReq: (req, res) => false,
    preRes: (req, res) => false,
})
```
npm package: @k3000/s1
Description: 以UDP微服务的形式构建的平台
Latest version: 0.5.0

以UDP微服务的形式构建的平台

**建议使用@k3000/s2**

#### 1、安装
首选全局安装脚本，注意是否有占用全局命令：```bot```

```
> npm i -g @k3000/s1
> mkdir mydir
> cd mydir
> bot init
> bot init 1 # 覆盖已有文件
```
#### 2、目录说明

_admin、app、file_ 为实例项目，自行根据需求增减。

_bin_ 为构建目录，不要占用。

_common_ 存放公共模块详见内部 _README.md_，请别随意删除。

_store1_ 为存储服务详见内部 _README.md_，。

_jwt_ 为用户身份校验服务。

_proxy_ 为http转发服务。

_static_ 为静态资源目录。

_ui-dev_ 为管理系统前端项目，构建后放进 _static_ 目录。

_“谨慎打开”_ 为要饭文件夹。

#### 3、项目预览
需要启动的服务：

```
npm run admin # 管理后台服务
npm run jwt # 用户身份校验（必要）
npm run store1 # 存储服务（必要）
npm run proxy # http转发服务（必要）
```
#### 4、后台管理系统web页面开发

进入`ui-dev`文件夹

```
> bot update # 初始化目录
> npm run dev # 执行
```

#### 4、发布

编辑`build.mjs`文件

执行`npm run build`

打包后存入`bin`文件夹

#### 5、部署

把`bin`文件夹里面的文件拷贝到服务器的指定文件夹

然后执行`node pm2.mjs`

测试账号：admin

测试密码：admin123
npm package: @k3000/s2
Description: 以UDP微服务的形式构建的平台
Latest version: 0.8.0

以UDP微服务的形式构建的平台

#### 1、安装
首选全局安装脚本，注意是否有占用全局命令：```bot```

```
> npm i -g @k3000/s1
> mkdir mydir
> cd mydir
> bot init
> bot init 1 # 覆盖已有文件
```
#### 2、目录说明

_admin、app、file_ 为实例项目，自行根据需求增减。

_bin_ 为构建目录，不要占用。

_common_ 存放公共模块详见内部 _README.md_，请别随意删除。

_store1_ 为存储服务详见内部 _README.md_，。

_jwt_ 为用户身份校验服务。

_proxy_ 为http转发服务。

_static_ 为静态资源目录。

_ui-dev_ 为管理系统前端项目，构建后放进 _static_ 目录。

_“捐赠”_ 里面可以请开发者喝奶茶。

#### 3、项目预览
需要启动的服务：

```
npm run admin # 管理后台服务
npm run jwt # 用户身份校验（必要）
npm run store1 # 存储服务（必要）
npm run proxy # http转发服务（必要）
```
#### 4、后台管理系统web页面开发

进入`ui-dev`文件夹

```
> bot update # 初始化目录
> npm run dev # 执行
```

#### 4、发布

编辑`build.mjs`文件

执行`npm run build`

打包后存入`bin`文件夹

#### 4.1、注意

**如Windows打包在Linux系统上运行检验不通过，这时需要用zip.mjs打包源码到相同系统体系进行打包**

**打包环境和运行环境nodejs大版本号一致，否则校验不通过无法允许**

#### 5、部署

把`bin`文件夹里面的文件拷贝到服务器的指定文件夹

然后执行`node pm2.mjs`

测试账号：admin

测试密码：admin123
npm package: @k3000/tools
Description: 正在完善中……
Latest version: 0.3.0

# 工具库
正在完善中……

```
const str = 'https://qshfu.com/lib?v=1.0'
str.before('?') // 'https://qshfu.com/lib'
str.before('//', '?') // ['https:', 'qshfu.com/lib']
'https://qshfu.com/lib?v=1.0'.after('?') // 'v=1.0'

random() // 6
random(10, 29) // 18
random(10, 199) // 123

'sum(1+1+sum(2+3))+sum(2+4)'
        .replace2(/sum\([^]*?\)/g, {m: 'sum', '*': /\+/g})
        // 'm(1*1*sum(2*3))+m(2*4)'
        
'sum(1+1+sum(2+3))+sum(2+4)'
        .replace3({prev: 'sum', start: '(', end: ')'}, {m: 'sum', '*': /\+/g})
        // 'm(1*1*sum(2*3))+m(2*4)'
        
[1, 2, 3, 4, 5].forEachReverse(i => i === 2 ? false : console.log(i)) // 5,4,3
[1, 2, 3, 4, 5].forEach2(i => i === 4 ? false : console.log(i)) // 1,2,3

const data = {}, key = {}
data.$set(key, '123')
data.$get(key) // '123'

isEmpty({}) // true
isEmpty({}, {qwe: 123}) // false

new Date('2022/01/01').format('yyyy-MM-dd 周D')
// '2022-01-01 周六'

isObject(undefined) // false

class StatusEnum extends Enum {
    RESOLVE = 1
    REJECT
    
    constructor() {
    
        super().init()
    }
}

const status = new StatusEnum()

status[status.REJECT] // 'REJECT'

class Main extends Singleton {

    constructor() {

        super()
    }
}

new Main() === new Main() // true
// 使用create可能会创建失败，推荐使用异步版本createId
let id
id = create()
id = create()
id = create()
id = await createId()
id = await createId()
id = await createId()
// 递归删除文件夹
rmdir('./tmp')
// 解析url参数
u2o('localhost?qwe=123&asd=456&code') // { qwe: '123', asd: '456', code: 'code' }
// 简单的加解密
const key = createKey('abc123')
const data = encrypt({name: '张三', age: '21'}, key).toString()
console.log(decrypt(data, key))
// 或者
const data = Buffer.from(JSON.stringify({name: '张三', age: 21}))
const key = Buffer.from('abc123')
console.log(XOR(data, key).toString())
console.log(XOR(data, key).toString())
// 封装了加密类
new Cipher
```
npm package: @k3000/vm
Description: 1、针对文件 *.js
Latest version: 0.5.0

### 将js的库打包
#### *重要
1、针对文件 *.js

2、打包时候node版本要对应
#### 结构
```
root ┬ lib1 ┬ index.js
     │      ├ data.json
     │      └ ...
     ├ index.js // 编译后生成
     └ ...
```
#### 实例
```
import {build, preCode} from '@k3000/vm'

build('lib1', 'index') // 打包
build('lib1', {
    target: 'bin/lib1',
    except: ['lib1/test'],
    preCode(code) {
        return preCode(code).replace(/console\.log\(.*?\);/g, '')
    }
}) // 打包

import {} from './lib1/index.js' // 开发模式

import {} from './index.js' // 生产模式，打包后
```
#### 支持开发代码
```
let env = 'prod'
// IF DEV
env = 'dev'
// END DEV
console.log(env) // 开发模式：prod；生产模式（打包后）：prod
```
npm package: @k34a/campaigns
Description: Create and share campaigns, and allow users to donate to them.
Latest version: 0.0.12

# Forms

Allow users to create and share their campaigns.
Render dynamically created campaigns
Allow users to donate to those campaigns, and mark their donation details in the database

## Installation

You can install this package by running the following command in your project.

```bash
npm install @k34a/campaigns
```