diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index fd012edd..a4bd20b2 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -42,13 +42,60 @@ jobs: run: yarn lint - name: TypeCheck - run: yarn typecheck + run: yarn build:ts - name: Cargo fmt run: cargo fmt -- --check - name: Clippy run: cargo clippy + bench: + name: Bench + runs-on: ${{ matrix.settings.host }} + strategy: + fail-fast: false + matrix: + settings: + - target: 'x86_64-unknown-linux-gnu' + host: ubuntu-latest + - target: 'aarch64-apple-darwin' + host: macos-latest + steps: + - uses: actions/checkout@v4 + + - name: Setup node + uses: actions/setup-node@v4 + with: + node-version: 20 + + - name: Cache cargo registry + uses: actions/cache@v4 + with: + path: | + ~/.cargo/registry + ~/.cargo/git + ~/.napi-rs + target + key: bench-cargo-registry-${{ matrix.settings.target }} + + - name: Install + uses: ./.github/actions/setup-rust + with: + targets: ${{ matrix.settings.target }} + + - name: Setup macos + if: ${{ matrix.settings.host == 'macos-latest' }} + run: brew install python-setuptools + + - name: 'Install dependencies' + run: yarn install + + - name: build + run: yarn build + + - name: Bench + run: yarn workspaces foreach -A -j 1 --no-private run bench + build: strategy: fail-fast: false @@ -578,6 +625,7 @@ jobs: runs-on: ubuntu-latest needs: - lint + - bench - build-freebsd - test-linux-x64-gnu-binding - test-linux-x64-musl-binding diff --git a/Cargo.toml b/Cargo.toml index 3c15543e..7cdec227 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,7 +23,7 @@ resolver = "2" rand_core = { version = "0.6", features = ["getrandom"] } serde = "1.0" serde_json = "1.0" - xxhash-rust = { version = "0.8", features = ["xxh32", "xxh64", "xxh3"] } + xxhash-rust = { version = "0.8", features = ["xxh32", "const_xxh32", "xxh64", "const_xxh64", "xxh3", "const_xxh3"] } [profile.release] codegen-units = 1 lto = true diff --git a/ava.config.mjs b/ava.config.mjs deleted file mode 100644 index 519d1eff..00000000 --- a/ava.config.mjs +++ /dev/null @@ -1,13 +0,0 @@ -const avaConfig = { - extensions: ['ts'], - workerThreads: false, - cache: false, - require: ['@swc-node/register'], - files: ['packages/**/*.spec.ts'], - timeout: '3m', - environmentVariables: { - TS_NODE_PROJECT: './tsconfig.test.json', - }, -} - -export default avaConfig diff --git a/depracted/deno-lint/package.json b/depracted/deno-lint/package.json index 5ea321ce..2e1a87d0 100644 --- a/depracted/deno-lint/package.json +++ b/depracted/deno-lint/package.json @@ -73,7 +73,7 @@ "typanion": "^3.14.0" }, "devDependencies": { - "@napi-rs/cli": "^3.0.0-alpha.63", + "@napi-rs/cli": "^3.0.0-alpha.64", "@types/webpack": "^5.28.5" }, "funding": { diff --git a/package.json b/package.json index cbad8af1..9854e3fe 100644 --- a/package.json +++ b/package.json @@ -11,30 +11,23 @@ ], "scripts": { "artifacts": "yarn workspaces foreach -A --no-private run artifacts", - "bench": "lerna run bench --concurrency 1 --stream --no-prefix", "build": "yarn workspaces foreach -A --no-private -j 1 run build", - "build:ts": "tsc -b tsconfig.project.json -verbose", + "build:ts": "tsc -b tsconfig.json -verbose", "lint": "oxlint .", "test": "ava", "format": "run-p format:prettier format:rs format:toml", "format:prettier": "prettier --config ./package.json -w .", "format:rs": "cargo fmt --all", "format:toml": "taplo format", - "typecheck": "tsc -b tsconfig.project.json -verbose", "postinstall": "husky install" }, "devDependencies": { - "@napi-rs/cli": "^3.0.0-alpha.63", + "@napi-rs/cli": "^3.0.0-alpha.64", "@napi-rs/wasm-runtime": "^0.2.5", - "@swc-node/core": "^1.13.3", - "@swc-node/register": "^1.10.9", - "@swc/core": "^1.7.26", "@taplo/cli": "^0.7.0", "@tybys/wasm-util": "^0.9.0", "@types/node": "^22.7.4", "ava": "^6.1.3", - "benchmark": "^2.1.4", - "codecov": "^3.8.3", "cross-env": "^7.0.3", "husky": "^9.1.6", "lerna": "^8.1.8", @@ -42,7 +35,6 @@ "npm-run-all2": "^7.0.0", "oxlint": "^0.10.0", "prettier": "^3.3.3", - "ts-node": "^10.9.2", "tslib": "^2.7.0", "typescript": "^5.6.2" }, @@ -60,6 +52,20 @@ "cargo fmt --" ] }, + "ava": { + "extensions": { + "ts": "module" + }, + "nodeArguments": [ + "--import", + "@oxc-node/core/register" + ], + "timeout": "1m", + "cache": false, + "files": [ + "packages/*/__test__/**/*.spec.ts" + ] + }, "prettier": { "printWidth": 120, "semi": false, diff --git a/packages/argon2/README.md b/packages/argon2/README.md index 5823fcf9..10a590b5 100644 --- a/packages/argon2/README.md +++ b/packages/argon2/README.md @@ -29,7 +29,7 @@ It has a simple design aimed at the highest memory filling rate and effective us # Benchmarks -See [benchmark/](benchmark/argon2.js). +See [benchmark/](benchmark/argon2.ts). ## API diff --git a/packages/argon2/__test__/package.json b/packages/argon2/__test__/package.json new file mode 100644 index 00000000..3dbc1ca5 --- /dev/null +++ b/packages/argon2/__test__/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} diff --git a/packages/argon2/benchmark/argon2.js b/packages/argon2/benchmark/argon2.ts similarity index 95% rename from packages/argon2/benchmark/argon2.js rename to packages/argon2/benchmark/argon2.ts index d645af68..4d819e5a 100644 --- a/packages/argon2/benchmark/argon2.js +++ b/packages/argon2/benchmark/argon2.ts @@ -13,7 +13,7 @@ const HASHED = await hash(PASSWORD, { parallelism: CORES, }) -const bench = new Bench('Hash with all cores') +const bench = new Bench() bench .add('@node-rs/argon hash', async () => { diff --git a/packages/argon2/index.js b/packages/argon2/index.js index d9d583ff..1b66a833 100644 --- a/packages/argon2/index.js +++ b/packages/argon2/index.js @@ -1,9 +1,12 @@ // prettier-ignore /* eslint-disable */ +// @ts-nocheck /* auto-generated by NAPI-RS */ -const { readFileSync } = require('fs') +const { createRequire } = require('node:module') +require = createRequire(__filename) +const { readFileSync } = require('node:fs') let nativeBinding = null const loadErrors = [] diff --git a/packages/argon2/package.json b/packages/argon2/package.json index 9ab12e9b..9184b886 100644 --- a/packages/argon2/package.json +++ b/packages/argon2/package.json @@ -55,14 +55,14 @@ }, "scripts": { "artifacts": "napi artifacts -d ../../artifacts", - "bench": "cross-env NODE_ENV=production node benchmark/argon2.js", + "bench": "cross-env NODE_ENV=production node --import @oxc-node/core/register benchmark/argon2.ts", "build": "napi build --platform --release", "build:debug": "napi build --platform", "prepublishOnly": "napi prepublish", "version": "napi version && git add npm" }, "devDependencies": { - "@napi-rs/cli": "^3.0.0-alpha.63", + "@napi-rs/cli": "^3.0.0-alpha.64", "argon2": "^0.41.0", "cross-env": "^7.0.3", "tinybench": "^2.9.0" diff --git a/packages/argon2/tsconfig.json b/packages/argon2/tsconfig.json new file mode 100644 index 00000000..b6b62b83 --- /dev/null +++ b/packages/argon2/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "dist", + "composite": true + }, + "exclude": ["dist"], + "include": ["benchmark", "__tests__"] +} diff --git a/packages/bcrypt/binding.d.ts b/packages/bcrypt/binding.d.ts index 84b0fec2..d37a9867 100644 --- a/packages/bcrypt/binding.d.ts +++ b/packages/bcrypt/binding.d.ts @@ -6,10 +6,10 @@ export declare function genSalt(round: number, version?: '2a' | '2x' | '2y' | '2 export declare function genSaltSync(round: number, version?: '2a' | '2x' | '2y' | '2b'): string -export declare function hash(input: Uint8Array | string, cost?: number | undefined | null, salt?: string | Buffer | undefined | null, signal?: AbortSignal | undefined | null): Promise +export declare function hash(input: Uint8Array | string, cost?: number | undefined | null, salt?: string | Uint8Array | undefined | null, signal?: AbortSignal | undefined | null): Promise -export declare function hashSync(input: string | Buffer, cost?: number | undefined | null, salt?: string | Buffer | undefined | null): string +export declare function hashSync(input: string | Uint8Array, cost?: number | undefined | null, salt?: string | Uint8Array | undefined | null): string export declare function verify(password: Uint8Array | string, hash: Uint8Array | string, signal?: AbortSignal | undefined | null): Promise -export declare function verifySync(input: string | Buffer, hash: string | Buffer): boolean +export declare function verifySync(input: string | Uint8Array, hash: string | Uint8Array): boolean diff --git a/packages/bcrypt/binding.js b/packages/bcrypt/binding.js index 0e509b9b..a923392b 100644 --- a/packages/bcrypt/binding.js +++ b/packages/bcrypt/binding.js @@ -1,9 +1,12 @@ // prettier-ignore /* eslint-disable */ +// @ts-nocheck /* auto-generated by NAPI-RS */ -const { readFileSync } = require('fs') +const { createRequire } = require('node:module') +require = createRequire(__filename) +const { readFileSync } = require('node:fs') let nativeBinding = null const loadErrors = [] diff --git a/packages/bcrypt/package.json b/packages/bcrypt/package.json index cf633e42..78b2dfbf 100644 --- a/packages/bcrypt/package.json +++ b/packages/bcrypt/package.json @@ -60,7 +60,7 @@ }, "scripts": { "artifacts": "napi artifacts -d ../../artifacts", - "bench": "cross-env NODE_ENV=production node --import @swc-node/register/esm-register benchmark/bcrypt.ts", + "bench": "cross-env NODE_ENV=production node --import @oxc-node/core/register benchmark/bcrypt.ts", "build": "napi build --platform --release --js binding.js --dts binding.d.ts", "build:debug": "napi build --platform", "prepublishOnly": "napi prepublish", @@ -72,7 +72,7 @@ "devDependencies": { "@cwasm/openbsd-bcrypt": "^0.1.0", "@cwasm/openwall-bcrypt": "^0.1.0", - "@napi-rs/cli": "^3.0.0-alpha.63", + "@napi-rs/cli": "^3.0.0-alpha.64", "@types/bcrypt": "^5.0.2", "@types/bcryptjs": "^2.4.6", "bcrypt": "^5.1.1", diff --git a/packages/bcrypt/src/lib.rs b/packages/bcrypt/src/lib.rs index 19bae868..ed8b91b1 100644 --- a/packages/bcrypt/src/lib.rs +++ b/packages/bcrypt/src/lib.rs @@ -44,37 +44,35 @@ pub fn gen_salt_js( } #[napi] +#[inline] pub fn hash_sync( - input: Either, + input: Either, cost: Option, - salt: Option>, + salt: Option>, ) -> Result { let salt = if let Some(salt) = salt { let mut s = [0u8; 16]; - let buf = either_string_buffer_as_bytes(&salt); + let buf = salt.as_ref(); // make sure salt buffer length should be 16 let copy_length = cmp::min(buf.len(), s.len()); s[..copy_length].copy_from_slice(&buf[..copy_length]); s } else { - gen_salt() + rand::random() }; - match input { - Either::A(s) => HashTask::hash(s.as_bytes(), salt, cost.unwrap_or(DEFAULT_COST)), - Either::B(b) => HashTask::hash(b.as_ref(), salt, cost.unwrap_or(DEFAULT_COST)), - } + HashTask::hash(input.as_ref(), salt, cost.unwrap_or(DEFAULT_COST)) } #[napi] pub fn hash( input: Either, cost: Option, - salt: Option>, + salt: Option>, signal: Option, ) -> Result> { let salt = if let Some(salt) = salt { let mut s = [0u8; 16]; - let buf = either_string_buffer_as_bytes(&salt); + let buf = salt.as_ref(); // make sure salt buffer length should be 16 let copy_length = cmp::min(buf.len(), s.len()); s[..copy_length].copy_from_slice(&buf[..copy_length]); @@ -87,20 +85,11 @@ pub fn hash( } #[napi] -pub fn verify_sync(input: Either, hash: Either) -> Result { - let input = either_string_buffer_as_bytes(&input); - let hash = either_string_buffer_as_bytes(&hash); +#[inline] +pub fn verify_sync(input: Either, hash: Either) -> Result { VerifyTask::verify(input, hash) } -#[inline(always)] -fn either_string_buffer_as_bytes(input: &Either) -> &[u8] { - match input { - Either::A(s) => s.as_bytes(), - Either::B(b) => b.as_ref(), - } -} - #[napi] pub fn verify( password: Either, diff --git a/packages/bcrypt/tsconfig.json b/packages/bcrypt/tsconfig.json index 4d88cb0b..248e94c6 100644 --- a/packages/bcrypt/tsconfig.json +++ b/packages/bcrypt/tsconfig.json @@ -1,7 +1,8 @@ { "extends": "../../tsconfig.json", "compilerOptions": { - "outDir": "dist" + "outDir": "dist", + "composite": true }, "exclude": ["dist"], "include": ["__tests__"] diff --git a/packages/crc32/README.md b/packages/crc32/README.md index a8144e67..83ec2dae 100644 --- a/packages/crc32/README.md +++ b/packages/crc32/README.md @@ -40,24 +40,6 @@ js_crc32 for inputs 16931844B, avg 2066B x 22.12 ops/sec ±5.20% (40 runs sample +---------------------+-------------------+----------------------+ ``` -## Support matrix - -| | node12 | node14 | node16 | node18 | -| ---------------- | ------ | ------ | ------ | ------ | -| Windows x64 | ✓ | ✓ | ✓ | ✓ | -| Windows x32 | ✓ | ✓ | ✓ | ✓ | -| Windows arm64 | ✓ | ✓ | ✓ | ✓ | -| macOS x64 | ✓ | ✓ | ✓ | ✓ | -| macOS arm64 | ✓ | ✓ | ✓ | ✓ | -| Linux x64 gnu | ✓ | ✓ | ✓ | ✓ | -| Linux x64 musl | ✓ | ✓ | ✓ | ✓ | -| Linux arm gnu | ✓ | ✓ | ✓ | ✓ | -| Linux arm64 gnu | ✓ | ✓ | ✓ | ✓ | -| Linux arm64 musl | ✓ | ✓ | ✓ | ✓ | -| Android arm64 | ✓ | ✓ | ✓ | ✓ | -| Android armv7 | ✓ | ✓ | ✓ | ✓ | -| FreeBSD x64 | ✓ | ✓ | ✓ | ✓ | - ## API > The type of **input initial crc** and **output crc number** is `u32` diff --git a/packages/crc32/__tests__/index.spec.ts b/packages/crc32/__tests__/index.spec.ts index 7dab21d0..e233985a 100644 --- a/packages/crc32/__tests__/index.spec.ts +++ b/packages/crc32/__tests__/index.spec.ts @@ -1,7 +1,7 @@ import test from 'ava' import { crc32 as nodeCrc32 } from 'crc' -import { crc32c, crc32 } from '../index' +import { crc32c, crc32 } from '../index.js' const fx = Buffer.from('crc32c - test') diff --git a/packages/crc32/__tests__/package.json b/packages/crc32/__tests__/package.json new file mode 100644 index 00000000..3dbc1ca5 --- /dev/null +++ b/packages/crc32/__tests__/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} diff --git a/packages/crc32/benchmark/crc32.js b/packages/crc32/benchmark/crc32.ts similarity index 57% rename from packages/crc32/benchmark/crc32.js rename to packages/crc32/benchmark/crc32.ts index 18fb9ef4..a9daeae6 100644 --- a/packages/crc32/benchmark/crc32.js +++ b/packages/crc32/benchmark/crc32.ts @@ -1,9 +1,9 @@ -const { Suite } = require('benchmark') -const chalk = require('chalk') -const { crc32: crc32Node } = require('crc') -const Sse4Crc32 = require('sse4_crc32') +import { Bench } from 'tinybench' +import chalk from 'chalk' +import { crc32 as crc32Node } from 'crc' +import Sse4Crc32 from 'sse4_crc32' -const { crc32c, crc32 } = require('../index') +import { crc32c, crc32 } from '../index.js' const TEST_BUFFER = Buffer.from(`Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi mollis cursus metus vel tristique. Proin congue massa @@ -26,70 +26,66 @@ const initialCrc32c = Sse4Crc32.calculate(TEST_BUFFER) console.assert(crc32(TEST_BUFFER) === initialCrc32) console.assert(crc32c(TEST_BUFFER) === initialCrc32c) -const suite = new Suite('crc32c without initial crc') +const suite = new Bench() -suite +await suite .add('@node/rs crc32c', () => { crc32c(TEST_BUFFER) }) .add('sse4_crc32', () => { Sse4Crc32.calculate(TEST_BUFFER) }) - .on('cycle', function (event) { - console.info(String(event.target)) - }) - .on('complete', function () { - console.info(`${this.name} bench suite: Fastest is ${chalk.green(this.filter('fastest').map('name'))}`) - }) - .run() + .warmup() + +await suite.run() + +console.info(chalk.green('crc32c without initial crc')) +console.table(suite.table()) -const suite2 = new Suite('crc32c with initial crc') +const suite2 = new Bench() -suite2 +await suite2 .add('@node/rs crc32c', () => { crc32c(TEST_BUFFER, initialCrc32c) }) .add('sse4_crc32', () => { Sse4Crc32.calculate(TEST_BUFFER, initialCrc32c) }) - .on('cycle', function (event) { - console.info(String(event.target)) - }) - .on('complete', function () { - console.info(`${this.name} bench suite: Fastest is ${chalk.green(this.filter('fastest').map('name'))}`) - }) - .run() + .warmup() + +await suite2.run() + +console.info(chalk.green('crc32c with initial crc')) +console.table(suite2.table()) -const suite3 = new Suite('crc32 without initial crc') +const suite3 = new Bench() -suite3 +await suite3 .add('@node/rs crc32', () => { crc32(TEST_BUFFER) }) .add('Node crc', () => { crc32Node(TEST_BUFFER) }) - .on('cycle', function (event) { - console.info(String(event.target)) - }) - .on('complete', function () { - console.info(`${this.name} bench suite: Fastest is ${chalk.green(this.filter('fastest').map('name'))}`) - }) - .run() + .warmup() + +await suite3.run() + +console.info(chalk.green('crc32 without initial crc')) +console.table(suite3.table()) -const suite4 = new Suite('crc32 with initial crc') +const suite4 = new Bench() -suite4 +await suite4 .add('@node/rs crc32', () => { crc32(TEST_BUFFER, initialCrc32) }) .add('Node crc32', () => { crc32Node(TEST_BUFFER, initialCrc32) }) - .on('cycle', function (event) { - console.info(String(event.target)) - }) - .on('complete', function () { - console.info(`${this.name} bench suite: Fastest is ${chalk.green(this.filter('fastest').map('name'))}`) - }) - .run() + .warmup() + +await suite4.run() + +console.info(chalk.green('crc32 with initial crc')) +console.table(suite4.table()) diff --git a/packages/crc32/benchmark/package.json b/packages/crc32/benchmark/package.json new file mode 100644 index 00000000..3dbc1ca5 --- /dev/null +++ b/packages/crc32/benchmark/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} diff --git a/packages/crc32/index.js b/packages/crc32/index.js index 26b0d814..2af6189e 100644 --- a/packages/crc32/index.js +++ b/packages/crc32/index.js @@ -1,9 +1,12 @@ // prettier-ignore /* eslint-disable */ +// @ts-nocheck /* auto-generated by NAPI-RS */ -const { readFileSync } = require('fs') +const { createRequire } = require('node:module') +require = createRequire(__filename) +const { readFileSync } = require('node:fs') let nativeBinding = null const loadErrors = [] diff --git a/packages/crc32/package.json b/packages/crc32/package.json index e290c0da..68813475 100644 --- a/packages/crc32/package.json +++ b/packages/crc32/package.json @@ -54,7 +54,7 @@ }, "scripts": { "artifacts": "napi artifacts -d ../../artifacts", - "bench": "cross-env NODE_ENV=production node benchmark/crc32.js", + "bench": "cross-env NODE_ENV=production node --import @oxc-node/core/register benchmark/crc32.ts", "build": "napi build --platform --release", "build:debug": "napi build --platform", "prepublishOnly": "napi prepublish", @@ -64,11 +64,14 @@ "url": "https://github.com/napi-rs/node-rs/issues" }, "devDependencies": { - "@napi-rs/cli": "^3.0.0-alpha.63", + "@napi-rs/cli": "^3.0.0-alpha.64", "@types/crc": "^3.8.3", + "@types/sse4_crc32": "^7.0.3", "buffer": "^6.0.3", "crc": "^4.3.2", - "sse4_crc32": "^7.0.0" + "cross-env": "^7.0.3", + "sse4_crc32": "^7.0.0", + "tinybench": "^2.9.0" }, "funding": { "type": "github", diff --git a/packages/crc32/src/lib.rs b/packages/crc32/src/lib.rs index c9c92a86..4cc5e225 100644 --- a/packages/crc32/src/lib.rs +++ b/packages/crc32/src/lib.rs @@ -9,23 +9,15 @@ use napi::bindgen_prelude::*; use napi_derive::*; #[napi(js_name = "crc32c")] -pub fn crc32c(input: Either, initial_state: Option) -> Result { - Ok(match input { - Either::A(s) => crc32c_append(initial_state.unwrap_or(0), s.as_bytes()), - Either::B(b) => crc32c_append(initial_state.unwrap_or(0), b), - }) +#[inline] +pub fn crc32c(input: Either<&[u8], String>, initial_state: Option) -> u32 { + crc32c_append(initial_state.unwrap_or(0), input.as_ref()) } #[napi] -pub fn crc32(input: Either, initial_state: Option) -> Result { +#[inline] +pub fn crc32(input: Either<&[u8], String>, initial_state: Option) -> u32 { let mut hasher = Hasher::new_with_initial(initial_state.unwrap_or(0)); - match input { - Either::A(s) => { - hasher.update(s.as_bytes()); - } - Either::B(b) => { - hasher.update(b); - } - }; - Ok(hasher.finalize()) + hasher.update(input.as_ref()); + hasher.finalize() } diff --git a/packages/crc32/tsconfig.json b/packages/crc32/tsconfig.json new file mode 100644 index 00000000..b6b62b83 --- /dev/null +++ b/packages/crc32/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "dist", + "composite": true + }, + "exclude": ["dist"], + "include": ["benchmark", "__tests__"] +} diff --git a/packages/jieba/__tests__/package.json b/packages/jieba/__tests__/package.json new file mode 100644 index 00000000..3dbc1ca5 --- /dev/null +++ b/packages/jieba/__tests__/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} diff --git a/packages/jieba/benchmark/jieba.js b/packages/jieba/benchmark/jieba.ts similarity index 95% rename from packages/jieba/benchmark/jieba.js rename to packages/jieba/benchmark/jieba.ts index 814d9b6e..7ca31d0e 100644 --- a/packages/jieba/benchmark/jieba.js +++ b/packages/jieba/benchmark/jieba.ts @@ -6,8 +6,8 @@ import { Bench } from 'tinybench' import chalk from 'chalk' import nodejieba from 'nodejieba' -import { Jieba, TfIdf } from '../index.js' -import { dict, idf } from '../dict.js' +import { Jieba } from '../index.js' +import { dict } from '../dict.js' const { load, cut, tag } = nodejieba @@ -26,7 +26,12 @@ const preface = ` const prefaceLength = preface.length -async function createBench(suitename, transform, napi, jieba) { +async function createBench( + suitename: string, + transform: (o: string[]) => string, + napi: () => any[], + jieba: () => any[], +) { const suite = new Bench() console.assert(transform(napi()) === transform(jieba())) @@ -42,7 +47,6 @@ async function createBench(suitename, transform, napi, jieba) { load() const jieba = Jieba.withDict(dict) -const tfIdf = TfIdf.withDict(idf) await createBench( `Cut ${prefaceLength} words`, diff --git a/packages/jieba/index.js b/packages/jieba/index.js index 48cb85b4..4dc0d3c0 100644 --- a/packages/jieba/index.js +++ b/packages/jieba/index.js @@ -1,9 +1,12 @@ // prettier-ignore /* eslint-disable */ +// @ts-nocheck /* auto-generated by NAPI-RS */ -const { readFileSync } = require('fs') +const { createRequire } = require('node:module') +require = createRequire(__filename) +const { readFileSync } = require('node:fs') let nativeBinding = null const loadErrors = [] diff --git a/packages/jieba/package.json b/packages/jieba/package.json index 973f401e..c4de982c 100644 --- a/packages/jieba/package.json +++ b/packages/jieba/package.json @@ -58,7 +58,7 @@ }, "scripts": { "artifacts": "napi artifacts -d ../../artifacts", - "bench": "cross-env NODE_ENV=production node benchmark/jieba.js", + "bench": "cross-env NODE_ENV=production node --import @oxc-node/core/register benchmark/jieba.ts", "build": "napi build --platform --release", "build:debug": "napi build --platform", "prepublishOnly": "napi prepublish", @@ -68,7 +68,7 @@ "url": "https://github.com/napi-rs/node-rs/issues" }, "devDependencies": { - "@napi-rs/cli": "^3.0.0-alpha.63", + "@napi-rs/cli": "^3.0.0-alpha.64", "cross-env": "^7.0.3", "nodejieba": "^3.0.0", "tinybench": "^2.9.0" diff --git a/packages/jieba/tsconfig.json b/packages/jieba/tsconfig.json new file mode 100644 index 00000000..b6b62b83 --- /dev/null +++ b/packages/jieba/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "dist", + "composite": true + }, + "exclude": ["dist"], + "include": ["benchmark", "__tests__"] +} diff --git a/packages/jsonwebtoken/README.md b/packages/jsonwebtoken/README.md index bb22c8e3..c7191374 100644 --- a/packages/jsonwebtoken/README.md +++ b/packages/jsonwebtoken/README.md @@ -5,24 +5,6 @@ 🚀 Fastest jsonwebtoken in Node.js -## Support matrix - -| | node14 | node16 | node18 | node20 | -| ---------------- | ------ | ------ | ------ | ------ | -| Windows x64 | ✓ | ✓ | ✓ | ✓ | -| Windows x32 | ✓ | ✓ | ✓ | ✓ | -| Windows arm64 | ✓ | ✓ | ✓ | ✓ | -| macOS x64 | ✓ | ✓ | ✓ | ✓ | -| macOS arm64 | ✓ | ✓ | ✓ | ✓ | -| Linux x64 gnu | ✓ | ✓ | ✓ | ✓ | -| Linux x64 musl | ✓ | ✓ | ✓ | ✓ | -| Linux arm gnu | ✓ | ✓ | ✓ | ✓ | -| Linux arm64 gnu | ✓ | ✓ | ✓ | ✓ | -| Linux arm64 musl | ✓ | ✓ | ✓ | ✓ | -| Android arm64 | ✓ | ✓ | ✓ | ✓ | -| Android armv7 | ✓ | ✓ | ✓ | ✓ | -| FreeBSD x64 | ✓ | ✓ | ✓ | ✓ | - ## Usage See [tests](__tests__/jsonwebtoken.spec.ts) and [types](index.d.ts) @@ -30,32 +12,44 @@ See [tests](__tests__/jsonwebtoken.spec.ts) and [types](index.d.ts) ## Bench ``` -Model Name: MacBook Pro -Model Identifier: MacBookPro18,2 -Processor Name: Apple M1 Max -Processor Speed: 2.6 GHz -Number of Processors: 1 -Total Number of Cores: 8 -L2 Cache (per Core): 256 KB -L3 Cache: 12 MB -Hyper-Threading Technology: Disabled -Memory: 64 GB + ,MMMM. Host - xxxxxxxxxxxxxxxxxxxxxxx + .MMMMMM Machine - Mac15,9 + MMMMM, Kernel - 24.0.0 + .;MMMMM:' MMMMMMMMMM;. OS - macOS 15.0.1 Sequoia + MMMMMMMMMMMMNWMMMMMMMMMMM: DE - Aqua + .MMMMMMMMMMMMMMMMMMMMMMMMWM. WM - Quartz Compositor + MMMMMMMMMMMMMMMMMMMMMMMMM. Packages - 194 (Homebrew), 32 (cargo) + ;MMMMMMMMMMMMMMMMMMMMMMMM: Shell - zsh + :MMMMMMMMMMMMMMMMMMMMMMMM: Terminal - warpterminal (Version v0.2024.10.23.14.49.stable_00) + .MMMMMMMMMMMMMMMMMMMMMMMMM. Resolution - 5120x2880@160fps (as 2560x1440) + MMMMMMMMMMMMMMMMMMMMMMMMMMM. 2992x1934@120fps (as 1496x967) + .MMMMMMMMMMMMMMMMMMMMMMMMMM. 2232x1512@60fps (as 1116x756) + MMMMMMMMMMMMMMMMMMMMMMMM Uptime - 1d 2h 32m + ;MMMMMMMMMMMMMMMMMMMM. CPU - Apple M3 Max (16) + .MMMM,. .MMMM,. CPU Load - 16% + Memory - 50.1 GB / 134.2 GB + Battery - 78% & Discharging + Disk Space - 624.0 GB / 994.7 GB ``` ```text -@node-rs/jsonwebtoken x 17,491 ops/sec ±0.39% (92 runs sampled) -node-jsonwebtoken x 6,899 ops/sec ±0.62% (88 runs sampled) -Async sign bench suite: Fastest is @node-rs/jsonwebtoken - -@node-rs/jsonwebtoken x 17,393 ops/sec ±1.57% (87 runs sampled) -node-jsonwebtoken x 5,256 ops/sec ±0.74% (85 runs sampled) -Async verify bench suite: Fastest is @node-rs/jsonwebtoken - -@node-rs/jsonwebtoken x 264,001 ops/sec ±0.08% (101 runs sampled) -node-jsonwebtoken x 71,785 ops/sec ±1.01% (97 runs sampled) -Sync sign bench suite: Fastest is @node-rs/jsonwebtoken - -@node-rs/jsonwebtoken x 278,657 ops/sec ±0.08% (99 runs sampled) -node-jsonwebtoken x 54,462 ops/sec ±0.53% (100 runs sampled) -Sync verify bench suite: Fastest is @node-rs/jsonwebtoken +❯ yarn workspace @node-rs/jsonwebtoken bench +Sign token +┌─────────┬──────────────────────────────┬───────────┬────────────────────┬──────────┬─────────┐ +│ (index) │ Task Name │ ops/sec │ Average Time (ns) │ Margin │ Samples │ +├─────────┼──────────────────────────────┼───────────┼────────────────────┼──────────┼─────────┤ +│ 0 │ '@node-rs/jsonwebtoken' │ '91,244' │ 10959.520789952572 │ '±0.26%' │ 45623 │ +│ 1 │ '@node-rs/jsonwebtoken sync' │ '327,344' │ 3054.88582722852 │ '±0.27%' │ 163673 │ +│ 2 │ 'jsonwebtoken' │ '59,972' │ 16674.345716476044 │ '±1.26%' │ 29987 │ +│ 3 │ 'jsonwebtoken sync' │ '70,192' │ 14246.519901985555 │ '±1.50%' │ 35097 │ +└─────────┴──────────────────────────────┴───────────┴────────────────────┴──────────┴─────────┘ +Verify token +┌─────────┬──────────────────────────────┬───────────┬────────────────────┬──────────┬─────────┐ +│ (index) │ Task Name │ ops/sec │ Average Time (ns) │ Margin │ Samples │ +├─────────┼──────────────────────────────┼───────────┼────────────────────┼──────────┼─────────┤ +│ 0 │ '@node-rs/jsonwebtoken' │ '99,215' │ 10079.106313498452 │ '±0.20%' │ 49608 │ +│ 1 │ '@node-rs/jsonwebtoken sync' │ '299,184' │ 3342.421242972733 │ '±0.23%' │ 149593 │ +│ 2 │ 'jsonwebtoken' │ '53,938' │ 18539.495365223007 │ '±1.51%' │ 26970 │ +│ 3 │ 'jsonwebtoken sync' │ '58,633' │ 17055.03492853964 │ '±1.27%' │ 29317 │ +└─────────┴──────────────────────────────┴───────────┴────────────────────┴──────────┴─────────┘ ``` diff --git a/packages/jsonwebtoken/benchmark/jsonwebtoken.js b/packages/jsonwebtoken/benchmark/jsonwebtoken.js deleted file mode 100644 index 4c67c6b4..00000000 --- a/packages/jsonwebtoken/benchmark/jsonwebtoken.js +++ /dev/null @@ -1,161 +0,0 @@ -const { cpus } = require('os') - -const { Suite } = require('benchmark') -const chalk = require('chalk') -const nodeJsonwebtoken = require('jsonwebtoken') -const { range } = require('lodash') - -const { sign, verify, verifySync, signSync } = require('../index') - -const getUtcTimestamp = () => Math.floor(new Date().getTime() / 1000) -const oneDayInSeconds = 86400 - -function nodeJwtSignAsync(jwtPayload, signKey) { - return new Promise((resolve, reject) => { - nodeJsonwebtoken.sign(jwtPayload, signKey, (err, token) => { - if (err) { - return reject(err) - } - resolve(token) - }) - }) -} -function nodeJwtVerifyAsync(jwt, verifyKey) { - return new Promise((resolve, reject) => { - nodeJsonwebtoken.verify(jwt, verifyKey, (err, token) => { - if (err) { - return reject(err) - } - resolve(token) - }) - }) -} -const nodeJwtSignSync = nodeJsonwebtoken.sign -const nodeJwtVerifySync = nodeJsonwebtoken.verify - -const secretKey = 'qwertyuiopasdfghjklzxcvbnm123456' -const jwtClaims = { - data: { - id: 'f81d4fae-7dec-11d0-a765-00a0c91e6bf6', - pr: 33, - isM: true, - set: ['KL', 'TV', 'JI'], - nest: { id: 'poly' }, - }, - exp: getUtcTimestamp() + oneDayInSeconds, -} -const token = nodeJwtSignSync(jwtClaims, secretKey) - -const numOfCores = cpus().length - -function runSignAsync() { - return new Promise((resolve) => { - const suite = new Suite('Async sign') - - return suite - .add('@node-rs/jsonwebtoken', { - defer: true, - fn: (deferred) => { - const asyncJobs = range(numOfCores).map(() => sign(jwtClaims, secretKey)) - Promise.all(asyncJobs).then(() => deferred.resolve()) - }, - }) - .add('node-jsonwebtoken', { - defer: true, - fn: (deferred) => { - const asyncJobs = range(numOfCores).map(() => nodeJwtSignAsync(jwtClaims, secretKey)) - Promise.all(asyncJobs).then(() => deferred.resolve()) - }, - }) - .on('cycle', function (event) { - console.info(String(event.target)) - }) - .on('complete', function () { - console.info(`${this.name} bench suite: Fastest is ${chalk.green(this.filter('fastest').map('name'))}`) - resolve() - }) - .run() - }) -} - -function runVerifyAsync() { - return new Promise((resolve) => { - const suite = new Suite('Async verify') - - return suite - .add('@node-rs/jsonwebtoken', { - defer: true, - fn: (deferred) => { - const asyncJobs = range(numOfCores).map(() => verify(token, secretKey)) - Promise.all(asyncJobs).then(() => deferred.resolve()) - }, - }) - .add('node-jsonwebtoken', { - defer: true, - fn: (deferred) => { - const asyncJobs = range(numOfCores).map(() => nodeJwtVerifyAsync(token, secretKey)) - Promise.all(asyncJobs).then(() => deferred.resolve()) - }, - }) - .on('cycle', function (event) { - console.info(String(event.target)) - }) - .on('complete', function () { - console.info(`${this.name} bench suite: Fastest is ${chalk.green(this.filter('fastest').map('name'))}`) - resolve() - }) - .run() - }) -} - -function runSignSync() { - return new Promise((resolve) => { - const suite = new Suite('Sync sign') - - return suite - .add('@node-rs/jsonwebtoken', () => { - signSync(jwtClaims, secretKey) - }) - .add('node-jsonwebtoken', () => { - nodeJwtSignSync(jwtClaims, secretKey) - }) - .on('cycle', function (event) { - console.info(String(event.target)) - }) - .on('complete', function () { - console.info(`${this.name} bench suite: Fastest is ${chalk.green(this.filter('fastest').map('name'))}`) - resolve() - }) - .run() - }) -} - -function runVerifySync() { - return new Promise((resolve) => { - const suite = new Suite('Sync verify') - - return suite - .add('@node-rs/jsonwebtoken', () => { - verifySync(token, secretKey) - }) - .add('node-jsonwebtoken', () => { - nodeJwtVerifySync(token, secretKey) - }) - .on('cycle', function (event) { - console.info(String(event.target)) - }) - .on('complete', function () { - console.info(`${this.name} bench suite: Fastest is ${chalk.green(this.filter('fastest').map('name'))}`) - resolve() - }) - .run() - }) -} - -// Run suites in series -;(async () => { - const suiteRunners = [runSignAsync, runVerifyAsync, runSignSync, runVerifySync] - for (const run of suiteRunners) { - await run() - } -})() diff --git a/packages/jsonwebtoken/benchmark/jsonwebtoken.ts b/packages/jsonwebtoken/benchmark/jsonwebtoken.ts new file mode 100644 index 00000000..0a3147b1 --- /dev/null +++ b/packages/jsonwebtoken/benchmark/jsonwebtoken.ts @@ -0,0 +1,86 @@ +import { Bench } from 'tinybench' +import chalk from 'chalk' +import nodeJsonwebtoken, { type PrivateKey, type Secret, type PublicKey, type GetPublicKeyOrSecret } from 'jsonwebtoken' + +import { sign, verify, verifySync, signSync } from '../index.js' + +const getUtcTimestamp = () => Math.floor(new Date().getTime() / 1000) +const oneDayInSeconds = 86400 + +function nodeJwtSignAsync(jwtPayload: Parameters[0], signKey: Secret | PrivateKey) { + return new Promise((resolve, reject) => { + nodeJsonwebtoken.sign(jwtPayload, signKey, (err, token) => { + if (err) { + return reject(err) + } + resolve(token) + }) + }) +} +function nodeJwtVerifyAsync(jwt: string, verifyKey: Secret | PublicKey | GetPublicKeyOrSecret) { + return new Promise((resolve, reject) => { + nodeJsonwebtoken.verify(jwt, verifyKey, (err, token) => { + if (err) { + return reject(err) + } + resolve(token) + }) + }) +} +const nodeJwtSignSync = nodeJsonwebtoken.sign +const nodeJwtVerifySync = nodeJsonwebtoken.verify + +const secretKey = 'qwertyuiopasdfghjklzxcvbnm123456' +const jwtClaims = { + data: { + id: 'f81d4fae-7dec-11d0-a765-00a0c91e6bf6', + pr: 33, + isM: true, + set: ['KL', 'TV', 'JI'], + nest: { id: 'poly' }, + }, + exp: getUtcTimestamp() + oneDayInSeconds, +} +const token = nodeJwtSignSync(jwtClaims, secretKey) + +const suite = new Bench() + +await suite + .add('@node-rs/jsonwebtoken', async () => { + await sign(jwtClaims, secretKey) + }) + .add('@node-rs/jsonwebtoken sync', () => { + signSync(jwtClaims, secretKey) + }) + .add('jsonwebtoken', async () => { + await nodeJwtSignAsync(jwtClaims, secretKey) + }) + .add('jsonwebtoken sync', () => { + nodeJwtSignSync(jwtClaims, secretKey) + }) + .warmup() + +await suite.run() +console.info(chalk.green('Sign token')) +console.table(suite.table()) + +const verifySuite = new Bench() + +await verifySuite + .add('@node-rs/jsonwebtoken', async () => { + await verify(token, secretKey) + }) + .add('@node-rs/jsonwebtoken sync', () => { + verifySync(token, secretKey) + }) + .add('jsonwebtoken', async () => { + await nodeJwtVerifyAsync(token, secretKey) + }) + .add('jsonwebtoken sync', () => { + nodeJwtVerifySync(token, secretKey) + }) + .warmup() + +await verifySuite.run() +console.info(chalk.green('Verify token')) +console.table(verifySuite.table()) diff --git a/packages/jsonwebtoken/benchmark/package.json b/packages/jsonwebtoken/benchmark/package.json new file mode 100644 index 00000000..3dbc1ca5 --- /dev/null +++ b/packages/jsonwebtoken/benchmark/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} diff --git a/packages/jsonwebtoken/index.js b/packages/jsonwebtoken/index.js index af2df79f..96e6cf08 100644 --- a/packages/jsonwebtoken/index.js +++ b/packages/jsonwebtoken/index.js @@ -1,9 +1,12 @@ // prettier-ignore /* eslint-disable */ +// @ts-nocheck /* auto-generated by NAPI-RS */ -const { readFileSync } = require('fs') +const { createRequire } = require('node:module') +require = createRequire(__filename) +const { readFileSync } = require('node:fs') let nativeBinding = null const loadErrors = [] diff --git a/packages/jsonwebtoken/package.json b/packages/jsonwebtoken/package.json index 037feef9..4117daf9 100644 --- a/packages/jsonwebtoken/package.json +++ b/packages/jsonwebtoken/package.json @@ -11,7 +11,7 @@ ], "scripts": { "artifacts": "napi artifacts -d ../../artifacts", - "bench": "cross-env NODE_ENV=production node benchmark/jsonwebtoken.js", + "bench": "cross-env NODE_ENV=production node --import @oxc-node/core/register benchmark/jsonwebtoken.ts", "build": "napi build --platform --release", "build:debug": "napi build --platform", "prepublishOnly": "napi prepublish", @@ -64,8 +64,11 @@ "node": ">= 10" }, "devDependencies": { - "@napi-rs/cli": "^3.0.0-alpha.63", + "@napi-rs/cli": "^3.0.0-alpha.64", + "@oxc-node/core": "^0.0.15", "@types/jsonwebtoken": "^9.0.6", - "jsonwebtoken": "^9.0.2" + "cross-env": "^7.0.3", + "jsonwebtoken": "^9.0.2", + "tinybench": "^2.9.0" } } diff --git a/packages/jsonwebtoken/tsconfig.json b/packages/jsonwebtoken/tsconfig.json new file mode 100644 index 00000000..b6b62b83 --- /dev/null +++ b/packages/jsonwebtoken/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "dist", + "composite": true + }, + "exclude": ["dist"], + "include": ["benchmark", "__tests__"] +} diff --git a/packages/xxhash/README.md b/packages/xxhash/README.md index f3240c8a..9b85814e 100644 --- a/packages/xxhash/README.md +++ b/packages/xxhash/README.md @@ -16,24 +16,6 @@ pnpm add @node-rs/xxhash npm install @node-rs/xxhash ``` -## Support matrix - -| | node12 | node14 | node16 | node18 | -| --------------------- | ------ | ------ | ------ | ------ | -| Windows x64 | ✓ | ✓ | ✓ | ✓ | -| Windows x32 | ✓ | ✓ | ✓ | ✓ | -| Windows arm64 | ✓ | ✓ | ✓ | ✓ | -| macOS x64 | ✓ | ✓ | ✓ | ✓ | -| macOS arm64 (m chips) | ✓ | ✓ | ✓ | ✓ | -| Linux x64 gnu | ✓ | ✓ | ✓ | ✓ | -| Linux x64 musl | ✓ | ✓ | ✓ | ✓ | -| Linux arm gnu | ✓ | ✓ | ✓ | ✓ | -| Linux arm64 gnu | ✓ | ✓ | ✓ | ✓ | -| Linux arm64 musl | ✓ | ✓ | ✓ | ✓ | -| Android arm64 | ✓ | ✓ | ✓ | ✓ | -| Android armv7 | ✓ | ✓ | ✓ | ✓ | -| FreeBSD x64 | ✓ | ✓ | ✓ | ✓ | - ## API ```ts @@ -86,38 +68,60 @@ export const xxh3: { ### Hardware ``` -Model Name: MacBook Pro -Model Identifier: MacBookPro15,1 -Processor Name: 6-Core Intel Core i7 -Processor Speed: 2.6 GHz -Number of Processors: 1 -Total Number of Cores: 6 -L2 Cache (per Core): 256 KB -L3 Cache: 12 MB -Hyper-Threading Technology: Enabled -Memory: 16 GB + ,MMMM. Host - xxxxxxxxxxxxxxxxxxxxxxx + .MMMMMM Machine - Mac15,9 + MMMMM, Kernel - 24.0.0 + .;MMMMM:' MMMMMMMMMM;. OS - macOS 15.0.1 Sequoia + MMMMMMMMMMMMNWMMMMMMMMMMM: DE - Aqua + .MMMMMMMMMMMMMMMMMMMMMMMMWM. WM - Quartz Compositor + MMMMMMMMMMMMMMMMMMMMMMMMM. Packages - 194 (Homebrew), 32 (cargo) + ;MMMMMMMMMMMMMMMMMMMMMMMM: Shell - zsh + :MMMMMMMMMMMMMMMMMMMMMMMM: Terminal - warpterminal (Version v0.2024.10.23.14.49.stable_00) + .MMMMMMMMMMMMMMMMMMMMMMMMM. Resolution - 5120x2880@160fps (as 2560x1440) + MMMMMMMMMMMMMMMMMMMMMMMMMMM. 2992x1934@120fps (as 1496x967) + .MMMMMMMMMMMMMMMMMMMMMMMMMM. 2232x1512@60fps (as 1116x756) + MMMMMMMMMMMMMMMMMMMMMMMM Uptime - 1d 2h 32m + ;MMMMMMMMMMMMMMMMMMMM. CPU - Apple M3 Max (16) + .MMMM,. .MMMM,. CPU Load - 16% + Memory - 50.1 GB / 134.2 GB + Battery - 78% & Discharging + Disk Space - 624.0 GB / 994.7 GB ``` ### Result ``` -@node-rs/xxhash h32 x 18,847 ops/sec ±3.81% (81 runs sampled) -xxhash c++ x 12,190 ops/sec ±2.94% (83 runs sampled) -xxhashjs h32 x 1,035 ops/sec ±11.04% (68 runs sampled) -xxh32 bench suite: Fastest is @node-rs/xxhash h32 - -@node-rs/xxhash h32 x 13,248 ops/sec ±4.38% (78 runs sampled) -xxhashjs h32 x 1,366 ops/sec ±1.96% (85 runs sampled) -xxh32 multi steps bench suite: Fastest is @node-rs/xxhash h32 - -@node-rs/xxhash 64 x 43,532 ops/sec ±1.33% (88 runs sampled) -xxhash C++ x 41,658 ops/sec ±1.45% (90 runs sampled) -wasm x 32,415 ops/sec ±1.38% (90 runs sampled) -xxhashjs h64 x 47.52 ops/sec ±3.20% (62 runs sampled) -xxh64 bench suite: Fastest is @node-rs/xxhash 64 - -@node-rs/xxhash 64 x 33,153 ops/sec ±5.42% (76 runs sampled) -wasm x 29,477 ops/sec ±2.72% (81 runs sampled) -xxhashjs h64 x 54.96 ops/sec ±1.93% (71 runs sampled) -xxh64 multi steps bench suite: Fastest is @node-rs/xxhash 64 +❯ yarn workspace @node-rs/xxhash bench +xxh32 without initial seed +┌─────────┬───────────────────────┬──────────┬───────────────────┬──────────┬─────────┐ +│ (index) │ Task Name │ ops/sec │ Average Time (ns) │ Margin │ Samples │ +├─────────┼───────────────────────┼──────────┼───────────────────┼──────────┼─────────┤ +│ 0 │ '@node-rs/xxhash h32' │ '20,146' │ 49637.20101250711 │ '±0.20%' │ 10074 │ +│ 1 │ 'xxhash c++' │ '17,348' │ 57642.4387319887 │ '±0.19%' │ 8675 │ +│ 2 │ 'xxhashjs h32' │ '2,697' │ 370657.902149741 │ '±0.24%' │ 1349 │ +└─────────┴───────────────────────┴──────────┴───────────────────┴──────────┴─────────┘ +xxh32 without initial seed multi step +┌─────────┬───────────────────────┬──────────┬────────────────────┬──────────┬─────────┐ +│ (index) │ Task Name │ ops/sec │ Average Time (ns) │ Margin │ Samples │ +├─────────┼───────────────────────┼──────────┼────────────────────┼──────────┼─────────┤ +│ 0 │ '@node-rs/xxhash h32' │ '17,111' │ 58440.61746142987 │ '±0.20%' │ 8556 │ +│ 1 │ 'xxhashjs h32' │ '2,738' │ 365160.82262773765 │ '±0.19%' │ 1370 │ +└─────────┴───────────────────────┴──────────┴────────────────────┴──────────┴─────────┘ +xxh64 without initial seed +┌─────────┬──────────────────────┬──────────┬────────────────────┬──────────┬─────────┐ +│ (index) │ Task Name │ ops/sec │ Average Time (ns) │ Margin │ Samples │ +├─────────┼──────────────────────┼──────────┼────────────────────┼──────────┼─────────┤ +│ 0 │ '@node-rs/xxhash 64' │ '50,159' │ 19936.33995215147 │ '±0.11%' │ 25080 │ +│ 1 │ 'xxhash C++' │ '47,980' │ 20841.790588135264 │ '±0.17%' │ 23991 │ +│ 2 │ 'wasm' │ '33,916' │ 29484.03756117805 │ '±0.21%' │ 16959 │ +│ 3 │ 'xxhashjs h64' │ '95' │ 10431058.97916674 │ '±0.57%' │ 48 │ +└─────────┴──────────────────────┴──────────┴────────────────────┴──────────┴─────────┘ +xxh64 without initial seed multi step +┌─────────┬──────────────────────┬──────────┬────────────────────┬──────────┬─────────┐ +│ (index) │ Task Name │ ops/sec │ Average Time (ns) │ Margin │ Samples │ +├─────────┼──────────────────────┼──────────┼────────────────────┼──────────┼─────────┤ +│ 0 │ '@node-rs/xxhash 64' │ '46,603' │ 21457.79825765685 │ '±0.20%' │ 23302 │ +│ 1 │ 'wasm' │ '34,681' │ 28834.205985814675 │ '±0.19%' │ 17341 │ +│ 2 │ 'xxhashjs h64' │ '96' │ 10411336.75510195 │ '±0.73%' │ 49 │ +└─────────┴──────────────────────┴──────────┴────────────────────┴──────────┴─────────┘ ``` diff --git a/packages/xxhash/__test__/package.json b/packages/xxhash/__test__/package.json new file mode 100644 index 00000000..3dbc1ca5 --- /dev/null +++ b/packages/xxhash/__test__/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} diff --git a/packages/xxhash/__test__/xxh3.spec.ts b/packages/xxhash/__test__/xxh3.spec.ts index 137ed370..83083ab2 100644 --- a/packages/xxhash/__test__/xxh3.spec.ts +++ b/packages/xxhash/__test__/xxh3.spec.ts @@ -1,6 +1,6 @@ import test from 'ava' -import { xxh3 } from '../index' +import { xxh3 } from '../index.js' const SEC_WITH_192_LENGTH = Buffer.from( '515293b422141cabb24c131a914d54d767738ce3f46141d91dfdfffa8b2e7ada507318f242dd112f28f213cfc1c4aba1e641e8a7f103746cc542d66668607e2ea4fce4f08640780d0bcd9f171a31f8932ae617033afd5e100c3fb6f0b5b9be611419d79c2bf2358ba1c8562ae24dd1aa2619ab30dcfaa9b8f3363b2a350e750a6aae7e307d16b1d3250f7ed6315ec127fac8643dfcb733ffe622bbc97a3097c6eabd24dee519bc7817e0e8195a426b07ad7452f6ee72465e065afe56e498a450', diff --git a/packages/xxhash/__test__/xxh64.spec.ts b/packages/xxhash/__test__/xxh64.spec.ts index 79d48b25..a85e5fe6 100644 --- a/packages/xxhash/__test__/xxh64.spec.ts +++ b/packages/xxhash/__test__/xxh64.spec.ts @@ -1,10 +1,11 @@ import test from 'ava' -import { h64 } from 'xxhashjs' +import xxhashjs from 'xxhashjs' -import { xxh64, Xxh64 } from '../index' +import { xxh64, Xxh64 } from '../index.js' const FX = Buffer.from('@node-rs/xxhash vs xxhashjs') const SEED = 0xabcdef01 +const { h64 } = xxhashjs test('xxh64 without seed', (t) => { t.is(xxh64(FX).toString(16), h64(FX, 0).toString(16)) diff --git a/packages/xxhash/benchmark/package.json b/packages/xxhash/benchmark/package.json new file mode 100644 index 00000000..3dbc1ca5 --- /dev/null +++ b/packages/xxhash/benchmark/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} diff --git a/packages/xxhash/benchmark/xxhash.js b/packages/xxhash/benchmark/xxhash.js deleted file mode 100644 index fbbf84ec..00000000 --- a/packages/xxhash/benchmark/xxhash.js +++ /dev/null @@ -1,88 +0,0 @@ -const { readFileSync } = require('fs') -const { join } = require('path') - -const { Suite } = require('benchmark') -const chalk = require('chalk') -const createWasmHasher = require('webpack/lib/util/hash/xxhash64') -const { hash64, hash } = require('xxhash') -const { h32: h32js, h64: h64js } = require('xxhashjs') - -const { xxh32, xxh64, Xxh32, Xxh64 } = require('../index') - -const FX = readFileSync(join(__dirname, '..', '..', '..', 'yarn.lock')) - -const wasmHasher = createWasmHasher() - -new Suite('xxh32') - .add('@node-rs/xxhash h32', () => { - xxh32(FX, 0) - }) - .add('xxhash c++', () => { - hash(FX, 0) - }) - .add('xxhashjs h32', () => { - h32js(FX, 0).toNumber() - }) - .on('cycle', function (event) { - console.info(String(event.target)) - }) - .on('complete', function () { - console.info(`${this.name} bench suite: Fastest is ${chalk.green(this.filter('fastest').map('name'))}`) - }) - .run() - -new Suite('xxh32 multi steps') - .add('@node-rs/xxhash h32', () => { - new Xxh32().update(FX).digest() - }) - .add('xxhashjs h32', () => { - h32js().update(FX).digest().toNumber() - }) - .on('cycle', function (event) { - console.info(String(event.target)) - }) - .on('complete', function () { - console.info(`${this.name} bench suite: Fastest is ${chalk.green(this.filter('fastest').map('name'))}`) - }) - .run() - -new Suite('xxh64') - .add('@node-rs/xxhash 64', () => { - xxh64(FX).toString(16) - }) - .add('xxhash C++', () => { - hash64(FX, 0) - }) - .add('wasm', () => { - wasmHasher.update(FX).digest() - wasmHasher.reset() - }) - .add('xxhashjs h64', () => { - h64js(FX, 0).toString(16) - }) - .on('cycle', function (event) { - console.info(String(event.target)) - }) - .on('complete', function () { - console.info(`${this.name} bench suite: Fastest is ${chalk.green(this.filter('fastest').map('name'))}`) - }) - .run() - -new Suite('xxh64 multi steps') - .add('@node-rs/xxhash 64', () => { - new Xxh64().update(FX).digest().toString(16) - }) - .add('wasm', () => { - wasmHasher.update(FX).digest() - wasmHasher.reset() - }) - .add('xxhashjs h64', () => { - h64js(0).update(FX).digest().toString(16) - }) - .on('cycle', function (event) { - console.info(String(event.target)) - }) - .on('complete', function () { - console.info(`${this.name} bench suite: Fastest is ${chalk.green(this.filter('fastest').map('name'))}`) - }) - .run() diff --git a/packages/xxhash/benchmark/xxhash.ts b/packages/xxhash/benchmark/xxhash.ts new file mode 100644 index 00000000..5133353f --- /dev/null +++ b/packages/xxhash/benchmark/xxhash.ts @@ -0,0 +1,95 @@ +import { readFileSync } from 'node:fs' +import { join } from 'node:path' +import { fileURLToPath } from 'node:url' + +import { Bench } from 'tinybench' +import chalk from 'chalk' +// @ts-expect-error +import createWasmHasher from 'webpack/lib/util/hash/xxhash64.js' +// @ts-expect-error +import xxhash from 'xxhash' +import xxhashjs from 'xxhashjs' + +import { xxh32, xxh64, Xxh32, Xxh64 } from '../index.js' + +const FX = readFileSync(join(fileURLToPath(import.meta.url), '..', '..', '..', '..', 'yarn.lock')) + +const wasmHasher = createWasmHasher() + +const suite = new Bench() + +await suite + .add('@node-rs/xxhash h32', () => { + xxh32(FX, 0) + }) + .add('xxhash c++', () => { + xxhash.hash(FX, 0) + }) + .add('xxhashjs h32', () => { + xxhashjs.h32(FX, 0).toNumber() + }) + .warmup() + +console.info(chalk.green('xxh32 without initial seed')) + +await suite.run() +console.table(suite.table()) + +const multiStepSuite = new Bench() + +await multiStepSuite + .add('@node-rs/xxhash h32', () => { + new Xxh32().update(FX).digest() + }) + .add('xxhashjs h32', () => { + xxhashjs.h32().update(FX).digest().toNumber() + }) + .warmup() + +await multiStepSuite.run() + +console.info(chalk.green('xxh32 without initial seed multi step')) +console.table(multiStepSuite.table()) + +const xx64Suite = new Bench() + +await xx64Suite + .add('@node-rs/xxhash 64', () => { + xxh64(FX).toString(16) + }) + .add('xxhash C++', () => { + xxhash.hash64(FX, 0) + }) + .add('wasm', () => { + wasmHasher.update(FX).digest() + wasmHasher.reset() + }) + .add('xxhashjs h64', () => { + xxhashjs.h64(FX, 0).toString(16) + }) + .warmup() + +await xx64Suite.run() + +console.info(chalk.green('xxh64 without initial seed')) +console.table(xx64Suite.table()) + +const multiStepSuite64 = new Bench() + +await multiStepSuite64 + .add('@node-rs/xxhash 64', () => { + new Xxh64().update(FX).digest().toString(16) + }) + .add('wasm', () => { + wasmHasher.update(FX).digest() + wasmHasher.reset() + }) + .add('xxhashjs h64', () => { + xxhashjs.h64(0).update(FX).digest().toString(16) + }) + .warmup() + +await multiStepSuite64.run() + +console.info(chalk.green('xxh64 without initial seed multi step')) +console.table(multiStepSuite64.table()) diff --git a/packages/xxhash/index.d.ts b/packages/xxhash/index.d.ts index 69b20855..0b74c45b 100644 --- a/packages/xxhash/index.d.ts +++ b/packages/xxhash/index.d.ts @@ -14,9 +14,9 @@ export declare class Xxh64 { reset(newState?: bigint | undefined | null): void } -export declare function xxh32(input: string | Uint8Array, seed?: number | undefined | null): number +export declare function xxh32(input: Uint8Array | string, seed?: number | undefined | null): number -export declare function xxh64(input: string | Uint8Array, seed?: bigint | undefined | null): bigint +export declare function xxh64(input: Uint8Array | string, seed?: bigint | undefined | null): bigint export declare namespace xxh3 { export class Xxh3 { @@ -28,6 +28,6 @@ export declare namespace xxh3 { } export function xxh128(input: string | Uint8Array, seed?: bigint | undefined | null): bigint export function xxh128WithSecret(input: string | Uint8Array, secret: Uint8Array): bigint - export function xxh64(input: string | Uint8Array, seed?: bigint | undefined | null): bigint + export function xxh64(input: Uint8Array | string, seed?: bigint | undefined | null): bigint export function xxh64WithSecret(input: string | Uint8Array, secret: Uint8Array): bigint } diff --git a/packages/xxhash/index.js b/packages/xxhash/index.js index 589bd9cd..651a7469 100644 --- a/packages/xxhash/index.js +++ b/packages/xxhash/index.js @@ -1,9 +1,12 @@ // prettier-ignore /* eslint-disable */ +// @ts-nocheck /* auto-generated by NAPI-RS */ -const { readFileSync } = require('fs') +const { createRequire } = require('node:module') +require = createRequire(__filename) +const { readFileSync } = require('node:fs') let nativeBinding = null const loadErrors = [] diff --git a/packages/xxhash/package.json b/packages/xxhash/package.json index c98c87a6..a9548b0b 100644 --- a/packages/xxhash/package.json +++ b/packages/xxhash/package.json @@ -56,7 +56,7 @@ }, "scripts": { "artifacts": "napi artifacts -d ../../artifacts", - "bench": "cross-env NODE_ENV=production node benchmark/xxhash.js", + "bench": "cross-env NODE_ENV=production node --import @oxc-node/core/register benchmark/xxhash.ts", "build": "napi build --platform --release", "build:debug": "napi build --platform", "prepublishOnly": "napi prepublish", @@ -66,8 +66,11 @@ "url": "https://github.com/napi-rs/node-rs/issues" }, "devDependencies": { - "@napi-rs/cli": "^3.0.0-alpha.63", + "@napi-rs/cli": "^3.0.0-alpha.64", + "@oxc-node/core": "^0.0.15", "@types/xxhashjs": "^0.2.4", + "cross-env": "^7.0.3", + "tinybench": "^2.9.0", "webpack": "^5.92.1", "xxhash": "^0.3.0", "xxhashjs": "^0.2.2" diff --git a/packages/xxhash/src/lib.rs b/packages/xxhash/src/lib.rs index 191f9365..31dc3ef8 100644 --- a/packages/xxhash/src/lib.rs +++ b/packages/xxhash/src/lib.rs @@ -9,15 +9,16 @@ use napi_derive::napi; use xxhash_rust::{xxh32, xxh64}; #[napi] -fn xxh32(input: Either, seed: Option) -> u32 { - let seed = seed.unwrap_or(0); - xxhash_rust::xxh32::xxh32( - match &input { - Either::A(s) => s.as_bytes(), - Either::B(b) => b.as_ref(), - }, - seed, - ) +#[inline] +fn xxh32(input: Either<&[u8], String>, seed: Option) -> u32 { + #[cfg(not(target_arch = "x86_64"))] + { + xxhash_rust::const_xxh32::xxh32(input.as_ref(), seed.unwrap_or(0)) + } + #[cfg(target_arch = "x86_64")] + { + xxhash_rust::xxh32::xxh32(input.as_ref(), seed.unwrap_or(0)) + } } #[napi] @@ -35,7 +36,7 @@ impl Xxh32 { } #[napi] - pub fn update(&mut self, input: Either) -> &Self { + pub fn update(&mut self, input: Either) -> &Self { match input { Either::A(s) => self.inner.update(s.as_bytes()), Either::B(b) => self.inner.update(b.as_ref()), @@ -55,15 +56,9 @@ impl Xxh32 { } #[napi] -fn xxh64(input: Either, seed: Option) -> u64 { - let seed = seed.map(|b| b.get_u64().1).unwrap_or(0); - xxhash_rust::xxh64::xxh64( - match &input { - Either::A(s) => s.as_bytes(), - Either::B(b) => b.as_ref(), - }, - seed, - ) +#[inline] +fn xxh64(input: Either<&[u8], String>, seed: Option) -> u64 { + xxhash_rust::xxh64::xxh64(input.as_ref(), seed.map(|b| b.get_u64().1).unwrap_or(0)) } #[napi] @@ -81,7 +76,7 @@ impl Xxh64 { } #[napi] - pub fn update(&mut self, input: Either) -> &Self { + pub fn update(&mut self, input: Either) -> &Self { match input { Either::A(s) => self.inner.update(s.as_bytes()), Either::B(b) => self.inner.update(b.as_ref()), @@ -108,43 +103,33 @@ mod xxh3_js { use xxhash_rust::xxh3; #[napi] - pub fn xxh64(input: Either, seed: Option) -> u64 { - let seed = seed.map(|b| b.get_u64().1).unwrap_or(0); - match input { - Either::A(s) => xxh3::xxh3_64_with_seed(s.as_bytes(), seed), - Either::B(b) => xxh3::xxh3_64_with_seed(b.as_ref(), seed), - } + #[inline] + pub fn xxh64(input: Either<&[u8], String>, seed: Option) -> u64 { + xxhash_rust::const_xxh3::xxh3_64_with_seed( + input.as_ref(), + seed.map(|b| b.get_u64().1).unwrap_or(0), + ) } #[napi] - pub fn xxh64_with_secret(input: Either, secret: Uint8Array) -> u64 { - match input { - Either::A(s) => xxh3::xxh3_64_with_secret(s.as_bytes(), secret.as_ref()), - Either::B(b) => xxh3::xxh3_64_with_secret(b.as_ref(), secret.as_ref()), - } + #[inline] + pub fn xxh64_with_secret(input: Either, secret: &[u8]) -> u64 { + xxh3::xxh3_64_with_secret(input.as_ref(), secret) } #[napi] - pub fn xxh128(input: Either, seed: Option) -> u128 { - let seed = seed.map(|b| b.get_u64().1).unwrap_or(0); - xxh3::xxh3_128_with_seed( - match &input { - Either::A(s) => s.as_bytes(), - Either::B(b) => b.as_ref(), - }, - seed, + #[inline] + pub fn xxh128(input: Either, seed: Option) -> u128 { + xxhash_rust::const_xxh3::xxh3_128_with_seed( + input.as_ref(), + seed.map(|b| b.get_u64().1).unwrap_or(0), ) } #[napi] - pub fn xxh128_with_secret(input: Either, secret: Uint8Array) -> u128 { - xxh3::xxh3_128_with_secret( - match &input { - Either::A(s) => s.as_bytes(), - Either::B(b) => b.as_ref(), - }, - secret.as_ref(), - ) + #[inline] + pub fn xxh128_with_secret(input: Either, secret: &[u8]) -> u128 { + xxh3::xxh3_128_with_secret(input.as_ref(), secret) } #[napi] @@ -162,7 +147,7 @@ mod xxh3_js { } #[napi(factory)] - pub fn with_secret(secret: Uint8Array) -> Self { + pub fn with_secret(secret: &[u8]) -> Self { let mut sec = [0u8; 192]; sec.copy_from_slice(secret.as_ref()); Self { @@ -171,10 +156,10 @@ mod xxh3_js { } #[napi] - pub fn update(&mut self, input: Either) -> &Self { + pub fn update(&mut self, input: Either) -> &Self { self.inner.update(match &input { Either::A(s) => s.as_bytes(), - Either::B(b) => b.as_ref(), + Either::B(b) => b, }); self } diff --git a/packages/xxhash/tsconfig.json b/packages/xxhash/tsconfig.json new file mode 100644 index 00000000..b6b62b83 --- /dev/null +++ b/packages/xxhash/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "dist", + "composite": true + }, + "exclude": ["dist"], + "include": ["benchmark", "__tests__"] +} diff --git a/rust-toolchain.toml b/rust-toolchain.toml index bbf217f2..5f3ff177 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,3 +1,3 @@ [toolchain] -channel = "1.81.0" +channel = "1.82.0" profile = "default" diff --git a/tsconfig.json b/tsconfig.json index d3adef53..ed22efa9 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -21,13 +21,17 @@ "inlineSourceMap": true, "esModuleInterop": true, "stripInternal": true, - "importsNotUsedAsValues": "remove", - "baseUrl": "./packages", - "paths": { - "jsonwebtoken": ["node_modules/*"], - "@node-rs/*": ["./*/src"] - }, - "lib": ["dom", "ES5", "ES2015", "ES2016", "ES2017", "ES2018", "ES2019", "ES2020", "esnext"] + "importsNotUsedAsValues": "remove" }, + "include": [], + "references": [ + { "path": "./packages/argon2" }, + { "path": "./packages/bcrypt" }, + { "path": "./packages/crc32" }, + { "path": "./packages/helper" }, + { "path": "./packages/jieba" }, + { "path": "./packages/jsonwebtoken" }, + { "path": "./packages/xxhash" } + ], "exclude": ["node_modules"] } diff --git a/tsconfig.project.json b/tsconfig.project.json deleted file mode 100644 index a1597b10..00000000 --- a/tsconfig.project.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "references": [{ "path": "./packages/helper" }], - "compilerOptions": { - "noEmit": true - }, - "include": [] -} diff --git a/tsconfig.test.json b/tsconfig.test.json deleted file mode 100644 index 02597fad..00000000 --- a/tsconfig.test.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "extends": "./tsconfig.json", - "include": ["packages"] -} diff --git a/yarn.lock b/yarn.lock index 82adfd5d..9858a58b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -34,15 +34,6 @@ __metadata: languageName: node linkType: hard -"@cspotcode/source-map-support@npm:^0.8.0": - version: 0.8.1 - resolution: "@cspotcode/source-map-support@npm:0.8.1" - dependencies: - "@jridgewell/trace-mapping": "npm:0.3.9" - checksum: 10c0/05c5368c13b662ee4c122c7bfbe5dc0b613416672a829f3e78bc49a357a197e0218d6e74e7c66cfcd04e15a179acab080bd3c69658c9fbefd0e1ccd950a07fc6 - languageName: node - linkType: hard - "@cwasm/openbsd-bcrypt@npm:^0.1.0": version: 0.1.0 resolution: "@cwasm/openbsd-bcrypt@npm:0.1.0" @@ -92,169 +83,188 @@ __metadata: languageName: node linkType: hard -"@inquirer/checkbox@npm:^3.0.1": - version: 3.0.1 - resolution: "@inquirer/checkbox@npm:3.0.1" +"@inquirer/checkbox@npm:^4.0.1": + version: 4.0.1 + resolution: "@inquirer/checkbox@npm:4.0.1" dependencies: - "@inquirer/core": "npm:^9.2.1" - "@inquirer/figures": "npm:^1.0.6" - "@inquirer/type": "npm:^2.0.0" + "@inquirer/core": "npm:^10.0.1" + "@inquirer/figures": "npm:^1.0.7" + "@inquirer/type": "npm:^3.0.0" ansi-escapes: "npm:^4.3.2" yoctocolors-cjs: "npm:^2.1.2" - checksum: 10c0/1e8c508772757000209b89e7d0455ac5a0684b3ba3c4b5def13d4da95b19bcab670458d77a18f5a5daeec273578d1c3b2072030221dbfa7e0738abd5c0bc4af4 + peerDependencies: + "@types/node": ">=18" + checksum: 10c0/62a0dd67c799ca6f45a7892564eb4bde7d5697eda4cda0594cb948022e69d86b7190f1522b291a470b5d407fa9046713b6caa5417312fc190293c599b179b0c0 languageName: node linkType: hard -"@inquirer/confirm@npm:^4.0.1": - version: 4.0.1 - resolution: "@inquirer/confirm@npm:4.0.1" +"@inquirer/confirm@npm:^5.0.1": + version: 5.0.1 + resolution: "@inquirer/confirm@npm:5.0.1" dependencies: - "@inquirer/core": "npm:^9.2.1" - "@inquirer/type": "npm:^2.0.0" - checksum: 10c0/8ea5e6a63efa348b626750384c249cc903280e38c2596bb42c640f178b375dbc389d8c4d040b2e4759b3937d8a188e245ca262b8dc7cdb2fa35dfce4104c2e8f + "@inquirer/core": "npm:^10.0.1" + "@inquirer/type": "npm:^3.0.0" + peerDependencies: + "@types/node": ">=18" + checksum: 10c0/bd8fafd75d4d591b3c153cb2f76d7ac9163701cb0a032e8e589d51c918a41d1da70ae7aaeb4d8d7394979a9af24c23a7d71ea6106d3308004f9829f133765776 languageName: node linkType: hard -"@inquirer/core@npm:^9.2.1": - version: 9.2.1 - resolution: "@inquirer/core@npm:9.2.1" +"@inquirer/core@npm:^10.0.1": + version: 10.0.1 + resolution: "@inquirer/core@npm:10.0.1" dependencies: - "@inquirer/figures": "npm:^1.0.6" - "@inquirer/type": "npm:^2.0.0" - "@types/mute-stream": "npm:^0.0.4" - "@types/node": "npm:^22.5.5" - "@types/wrap-ansi": "npm:^3.0.0" + "@inquirer/figures": "npm:^1.0.7" + "@inquirer/type": "npm:^3.0.0" ansi-escapes: "npm:^4.3.2" cli-width: "npm:^4.1.0" - mute-stream: "npm:^1.0.0" + mute-stream: "npm:^2.0.0" signal-exit: "npm:^4.1.0" strip-ansi: "npm:^6.0.1" wrap-ansi: "npm:^6.2.0" yoctocolors-cjs: "npm:^2.1.2" - checksum: 10c0/11c14be77a9fa85831de799a585721b0a49ab2f3b7d8fd1780c48ea2b29229c6bdc94e7892419086d0f7734136c2ba87b6a32e0782571eae5bbd655b1afad453 + checksum: 10c0/d55682e5c26c41037cb80a3bef5a12ae4eedf14621786b44088f48aeb32eb815dfb0f241950b6dba2eb84bf22131c126a2cb59e8e2d4ef63ad3613d59339063a languageName: node linkType: hard -"@inquirer/editor@npm:^3.0.1": - version: 3.0.1 - resolution: "@inquirer/editor@npm:3.0.1" +"@inquirer/editor@npm:^4.0.1": + version: 4.0.1 + resolution: "@inquirer/editor@npm:4.0.1" dependencies: - "@inquirer/core": "npm:^9.2.1" - "@inquirer/type": "npm:^2.0.0" + "@inquirer/core": "npm:^10.0.1" + "@inquirer/type": "npm:^3.0.0" external-editor: "npm:^3.1.0" - checksum: 10c0/edff144ce57d5a0793ae9c2ac3d16934d120ba9b277187613a44923a0b7dc45ba8b7382f56b66cf730c050b58637b236a0f8b280add33bbc53de1e78a10240e7 + peerDependencies: + "@types/node": ">=18" + checksum: 10c0/0a48ed8a315ae4d481a29a4bb044861004455d598289dc9faa3a4a72a2b482c103dc92792cad1dc378500e57b1ea3b95c805779d2488309b86d0bec496cd7db3 languageName: node linkType: hard -"@inquirer/expand@npm:^3.0.1": - version: 3.0.1 - resolution: "@inquirer/expand@npm:3.0.1" +"@inquirer/expand@npm:^4.0.1": + version: 4.0.1 + resolution: "@inquirer/expand@npm:4.0.1" dependencies: - "@inquirer/core": "npm:^9.2.1" - "@inquirer/type": "npm:^2.0.0" + "@inquirer/core": "npm:^10.0.1" + "@inquirer/type": "npm:^3.0.0" yoctocolors-cjs: "npm:^2.1.2" - checksum: 10c0/384db4ac56bc68b56a83a6d164ce039b35addd64a8e422cb8605e38d0f54a3654b4d2e4463575c6ffc34e30bcad5c728c23d7cc7227f4eb440b50fe36f6a785c + peerDependencies: + "@types/node": ">=18" + checksum: 10c0/6dc890f726bd65e3971ed6e7d2965ecf534c7bbd99fb9334f71204e3809822424f1a27e47322b070ee265c4a84053208a72fca617dbe669082172b585b598443 languageName: node linkType: hard -"@inquirer/figures@npm:^1.0.6": +"@inquirer/figures@npm:^1.0.7": version: 1.0.7 resolution: "@inquirer/figures@npm:1.0.7" checksum: 10c0/d7b4cfcd38dd43d1ac79da52c4478aa89145207004a471aa2083856f1d9b99adef45563f09d66c09d6457b09200fcf784527804b70ad3bd517cbc5e11142c2df languageName: node linkType: hard -"@inquirer/input@npm:^3.0.1": - version: 3.0.1 - resolution: "@inquirer/input@npm:3.0.1" +"@inquirer/input@npm:^4.0.1": + version: 4.0.1 + resolution: "@inquirer/input@npm:4.0.1" dependencies: - "@inquirer/core": "npm:^9.2.1" - "@inquirer/type": "npm:^2.0.0" - checksum: 10c0/e8b9d4ad933e70737903606241e8d1f317d3d57719ce0a77e97a050bd1109310bed8df0787ad7913ea699baaeefc448b52989de0a7c3b87ded0a3e54052a60d0 + "@inquirer/core": "npm:^10.0.1" + "@inquirer/type": "npm:^3.0.0" + peerDependencies: + "@types/node": ">=18" + checksum: 10c0/94ce23165577659fb3a01491047146502c593839eb6892f1ddfbdb092d237cdd8acb5acc2ad98776cc5eb359754eeffea97f156fddb6ec83137e123b0779ec2c languageName: node linkType: hard -"@inquirer/number@npm:^2.0.1": - version: 2.0.1 - resolution: "@inquirer/number@npm:2.0.1" +"@inquirer/number@npm:^3.0.1": + version: 3.0.1 + resolution: "@inquirer/number@npm:3.0.1" dependencies: - "@inquirer/core": "npm:^9.2.1" - "@inquirer/type": "npm:^2.0.0" - checksum: 10c0/560e34653693a940b6767e9071c8a361291636b47055f2847d7973e868afba87eedb999a60be0d78064f4481c091e64b913f4b9a84f2cd7a6774d65524bcccbc + "@inquirer/core": "npm:^10.0.1" + "@inquirer/type": "npm:^3.0.0" + peerDependencies: + "@types/node": ">=18" + checksum: 10c0/98e7bee1b887d5733d86dcee30d837072a34350ce7c11452808a67a6958786cc8200970611f4790b494acfbe741bf9b64f467b839af77e1e230f03384e903cc2 languageName: node linkType: hard -"@inquirer/password@npm:^3.0.1": - version: 3.0.1 - resolution: "@inquirer/password@npm:3.0.1" +"@inquirer/password@npm:^4.0.1": + version: 4.0.1 + resolution: "@inquirer/password@npm:4.0.1" dependencies: - "@inquirer/core": "npm:^9.2.1" - "@inquirer/type": "npm:^2.0.0" + "@inquirer/core": "npm:^10.0.1" + "@inquirer/type": "npm:^3.0.0" ansi-escapes: "npm:^4.3.2" - checksum: 10c0/0223ce3f4700a1fa1bc3827bca35d71001e5b41c7a59717e078834bf66345c8c6bba5704350c8ae237e681c30969241ae918dba2e033d01810acf7ffefacd4e6 + peerDependencies: + "@types/node": ">=18" + checksum: 10c0/670b92b8083f7658800285de64b6999a35a84a481a344042a2bc41af75143dcd73fae434aafac9a5ac5c76459112d36166f8a46ba44e3ab266e69c5ac29b84ab languageName: node linkType: hard -"@inquirer/prompts@npm:^6.0.0": - version: 6.0.1 - resolution: "@inquirer/prompts@npm:6.0.1" - dependencies: - "@inquirer/checkbox": "npm:^3.0.1" - "@inquirer/confirm": "npm:^4.0.1" - "@inquirer/editor": "npm:^3.0.1" - "@inquirer/expand": "npm:^3.0.1" - "@inquirer/input": "npm:^3.0.1" - "@inquirer/number": "npm:^2.0.1" - "@inquirer/password": "npm:^3.0.1" - "@inquirer/rawlist": "npm:^3.0.1" - "@inquirer/search": "npm:^2.0.1" - "@inquirer/select": "npm:^3.0.1" - checksum: 10c0/42fe55137531a2d18c24f910fec2d2f1a4b086ad3ad29e8b85aeb8b454ca8e132e463623f1b9e7ac5c60c58010970a923cec23ed94ff14dc23eef086e2641fca +"@inquirer/prompts@npm:^7.0.0": + version: 7.0.1 + resolution: "@inquirer/prompts@npm:7.0.1" + dependencies: + "@inquirer/checkbox": "npm:^4.0.1" + "@inquirer/confirm": "npm:^5.0.1" + "@inquirer/editor": "npm:^4.0.1" + "@inquirer/expand": "npm:^4.0.1" + "@inquirer/input": "npm:^4.0.1" + "@inquirer/number": "npm:^3.0.1" + "@inquirer/password": "npm:^4.0.1" + "@inquirer/rawlist": "npm:^4.0.1" + "@inquirer/search": "npm:^3.0.1" + "@inquirer/select": "npm:^4.0.1" + peerDependencies: + "@types/node": ">=18" + checksum: 10c0/bf72a25de8c53267de740cf4bb9639b95e5c9da3890ca59303bfba0adab11276d8ae53dc831f456acd31d257c959db2b05ed26c2a90cde7eab04737d158d6e94 languageName: node linkType: hard -"@inquirer/rawlist@npm:^3.0.1": - version: 3.0.1 - resolution: "@inquirer/rawlist@npm:3.0.1" +"@inquirer/rawlist@npm:^4.0.1": + version: 4.0.1 + resolution: "@inquirer/rawlist@npm:4.0.1" dependencies: - "@inquirer/core": "npm:^9.2.1" - "@inquirer/type": "npm:^2.0.0" + "@inquirer/core": "npm:^10.0.1" + "@inquirer/type": "npm:^3.0.0" yoctocolors-cjs: "npm:^2.1.2" - checksum: 10c0/1b2f0693ad8ae59d22c1dbec03518ee800af7553225cc1e7a7740b0eb2dd59c5c09705217fe2f9946b20c0221a4e3b2a17258a9cb496fd2eb5af0a0c9ac1cfca + peerDependencies: + "@types/node": ">=18" + checksum: 10c0/553aaf9c9a26041699e0a763d826264deaea8cbea561e4fb2e9fc75c8145acd170dc4c406df8b843bfa73266eeb972b465bdf567d0904e87d54408423610c504 languageName: node linkType: hard -"@inquirer/search@npm:^2.0.1": - version: 2.0.1 - resolution: "@inquirer/search@npm:2.0.1" +"@inquirer/search@npm:^3.0.1": + version: 3.0.1 + resolution: "@inquirer/search@npm:3.0.1" dependencies: - "@inquirer/core": "npm:^9.2.1" - "@inquirer/figures": "npm:^1.0.6" - "@inquirer/type": "npm:^2.0.0" + "@inquirer/core": "npm:^10.0.1" + "@inquirer/figures": "npm:^1.0.7" + "@inquirer/type": "npm:^3.0.0" yoctocolors-cjs: "npm:^2.1.2" - checksum: 10c0/3d016b259304fa566961e64266af03e748486aa306c76326ef20893706e16019cb91fba32561dd4c2910718e4b7959107922c6485abc88aff49edf94a6e2c76a + peerDependencies: + "@types/node": ">=18" + checksum: 10c0/8b2a35a29d3a3db09ba66b11b0051598a413c02c49a13964a84c4f9f5613fe326c1b800a783955c0a3a54d5b401a1b5bfa0ab27f15dd58501deba336561c4979 languageName: node linkType: hard -"@inquirer/select@npm:^3.0.1": - version: 3.0.1 - resolution: "@inquirer/select@npm:3.0.1" +"@inquirer/select@npm:^4.0.1": + version: 4.0.1 + resolution: "@inquirer/select@npm:4.0.1" dependencies: - "@inquirer/core": "npm:^9.2.1" - "@inquirer/figures": "npm:^1.0.6" - "@inquirer/type": "npm:^2.0.0" + "@inquirer/core": "npm:^10.0.1" + "@inquirer/figures": "npm:^1.0.7" + "@inquirer/type": "npm:^3.0.0" ansi-escapes: "npm:^4.3.2" yoctocolors-cjs: "npm:^2.1.2" - checksum: 10c0/83aa571dba12f69f267507230055d07279a7352ef032d6ea849eb32cd663f3e26aab2ce4fd5f59231f4c7624b92e7d40dd8eef5907431e81eb3d45d062c2cbb8 + peerDependencies: + "@types/node": ">=18" + checksum: 10c0/d852b49a7f1afed89e898f66fbb02d7f3317aeffc0e3abe8b7a785fbd8ffd51d26a8415737746b001c677cf019d42aef3ed986dce1bb66c4f6fa42426a388509 languageName: node linkType: hard -"@inquirer/type@npm:^2.0.0": - version: 2.0.0 - resolution: "@inquirer/type@npm:2.0.0" - dependencies: - mute-stream: "npm:^1.0.0" - checksum: 10c0/8c663d52beb2b89a896d3c3d5cc3d6d024fa149e565555bcb42fa640cbe23fba7ff2c51445342cef1fe6e46305e2d16c1590fa1d11ad0ddf93a67b655ef41f0a +"@inquirer/type@npm:^3.0.0": + version: 3.0.0 + resolution: "@inquirer/type@npm:3.0.0" + peerDependencies: + "@types/node": ">=18" + checksum: 10c0/4c26595749782e3dfbfea0c7a19b1db603485e0fce4a9d4fe52be1c9c05fcb2cc3afbc849d03bddbde47896786df93d6f02657eeeae5dbc8cdc78cd8a4f80123 languageName: node linkType: hard @@ -299,7 +309,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/resolve-uri@npm:^3.0.3, @jridgewell/resolve-uri@npm:^3.1.0": +"@jridgewell/resolve-uri@npm:^3.1.0": version: 3.1.2 resolution: "@jridgewell/resolve-uri@npm:3.1.2" checksum: 10c0/d502e6fb516b35032331406d4e962c21fe77cdf1cbdb49c6142bcbd9e30507094b18972778a6e27cbad756209cfe34b1a27729e6fa08a2eb92b33943f680cf1e @@ -330,16 +340,6 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:0.3.9": - version: 0.3.9 - resolution: "@jridgewell/trace-mapping@npm:0.3.9" - dependencies: - "@jridgewell/resolve-uri": "npm:^3.0.3" - "@jridgewell/sourcemap-codec": "npm:^1.4.10" - checksum: 10c0/fa425b606d7c7ee5bfa6a31a7b050dd5814b4082f318e0e4190f991902181b4330f43f4805db1dd4f2433fd0ed9cc7a7b9c2683f1deeab1df1b0a98b1e24055b - languageName: node - linkType: hard - "@jridgewell/trace-mapping@npm:^0.3.20, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": version: 0.3.25 resolution: "@jridgewell/trace-mapping@npm:0.3.25" @@ -448,21 +448,21 @@ __metadata: languageName: node linkType: hard -"@napi-rs/cli@npm:^3.0.0-alpha.63": - version: 3.0.0-alpha.63 - resolution: "@napi-rs/cli@npm:3.0.0-alpha.63" +"@napi-rs/cli@npm:^3.0.0-alpha.64": + version: 3.0.0-alpha.64 + resolution: "@napi-rs/cli@npm:3.0.0-alpha.64" dependencies: - "@inquirer/prompts": "npm:^6.0.0" + "@inquirer/prompts": "npm:^7.0.0" "@napi-rs/cross-toolchain": "npm:^0.0.16" "@napi-rs/wasm-tools": "npm:^0.0.2" - "@octokit/rest": "npm:^21.0.0" + "@octokit/rest": "npm:^21.0.2" clipanion: "npm:^3.2.1" colorette: "npm:^2.0.20" - debug: "npm:^4.3.4" - emnapi: "npm:^1.2.0" + debug: "npm:^4.3.7" + emnapi: "npm:^1.3.1" js-yaml: "npm:^4.1.0" lodash-es: "npm:^4.17.21" - semver: "npm:^7.5.4" + semver: "npm:^7.6.3" toml: "npm:^3.0.0" typanion: "npm:^3.14.0" wasm-sjlj: "npm:^1.0.5" @@ -477,7 +477,7 @@ __metadata: bin: napi: ./dist/cli.js napi-raw: ./cli.mjs - checksum: 10c0/067eeebc753b6ce43d488045f18d0faa3a6a0fc9bac6d4d2020eff1f28d114b53cd200784aa68f603f8061b75266ee79bf717ae7dcc339f4c0821172a2d5888a + checksum: 10c0/e10e111380b1ba595460a0cffee89b20d40b08d7fb15ac28a4fa81cafed03a89a51e62276f0f6498686f9d235e15638e1088f0bfce8918d41eaa9c6b706d5c1a languageName: node linkType: hard @@ -1038,7 +1038,7 @@ __metadata: version: 0.0.0-use.local resolution: "@node-rs/argon2@workspace:packages/argon2" dependencies: - "@napi-rs/cli": "npm:^3.0.0-alpha.63" + "@napi-rs/cli": "npm:^3.0.0-alpha.64" argon2: "npm:^0.41.0" cross-env: "npm:^7.0.3" tinybench: "npm:^2.9.0" @@ -1051,7 +1051,7 @@ __metadata: dependencies: "@cwasm/openbsd-bcrypt": "npm:^0.1.0" "@cwasm/openwall-bcrypt": "npm:^0.1.0" - "@napi-rs/cli": "npm:^3.0.0-alpha.63" + "@napi-rs/cli": "npm:^3.0.0-alpha.64" "@types/bcrypt": "npm:^5.0.2" "@types/bcryptjs": "npm:^2.4.6" bcrypt: "npm:^5.1.1" @@ -1065,11 +1065,14 @@ __metadata: version: 0.0.0-use.local resolution: "@node-rs/crc32@workspace:packages/crc32" dependencies: - "@napi-rs/cli": "npm:^3.0.0-alpha.63" + "@napi-rs/cli": "npm:^3.0.0-alpha.64" "@types/crc": "npm:^3.8.3" + "@types/sse4_crc32": "npm:^7.0.3" buffer: "npm:^6.0.3" crc: "npm:^4.3.2" + cross-env: "npm:^7.0.3" sse4_crc32: "npm:^7.0.0" + tinybench: "npm:^2.9.0" languageName: unknown linkType: soft @@ -1085,7 +1088,7 @@ __metadata: version: 0.0.0-use.local resolution: "@node-rs/jieba@workspace:packages/jieba" dependencies: - "@napi-rs/cli": "npm:^3.0.0-alpha.63" + "@napi-rs/cli": "npm:^3.0.0-alpha.64" cross-env: "npm:^7.0.3" nodejieba: "npm:^3.0.0" tinybench: "npm:^2.9.0" @@ -1096,9 +1099,12 @@ __metadata: version: 0.0.0-use.local resolution: "@node-rs/jsonwebtoken@workspace:packages/jsonwebtoken" dependencies: - "@napi-rs/cli": "npm:^3.0.0-alpha.63" + "@napi-rs/cli": "npm:^3.0.0-alpha.64" + "@oxc-node/core": "npm:^0.0.15" "@types/jsonwebtoken": "npm:^9.0.6" + cross-env: "npm:^7.0.3" jsonwebtoken: "npm:^9.0.2" + tinybench: "npm:^2.9.0" languageName: unknown linkType: soft @@ -1106,8 +1112,11 @@ __metadata: version: 0.0.0-use.local resolution: "@node-rs/xxhash@workspace:packages/xxhash" dependencies: - "@napi-rs/cli": "npm:^3.0.0-alpha.63" + "@napi-rs/cli": "npm:^3.0.0-alpha.64" + "@oxc-node/core": "npm:^0.0.15" "@types/xxhashjs": "npm:^0.2.4" + cross-env: "npm:^7.0.3" + tinybench: "npm:^2.9.0" webpack: "npm:^5.92.1" xxhash: "npm:^0.3.0" xxhashjs: "npm:^0.2.2" @@ -1684,7 +1693,7 @@ __metadata: languageName: node linkType: hard -"@octokit/rest@npm:^21.0.0": +"@octokit/rest@npm:^21.0.2": version: 21.0.2 resolution: "@octokit/rest@npm:21.0.2" dependencies: @@ -1730,85 +1739,177 @@ __metadata: languageName: node linkType: hard -"@oxc-resolver/binding-darwin-arm64@npm:1.12.0": - version: 1.12.0 - resolution: "@oxc-resolver/binding-darwin-arm64@npm:1.12.0" +"@oxc-node/core-android-arm-eabi@npm:0.0.15": + version: 0.0.15 + resolution: "@oxc-node/core-android-arm-eabi@npm:0.0.15" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@oxc-node/core-android-arm64@npm:0.0.15": + version: 0.0.15 + resolution: "@oxc-node/core-android-arm64@npm:0.0.15" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@oxc-node/core-darwin-arm64@npm:0.0.15": + version: 0.0.15 + resolution: "@oxc-node/core-darwin-arm64@npm:0.0.15" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@oxc-resolver/binding-darwin-x64@npm:1.12.0": - version: 1.12.0 - resolution: "@oxc-resolver/binding-darwin-x64@npm:1.12.0" +"@oxc-node/core-darwin-x64@npm:0.0.15": + version: 0.0.15 + resolution: "@oxc-node/core-darwin-x64@npm:0.0.15" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@oxc-resolver/binding-freebsd-x64@npm:1.12.0": - version: 1.12.0 - resolution: "@oxc-resolver/binding-freebsd-x64@npm:1.12.0" +"@oxc-node/core-freebsd-x64@npm:0.0.15": + version: 0.0.15 + resolution: "@oxc-node/core-freebsd-x64@npm:0.0.15" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@oxc-resolver/binding-linux-arm-gnueabihf@npm:1.12.0": - version: 1.12.0 - resolution: "@oxc-resolver/binding-linux-arm-gnueabihf@npm:1.12.0" +"@oxc-node/core-linux-arm-gnueabihf@npm:0.0.15": + version: 0.0.15 + resolution: "@oxc-node/core-linux-arm-gnueabihf@npm:0.0.15" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@oxc-resolver/binding-linux-arm64-gnu@npm:1.12.0": - version: 1.12.0 - resolution: "@oxc-resolver/binding-linux-arm64-gnu@npm:1.12.0" +"@oxc-node/core-linux-arm64-gnu@npm:0.0.15": + version: 0.0.15 + resolution: "@oxc-node/core-linux-arm64-gnu@npm:0.0.15" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@oxc-resolver/binding-linux-arm64-musl@npm:1.12.0": - version: 1.12.0 - resolution: "@oxc-resolver/binding-linux-arm64-musl@npm:1.12.0" +"@oxc-node/core-linux-arm64-musl@npm:0.0.15": + version: 0.0.15 + resolution: "@oxc-node/core-linux-arm64-musl@npm:0.0.15" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@oxc-resolver/binding-linux-x64-gnu@npm:1.12.0": - version: 1.12.0 - resolution: "@oxc-resolver/binding-linux-x64-gnu@npm:1.12.0" +"@oxc-node/core-linux-ppc64-gnu@npm:0.0.15": + version: 0.0.15 + resolution: "@oxc-node/core-linux-ppc64-gnu@npm:0.0.15" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + +"@oxc-node/core-linux-s390x-gnu@npm:0.0.15": + version: 0.0.15 + resolution: "@oxc-node/core-linux-s390x-gnu@npm:0.0.15" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + +"@oxc-node/core-linux-x64-gnu@npm:0.0.15": + version: 0.0.15 + resolution: "@oxc-node/core-linux-x64-gnu@npm:0.0.15" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@oxc-resolver/binding-linux-x64-musl@npm:1.12.0": - version: 1.12.0 - resolution: "@oxc-resolver/binding-linux-x64-musl@npm:1.12.0" +"@oxc-node/core-linux-x64-musl@npm:0.0.15": + version: 0.0.15 + resolution: "@oxc-node/core-linux-x64-musl@npm:0.0.15" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@oxc-resolver/binding-wasm32-wasi@npm:1.12.0": - version: 1.12.0 - resolution: "@oxc-resolver/binding-wasm32-wasi@npm:1.12.0" +"@oxc-node/core-wasm32-wasi@npm:0.0.15": + version: 0.0.15 + resolution: "@oxc-node/core-wasm32-wasi@npm:0.0.15" dependencies: "@napi-rs/wasm-runtime": "npm:^0.2.4" conditions: cpu=wasm32 languageName: node linkType: hard -"@oxc-resolver/binding-win32-arm64-msvc@npm:1.12.0": - version: 1.12.0 - resolution: "@oxc-resolver/binding-win32-arm64-msvc@npm:1.12.0" +"@oxc-node/core-win32-arm64-msvc@npm:0.0.15": + version: 0.0.15 + resolution: "@oxc-node/core-win32-arm64-msvc@npm:0.0.15" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@oxc-resolver/binding-win32-x64-msvc@npm:1.12.0": - version: 1.12.0 - resolution: "@oxc-resolver/binding-win32-x64-msvc@npm:1.12.0" +"@oxc-node/core-win32-ia32-msvc@npm:0.0.15": + version: 0.0.15 + resolution: "@oxc-node/core-win32-ia32-msvc@npm:0.0.15" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@oxc-node/core-win32-x64-msvc@npm:0.0.15": + version: 0.0.15 + resolution: "@oxc-node/core-win32-x64-msvc@npm:0.0.15" conditions: os=win32 & cpu=x64 languageName: node linkType: hard +"@oxc-node/core@npm:^0.0.15": + version: 0.0.15 + resolution: "@oxc-node/core@npm:0.0.15" + dependencies: + "@oxc-node/core-android-arm-eabi": "npm:0.0.15" + "@oxc-node/core-android-arm64": "npm:0.0.15" + "@oxc-node/core-darwin-arm64": "npm:0.0.15" + "@oxc-node/core-darwin-x64": "npm:0.0.15" + "@oxc-node/core-freebsd-x64": "npm:0.0.15" + "@oxc-node/core-linux-arm-gnueabihf": "npm:0.0.15" + "@oxc-node/core-linux-arm64-gnu": "npm:0.0.15" + "@oxc-node/core-linux-arm64-musl": "npm:0.0.15" + "@oxc-node/core-linux-ppc64-gnu": "npm:0.0.15" + "@oxc-node/core-linux-s390x-gnu": "npm:0.0.15" + "@oxc-node/core-linux-x64-gnu": "npm:0.0.15" + "@oxc-node/core-linux-x64-musl": "npm:0.0.15" + "@oxc-node/core-wasm32-wasi": "npm:0.0.15" + "@oxc-node/core-win32-arm64-msvc": "npm:0.0.15" + "@oxc-node/core-win32-ia32-msvc": "npm:0.0.15" + "@oxc-node/core-win32-x64-msvc": "npm:0.0.15" + dependenciesMeta: + "@oxc-node/core-android-arm-eabi": + optional: true + "@oxc-node/core-android-arm64": + optional: true + "@oxc-node/core-darwin-arm64": + optional: true + "@oxc-node/core-darwin-x64": + optional: true + "@oxc-node/core-freebsd-x64": + optional: true + "@oxc-node/core-linux-arm-gnueabihf": + optional: true + "@oxc-node/core-linux-arm64-gnu": + optional: true + "@oxc-node/core-linux-arm64-musl": + optional: true + "@oxc-node/core-linux-ppc64-gnu": + optional: true + "@oxc-node/core-linux-s390x-gnu": + optional: true + "@oxc-node/core-linux-x64-gnu": + optional: true + "@oxc-node/core-linux-x64-musl": + optional: true + "@oxc-node/core-wasm32-wasi": + optional: true + "@oxc-node/core-win32-arm64-msvc": + optional: true + "@oxc-node/core-win32-ia32-msvc": + optional: true + "@oxc-node/core-win32-x64-msvc": + optional: true + checksum: 10c0/fb20408df1313ae85416a2ace96a20ef82fb9d8276193e343b59fa0d8875d8e94e7b12bf8c8cee510df3700775f05cdbefd13f63ebd83b6000aa77ce3654dac9 + languageName: node + linkType: hard + "@oxlint/darwin-arm64@npm:0.10.0": version: 0.10.0 resolution: "@oxlint/darwin-arm64@npm:0.10.0" @@ -1961,176 +2062,6 @@ __metadata: languageName: node linkType: hard -"@swc-node/core@npm:^1.13.3": - version: 1.13.3 - resolution: "@swc-node/core@npm:1.13.3" - peerDependencies: - "@swc/core": ">= 1.4.13" - "@swc/types": ">= 0.1" - checksum: 10c0/01f69d6124691569cedd2e6d0c6d3e33ab96d8fca6607780d64359c884750cfd77541e112e545cf37d9f0ee5fdccd57fbf9eb07cfd0ae26f8cca88c974e82e08 - languageName: node - linkType: hard - -"@swc-node/register@npm:^1.10.9": - version: 1.10.9 - resolution: "@swc-node/register@npm:1.10.9" - dependencies: - "@swc-node/core": "npm:^1.13.3" - "@swc-node/sourcemap-support": "npm:^0.5.1" - colorette: "npm:^2.0.20" - debug: "npm:^4.3.5" - oxc-resolver: "npm:^1.10.2" - pirates: "npm:^4.0.6" - tslib: "npm:^2.6.3" - peerDependencies: - "@swc/core": ">= 1.4.13" - typescript: ">= 4.3" - checksum: 10c0/54cc40b200cd9dda881c59bfe163bed3f8790cb93befe4d0ac4c130ab9836a31edc32da856d72ab45573aeb26bb36072aa3a1a9f68547cbb5d76cff1df814d41 - languageName: node - linkType: hard - -"@swc-node/sourcemap-support@npm:^0.5.1": - version: 0.5.1 - resolution: "@swc-node/sourcemap-support@npm:0.5.1" - dependencies: - source-map-support: "npm:^0.5.21" - tslib: "npm:^2.6.3" - checksum: 10c0/5ac7e701a0683e0e6760c8078d4bb2829daa78c4946dcc729c75588b87112afc7352f7c8cd90cea9417b5f7494418d374a354795344c4cf81152bce3d5a17853 - languageName: node - linkType: hard - -"@swc/core-darwin-arm64@npm:1.7.36": - version: 1.7.36 - resolution: "@swc/core-darwin-arm64@npm:1.7.36" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"@swc/core-darwin-x64@npm:1.7.36": - version: 1.7.36 - resolution: "@swc/core-darwin-x64@npm:1.7.36" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"@swc/core-linux-arm-gnueabihf@npm:1.7.36": - version: 1.7.36 - resolution: "@swc/core-linux-arm-gnueabihf@npm:1.7.36" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"@swc/core-linux-arm64-gnu@npm:1.7.36": - version: 1.7.36 - resolution: "@swc/core-linux-arm64-gnu@npm:1.7.36" - conditions: os=linux & cpu=arm64 & libc=glibc - languageName: node - linkType: hard - -"@swc/core-linux-arm64-musl@npm:1.7.36": - version: 1.7.36 - resolution: "@swc/core-linux-arm64-musl@npm:1.7.36" - conditions: os=linux & cpu=arm64 & libc=musl - languageName: node - linkType: hard - -"@swc/core-linux-x64-gnu@npm:1.7.36": - version: 1.7.36 - resolution: "@swc/core-linux-x64-gnu@npm:1.7.36" - conditions: os=linux & cpu=x64 & libc=glibc - languageName: node - linkType: hard - -"@swc/core-linux-x64-musl@npm:1.7.36": - version: 1.7.36 - resolution: "@swc/core-linux-x64-musl@npm:1.7.36" - conditions: os=linux & cpu=x64 & libc=musl - languageName: node - linkType: hard - -"@swc/core-win32-arm64-msvc@npm:1.7.36": - version: 1.7.36 - resolution: "@swc/core-win32-arm64-msvc@npm:1.7.36" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - -"@swc/core-win32-ia32-msvc@npm:1.7.36": - version: 1.7.36 - resolution: "@swc/core-win32-ia32-msvc@npm:1.7.36" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - -"@swc/core-win32-x64-msvc@npm:1.7.36": - version: 1.7.36 - resolution: "@swc/core-win32-x64-msvc@npm:1.7.36" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - -"@swc/core@npm:^1.7.26": - version: 1.7.36 - resolution: "@swc/core@npm:1.7.36" - dependencies: - "@swc/core-darwin-arm64": "npm:1.7.36" - "@swc/core-darwin-x64": "npm:1.7.36" - "@swc/core-linux-arm-gnueabihf": "npm:1.7.36" - "@swc/core-linux-arm64-gnu": "npm:1.7.36" - "@swc/core-linux-arm64-musl": "npm:1.7.36" - "@swc/core-linux-x64-gnu": "npm:1.7.36" - "@swc/core-linux-x64-musl": "npm:1.7.36" - "@swc/core-win32-arm64-msvc": "npm:1.7.36" - "@swc/core-win32-ia32-msvc": "npm:1.7.36" - "@swc/core-win32-x64-msvc": "npm:1.7.36" - "@swc/counter": "npm:^0.1.3" - "@swc/types": "npm:^0.1.13" - peerDependencies: - "@swc/helpers": "*" - dependenciesMeta: - "@swc/core-darwin-arm64": - optional: true - "@swc/core-darwin-x64": - optional: true - "@swc/core-linux-arm-gnueabihf": - optional: true - "@swc/core-linux-arm64-gnu": - optional: true - "@swc/core-linux-arm64-musl": - optional: true - "@swc/core-linux-x64-gnu": - optional: true - "@swc/core-linux-x64-musl": - optional: true - "@swc/core-win32-arm64-msvc": - optional: true - "@swc/core-win32-ia32-msvc": - optional: true - "@swc/core-win32-x64-msvc": - optional: true - peerDependenciesMeta: - "@swc/helpers": - optional: true - checksum: 10c0/8ab5382900a20dd2c37236fb09961a9407aa761a8fd5b4cd1c06bca564145d49f1375d819ead96b6cc0c6787bc8f8050eeb32e620ffbfed8734a2bc950368009 - languageName: node - linkType: hard - -"@swc/counter@npm:^0.1.3": - version: 0.1.3 - resolution: "@swc/counter@npm:0.1.3" - checksum: 10c0/8424f60f6bf8694cfd2a9bca45845bce29f26105cda8cf19cdb9fd3e78dc6338699e4db77a89ae449260bafa1cc6bec307e81e7fb96dbf7dcfce0eea55151356 - languageName: node - linkType: hard - -"@swc/types@npm:^0.1.13": - version: 0.1.13 - resolution: "@swc/types@npm:0.1.13" - dependencies: - "@swc/counter": "npm:^0.1.3" - checksum: 10c0/f85a850dead981ca9a26ae366529f2b383fa26324ffcbbee46d7b48399e6ed36d6a6a3d55398f17f87c65f550e28d642a35877d40f389c78765a31ecdfc88bd9 - languageName: node - linkType: hard - "@taplo/cli@npm:^0.7.0": version: 0.7.0 resolution: "@taplo/cli@npm:0.7.0" @@ -2140,13 +2071,6 @@ __metadata: languageName: node linkType: hard -"@tootallnate/once@npm:1": - version: 1.1.2 - resolution: "@tootallnate/once@npm:1.1.2" - checksum: 10c0/8fe4d006e90422883a4fa9339dd05a83ff626806262e1710cee5758d493e8cbddf2db81c0e4690636dc840b02c9fda62877866ea774ebd07c1777ed5fafbdec6 - languageName: node - linkType: hard - "@tootallnate/once@npm:2": version: 2.0.0 resolution: "@tootallnate/once@npm:2.0.0" @@ -2154,34 +2078,6 @@ __metadata: languageName: node linkType: hard -"@tsconfig/node10@npm:^1.0.7": - version: 1.0.11 - resolution: "@tsconfig/node10@npm:1.0.11" - checksum: 10c0/28a0710e5d039e0de484bdf85fee883bfd3f6a8980601f4d44066b0a6bcd821d31c4e231d1117731c4e24268bd4cf2a788a6787c12fc7f8d11014c07d582783c - languageName: node - linkType: hard - -"@tsconfig/node12@npm:^1.0.7": - version: 1.0.11 - resolution: "@tsconfig/node12@npm:1.0.11" - checksum: 10c0/dddca2b553e2bee1308a056705103fc8304e42bb2d2cbd797b84403a223b25c78f2c683ec3e24a095e82cd435387c877239bffcb15a590ba817cd3f6b9a99fd9 - languageName: node - linkType: hard - -"@tsconfig/node14@npm:^1.0.0": - version: 1.0.3 - resolution: "@tsconfig/node14@npm:1.0.3" - checksum: 10c0/67c1316d065fdaa32525bc9449ff82c197c4c19092b9663b23213c8cbbf8d88b6ed6a17898e0cbc2711950fbfaf40388938c1c748a2ee89f7234fc9e7fe2bf44 - languageName: node - linkType: hard - -"@tsconfig/node16@npm:^1.0.2": - version: 1.0.4 - resolution: "@tsconfig/node16@npm:1.0.4" - checksum: 10c0/05f8f2734e266fb1839eb1d57290df1664fe2aa3b0fdd685a9035806daa635f7519bf6d5d9b33f6e69dd545b8c46bd6e2b5c79acb2b1f146e885f7f11a42a5bb - languageName: node - linkType: hard - "@tufjs/canonical-json@npm:2.0.0": version: 2.0.0 resolution: "@tufjs/canonical-json@npm:2.0.0" @@ -2270,16 +2166,7 @@ __metadata: languageName: node linkType: hard -"@types/mute-stream@npm:^0.0.4": - version: 0.0.4 - resolution: "@types/mute-stream@npm:0.0.4" - dependencies: - "@types/node": "npm:*" - checksum: 10c0/944730fd7b398c5078de3c3d4d0afeec8584283bc694da1803fdfca14149ea385e18b1b774326f1601baf53898ce6d121a952c51eb62d188ef6fcc41f725c0dc - languageName: node - linkType: hard - -"@types/node@npm:*, @types/node@npm:^22.5.5, @types/node@npm:^22.7.4": +"@types/node@npm:*, @types/node@npm:^22.7.4": version: 22.7.7 resolution: "@types/node@npm:22.7.7" dependencies: @@ -2295,10 +2182,12 @@ __metadata: languageName: node linkType: hard -"@types/wrap-ansi@npm:^3.0.0": - version: 3.0.0 - resolution: "@types/wrap-ansi@npm:3.0.0" - checksum: 10c0/8d8f53363f360f38135301a06b596c295433ad01debd082078c33c6ed98b05a5c8fe8853a88265432126096084f4a135ec1564e3daad631b83296905509f90b3 +"@types/sse4_crc32@npm:^7.0.3": + version: 7.0.3 + resolution: "@types/sse4_crc32@npm:7.0.3" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/c417b8e59eafd7b598cb31282c57ae48c2d044e98c286885249a5cab16a8f270d09dbbc8351ea5a356045108d051160c1663c06b3759047226e0616c13339806 languageName: node linkType: hard @@ -2561,7 +2450,7 @@ __metadata: languageName: node linkType: hard -"acorn-walk@npm:^8.1.1, acorn-walk@npm:^8.3.2": +"acorn-walk@npm:^8.3.2": version: 8.3.4 resolution: "acorn-walk@npm:8.3.4" dependencies: @@ -2579,7 +2468,7 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.4.1, acorn@npm:^8.7.1, acorn@npm:^8.8.2": +"acorn@npm:^8.7.1, acorn@npm:^8.8.2": version: 8.10.0 resolution: "acorn@npm:8.10.0" bin: @@ -2753,13 +2642,6 @@ __metadata: languageName: node linkType: hard -"arg@npm:^4.1.0": - version: 4.1.3 - resolution: "arg@npm:4.1.3" - checksum: 10c0/070ff801a9d236a6caa647507bdcc7034530604844d64408149a26b9e87c2f97650055c0f049abd1efc024b334635c01f29e0b632b371ac3f26130f4cf65997a - languageName: node - linkType: hard - "argon2@npm:^0.41.0": version: 0.41.1 resolution: "argon2@npm:0.41.1" @@ -2788,13 +2670,6 @@ __metadata: languageName: node linkType: hard -"argv@npm:0.0.2": - version: 0.0.2 - resolution: "argv@npm:0.0.2" - checksum: 10c0/13b7a94bf690b8cf04dcaac0c70b631df10de8a1eeb701f31c85abe46a60db449c1e3330e92ef00ffe2a709a5b35baf815e52cc4b8cbe495829c90ceb3e3e30f - languageName: node - linkType: hard - "array-differ@npm:^3.0.0": version: 3.0.0 resolution: "array-differ@npm:3.0.0" @@ -2983,16 +2858,6 @@ __metadata: languageName: node linkType: hard -"benchmark@npm:^2.1.4": - version: 2.1.4 - resolution: "benchmark@npm:2.1.4" - dependencies: - lodash: "npm:^4.17.4" - platform: "npm:^1.3.3" - checksum: 10c0/510224c01f7578e9aa60cef67ec3dd8f84ac6670007bcc96285f87865375122aca0853ab4e542cc80cfeeed436356dfdd63bb66cb5e72365abb912685b2139be - languageName: node - linkType: hard - "bin-links@npm:^4.0.4": version: 4.0.4 resolution: "bin-links@npm:4.0.4" @@ -3420,21 +3285,6 @@ __metadata: languageName: node linkType: hard -"codecov@npm:^3.8.3": - version: 3.8.3 - resolution: "codecov@npm:3.8.3" - dependencies: - argv: "npm:0.0.2" - ignore-walk: "npm:3.0.4" - js-yaml: "npm:3.14.1" - teeny-request: "npm:7.1.1" - urlgrey: "npm:1.0.0" - bin: - codecov: bin/codecov - checksum: 10c0/bf51f421eb91cc6b1f88ad418620516adf187712555967cf23ca5bc734f2ab73743006ee5b2ec45bdc5b5b4db0d67656a5bb4c959fe9df89b009823bd611f789 - languageName: node - linkType: hard - "color-convert@npm:^1.9.0": version: 1.9.3 resolution: "color-convert@npm:1.9.3" @@ -3718,13 +3568,6 @@ __metadata: languageName: node linkType: hard -"create-require@npm:^1.1.0": - version: 1.1.1 - resolution: "create-require@npm:1.1.1" - checksum: 10c0/157cbc59b2430ae9a90034a5f3a1b398b6738bf510f713edc4d4e45e169bc514d3d99dd34d8d01ca7ae7830b5b8b537e46ae8f3c8f932371b0875c0151d7ec91 - languageName: node - linkType: hard - "cross-env@npm:^7.0.3": version: 7.0.3 resolution: "cross-env@npm:7.0.3" @@ -3796,7 +3639,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.3.4, debug@npm:^4.3.5, debug@npm:~4.3.6": +"debug@npm:4, debug@npm:^4.3.4, debug@npm:^4.3.7, debug@npm:~4.3.6": version: 4.3.7 resolution: "debug@npm:4.3.7" dependencies: @@ -3914,13 +3757,6 @@ __metadata: languageName: node linkType: hard -"diff@npm:^4.0.1": - version: 4.0.2 - resolution: "diff@npm:4.0.2" - checksum: 10c0/81b91f9d39c4eaca068eb0c1eb0e4afbdc5bb2941d197f513dd596b820b956fef43485876226d65d497bebc15666aa2aa82c679e84f65d5f2bfbf14ee46e32c1 - languageName: node - linkType: hard - "dir-glob@npm:^3.0.1": version: 3.0.1 resolution: "dir-glob@npm:3.0.1" @@ -4003,7 +3839,7 @@ __metadata: languageName: node linkType: hard -"emnapi@npm:^1.2.0": +"emnapi@npm:^1.3.1": version: 1.3.1 resolution: "emnapi@npm:1.3.1" peerDependencies: @@ -4311,15 +4147,6 @@ __metadata: languageName: node linkType: hard -"fast-url-parser@npm:^1.1.3": - version: 1.1.3 - resolution: "fast-url-parser@npm:1.1.3" - dependencies: - punycode: "npm:^1.3.2" - checksum: 10c0/d85c5c409cf0215417380f98a2d29c23a95004d93ff0d8bdf1af5f1a9d1fc608ac89ac6ffe863783d2c73efb3850dd35390feb1de3296f49877bfee0392eb5d3 - languageName: node - linkType: hard - "fastq@npm:^1.6.0": version: 1.17.1 resolution: "fastq@npm:1.17.1" @@ -4854,17 +4681,6 @@ __metadata: languageName: node linkType: hard -"http-proxy-agent@npm:^4.0.0": - version: 4.0.1 - resolution: "http-proxy-agent@npm:4.0.1" - dependencies: - "@tootallnate/once": "npm:1" - agent-base: "npm:6" - debug: "npm:4" - checksum: 10c0/4fa4774d65b5331814b74ac05cefea56854fc0d5989c80b13432c1b0d42a14c9f4342ca3ad9f0359a52e78da12b1744c9f8a28e50042136ea9171675d972a5fd - languageName: node - linkType: hard - "http-proxy-agent@npm:^5.0.0": version: 5.0.0 resolution: "http-proxy-agent@npm:5.0.0" @@ -4970,15 +4786,6 @@ __metadata: languageName: node linkType: hard -"ignore-walk@npm:3.0.4": - version: 3.0.4 - resolution: "ignore-walk@npm:3.0.4" - dependencies: - minimatch: "npm:^3.0.4" - checksum: 10c0/690372b433887796fa3badd25babab7daf60a1882259dcc130ec78eea79745c2416322e10d1a96b367071204471c532647d20b11cd7ab70bd9b49879e461f956 - languageName: node - linkType: hard - "ignore-walk@npm:^6.0.4": version: 6.0.5 resolution: "ignore-walk@npm:6.0.5" @@ -5434,26 +5241,26 @@ __metadata: languageName: node linkType: hard -"js-yaml@npm:3.14.1, js-yaml@npm:^3.10.0, js-yaml@npm:^3.13.1, js-yaml@npm:^3.14.1": - version: 3.14.1 - resolution: "js-yaml@npm:3.14.1" +"js-yaml@npm:4.1.0, js-yaml@npm:^4.1.0": + version: 4.1.0 + resolution: "js-yaml@npm:4.1.0" dependencies: - argparse: "npm:^1.0.7" - esprima: "npm:^4.0.0" + argparse: "npm:^2.0.1" bin: js-yaml: bin/js-yaml.js - checksum: 10c0/6746baaaeac312c4db8e75fa22331d9a04cccb7792d126ed8ce6a0bbcfef0cedaddd0c5098fade53db067c09fe00aa1c957674b4765610a8b06a5a189e46433b + checksum: 10c0/184a24b4eaacfce40ad9074c64fd42ac83cf74d8c8cd137718d456ced75051229e5061b8633c3366b8aada17945a7a356b337828c19da92b51ae62126575018f languageName: node linkType: hard -"js-yaml@npm:4.1.0, js-yaml@npm:^4.1.0": - version: 4.1.0 - resolution: "js-yaml@npm:4.1.0" +"js-yaml@npm:^3.10.0, js-yaml@npm:^3.13.1, js-yaml@npm:^3.14.1": + version: 3.14.1 + resolution: "js-yaml@npm:3.14.1" dependencies: - argparse: "npm:^2.0.1" + argparse: "npm:^1.0.7" + esprima: "npm:^4.0.0" bin: js-yaml: bin/js-yaml.js - checksum: 10c0/184a24b4eaacfce40ad9074c64fd42ac83cf74d8c8cd137718d456ced75051229e5061b8633c3366b8aada17945a7a356b337828c19da92b51ae62126575018f + checksum: 10c0/6746baaaeac312c4db8e75fa22331d9a04cccb7792d126ed8ce6a0bbcfef0cedaddd0c5098fade53db067c09fe00aa1c957674b4765610a8b06a5a189e46433b languageName: node linkType: hard @@ -5901,7 +5708,7 @@ __metadata: languageName: node linkType: hard -"lodash@npm:^4.17.15, lodash@npm:^4.17.21, lodash@npm:^4.17.4": +"lodash@npm:^4.17.15, lodash@npm:^4.17.21": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: 10c0/d8cbea072bb08655bb4c989da418994b073a608dffa608b09ac04b43a791b12aeae7cd7ad919aa4c925f33b48490b5cfe6c1f71d827956071dae2e7bb3a6b74c @@ -5982,13 +5789,6 @@ __metadata: languageName: node linkType: hard -"make-error@npm:^1.1.1": - version: 1.3.6 - resolution: "make-error@npm:1.3.6" - checksum: 10c0/171e458d86854c6b3fc46610cfacf0b45149ba043782558c6875d9f42f222124384ad0b468c92e996d815a8a2003817a710c0a160e49c1c394626f76fa45396f - languageName: node - linkType: hard - "make-fetch-happen@npm:^11.0.3": version: 11.1.1 resolution: "make-fetch-happen@npm:11.1.1" @@ -6405,6 +6205,13 @@ __metadata: languageName: node linkType: hard +"mute-stream@npm:^2.0.0": + version: 2.0.0 + resolution: "mute-stream@npm:2.0.0" + checksum: 10c0/2cf48a2087175c60c8dcdbc619908b49c07f7adcfc37d29236b0c5c612d6204f789104c98cc44d38acab7b3c96f4a3ec2cfdc4934d0738d876dbefa2a12c69f4 + languageName: node + linkType: hard + "nan@npm:^2.13.2": version: 2.22.0 resolution: "nan@npm:2.22.0" @@ -6478,7 +6285,7 @@ __metadata: languageName: node linkType: hard -"node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.7": +"node-fetch@npm:^2.6.7": version: 2.7.0 resolution: "node-fetch@npm:2.7.0" dependencies: @@ -6562,17 +6369,12 @@ __metadata: version: 0.0.0-use.local resolution: "node-rs@workspace:." dependencies: - "@napi-rs/cli": "npm:^3.0.0-alpha.63" + "@napi-rs/cli": "npm:^3.0.0-alpha.64" "@napi-rs/wasm-runtime": "npm:^0.2.5" - "@swc-node/core": "npm:^1.13.3" - "@swc-node/register": "npm:^1.10.9" - "@swc/core": "npm:^1.7.26" "@taplo/cli": "npm:^0.7.0" "@tybys/wasm-util": "npm:^0.9.0" "@types/node": "npm:^22.7.4" ava: "npm:^6.1.3" - benchmark: "npm:^2.1.4" - codecov: "npm:^3.8.3" cross-env: "npm:^7.0.3" husky: "npm:^9.1.6" lerna: "npm:^8.1.8" @@ -6580,7 +6382,6 @@ __metadata: npm-run-all2: "npm:^7.0.0" oxlint: "npm:^0.10.0" prettier: "npm:^3.3.3" - ts-node: "npm:^10.9.2" tslib: "npm:^2.7.0" typescript: "npm:^5.6.2" languageName: unknown @@ -7005,48 +6806,6 @@ __metadata: languageName: node linkType: hard -"oxc-resolver@npm:^1.10.2": - version: 1.12.0 - resolution: "oxc-resolver@npm:1.12.0" - dependencies: - "@oxc-resolver/binding-darwin-arm64": "npm:1.12.0" - "@oxc-resolver/binding-darwin-x64": "npm:1.12.0" - "@oxc-resolver/binding-freebsd-x64": "npm:1.12.0" - "@oxc-resolver/binding-linux-arm-gnueabihf": "npm:1.12.0" - "@oxc-resolver/binding-linux-arm64-gnu": "npm:1.12.0" - "@oxc-resolver/binding-linux-arm64-musl": "npm:1.12.0" - "@oxc-resolver/binding-linux-x64-gnu": "npm:1.12.0" - "@oxc-resolver/binding-linux-x64-musl": "npm:1.12.0" - "@oxc-resolver/binding-wasm32-wasi": "npm:1.12.0" - "@oxc-resolver/binding-win32-arm64-msvc": "npm:1.12.0" - "@oxc-resolver/binding-win32-x64-msvc": "npm:1.12.0" - dependenciesMeta: - "@oxc-resolver/binding-darwin-arm64": - optional: true - "@oxc-resolver/binding-darwin-x64": - optional: true - "@oxc-resolver/binding-freebsd-x64": - optional: true - "@oxc-resolver/binding-linux-arm-gnueabihf": - optional: true - "@oxc-resolver/binding-linux-arm64-gnu": - optional: true - "@oxc-resolver/binding-linux-arm64-musl": - optional: true - "@oxc-resolver/binding-linux-x64-gnu": - optional: true - "@oxc-resolver/binding-linux-x64-musl": - optional: true - "@oxc-resolver/binding-wasm32-wasi": - optional: true - "@oxc-resolver/binding-win32-arm64-msvc": - optional: true - "@oxc-resolver/binding-win32-x64-msvc": - optional: true - checksum: 10c0/61c0b9c2f02ee91fe73e49f6d84b3e373d48aba5e86c25503369f5285d6d2d1be54b0f2026ce5d2f18acc5989f9232fa44371e7855baeb3bffbd9c0b93777dac - languageName: node - linkType: hard - "oxlint@npm:^0.10.0": version: 0.10.0 resolution: "oxlint@npm:0.10.0" @@ -7449,13 +7208,6 @@ __metadata: languageName: node linkType: hard -"pirates@npm:^4.0.6": - version: 4.0.6 - resolution: "pirates@npm:4.0.6" - checksum: 10c0/00d5fa51f8dded94d7429700fb91a0c1ead00ae2c7fd27089f0c5b63e6eca36197fe46384631872690a66f390c5e27198e99006ab77ae472692ab9c2ca903f36 - languageName: node - linkType: hard - "pkg-dir@npm:^4.2.0": version: 4.2.0 resolution: "pkg-dir@npm:4.2.0" @@ -7465,13 +7217,6 @@ __metadata: languageName: node linkType: hard -"platform@npm:^1.3.3": - version: 1.3.6 - resolution: "platform@npm:1.3.6" - checksum: 10c0/69f2eb692e15f1a343dd0d9347babd9ca933824c8673096be746ff66f99f2bdc909fadd8609076132e6ec768349080babb7362299f2a7f885b98f1254ae6224b - languageName: node - linkType: hard - "plur@npm:^5.1.0": version: 5.1.0 resolution: "plur@npm:5.1.0" @@ -7595,13 +7340,6 @@ __metadata: languageName: node linkType: hard -"punycode@npm:^1.3.2": - version: 1.4.1 - resolution: "punycode@npm:1.4.1" - checksum: 10c0/354b743320518aef36f77013be6e15da4db24c2b4f62c5f1eb0529a6ed02fbaf1cb52925785f6ab85a962f2b590d9cd5ad730b70da72b5f180e2556b8bd3ca08 - languageName: node - linkType: hard - "punycode@npm:^2.1.0": version: 2.3.1 resolution: "punycode@npm:2.3.1" @@ -7960,7 +7698,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.5.3": +"semver@npm:^7.5.3, semver@npm:^7.6.3": version: 7.6.3 resolution: "semver@npm:7.6.3" bin: @@ -8146,7 +7884,7 @@ __metadata: languageName: node linkType: hard -"source-map-support@npm:^0.5.21, source-map-support@npm:~0.5.20": +"source-map-support@npm:~0.5.20": version: 0.5.21 resolution: "source-map-support@npm:0.5.21" dependencies: @@ -8258,15 +7996,6 @@ __metadata: languageName: node linkType: hard -"stream-events@npm:^1.0.5": - version: 1.0.5 - resolution: "stream-events@npm:1.0.5" - dependencies: - stubs: "npm:^3.0.0" - checksum: 10c0/5d235a5799a483e94ea8829526fe9d95d76460032d5e78555fe4f801949ac6a27ea2212e4e0827c55f78726b3242701768adf2d33789465f51b31ed8ebd6b086 - languageName: node - linkType: hard - "string-argv@npm:~0.3.2": version: 0.3.2 resolution: "string-argv@npm:0.3.2" @@ -8393,13 +8122,6 @@ __metadata: languageName: node linkType: hard -"stubs@npm:^3.0.0": - version: 3.0.0 - resolution: "stubs@npm:3.0.0" - checksum: 10c0/841a4ab8c76795d34aefe129185763b55fbf2e4693208215627caea4dd62e1299423dcd96f708d3128e3dfa0e669bae2cb912e6e906d7d81eaf6493196570923 - languageName: node - linkType: hard - "supertap@npm:^3.0.1": version: 3.0.1 resolution: "supertap@npm:3.0.1" @@ -8480,19 +8202,6 @@ __metadata: languageName: node linkType: hard -"teeny-request@npm:7.1.1": - version: 7.1.1 - resolution: "teeny-request@npm:7.1.1" - dependencies: - http-proxy-agent: "npm:^4.0.0" - https-proxy-agent: "npm:^5.0.0" - node-fetch: "npm:^2.6.1" - stream-events: "npm:^1.0.5" - uuid: "npm:^8.0.0" - checksum: 10c0/edbcd2f90429b66574d38ba8ffc5fe530659b7693c5f95ea5e6cea70bf4c640ca36c7100e24931a4b16b35488173ed172d7679877464613ad1c50ce38ed5b2a2 - languageName: node - linkType: hard - "temp-dir@npm:1.0.0": version: 1.0.0 resolution: "temp-dir@npm:1.0.0" @@ -8634,44 +8343,6 @@ __metadata: languageName: node linkType: hard -"ts-node@npm:^10.9.2": - version: 10.9.2 - resolution: "ts-node@npm:10.9.2" - dependencies: - "@cspotcode/source-map-support": "npm:^0.8.0" - "@tsconfig/node10": "npm:^1.0.7" - "@tsconfig/node12": "npm:^1.0.7" - "@tsconfig/node14": "npm:^1.0.0" - "@tsconfig/node16": "npm:^1.0.2" - acorn: "npm:^8.4.1" - acorn-walk: "npm:^8.1.1" - arg: "npm:^4.1.0" - create-require: "npm:^1.1.0" - diff: "npm:^4.0.1" - make-error: "npm:^1.1.1" - v8-compile-cache-lib: "npm:^3.0.1" - yn: "npm:3.1.1" - peerDependencies: - "@swc/core": ">=1.2.50" - "@swc/wasm": ">=1.2.50" - "@types/node": "*" - typescript: ">=2.7" - peerDependenciesMeta: - "@swc/core": - optional: true - "@swc/wasm": - optional: true - bin: - ts-node: dist/bin.js - ts-node-cwd: dist/bin-cwd.js - ts-node-esm: dist/bin-esm.js - ts-node-script: dist/bin-script.js - ts-node-transpile-only: dist/bin-transpile.js - ts-script: dist/bin-script-deprecated.js - checksum: 10c0/5f29938489f96982a25ba650b64218e83a3357d76f7bede80195c65ab44ad279c8357264639b7abdd5d7e75fc269a83daa0e9c62fd8637a3def67254ecc9ddc2 - languageName: node - linkType: hard - "tsconfig-paths@npm:^4.1.2": version: 4.2.0 resolution: "tsconfig-paths@npm:4.2.0" @@ -8683,7 +8354,7 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^2.1.0, tslib@npm:^2.3.0, tslib@npm:^2.4.0, tslib@npm:^2.6.3, tslib@npm:^2.7.0": +"tslib@npm:^2.1.0, tslib@npm:^2.3.0, tslib@npm:^2.4.0, tslib@npm:^2.7.0": version: 2.8.0 resolution: "tslib@npm:2.8.0" checksum: 10c0/31e4d14dc1355e9b89e4d3c893a18abb7f90b6886b089c2da91224d0a7752c79f3ddc41bc1aa0a588ac895bd97bb99c5bc2bfdb2f86de849f31caeb3ba79bbe5 @@ -8869,15 +8540,6 @@ __metadata: languageName: node linkType: hard -"urlgrey@npm:1.0.0": - version: 1.0.0 - resolution: "urlgrey@npm:1.0.0" - dependencies: - fast-url-parser: "npm:^1.1.3" - checksum: 10c0/6fe2bfa0510fa395d489a73841f8c7e8eeb78331589a12f05b1e8f22d235d6999524579f17458f2b7856efd39f4b8347ef446acbf35c08d8b548d6d95f3b842f - languageName: node - linkType: hard - "util-deprecate@npm:^1.0.1, util-deprecate@npm:^1.0.2, util-deprecate@npm:~1.0.1": version: 1.0.2 resolution: "util-deprecate@npm:1.0.2" @@ -8894,22 +8556,6 @@ __metadata: languageName: node linkType: hard -"uuid@npm:^8.0.0": - version: 8.3.2 - resolution: "uuid@npm:8.3.2" - bin: - uuid: dist/bin/uuid - checksum: 10c0/bcbb807a917d374a49f475fae2e87fdca7da5e5530820ef53f65ba1d12131bd81a92ecf259cc7ce317cbe0f289e7d79fdfebcef9bfa3087c8c8a2fa304c9be54 - languageName: node - linkType: hard - -"v8-compile-cache-lib@npm:^3.0.1": - version: 3.0.1 - resolution: "v8-compile-cache-lib@npm:3.0.1" - checksum: 10c0/bdc36fb8095d3b41df197f5fb6f11e3a26adf4059df3213e3baa93810d8f0cc76f9a74aaefc18b73e91fe7e19154ed6f134eda6fded2e0f1c8d2272ed2d2d391 - languageName: node - linkType: hard - "validate-npm-package-license@npm:3.0.4, validate-npm-package-license@npm:^3.0.1, validate-npm-package-license@npm:^3.0.4": version: 3.0.4 resolution: "validate-npm-package-license@npm:3.0.4" @@ -9268,13 +8914,6 @@ __metadata: languageName: node linkType: hard -"yn@npm:3.1.1": - version: 3.1.1 - resolution: "yn@npm:3.1.1" - checksum: 10c0/0732468dd7622ed8a274f640f191f3eaf1f39d5349a1b72836df484998d7d9807fbea094e2f5486d6b0cd2414aad5775972df0e68f8604db89a239f0f4bf7443 - languageName: node - linkType: hard - "yoctocolors-cjs@npm:^2.1.2": version: 2.1.2 resolution: "yoctocolors-cjs@npm:2.1.2"