From e0d82201176493d168d85354f013ef2eed466033 Mon Sep 17 00:00:00 2001 From: LongYinan Date: Mon, 22 Nov 2021 10:00:29 +0800 Subject: [PATCH] feat: upgrade napi-rs to v2 --- .eslintrc.yml | 8 - .github/workflows/ci.yaml | 39 +- package.json | 52 +- packages/bcrypt/Cargo.toml | 6 +- packages/bcrypt/index.d.ts | 47 +- packages/bcrypt/index.js | 231 ++- .../bcrypt/npm/android-arm-eabi/README.md | 3 + .../bcrypt/npm/android-arm-eabi/package.json | 43 + .../bcrypt/npm/android-arm64/package.json | 24 +- packages/bcrypt/npm/darwin-arm64/package.json | 24 +- packages/bcrypt/npm/darwin-x64/package.json | 24 +- packages/bcrypt/npm/freebsd-x64/package.json | 24 +- .../npm/linux-arm-gnueabihf/package.json | 24 +- .../bcrypt/npm/linux-arm64-gnu/package.json | 24 +- .../bcrypt/npm/linux-arm64-musl/package.json | 24 +- .../bcrypt/npm/linux-x64-gnu/package.json | 24 +- .../bcrypt/npm/linux-x64-musl/package.json | 24 +- .../bcrypt/npm/win32-arm64-msvc/package.json | 24 +- .../bcrypt/npm/win32-ia32-msvc/package.json | 24 +- .../bcrypt/npm/win32-x64-msvc/package.json | 24 +- packages/bcrypt/package.json | 27 +- packages/bcrypt/src/hash_task.rs | 54 +- packages/bcrypt/src/lib.rs | 114 +- packages/bcrypt/src/lib_bcrypt.rs | 5 +- packages/bcrypt/src/salt_task.rs | 10 +- packages/bcrypt/src/verify_task.rs | 38 +- packages/crc32/Cargo.toml | 4 +- packages/crc32/index.d.ts | 22 +- packages/crc32/index.js | 210 ++- packages/crc32/npm/android-arm-eabi/README.md | 3 + .../crc32/npm/android-arm-eabi/package.json | 40 + packages/crc32/npm/android-arm64/package.json | 21 +- packages/crc32/npm/darwin-arm64/package.json | 21 +- packages/crc32/npm/darwin-x64/package.json | 21 +- packages/crc32/npm/freebsd-x64/package.json | 21 +- .../npm/linux-arm-gnueabihf/package.json | 21 +- .../crc32/npm/linux-arm64-gnu/package.json | 21 +- .../crc32/npm/linux-arm64-musl/package.json | 21 +- packages/crc32/npm/linux-x64-gnu/package.json | 21 +- .../crc32/npm/linux-x64-musl/package.json | 21 +- .../crc32/npm/win32-arm64-msvc/package.json | 21 +- .../crc32/npm/win32-ia32-msvc/package.json | 21 +- .../crc32/npm/win32-x64-msvc/package.json | 21 +- packages/crc32/package.json | 23 +- packages/crc32/src/lib.rs | 40 +- packages/deno-lint/Cargo.toml | 8 +- packages/deno-lint/index.d.ts | 16 +- packages/deno-lint/index.js | 203 +- .../deno-lint/npm/android-arm-eabi/README.md | 3 + .../npm/android-arm-eabi/package.json | 42 + .../deno-lint/npm/android-arm64/package.json | 23 +- .../deno-lint/npm/darwin-arm64/package.json | 23 +- .../deno-lint/npm/darwin-x64/package.json | 23 +- .../deno-lint/npm/freebsd-x64/package.json | 23 +- .../npm/linux-arm-gnueabihf/package.json | 23 +- .../npm/linux-arm64-gnu/package.json | 23 +- .../npm/linux-arm64-musl/package.json | 23 +- .../deno-lint/npm/linux-x64-gnu/package.json | 23 +- .../deno-lint/npm/linux-x64-musl/package.json | 23 +- .../npm/win32-arm64-msvc/package.json | 23 +- .../npm/win32-ia32-msvc/package.json | 23 +- .../deno-lint/npm/win32-x64-msvc/package.json | 23 +- packages/deno-lint/package.json | 26 +- packages/deno-lint/src/lib.rs | 90 +- packages/helper/package.json | 12 +- packages/jieba/Cargo.toml | 4 +- packages/jieba/index.d.ts | 26 +- packages/jieba/index.js | 227 ++- packages/jieba/npm/android-arm-eabi/README.md | 3 + .../jieba/npm/android-arm-eabi/package.json | 40 + packages/jieba/npm/android-arm64/package.json | 21 +- packages/jieba/npm/darwin-arm64/package.json | 21 +- packages/jieba/npm/darwin-x64/package.json | 21 +- packages/jieba/npm/freebsd-x64/package.json | 21 +- .../npm/linux-arm-gnueabihf/package.json | 21 +- .../jieba/npm/linux-arm64-gnu/package.json | 21 +- .../jieba/npm/linux-arm64-musl/package.json | 21 +- packages/jieba/npm/linux-x64-gnu/package.json | 21 +- .../jieba/npm/linux-x64-musl/package.json | 21 +- .../jieba/npm/win32-arm64-msvc/package.json | 21 +- .../jieba/npm/win32-ia32-msvc/package.json | 21 +- .../jieba/npm/win32-x64-msvc/package.json | 21 +- packages/jieba/package.json | 23 +- packages/jieba/src/lib.rs | 210 ++- packages/xxhash/Cargo.toml | 4 +- packages/xxhash/index.d.ts | 61 +- packages/xxhash/index.js | 249 ++- .../xxhash/npm/android-arm-eabi/README.md | 3 + .../xxhash/npm/android-arm-eabi/package.json | 43 + .../xxhash/npm/android-arm64/package.json | 24 +- packages/xxhash/npm/darwin-arm64/package.json | 24 +- packages/xxhash/npm/darwin-x64/package.json | 24 +- packages/xxhash/npm/freebsd-x64/package.json | 24 +- .../npm/linux-arm-gnueabihf/package.json | 24 +- .../xxhash/npm/linux-arm64-gnu/package.json | 24 +- .../xxhash/npm/linux-arm64-musl/package.json | 24 +- .../xxhash/npm/linux-x64-gnu/package.json | 24 +- .../xxhash/npm/linux-x64-musl/package.json | 24 +- .../xxhash/npm/win32-arm64-msvc/package.json | 24 +- .../xxhash/npm/win32-ia32-msvc/package.json | 24 +- .../xxhash/npm/win32-x64-msvc/package.json | 24 +- packages/xxhash/package.json | 25 +- packages/xxhash/src/lib.rs | 421 ++--- rust-toolchain | 2 +- scripts/packages.js | 8 - yarn.lock | 1633 ++++++++--------- 106 files changed, 3821 insertions(+), 1936 deletions(-) create mode 100644 packages/bcrypt/npm/android-arm-eabi/README.md create mode 100644 packages/bcrypt/npm/android-arm-eabi/package.json create mode 100644 packages/crc32/npm/android-arm-eabi/README.md create mode 100644 packages/crc32/npm/android-arm-eabi/package.json create mode 100644 packages/deno-lint/npm/android-arm-eabi/README.md create mode 100644 packages/deno-lint/npm/android-arm-eabi/package.json create mode 100644 packages/jieba/npm/android-arm-eabi/README.md create mode 100644 packages/jieba/npm/android-arm-eabi/package.json create mode 100644 packages/xxhash/npm/android-arm-eabi/README.md create mode 100644 packages/xxhash/npm/android-arm-eabi/package.json delete mode 100644 scripts/packages.js diff --git a/.eslintrc.yml b/.eslintrc.yml index 8405d357..3314ba4b 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -11,11 +11,9 @@ env: plugins: - import - - sonarjs extends: - eslint:recommended - - plugin:sonarjs/recommended - plugin:prettier/recommended rules: @@ -55,12 +53,6 @@ rules: }, ] - 'sonarjs/cognitive-complexity': 0 - 'sonarjs/no-duplicate-string': 0 - 'sonarjs/no-big-function': 0 - 'sonarjs/no-identical-functions': 0 - 'sonarjs/no-small-switch': 0 - overrides: - files: - packages/**/*.ts diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 51a65b73..43490ed2 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -20,24 +20,23 @@ jobs: matrix: settings: - host: macos-latest + architecture: x64 target: 'x86_64-apple-darwin' build: | yarn build strip -x packages/*/*.node - host: windows-latest + architecture: x64 build: yarn build target: 'x86_64-pc-windows-msvc' - host: windows-latest + architecture: x86 build: | - export CARGO_PROFILE_RELEASE_CODEGEN_UNITS=32; - export CARGO_PROFILE_RELEASE_LTO=false npx lerna exec "yarn build --target i686-pc-windows-msvc" --concurrency 1 --stream --no-prefix yarn test target: 'i686-pc-windows-msvc' - setup: | - choco install nodejs-lts --x86 -y --force - echo "C:\\Program Files (x86)\\nodejs" >> $GITHUB_PATH - host: ubuntu-latest + architecture: x64 target: 'x86_64-unknown-linux-gnu' docker: | docker pull $DOCKER_REGISTRY_URL/napi-rs/napi-rs/nodejs-rust:lts-debian @@ -45,12 +44,14 @@ jobs: build: | docker run --rm -v ~/.cargo/git:/root/.cargo/git -v ~/.cargo/registry:/root/.cargo/registry -v $(pwd):/build -w /build builder yarn build - host: ubuntu-latest + architecture: x64 target: 'x86_64-unknown-linux-musl' docker: | docker pull $DOCKER_REGISTRY_URL/napi-rs/napi-rs/nodejs-rust:lts-alpine docker tag $DOCKER_REGISTRY_URL/napi-rs/napi-rs/nodejs-rust:lts-alpine builder build: docker run --rm -v ~/.cargo/git:/root/.cargo/git -v ~/.cargo/registry:/root/.cargo/registry -v $(pwd):/build -w /build builder yarn build - host: macos-latest + architecture: x64 target: 'aarch64-apple-darwin' build: | sudo rm -Rf /Library/Developer/CommandLineTools/SDKs/*; @@ -61,24 +62,39 @@ jobs: npx lerna exec "yarn build --target aarch64-apple-darwin" --concurrency 1 --stream --no-prefix strip -x packages/*/*.node - host: ubuntu-latest + architecture: x64 target: 'aarch64-unknown-linux-gnu' setup: | sudo apt-get update sudo apt-get install g++-aarch64-linux-gnu gcc-aarch64-linux-gnu -y build: npx lerna exec "yarn build --target aarch64-unknown-linux-gnu" --concurrency 1 --stream --no-prefix - host: ubuntu-latest + architecture: x64 target: 'armv7-unknown-linux-gnueabihf' setup: | sudo apt-get update sudo apt-get install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf -y build: npx lerna exec "yarn build --target armv7-unknown-linux-gnueabihf" --concurrency 1 --stream --no-prefix - host: ubuntu-latest - target: 'aarch64-linux-android' + architecture: x64 + target: aarch64-linux-android build: | export CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang" + export CC="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang" + export CXX="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang++" export PATH="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin:${PATH}" npx lerna exec "yarn build --target aarch64-linux-android" --concurrency 1 --stream --no-prefix - host: ubuntu-latest + architecture: x64 + target: armv7-linux-androideabi + build: | + export CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_LINKER="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi24-clang" + export CC="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi24-clang" + export CXX="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi24-clang++" + export PATH="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin:${PATH}" + npx lerna exec "yarn build --target armv7-linux-androideabi" --concurrency 1 --stream --no-prefix + - host: ubuntu-latest + architecture: x64 target: 'aarch64-unknown-linux-musl' downloadTarget: 'aarch64-unknown-linux-musl' docker: | @@ -86,6 +102,7 @@ jobs: docker tag ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine builder build: docker run --rm -v ~/.cargo/git:/root/.cargo/git -v ~/.cargo/registry:/root/.cargo/registry -v $(pwd):/node-rs -w /node-rs builder sh -c "rustup toolchain install $(cat ./rust-toolchain) && rustup target add aarch64-unknown-linux-musl && yarn global add lerna && lerna exec \"yarn build --target aarch64-unknown-linux-musl\" --concurrency 1 --stream --no-prefix" - host: windows-latest + architecture: x64 target: 'aarch64-pc-windows-msvc' build: npx lerna exec "yarn build --target aarch64-pc-windows-msvc" --concurrency 1 --stream --no-prefix @@ -100,6 +117,8 @@ jobs: with: node-version: 16 check-latest: true + cache: yarn + architecture: ${{ matrix.settings.architecture }} - name: Install uses: actions-rs/toolchain@v1 @@ -273,6 +292,7 @@ jobs: with: node-version: ${{ matrix.node }} check-latest: true + cache: yarn - name: Install dependencies run: yarn install --ignore-scripts --frozen-lockfile --registry https://registry.npmjs.org --network-timeout 300000 @@ -321,6 +341,7 @@ jobs: with: node-version: ${{ matrix.node }} check-latest: true + cache: yarn - name: Install dependencies run: yarn install --ignore-scripts --frozen-lockfile --registry https://registry.npmjs.org --network-timeout 300000 @@ -389,6 +410,7 @@ jobs: image: ghcr.io/napi-rs/napi-rs/nodejs:aarch64-${{ matrix.node }} options: -v ${{ github.workspace }}:/build -w /build run: | + set -e yarn build:ts yarn test ls -la @@ -428,6 +450,7 @@ jobs: image: multiarch/alpine:aarch64-latest-stable options: -v ${{ github.workspace }}:/build -w /build run: | + set -e apk add nodejs npm yarn yarn build:ts yarn test @@ -470,6 +493,7 @@ jobs: image: ghcr.io/napi-rs/napi-rs/nodejs:armhf-${{ matrix.node }} options: -v ${{ github.workspace }}:/build -w /build run: | + set -e yarn build:ts yarn test ls -la @@ -490,8 +514,9 @@ jobs: - name: Setup node uses: actions/setup-node@v2-beta with: - node-version: 14 + node-version: 16 check-latest: true + cache: yarn - name: Cache NPM dependencies uses: actions/cache@v2 diff --git a/package.json b/package.json index 7bda9338..045ce618 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,9 @@ "author": "LongYinan ", "license": "MIT", "private": true, - "workspaces": ["packages/*"], + "workspaces": [ + "packages/*" + ], "scripts": { "artifacts": "lerna run artifacts", "bench": "lerna run bench --concurrency 1 --stream --no-prefix", @@ -13,29 +15,26 @@ "build:ts": "tsc -b tsconfig.project.json -verbose", "lint": "eslint . -c ./.eslintrc.yml \"packages/**/*.{ts,js}\"", "test": "ava", - "format": "run-p format:md format:json format:yaml format:source", - "format:md": "prettier --parser markdown --write \"./**/*.md\"", - "format:json": "prettier --parser json --write \"./**/*.json\"", - "format:source": "prettier --config ./package.json --write \"./**/*.{js,ts}\"", - "format:yaml": "prettier --parser yaml --write \"./**/*.{yml,yaml}\"", + "format": "run-p format:prettier format:rs", + "format:prettier": "prettier --config ./package.json -w .", + "format:rs": "cargo fmt --all", "typecheck": "tsc -b tsconfig.project.json -verbose", "postinstall": "husky install" }, "devDependencies": { - "@napi-rs/cli": "^1.3.5", - "@swc-node/register": "^1.4.0", - "@types/node": "^16.11.12", - "@typescript-eslint/eslint-plugin": "^4.33.0", - "@typescript-eslint/parser": "^4.33.0", + "@napi-rs/cli": "^2.0.0", + "@swc-node/register": "^1.4.2", + "@types/node": "^17.0.0", + "@typescript-eslint/eslint-plugin": "^5.7.0", + "@typescript-eslint/parser": "^5.7.0", "ava": "^3.15.0", "benchmark": "^2.1.4", "codecov": "^3.8.3", "cross-env": "^7.0.3", - "eslint": "^7.32.0", + "eslint": "^8.4.1", "eslint-config-prettier": "^8.3.0", "eslint-plugin-import": "^2.25.3", "eslint-plugin-prettier": "^4.0.0", - "eslint-plugin-sonarjs": "^0.11.0", "husky": "^7.0.4", "lerna": "^4.0.0", "lint-staged": "^12.1.2", @@ -43,28 +42,35 @@ "nyc": "^15.1.0", "prettier": "^2.5.1", "tslib": "^2.3.1", - "typescript": "^4.5.3" + "typescript": "^4.5.4" }, "ava": { - "extensions": ["ts"], - "require": ["@swc-node/register"], - "files": ["packages/**/*.spec.ts"], + "extensions": [ + "ts" + ], + "require": [ + "@swc-node/register" + ], + "files": [ + "packages/**/*.spec.ts" + ], "environmentVariables": { "TS_NODE_PROJECT": "./tsconfig.test.json" } }, "lint-staged": { - "*.@(js|ts|tsx)": ["prettier --write", "eslint -c .eslintrc.yml --fix"], - "*.@(yml|yaml)": ["prettier --parser yaml --write"], - "*.json": ["prettier --parser json --write"], - "*.md": ["prettier --parser markdown --write"] + "*.@(js|ts|tsx)": [ + "eslint -c .eslintrc.yml --fix" + ], + "*.@(js|ts|tsx|yml|yaml|json|md)": [ + "prettier --write" + ] }, "prettier": { "printWidth": 120, "semi": false, "trailingComma": "all", "singleQuote": true, - "arrowParens": "always", - "parser": "typescript" + "arrowParens": "always" } } diff --git a/packages/bcrypt/Cargo.toml b/packages/bcrypt/Cargo.toml index 5983fe39..b775e742 100644 --- a/packages/bcrypt/Cargo.toml +++ b/packages/bcrypt/Cargo.toml @@ -11,8 +11,8 @@ crate-type = ["cdylib"] blowfish = {version = "0.8", features = ["bcrypt"]} byteorder = "1" global_alloc = {path = "../../crates/alloc"} -napi = "1" -napi-derive = "1" +napi = {version = "2"} +napi-derive = {version = "2"} phf = {version = "0.10", features = ["macros"]} radix64 = "0.6" rand = "0.8" @@ -21,4 +21,4 @@ rand = "0.8" quickcheck = "1.0" [build-dependencies] -napi-build = "1.1.0" +napi-build = "1" diff --git a/packages/bcrypt/index.d.ts b/packages/bcrypt/index.d.ts index a30877bc..ecc09211 100644 --- a/packages/bcrypt/index.d.ts +++ b/packages/bcrypt/index.d.ts @@ -1,26 +1,23 @@ -export const DEFAULT_COST: 12 +/* eslint-disable */ -export function hashSync(password: string | Buffer, round?: number): string -export function hash(password: string | Buffer, round?: number): Promise -export function verifySync(password: string | Buffer, hash: string | Buffer): boolean -export function verify(password: string | Buffer, hash: string | Buffer): Promise -/** - * The same with `verifySync` - */ -export function compareSync(password: string | Buffer, hash: string | Buffer): boolean -/** - * The same with `verify` - */ -export function compare(password: string | Buffer, hash: string | Buffer): Promise - -export type Version = '2a' | '2x' | '2y' | '2b' -/** - * @param round default 10 - * @param version default '2b' - */ -export function genSaltSync(round?: number, version?: Version): string -/** - * @param round default 10 - * @param version default '2b' - */ -export function genSalt(round?: number, version?: Version): Promise +export class ExternalObject { + readonly '': { + readonly '': unique symbol + [K: symbol]: T + } +} +export const DEFAULT_COST: number +export function genSaltSync(round: number, version: string): string +export function genSalt(round: number, version: string, signal?: AbortSignal | undefined | null): Promise +export function hashSync(input: string | Buffer, cost?: number | undefined | null): string +export function hash( + input: string | Buffer, + cost?: number | undefined | null, + signal?: AbortSignal | undefined | null, +): Promise +export function verifySync(input: string | Buffer, hash: string | Buffer): boolean +export function verify( + password: string | Buffer, + hash: string | Buffer, + signal?: AbortSignal | undefined | null, +): Promise diff --git a/packages/bcrypt/index.js b/packages/bcrypt/index.js index cc5b54f5..aa32b0bf 100644 --- a/packages/bcrypt/index.js +++ b/packages/bcrypt/index.js @@ -1,44 +1,203 @@ -const { loadBinding } = require('@node-rs/helper') +const { existsSync, readFileSync } = require('fs') +const { join } = require('path') -const binding = loadBinding(__dirname, 'bcrypt', '@node-rs/bcrypt') +const { platform, arch } = process -const DEFAULT_COST = 12 +let nativeBinding = null +let localFileExisted = false +let isMusl = false +let loadError = null -function verify(password, hash) { - password = Buffer.isBuffer(password) ? password : Buffer.from(password) - hash = Buffer.isBuffer(hash) ? hash : Buffer.from(hash) - return binding.verify(password, hash) +switch (platform) { + case 'android': + if (arch !== 'arm64') { + throw new Error(`Unsupported architecture on Android ${arch}`) + } + localFileExisted = existsSync(join(__dirname, 'bcrypt.android-arm64.node')) + try { + if (localFileExisted) { + nativeBinding = require('./bcrypt.android-arm64.node') + } else { + nativeBinding = require('@node-rs/bcrypt-android-arm64') + } + } catch (e) { + loadError = e + } + break + case 'win32': + switch (arch) { + case 'x64': + localFileExisted = existsSync(join(__dirname, 'bcrypt.win32-x64-msvc.node')) + try { + if (localFileExisted) { + nativeBinding = require('./bcrypt.win32-x64-msvc.node') + } else { + nativeBinding = require('@node-rs/bcrypt-win32-x64-msvc') + } + } catch (e) { + loadError = e + } + break + case 'ia32': + localFileExisted = existsSync(join(__dirname, 'bcrypt.win32-ia32-msvc.node')) + try { + if (localFileExisted) { + nativeBinding = require('./bcrypt.win32-ia32-msvc.node') + } else { + nativeBinding = require('@node-rs/bcrypt-win32-ia32-msvc') + } + } catch (e) { + loadError = e + } + break + case 'arm64': + localFileExisted = existsSync(join(__dirname, 'bcrypt.win32-arm64-msvc.node')) + try { + if (localFileExisted) { + nativeBinding = require('./bcrypt.win32-arm64-msvc.node') + } else { + nativeBinding = require('@node-rs/bcrypt-win32-arm64-msvc') + } + } catch (e) { + loadError = e + } + break + default: + throw new Error(`Unsupported architecture on Windows: ${arch}`) + } + break + case 'darwin': + switch (arch) { + case 'x64': + localFileExisted = existsSync(join(__dirname, 'bcrypt.darwin-x64.node')) + try { + if (localFileExisted) { + nativeBinding = require('./bcrypt.darwin-x64.node') + } else { + nativeBinding = require('@node-rs/bcrypt-darwin-x64') + } + } catch (e) { + loadError = e + } + break + case 'arm64': + localFileExisted = existsSync(join(__dirname, 'bcrypt.darwin-arm64.node')) + try { + if (localFileExisted) { + nativeBinding = require('./bcrypt.darwin-arm64.node') + } else { + nativeBinding = require('@node-rs/bcrypt-darwin-arm64') + } + } catch (e) { + loadError = e + } + break + default: + throw new Error(`Unsupported architecture on macOS: ${arch}`) + } + break + case 'freebsd': + if (arch !== 'x64') { + throw new Error(`Unsupported architecture on FreeBSD: ${arch}`) + } + localFileExisted = existsSync(join(__dirname, 'bcrypt.freebsd-x64.node')) + try { + if (localFileExisted) { + nativeBinding = require('./bcrypt.freebsd-x64.node') + } else { + nativeBinding = require('@node-rs/bcrypt-freebsd-x64') + } + } catch (e) { + loadError = e + } + break + case 'linux': + switch (arch) { + case 'x64': + isMusl = readFileSync('/usr/bin/ldd', 'utf8').includes('musl') + if (isMusl) { + localFileExisted = existsSync(join(__dirname, 'bcrypt.linux-x64-musl.node')) + try { + if (localFileExisted) { + nativeBinding = require('./bcrypt.linux-x64-musl.node') + } else { + nativeBinding = require('@node-rs/bcrypt-linux-x64-musl') + } + } catch (e) { + loadError = e + } + } else { + localFileExisted = existsSync(join(__dirname, 'bcrypt.linux-x64-gnu.node')) + try { + if (localFileExisted) { + nativeBinding = require('./bcrypt.linux-x64-gnu.node') + } else { + nativeBinding = require('@node-rs/bcrypt-linux-x64-gnu') + } + } catch (e) { + loadError = e + } + } + break + case 'arm64': + isMusl = readFileSync('/usr/bin/ldd', 'utf8').includes('musl') + if (isMusl) { + localFileExisted = existsSync(join(__dirname, 'bcrypt.linux-arm64-musl.node')) + try { + if (localFileExisted) { + nativeBinding = require('./bcrypt.linux-arm64-musl.node') + } else { + nativeBinding = require('@node-rs/bcrypt-linux-arm64-musl') + } + } catch (e) { + loadError = e + } + } else { + localFileExisted = existsSync(join(__dirname, 'bcrypt.linux-arm64-gnu.node')) + try { + if (localFileExisted) { + nativeBinding = require('./bcrypt.linux-arm64-gnu.node') + } else { + nativeBinding = require('@node-rs/bcrypt-linux-arm64-gnu') + } + } catch (e) { + loadError = e + } + } + break + case 'arm': + localFileExisted = existsSync(join(__dirname, 'bcrypt.linux-arm-gnueabihf.node')) + try { + if (localFileExisted) { + nativeBinding = require('./bcrypt.linux-arm-gnueabihf.node') + } else { + nativeBinding = require('@node-rs/bcrypt-linux-arm-gnueabihf') + } + } catch (e) { + loadError = e + } + break + default: + throw new Error(`Unsupported architecture on Linux: ${arch}`) + } + break + default: + throw new Error(`Unsupported OS: ${platform}, architecture: ${arch}`) } -function verifySync(password, hash) { - password = Buffer.isBuffer(password) ? password : Buffer.from(password) - hash = Buffer.isBuffer(hash) ? hash : Buffer.from(hash) - return binding.verifySync(password, hash) +if (!nativeBinding) { + if (loadError) { + throw loadError + } + throw new Error(`Failed to load native binding`) } -module.exports = { - DEFAULT_COST: DEFAULT_COST, +const { DEFAULT_COST, genSaltSync, genSalt, hashSync, hash, verifySync, verify } = nativeBinding - genSaltSync: function genSaltSync(round = 10, version = '2b') { - return binding.genSaltSync(round, version) - }, - - genSalt: function genSalt(round = 10, version = '2b') { - return binding.genSalt(round, version) - }, - - hashSync: function hashSync(password, round = DEFAULT_COST) { - const input = Buffer.isBuffer(password) ? password : Buffer.from(password) - return binding.hashSync(input, round) - }, - - hash: function hash(password, round = DEFAULT_COST) { - const input = Buffer.isBuffer(password) ? password : Buffer.from(password) - return binding.hash(input, round) - }, - - verifySync, - verify, - compareSync: verifySync, - compare: verify, -} +module.exports.DEFAULT_COST = DEFAULT_COST +module.exports.genSaltSync = genSaltSync +module.exports.genSalt = genSalt +module.exports.hashSync = hashSync +module.exports.hash = hash +module.exports.verifySync = verifySync +module.exports.verify = verify diff --git a/packages/bcrypt/npm/android-arm-eabi/README.md b/packages/bcrypt/npm/android-arm-eabi/README.md new file mode 100644 index 00000000..648b682a --- /dev/null +++ b/packages/bcrypt/npm/android-arm-eabi/README.md @@ -0,0 +1,3 @@ +# `@node-rs/bcrypt-android-arm-eabi` + +This is the **armv7-linux-androideabi** binary for `@node-rs/bcrypt` diff --git a/packages/bcrypt/npm/android-arm-eabi/package.json b/packages/bcrypt/npm/android-arm-eabi/package.json new file mode 100644 index 00000000..bcc59db3 --- /dev/null +++ b/packages/bcrypt/npm/android-arm-eabi/package.json @@ -0,0 +1,43 @@ +{ + "name": "@node-rs/bcrypt-android-arm-eabi", + "version": "1.4.2", + "os": [ + "android" + ], + "cpu": [ + "arm" + ], + "main": "bcrypt.android-arm-eabi.node", + "files": [ + "bcrypt.android-arm-eabi.node" + ], + "description": "Rust bcrypt binding", + "keywords": [ + "bcrypt", + "auth", + "password", + "authentication", + "encryption", + "crypto", + "N-API", + "napi-rs", + "node-rs" + ], + "author": "LongYinan ", + "homepage": "https://github.com/napi-rs/node-rs", + "license": "MIT", + "engines": { + "node": ">= 10" + }, + "publishConfig": { + "registry": "https://registry.npmjs.org/", + "access": "public" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/napi-rs/node-rs.git" + }, + "bugs": { + "url": "https://github.com/napi-rs/node-rs/issues" + } +} diff --git a/packages/bcrypt/npm/android-arm64/package.json b/packages/bcrypt/npm/android-arm64/package.json index d64b0832..5306e42a 100644 --- a/packages/bcrypt/npm/android-arm64/package.json +++ b/packages/bcrypt/npm/android-arm64/package.json @@ -1,12 +1,28 @@ { "name": "@node-rs/bcrypt-android-arm64", "version": "1.4.2", - "os": ["android"], - "cpu": ["arm64"], + "os": [ + "android" + ], + "cpu": [ + "arm64" + ], "main": "bcrypt.android-arm64.node", - "files": ["bcrypt.android-arm64.node"], + "files": [ + "bcrypt.android-arm64.node" + ], "description": "Rust bcrypt binding", - "keywords": ["bcrypt", "auth", "password", "authentication", "encryption", "crypto", "N-API", "napi-rs", "node-rs"], + "keywords": [ + "bcrypt", + "auth", + "password", + "authentication", + "encryption", + "crypto", + "N-API", + "napi-rs", + "node-rs" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/bcrypt/npm/darwin-arm64/package.json b/packages/bcrypt/npm/darwin-arm64/package.json index 10966f79..e34220a5 100644 --- a/packages/bcrypt/npm/darwin-arm64/package.json +++ b/packages/bcrypt/npm/darwin-arm64/package.json @@ -1,12 +1,28 @@ { "name": "@node-rs/bcrypt-darwin-arm64", "version": "1.4.2", - "os": ["darwin"], - "cpu": ["arm64"], + "os": [ + "darwin" + ], + "cpu": [ + "arm64" + ], "main": "bcrypt.darwin-arm64.node", - "files": ["bcrypt.darwin-arm64.node"], + "files": [ + "bcrypt.darwin-arm64.node" + ], "description": "Rust bcrypt binding", - "keywords": ["bcrypt", "auth", "password", "authentication", "encryption", "crypto", "N-API", "napi-rs", "node-rs"], + "keywords": [ + "bcrypt", + "auth", + "password", + "authentication", + "encryption", + "crypto", + "N-API", + "napi-rs", + "node-rs" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/bcrypt/npm/darwin-x64/package.json b/packages/bcrypt/npm/darwin-x64/package.json index 8d5e5846..a9af21e5 100644 --- a/packages/bcrypt/npm/darwin-x64/package.json +++ b/packages/bcrypt/npm/darwin-x64/package.json @@ -1,12 +1,28 @@ { "name": "@node-rs/bcrypt-darwin-x64", "version": "1.4.2", - "os": ["darwin"], - "cpu": ["x64"], + "os": [ + "darwin" + ], + "cpu": [ + "x64" + ], "main": "bcrypt.darwin-x64.node", - "files": ["bcrypt.darwin-x64.node"], + "files": [ + "bcrypt.darwin-x64.node" + ], "description": "Rust bcrypt binding", - "keywords": ["bcrypt", "auth", "password", "authentication", "encryption", "crypto", "N-API", "napi-rs", "node-rs"], + "keywords": [ + "bcrypt", + "auth", + "password", + "authentication", + "encryption", + "crypto", + "N-API", + "napi-rs", + "node-rs" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/bcrypt/npm/freebsd-x64/package.json b/packages/bcrypt/npm/freebsd-x64/package.json index e5b08803..f1b52b87 100644 --- a/packages/bcrypt/npm/freebsd-x64/package.json +++ b/packages/bcrypt/npm/freebsd-x64/package.json @@ -1,12 +1,28 @@ { "name": "@node-rs/bcrypt-freebsd-x64", "version": "1.4.2", - "os": ["freebsd"], - "cpu": ["x64"], + "os": [ + "freebsd" + ], + "cpu": [ + "x64" + ], "main": "bcrypt.freebsd-x64.node", - "files": ["bcrypt.freebsd-x64.node"], + "files": [ + "bcrypt.freebsd-x64.node" + ], "description": "Rust bcrypt binding", - "keywords": ["bcrypt", "auth", "password", "authentication", "encryption", "crypto", "N-API", "napi-rs", "node-rs"], + "keywords": [ + "bcrypt", + "auth", + "password", + "authentication", + "encryption", + "crypto", + "N-API", + "napi-rs", + "node-rs" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/bcrypt/npm/linux-arm-gnueabihf/package.json b/packages/bcrypt/npm/linux-arm-gnueabihf/package.json index 14cec40b..5b5cf781 100644 --- a/packages/bcrypt/npm/linux-arm-gnueabihf/package.json +++ b/packages/bcrypt/npm/linux-arm-gnueabihf/package.json @@ -1,12 +1,28 @@ { "name": "@node-rs/bcrypt-linux-arm-gnueabihf", "version": "1.4.2", - "os": ["linux"], - "cpu": ["arm"], + "os": [ + "linux" + ], + "cpu": [ + "arm" + ], "main": "bcrypt.linux-arm-gnueabihf.node", - "files": ["bcrypt.linux-arm-gnueabihf.node"], + "files": [ + "bcrypt.linux-arm-gnueabihf.node" + ], "description": "Rust bcrypt binding", - "keywords": ["bcrypt", "auth", "password", "authentication", "encryption", "crypto", "N-API", "napi-rs", "node-rs"], + "keywords": [ + "bcrypt", + "auth", + "password", + "authentication", + "encryption", + "crypto", + "N-API", + "napi-rs", + "node-rs" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/bcrypt/npm/linux-arm64-gnu/package.json b/packages/bcrypt/npm/linux-arm64-gnu/package.json index 70420ba7..773a1c4f 100644 --- a/packages/bcrypt/npm/linux-arm64-gnu/package.json +++ b/packages/bcrypt/npm/linux-arm64-gnu/package.json @@ -1,12 +1,28 @@ { "name": "@node-rs/bcrypt-linux-arm64-gnu", "version": "1.4.2", - "os": ["linux"], - "cpu": ["arm64"], + "os": [ + "linux" + ], + "cpu": [ + "arm64" + ], "main": "bcrypt.linux-arm64-gnu.node", - "files": ["bcrypt.linux-arm64-gnu.node"], + "files": [ + "bcrypt.linux-arm64-gnu.node" + ], "description": "Rust bcrypt binding", - "keywords": ["bcrypt", "auth", "password", "authentication", "encryption", "crypto", "N-API", "napi-rs", "node-rs"], + "keywords": [ + "bcrypt", + "auth", + "password", + "authentication", + "encryption", + "crypto", + "N-API", + "napi-rs", + "node-rs" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/bcrypt/npm/linux-arm64-musl/package.json b/packages/bcrypt/npm/linux-arm64-musl/package.json index 5631f821..a2487bc9 100644 --- a/packages/bcrypt/npm/linux-arm64-musl/package.json +++ b/packages/bcrypt/npm/linux-arm64-musl/package.json @@ -1,12 +1,28 @@ { "name": "@node-rs/bcrypt-linux-arm64-musl", "version": "1.4.2", - "os": ["linux"], - "cpu": ["arm64"], + "os": [ + "linux" + ], + "cpu": [ + "arm64" + ], "main": "bcrypt.linux-arm64-musl.node", - "files": ["bcrypt.linux-arm64-musl.node"], + "files": [ + "bcrypt.linux-arm64-musl.node" + ], "description": "Rust bcrypt binding", - "keywords": ["bcrypt", "auth", "password", "authentication", "encryption", "crypto", "N-API", "napi-rs", "node-rs"], + "keywords": [ + "bcrypt", + "auth", + "password", + "authentication", + "encryption", + "crypto", + "N-API", + "napi-rs", + "node-rs" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/bcrypt/npm/linux-x64-gnu/package.json b/packages/bcrypt/npm/linux-x64-gnu/package.json index a649187c..5bee517f 100644 --- a/packages/bcrypt/npm/linux-x64-gnu/package.json +++ b/packages/bcrypt/npm/linux-x64-gnu/package.json @@ -1,12 +1,28 @@ { "name": "@node-rs/bcrypt-linux-x64-gnu", "version": "1.4.2", - "os": ["linux"], - "cpu": ["x64"], + "os": [ + "linux" + ], + "cpu": [ + "x64" + ], "main": "bcrypt.linux-x64-gnu.node", - "files": ["bcrypt.linux-x64-gnu.node"], + "files": [ + "bcrypt.linux-x64-gnu.node" + ], "description": "Rust bcrypt binding", - "keywords": ["bcrypt", "auth", "password", "authentication", "encryption", "crypto", "N-API", "napi-rs", "node-rs"], + "keywords": [ + "bcrypt", + "auth", + "password", + "authentication", + "encryption", + "crypto", + "N-API", + "napi-rs", + "node-rs" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/bcrypt/npm/linux-x64-musl/package.json b/packages/bcrypt/npm/linux-x64-musl/package.json index 395fb155..91cb56bf 100644 --- a/packages/bcrypt/npm/linux-x64-musl/package.json +++ b/packages/bcrypt/npm/linux-x64-musl/package.json @@ -1,12 +1,28 @@ { "name": "@node-rs/bcrypt-linux-x64-musl", "version": "1.4.2", - "os": ["linux"], - "cpu": ["x64"], + "os": [ + "linux" + ], + "cpu": [ + "x64" + ], "main": "bcrypt.linux-x64-musl.node", - "files": ["bcrypt.linux-x64-musl.node"], + "files": [ + "bcrypt.linux-x64-musl.node" + ], "description": "Rust bcrypt binding", - "keywords": ["bcrypt", "auth", "password", "authentication", "encryption", "crypto", "N-API", "napi-rs", "node-rs"], + "keywords": [ + "bcrypt", + "auth", + "password", + "authentication", + "encryption", + "crypto", + "N-API", + "napi-rs", + "node-rs" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/bcrypt/npm/win32-arm64-msvc/package.json b/packages/bcrypt/npm/win32-arm64-msvc/package.json index bdce5a54..cc0f4d9f 100644 --- a/packages/bcrypt/npm/win32-arm64-msvc/package.json +++ b/packages/bcrypt/npm/win32-arm64-msvc/package.json @@ -1,12 +1,28 @@ { "name": "@node-rs/bcrypt-win32-arm64-msvc", "version": "1.4.2", - "os": ["win32"], - "cpu": ["arm64"], + "os": [ + "win32" + ], + "cpu": [ + "arm64" + ], "main": "bcrypt.win32-arm64-msvc.node", - "files": ["bcrypt.win32-arm64-msvc.node"], + "files": [ + "bcrypt.win32-arm64-msvc.node" + ], "description": "Rust bcrypt binding", - "keywords": ["bcrypt", "auth", "password", "authentication", "encryption", "crypto", "N-API", "napi-rs", "node-rs"], + "keywords": [ + "bcrypt", + "auth", + "password", + "authentication", + "encryption", + "crypto", + "N-API", + "napi-rs", + "node-rs" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/bcrypt/npm/win32-ia32-msvc/package.json b/packages/bcrypt/npm/win32-ia32-msvc/package.json index 446549fc..01b7d60b 100644 --- a/packages/bcrypt/npm/win32-ia32-msvc/package.json +++ b/packages/bcrypt/npm/win32-ia32-msvc/package.json @@ -1,12 +1,28 @@ { "name": "@node-rs/bcrypt-win32-ia32-msvc", "version": "1.4.2", - "os": ["win32"], - "cpu": ["ia32"], + "os": [ + "win32" + ], + "cpu": [ + "ia32" + ], "main": "bcrypt.win32-ia32-msvc.node", - "files": ["bcrypt.win32-ia32-msvc.node"], + "files": [ + "bcrypt.win32-ia32-msvc.node" + ], "description": "Rust bcrypt binding", - "keywords": ["bcrypt", "auth", "password", "authentication", "encryption", "crypto", "N-API", "napi-rs", "node-rs"], + "keywords": [ + "bcrypt", + "auth", + "password", + "authentication", + "encryption", + "crypto", + "N-API", + "napi-rs", + "node-rs" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/bcrypt/npm/win32-x64-msvc/package.json b/packages/bcrypt/npm/win32-x64-msvc/package.json index 2313cb36..5157c1be 100644 --- a/packages/bcrypt/npm/win32-x64-msvc/package.json +++ b/packages/bcrypt/npm/win32-x64-msvc/package.json @@ -1,12 +1,28 @@ { "name": "@node-rs/bcrypt-win32-x64-msvc", "version": "1.4.2", - "os": ["win32"], - "cpu": ["x64"], + "os": [ + "win32" + ], + "cpu": [ + "x64" + ], "main": "bcrypt.win32-x64-msvc.node", - "files": ["bcrypt.win32-x64-msvc.node"], + "files": [ + "bcrypt.win32-x64-msvc.node" + ], "description": "Rust bcrypt binding", - "keywords": ["bcrypt", "auth", "password", "authentication", "encryption", "crypto", "N-API", "napi-rs", "node-rs"], + "keywords": [ + "bcrypt", + "auth", + "password", + "authentication", + "encryption", + "crypto", + "N-API", + "napi-rs", + "node-rs" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/bcrypt/package.json b/packages/bcrypt/package.json index 296371f7..c10d9276 100644 --- a/packages/bcrypt/package.json +++ b/packages/bcrypt/package.json @@ -2,13 +2,28 @@ "name": "@node-rs/bcrypt", "version": "1.4.2", "description": "Rust bcrypt binding", - "keywords": ["bcrypt", "auth", "password", "authentication", "encryption", "crypto", "N-API", "napi-rs", "node-rs"], + "keywords": [ + "bcrypt", + "auth", + "password", + "authentication", + "encryption", + "crypto", + "N-API", + "napi-rs", + "node-rs" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", "main": "index.js", "typings": "index.d.ts", - "files": ["index.js", "index.d.ts", "LICENSE", "LICENSE.rust-bcrypt"], + "files": [ + "index.js", + "index.d.ts", + "LICENSE", + "LICENSE.rust-bcrypt" + ], "napi": { "name": "bcrypt", "triples": { @@ -20,6 +35,7 @@ "aarch64-unknown-linux-gnu", "aarch64-apple-darwin", "aarch64-linux-android", + "armv7-linux-androideabi", "x86_64-unknown-freebsd", "aarch64-unknown-linux-musl", "aarch64-pc-windows-msvc" @@ -40,17 +56,14 @@ "scripts": { "artifacts": "napi artifacts -d ../../artifacts", "bench": "cross-env NODE_ENV=production node benchmark/bcrypt.js", - "build": "napi build --platform --release", - "build:debug": "napi build --platform", + "build": "napi build --platform --release --pipe \"prettier -w\"", + "build:debug": "napi build --platform --pipe \"prettier -w\"", "prepublishOnly": "napi prepublish", "version": "napi version" }, "bugs": { "url": "https://github.com/napi-rs/node-rs/issues" }, - "dependencies": { - "@node-rs/helper": "^1.2.1" - }, "devDependencies": { "@types/bcrypt": "^5.0.0", "bcrypt": "^5.0.1", diff --git a/packages/bcrypt/src/hash_task.rs b/packages/bcrypt/src/hash_task.rs index 14432e5f..8551ffca 100644 --- a/packages/bcrypt/src/hash_task.rs +++ b/packages/bcrypt/src/hash_task.rs @@ -1,14 +1,42 @@ -use napi::{Env, Error, JsBufferValue, JsString, Ref, Result, Status, Task}; +use napi::{ + bindgen_prelude::Either, Env, Error, JsBuffer, JsBufferValue, Ref, Result, Status, Task, +}; +use napi_derive::napi; use crate::lib_bcrypt::hash; +pub enum AsyncHashInput { + String(String), + Buffer(Ref), +} + +impl AsyncHashInput { + #[inline] + pub fn from_either(input: Either) -> Result { + match input { + Either::A(s) => Ok(Self::String(s)), + Either::B(b) => Ok(Self::Buffer(b.into_ref()?)), + } + } +} + +impl AsRef<[u8]> for AsyncHashInput { + #[inline] + fn as_ref(&self) -> &[u8] { + match self { + Self::String(s) => s.as_bytes(), + Self::Buffer(b) => b.as_ref(), + } + } +} + pub struct HashTask { - buf: Ref, + buf: AsyncHashInput, cost: u32, } impl HashTask { - pub fn new(buf: Ref, cost: u32) -> HashTask { + pub fn new(buf: AsyncHashInput, cost: u32) -> HashTask { HashTask { buf, cost } } @@ -18,16 +46,26 @@ impl HashTask { } } +#[napi] impl Task for HashTask { type Output = String; - type JsValue = JsString; + type JsValue = String; fn compute(&mut self) -> Result { - Self::hash(&self.buf, self.cost) + match &self.buf { + AsyncHashInput::String(s) => Self::hash(s.as_bytes(), self.cost), + AsyncHashInput::Buffer(buf) => Self::hash(buf.as_ref(), self.cost), + } + } + + fn resolve(&mut self, _env: Env, output: Self::Output) -> Result { + Ok(output) } - fn resolve(self, env: Env, output: Self::Output) -> Result { - self.buf.unref(env)?; - env.create_string(output.as_str()) + fn finally(&mut self, env: Env) -> Result<()> { + if let AsyncHashInput::Buffer(buf) = &mut self.buf { + buf.unref(env)?; + } + Ok(()) } } diff --git a/packages/bcrypt/src/lib.rs b/packages/bcrypt/src/lib.rs index 81d8fe6a..ee6837ab 100644 --- a/packages/bcrypt/src/lib.rs +++ b/packages/bcrypt/src/lib.rs @@ -1,14 +1,15 @@ #![deny(clippy::all)] -#![allow(clippy::nonstandard_macro_braces)] /// Explicit extern crate to use allocator. extern crate global_alloc; use std::str::FromStr; -use napi::{CallContext, Error, JsBoolean, JsBuffer, JsNumber, JsObject, JsString, Result, Status}; +use napi::bindgen_prelude::*; +use napi::{Error, JsBuffer, Result, Status}; use napi_derive::*; +use crate::hash_task::AsyncHashInput; use crate::hash_task::HashTask; use crate::lib_bcrypt::{format_salt, gen_salt, Version}; use crate::verify_task::VerifyTask; @@ -21,71 +22,78 @@ mod lib_bcrypt; mod salt_task; mod verify_task; -#[module_exports] -fn init(mut exports: JsObject) -> Result<()> { - exports.create_named_method("genSaltSync", js_salt)?; - exports.create_named_method("genSalt", js_async_salt)?; - exports.create_named_method("hash", js_async_hash)?; - exports.create_named_method("hashSync", js_hash)?; - exports.create_named_method("verifySync", js_verify)?; - exports.create_named_method("verify", js_async_verify)?; +#[napi] +pub const DEFAULT_COST: u32 = 12; - Ok(()) -} - -#[js_function(2)] -fn js_salt(ctx: CallContext) -> Result { - let round = ctx.get::(0)?; - let version = ctx.get::(1)?.into_utf8()?; +#[napi] +pub fn gen_salt_sync(round: u32, version: String) -> Result { let salt = gen_salt(); - let salt_string = format_salt( - round.try_into()?, - Version::from_str(version.as_str()?).map_err(|_| Error::from_status(Status::InvalidArg))?, + Ok(format_salt( + round, + Version::from_str(version.as_str()).map_err(|_| Error::from_status(Status::InvalidArg))?, &salt, - ); - ctx.env.create_string(&salt_string) + )) } -#[js_function(2)] -fn js_async_salt(ctx: CallContext) -> Result { - let round = ctx.get::(0)?; - let version = ctx.get::(1)?.into_utf8()?; +#[napi(js_name = "genSalt")] +pub fn gen_salt_js( + round: u32, + version: String, + signal: Option, +) -> Result> { let task = salt_task::SaltTask { - round: round.try_into()?, - version: Version::from_str(version.as_str()?) + round, + version: Version::from_str(version.as_str()) .map_err(|_| Error::from_status(Status::InvalidArg))?, }; - ctx.env.spawn(task).map(|t| t.promise_object()) + Ok(AsyncTask::with_optional_signal(task, signal)) } -#[js_function(2)] -fn js_hash(ctx: CallContext) -> Result { - let password = ctx.get::(0)?.into_value()?; - let cost = ctx.get::(1)?; - let result = HashTask::hash(&password, cost.try_into()?)?; - ctx.env.create_string(result.as_str()) +#[napi] +pub fn hash_sync(input: Either, cost: Option) -> Result { + match input { + Either::A(s) => HashTask::hash(s.as_bytes(), cost.unwrap_or(DEFAULT_COST)), + Either::B(b) => HashTask::hash(b.as_ref(), cost.unwrap_or(DEFAULT_COST)), + } } -#[js_function(2)] -fn js_async_hash(ctx: CallContext) -> Result { - let password = ctx.get::(0)?.into_ref()?; - let cost = ctx.get::(1)?; - let task = HashTask::new(password, cost.try_into()?); - ctx.env.spawn(task).map(|t| t.promise_object()) +#[napi] +pub fn hash( + input: Either, + cost: Option, + signal: Option, +) -> Result> { + let task = HashTask::new( + AsyncHashInput::from_either(input)?, + cost.unwrap_or(DEFAULT_COST), + ); + Ok(AsyncTask::with_optional_signal(task, signal)) } -#[js_function(2)] -fn js_verify(ctx: CallContext) -> Result { - let password = ctx.get::(0)?.into_value()?; - let hash = ctx.get::(1)?.into_value()?; - let result = VerifyTask::verify(&password, &hash)?; - ctx.env.get_boolean(result) +#[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); + VerifyTask::verify(input, hash) } -#[js_function(2)] -fn js_async_verify(ctx: CallContext) -> Result { - let password = ctx.get::(0)?.into_ref()?; - let hash = ctx.get::(1)?.into_ref()?; - let task = VerifyTask::new(password, hash); - ctx.env.spawn(task).map(|t| t.promise_object()) +#[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, + hash: Either, + signal: Option, +) -> Result> { + let task = VerifyTask::new( + AsyncHashInput::from_either(password)?, + AsyncHashInput::from_either(hash)?, + ); + Ok(AsyncTask::with_optional_signal(task, signal)) } diff --git a/packages/bcrypt/src/lib_bcrypt.rs b/packages/bcrypt/src/lib_bcrypt.rs index eb18ee81..be645937 100644 --- a/packages/bcrypt/src/lib_bcrypt.rs +++ b/packages/bcrypt/src/lib_bcrypt.rs @@ -11,8 +11,6 @@ pub use crate::errors::{BcryptError, BcryptResult}; // Cost constants pub const MIN_COST: u32 = 4; pub const MAX_COST: u32 = 31; -#[allow(dead_code)] -const DEFAULT_COST: u32 = 12; #[derive(Debug, PartialEq)] /// A bcrypt hash result before concatenating @@ -233,8 +231,9 @@ pub fn verify>(password: P, hash: &str) -> BcryptResult { mod tests { use super::{ _hash_password, hash, hash_with_salt, split_hash, verify, BcryptError, BcryptResult, HashParts, - Version, DEFAULT_COST, + Version, }; + use crate::DEFAULT_COST; use quickcheck::{quickcheck, TestResult}; use std::iter; use std::str::FromStr; diff --git a/packages/bcrypt/src/salt_task.rs b/packages/bcrypt/src/salt_task.rs index 61c4b1af..7ed57e62 100644 --- a/packages/bcrypt/src/salt_task.rs +++ b/packages/bcrypt/src/salt_task.rs @@ -1,4 +1,5 @@ -use napi::{Env, JsString, Result, Task}; +use napi::{Env, Result, Task}; +use napi_derive::napi; use crate::{format_salt, gen_salt, Version}; @@ -7,16 +8,17 @@ pub struct SaltTask { pub(crate) version: Version, } +#[napi] impl Task for SaltTask { type Output = String; - type JsValue = JsString; + type JsValue = String; fn compute(&mut self) -> Result { let random = gen_salt(); Ok(format_salt(self.round, self.version, &random)) } - fn resolve(self, env: Env, output: Self::Output) -> Result { - env.create_string(output.as_str()) + fn resolve(&mut self, _env: Env, output: Self::Output) -> Result { + Ok(output) } } diff --git a/packages/bcrypt/src/verify_task.rs b/packages/bcrypt/src/verify_task.rs index 1f1d6844..0b007ac6 100644 --- a/packages/bcrypt/src/verify_task.rs +++ b/packages/bcrypt/src/verify_task.rs @@ -1,41 +1,57 @@ use std::str; +use napi::{Env, Error, JsBoolean, Result, Status, Task}; +use napi_derive::napi; + +use crate::hash_task::AsyncHashInput; use crate::lib_bcrypt::verify; -use napi::{Env, Error, JsBoolean, JsBufferValue, Ref, Result, Status, Task}; pub struct VerifyTask { - password: Ref, - hash: Ref, + password: AsyncHashInput, + hash: AsyncHashInput, } impl VerifyTask { - pub fn new(password: Ref, hash: Ref) -> VerifyTask { + pub fn new(password: AsyncHashInput, hash: AsyncHashInput) -> VerifyTask { Self { password, hash } } #[inline] - pub fn verify(password: &[u8], hash: &[u8]) -> Result { + pub fn verify(password: P, hash: H) -> Result + where + P: AsRef<[u8]>, + H: AsRef<[u8]>, + { Ok( verify( - &password, - str::from_utf8(hash).map_err(|_| Error::from_status(Status::StringExpected))?, + password.as_ref(), + str::from_utf8(hash.as_ref()).map_err(|_| Error::from_status(Status::StringExpected))?, ) .unwrap_or(false), ) } } +#[napi] impl Task for VerifyTask { type Output = bool; type JsValue = JsBoolean; fn compute(&mut self) -> Result { - VerifyTask::verify(&self.password, &self.hash) + VerifyTask::verify(&self.password.as_ref(), &self.hash.as_ref()) } - fn resolve(self, env: Env, output: Self::Output) -> Result { - self.password.unref(env)?; - self.hash.unref(env)?; + fn resolve(&mut self, env: Env, output: Self::Output) -> Result { env.get_boolean(output) } + + fn finally(&mut self, env: Env) -> Result<()> { + if let crate::hash_task::AsyncHashInput::Buffer(buf) = &mut self.password { + buf.unref(env)?; + } + if let crate::hash_task::AsyncHashInput::Buffer(buf) = &mut self.hash { + buf.unref(env)?; + } + Ok(()) + } } diff --git a/packages/crc32/Cargo.toml b/packages/crc32/Cargo.toml index 78f97d49..8d6b59e4 100644 --- a/packages/crc32/Cargo.toml +++ b/packages/crc32/Cargo.toml @@ -11,8 +11,8 @@ crate-type = ["cdylib"] crc32c = {version = "0.6"} crc32fast = {version = "1.2", features = ["nightly"]} global_alloc = {path = "../../crates/alloc"} -napi = "1" -napi-derive = "1" +napi = {version = "2"} +napi-derive = {version = "2"} [build-dependencies] napi-build = "1" diff --git a/packages/crc32/index.d.ts b/packages/crc32/index.d.ts index e0fb1752..8ecee4a0 100644 --- a/packages/crc32/index.d.ts +++ b/packages/crc32/index.d.ts @@ -1,12 +1,10 @@ -/** - * @param {string | Buffer} input string or buffer to calculate - * @param {number} crc u32 number, default 0 - * @returns {number} u32 number - */ -export function crc32(input: Buffer | string, crc?: number): number -/** - * @param {string | Buffer} input string or buffer to calculate - * @param {number} crc u32 number, default 0 - * @returns {number} u32 number - */ -export function crc32c(input: Buffer | string, crc?: number): number +/* eslint-disable */ + +export class ExternalObject { + readonly '': { + readonly '': unique symbol + [K: symbol]: T + } +} +export function crc32c(input: string | Buffer, initialState?: number | undefined | null): number +export function crc32(inputData: string | Buffer, initialState?: number | undefined | null): number diff --git a/packages/crc32/index.js b/packages/crc32/index.js index 3e341eda..cdc7519a 100644 --- a/packages/crc32/index.js +++ b/packages/crc32/index.js @@ -1,14 +1,198 @@ -const { loadBinding } = require('@node-rs/helper') - -const binding = loadBinding(__dirname, 'crc32', '@node-rs/crc32') - -module.exports = { - crc32: function crc32(input, crc = 0) { - const _input = Buffer.isBuffer(input) ? input : Buffer.from(input) - return binding.crc32(_input, crc) - }, - crc32c: function crc32c(input, crc = 0) { - const _input = Buffer.isBuffer(input) ? input : Buffer.from(input) - return binding.crc32c(_input, crc) - }, +const { existsSync, readFileSync } = require('fs') +const { join } = require('path') + +const { platform, arch } = process + +let nativeBinding = null +let localFileExisted = false +let isMusl = false +let loadError = null + +switch (platform) { + case 'android': + if (arch !== 'arm64') { + throw new Error(`Unsupported architecture on Android ${arch}`) + } + localFileExisted = existsSync(join(__dirname, 'crc32.android-arm64.node')) + try { + if (localFileExisted) { + nativeBinding = require('./crc32.android-arm64.node') + } else { + nativeBinding = require('@node-rs/crc32-android-arm64') + } + } catch (e) { + loadError = e + } + break + case 'win32': + switch (arch) { + case 'x64': + localFileExisted = existsSync(join(__dirname, 'crc32.win32-x64-msvc.node')) + try { + if (localFileExisted) { + nativeBinding = require('./crc32.win32-x64-msvc.node') + } else { + nativeBinding = require('@node-rs/crc32-win32-x64-msvc') + } + } catch (e) { + loadError = e + } + break + case 'ia32': + localFileExisted = existsSync(join(__dirname, 'crc32.win32-ia32-msvc.node')) + try { + if (localFileExisted) { + nativeBinding = require('./crc32.win32-ia32-msvc.node') + } else { + nativeBinding = require('@node-rs/crc32-win32-ia32-msvc') + } + } catch (e) { + loadError = e + } + break + case 'arm64': + localFileExisted = existsSync(join(__dirname, 'crc32.win32-arm64-msvc.node')) + try { + if (localFileExisted) { + nativeBinding = require('./crc32.win32-arm64-msvc.node') + } else { + nativeBinding = require('@node-rs/crc32-win32-arm64-msvc') + } + } catch (e) { + loadError = e + } + break + default: + throw new Error(`Unsupported architecture on Windows: ${arch}`) + } + break + case 'darwin': + switch (arch) { + case 'x64': + localFileExisted = existsSync(join(__dirname, 'crc32.darwin-x64.node')) + try { + if (localFileExisted) { + nativeBinding = require('./crc32.darwin-x64.node') + } else { + nativeBinding = require('@node-rs/crc32-darwin-x64') + } + } catch (e) { + loadError = e + } + break + case 'arm64': + localFileExisted = existsSync(join(__dirname, 'crc32.darwin-arm64.node')) + try { + if (localFileExisted) { + nativeBinding = require('./crc32.darwin-arm64.node') + } else { + nativeBinding = require('@node-rs/crc32-darwin-arm64') + } + } catch (e) { + loadError = e + } + break + default: + throw new Error(`Unsupported architecture on macOS: ${arch}`) + } + break + case 'freebsd': + if (arch !== 'x64') { + throw new Error(`Unsupported architecture on FreeBSD: ${arch}`) + } + localFileExisted = existsSync(join(__dirname, 'crc32.freebsd-x64.node')) + try { + if (localFileExisted) { + nativeBinding = require('./crc32.freebsd-x64.node') + } else { + nativeBinding = require('@node-rs/crc32-freebsd-x64') + } + } catch (e) { + loadError = e + } + break + case 'linux': + switch (arch) { + case 'x64': + isMusl = readFileSync('/usr/bin/ldd', 'utf8').includes('musl') + if (isMusl) { + localFileExisted = existsSync(join(__dirname, 'crc32.linux-x64-musl.node')) + try { + if (localFileExisted) { + nativeBinding = require('./crc32.linux-x64-musl.node') + } else { + nativeBinding = require('@node-rs/crc32-linux-x64-musl') + } + } catch (e) { + loadError = e + } + } else { + localFileExisted = existsSync(join(__dirname, 'crc32.linux-x64-gnu.node')) + try { + if (localFileExisted) { + nativeBinding = require('./crc32.linux-x64-gnu.node') + } else { + nativeBinding = require('@node-rs/crc32-linux-x64-gnu') + } + } catch (e) { + loadError = e + } + } + break + case 'arm64': + isMusl = readFileSync('/usr/bin/ldd', 'utf8').includes('musl') + if (isMusl) { + localFileExisted = existsSync(join(__dirname, 'crc32.linux-arm64-musl.node')) + try { + if (localFileExisted) { + nativeBinding = require('./crc32.linux-arm64-musl.node') + } else { + nativeBinding = require('@node-rs/crc32-linux-arm64-musl') + } + } catch (e) { + loadError = e + } + } else { + localFileExisted = existsSync(join(__dirname, 'crc32.linux-arm64-gnu.node')) + try { + if (localFileExisted) { + nativeBinding = require('./crc32.linux-arm64-gnu.node') + } else { + nativeBinding = require('@node-rs/crc32-linux-arm64-gnu') + } + } catch (e) { + loadError = e + } + } + break + case 'arm': + localFileExisted = existsSync(join(__dirname, 'crc32.linux-arm-gnueabihf.node')) + try { + if (localFileExisted) { + nativeBinding = require('./crc32.linux-arm-gnueabihf.node') + } else { + nativeBinding = require('@node-rs/crc32-linux-arm-gnueabihf') + } + } catch (e) { + loadError = e + } + break + default: + throw new Error(`Unsupported architecture on Linux: ${arch}`) + } + break + default: + throw new Error(`Unsupported OS: ${platform}, architecture: ${arch}`) } + +if (!nativeBinding) { + if (loadError) { + throw loadError + } + throw new Error(`Failed to load native binding`) +} + +const { crc32c, crc32 } = nativeBinding + +module.exports.crc32c = crc32c +module.exports.crc32 = crc32 diff --git a/packages/crc32/npm/android-arm-eabi/README.md b/packages/crc32/npm/android-arm-eabi/README.md new file mode 100644 index 00000000..74caa568 --- /dev/null +++ b/packages/crc32/npm/android-arm-eabi/README.md @@ -0,0 +1,3 @@ +# `@node-rs/crc32-android-arm-eabi` + +This is the **armv7-linux-androideabi** binary for `@node-rs/crc32` diff --git a/packages/crc32/npm/android-arm-eabi/package.json b/packages/crc32/npm/android-arm-eabi/package.json new file mode 100644 index 00000000..ddd04f7e --- /dev/null +++ b/packages/crc32/npm/android-arm-eabi/package.json @@ -0,0 +1,40 @@ +{ + "name": "@node-rs/crc32-android-arm-eabi", + "version": "1.2.2", + "os": [ + "android" + ], + "cpu": [ + "arm" + ], + "main": "crc32.android-arm-eabi.node", + "files": [ + "crc32.android-arm-eabi.node" + ], + "description": "SIMD crc32", + "keywords": [ + "SIMD", + "NAPI", + "napi-rs", + "node-rs", + "crc32", + "crc32c" + ], + "author": "LongYinan ", + "homepage": "https://github.com/napi-rs/node-rs", + "license": "MIT", + "engines": { + "node": ">= 10" + }, + "publishConfig": { + "registry": "https://registry.npmjs.org/", + "access": "public" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/napi-rs/node-rs.git" + }, + "bugs": { + "url": "https://github.com/napi-rs/node-rs/issues" + } +} diff --git a/packages/crc32/npm/android-arm64/package.json b/packages/crc32/npm/android-arm64/package.json index ed2d9c99..bf5b6465 100644 --- a/packages/crc32/npm/android-arm64/package.json +++ b/packages/crc32/npm/android-arm64/package.json @@ -1,12 +1,25 @@ { "name": "@node-rs/crc32-android-arm64", "version": "1.2.2", - "os": ["android"], - "cpu": ["arm64"], + "os": [ + "android" + ], + "cpu": [ + "arm64" + ], "main": "crc32.android-arm64.node", - "files": ["crc32.android-arm64.node"], + "files": [ + "crc32.android-arm64.node" + ], "description": "SIMD crc32", - "keywords": ["SIMD", "NAPI", "napi-rs", "node-rs", "crc32", "crc32c"], + "keywords": [ + "SIMD", + "NAPI", + "napi-rs", + "node-rs", + "crc32", + "crc32c" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/crc32/npm/darwin-arm64/package.json b/packages/crc32/npm/darwin-arm64/package.json index 126bb7cd..82544376 100644 --- a/packages/crc32/npm/darwin-arm64/package.json +++ b/packages/crc32/npm/darwin-arm64/package.json @@ -1,12 +1,25 @@ { "name": "@node-rs/crc32-darwin-arm64", "version": "1.2.2", - "os": ["darwin"], - "cpu": ["arm64"], + "os": [ + "darwin" + ], + "cpu": [ + "arm64" + ], "main": "crc32.darwin-arm64.node", - "files": ["crc32.darwin-arm64.node"], + "files": [ + "crc32.darwin-arm64.node" + ], "description": "SIMD crc32", - "keywords": ["SIMD", "NAPI", "napi-rs", "node-rs", "crc32", "crc32c"], + "keywords": [ + "SIMD", + "NAPI", + "napi-rs", + "node-rs", + "crc32", + "crc32c" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/crc32/npm/darwin-x64/package.json b/packages/crc32/npm/darwin-x64/package.json index ad4476ae..43f91c83 100644 --- a/packages/crc32/npm/darwin-x64/package.json +++ b/packages/crc32/npm/darwin-x64/package.json @@ -1,12 +1,25 @@ { "name": "@node-rs/crc32-darwin-x64", "version": "1.2.2", - "os": ["darwin"], - "cpu": ["x64"], + "os": [ + "darwin" + ], + "cpu": [ + "x64" + ], "main": "crc32.darwin-x64.node", - "files": ["crc32.darwin-x64.node"], + "files": [ + "crc32.darwin-x64.node" + ], "description": "SIMD crc32", - "keywords": ["SIMD", "NAPI", "napi-rs", "node-rs", "crc32", "crc32c"], + "keywords": [ + "SIMD", + "NAPI", + "napi-rs", + "node-rs", + "crc32", + "crc32c" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/crc32/npm/freebsd-x64/package.json b/packages/crc32/npm/freebsd-x64/package.json index 3002d31c..1acd2bf2 100644 --- a/packages/crc32/npm/freebsd-x64/package.json +++ b/packages/crc32/npm/freebsd-x64/package.json @@ -1,12 +1,25 @@ { "name": "@node-rs/crc32-freebsd-x64", "version": "1.2.2", - "os": ["freebsd"], - "cpu": ["x64"], + "os": [ + "freebsd" + ], + "cpu": [ + "x64" + ], "main": "crc32.freebsd-x64.node", - "files": ["crc32.freebsd-x64.node"], + "files": [ + "crc32.freebsd-x64.node" + ], "description": "SIMD crc32", - "keywords": ["SIMD", "NAPI", "napi-rs", "node-rs", "crc32", "crc32c"], + "keywords": [ + "SIMD", + "NAPI", + "napi-rs", + "node-rs", + "crc32", + "crc32c" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/crc32/npm/linux-arm-gnueabihf/package.json b/packages/crc32/npm/linux-arm-gnueabihf/package.json index 575f240f..25855030 100644 --- a/packages/crc32/npm/linux-arm-gnueabihf/package.json +++ b/packages/crc32/npm/linux-arm-gnueabihf/package.json @@ -1,12 +1,25 @@ { "name": "@node-rs/crc32-linux-arm-gnueabihf", "version": "1.2.2", - "os": ["linux"], - "cpu": ["arm"], + "os": [ + "linux" + ], + "cpu": [ + "arm" + ], "main": "crc32.linux-arm-gnueabihf.node", - "files": ["crc32.linux-arm-gnueabihf.node"], + "files": [ + "crc32.linux-arm-gnueabihf.node" + ], "description": "SIMD crc32", - "keywords": ["SIMD", "NAPI", "napi-rs", "node-rs", "crc32", "crc32c"], + "keywords": [ + "SIMD", + "NAPI", + "napi-rs", + "node-rs", + "crc32", + "crc32c" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/crc32/npm/linux-arm64-gnu/package.json b/packages/crc32/npm/linux-arm64-gnu/package.json index 45590db1..78d2c6b1 100644 --- a/packages/crc32/npm/linux-arm64-gnu/package.json +++ b/packages/crc32/npm/linux-arm64-gnu/package.json @@ -1,12 +1,25 @@ { "name": "@node-rs/crc32-linux-arm64-gnu", "version": "1.2.2", - "os": ["linux"], - "cpu": ["arm64"], + "os": [ + "linux" + ], + "cpu": [ + "arm64" + ], "main": "crc32.linux-arm64-gnu.node", - "files": ["crc32.linux-arm64-gnu.node"], + "files": [ + "crc32.linux-arm64-gnu.node" + ], "description": "SIMD crc32", - "keywords": ["SIMD", "NAPI", "napi-rs", "node-rs", "crc32", "crc32c"], + "keywords": [ + "SIMD", + "NAPI", + "napi-rs", + "node-rs", + "crc32", + "crc32c" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/crc32/npm/linux-arm64-musl/package.json b/packages/crc32/npm/linux-arm64-musl/package.json index 63496cd0..a9ef4171 100644 --- a/packages/crc32/npm/linux-arm64-musl/package.json +++ b/packages/crc32/npm/linux-arm64-musl/package.json @@ -1,12 +1,25 @@ { "name": "@node-rs/crc32-linux-arm64-musl", "version": "1.2.2", - "os": ["linux"], - "cpu": ["arm64"], + "os": [ + "linux" + ], + "cpu": [ + "arm64" + ], "main": "crc32.linux-arm64-musl.node", - "files": ["crc32.linux-arm64-musl.node"], + "files": [ + "crc32.linux-arm64-musl.node" + ], "description": "SIMD crc32", - "keywords": ["SIMD", "NAPI", "napi-rs", "node-rs", "crc32", "crc32c"], + "keywords": [ + "SIMD", + "NAPI", + "napi-rs", + "node-rs", + "crc32", + "crc32c" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/crc32/npm/linux-x64-gnu/package.json b/packages/crc32/npm/linux-x64-gnu/package.json index c8e18d0d..19cabac2 100644 --- a/packages/crc32/npm/linux-x64-gnu/package.json +++ b/packages/crc32/npm/linux-x64-gnu/package.json @@ -1,12 +1,25 @@ { "name": "@node-rs/crc32-linux-x64-gnu", "version": "1.2.2", - "os": ["linux"], - "cpu": ["x64"], + "os": [ + "linux" + ], + "cpu": [ + "x64" + ], "main": "crc32.linux-x64-gnu.node", - "files": ["crc32.linux-x64-gnu.node"], + "files": [ + "crc32.linux-x64-gnu.node" + ], "description": "SIMD crc32", - "keywords": ["SIMD", "NAPI", "napi-rs", "node-rs", "crc32", "crc32c"], + "keywords": [ + "SIMD", + "NAPI", + "napi-rs", + "node-rs", + "crc32", + "crc32c" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/crc32/npm/linux-x64-musl/package.json b/packages/crc32/npm/linux-x64-musl/package.json index f08e1dd0..48fae55e 100644 --- a/packages/crc32/npm/linux-x64-musl/package.json +++ b/packages/crc32/npm/linux-x64-musl/package.json @@ -1,12 +1,25 @@ { "name": "@node-rs/crc32-linux-x64-musl", "version": "1.2.2", - "os": ["linux"], - "cpu": ["x64"], + "os": [ + "linux" + ], + "cpu": [ + "x64" + ], "main": "crc32.linux-x64-musl.node", - "files": ["crc32.linux-x64-musl.node"], + "files": [ + "crc32.linux-x64-musl.node" + ], "description": "SIMD crc32", - "keywords": ["SIMD", "NAPI", "napi-rs", "node-rs", "crc32", "crc32c"], + "keywords": [ + "SIMD", + "NAPI", + "napi-rs", + "node-rs", + "crc32", + "crc32c" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/crc32/npm/win32-arm64-msvc/package.json b/packages/crc32/npm/win32-arm64-msvc/package.json index d24beff9..db9e5ead 100644 --- a/packages/crc32/npm/win32-arm64-msvc/package.json +++ b/packages/crc32/npm/win32-arm64-msvc/package.json @@ -1,12 +1,25 @@ { "name": "@node-rs/crc32-win32-arm64-msvc", "version": "1.2.2", - "os": ["win32"], - "cpu": ["arm64"], + "os": [ + "win32" + ], + "cpu": [ + "arm64" + ], "main": "crc32.win32-arm64-msvc.node", - "files": ["crc32.win32-arm64-msvc.node"], + "files": [ + "crc32.win32-arm64-msvc.node" + ], "description": "SIMD crc32", - "keywords": ["SIMD", "NAPI", "napi-rs", "node-rs", "crc32", "crc32c"], + "keywords": [ + "SIMD", + "NAPI", + "napi-rs", + "node-rs", + "crc32", + "crc32c" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/crc32/npm/win32-ia32-msvc/package.json b/packages/crc32/npm/win32-ia32-msvc/package.json index c011e119..7b64c63b 100644 --- a/packages/crc32/npm/win32-ia32-msvc/package.json +++ b/packages/crc32/npm/win32-ia32-msvc/package.json @@ -1,12 +1,25 @@ { "name": "@node-rs/crc32-win32-ia32-msvc", "version": "1.2.2", - "os": ["win32"], - "cpu": ["ia32"], + "os": [ + "win32" + ], + "cpu": [ + "ia32" + ], "main": "crc32.win32-ia32-msvc.node", - "files": ["crc32.win32-ia32-msvc.node"], + "files": [ + "crc32.win32-ia32-msvc.node" + ], "description": "SIMD crc32", - "keywords": ["SIMD", "NAPI", "napi-rs", "node-rs", "crc32", "crc32c"], + "keywords": [ + "SIMD", + "NAPI", + "napi-rs", + "node-rs", + "crc32", + "crc32c" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/crc32/npm/win32-x64-msvc/package.json b/packages/crc32/npm/win32-x64-msvc/package.json index fde59fcb..6ef3fe44 100644 --- a/packages/crc32/npm/win32-x64-msvc/package.json +++ b/packages/crc32/npm/win32-x64-msvc/package.json @@ -1,12 +1,25 @@ { "name": "@node-rs/crc32-win32-x64-msvc", "version": "1.2.2", - "os": ["win32"], - "cpu": ["x64"], + "os": [ + "win32" + ], + "cpu": [ + "x64" + ], "main": "crc32.win32-x64-msvc.node", - "files": ["crc32.win32-x64-msvc.node"], + "files": [ + "crc32.win32-x64-msvc.node" + ], "description": "SIMD crc32", - "keywords": ["SIMD", "NAPI", "napi-rs", "node-rs", "crc32", "crc32c"], + "keywords": [ + "SIMD", + "NAPI", + "napi-rs", + "node-rs", + "crc32", + "crc32c" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/crc32/package.json b/packages/crc32/package.json index b8b66c9f..4544d1a8 100644 --- a/packages/crc32/package.json +++ b/packages/crc32/package.json @@ -2,13 +2,24 @@ "name": "@node-rs/crc32", "version": "1.2.2", "description": "SIMD crc32", - "keywords": ["SIMD", "NAPI", "napi-rs", "node-rs", "crc32", "crc32c"], + "keywords": [ + "SIMD", + "NAPI", + "napi-rs", + "node-rs", + "crc32", + "crc32c" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", "main": "index.js", "typings": "index.d.ts", - "files": ["index.js", "index.d.ts", "LICENSE"], + "files": [ + "index.js", + "index.d.ts", + "LICENSE" + ], "napi": { "name": "crc32", "triples": { @@ -20,6 +31,7 @@ "aarch64-unknown-linux-gnu", "aarch64-apple-darwin", "aarch64-linux-android", + "armv7-linux-androideabi", "x86_64-unknown-freebsd", "aarch64-unknown-linux-musl", "aarch64-pc-windows-msvc" @@ -40,17 +52,14 @@ "scripts": { "artifacts": "napi artifacts -d ../../artifacts", "bench": "cross-env NODE_ENV=production node benchmark/crc32.js", - "build": "napi build --platform --release", - "build:debug": "napi build --platform", + "build": "napi build --platform --release --pipe \"prettier -w\"", + "build:debug": "napi build --platform --pipe \"prettier -w\"", "prepublishOnly": "napi prepublish", "version": "napi version" }, "bugs": { "url": "https://github.com/napi-rs/node-rs/issues" }, - "dependencies": { - "@node-rs/helper": "^1.2.1" - }, "devDependencies": { "@types/crc": "^3.4.0", "crc": "^3.8.0", diff --git a/packages/crc32/src/lib.rs b/packages/crc32/src/lib.rs index 25a88cbb..dfc1526b 100644 --- a/packages/crc32/src/lib.rs +++ b/packages/crc32/src/lib.rs @@ -1,34 +1,30 @@ #![deny(clippy::all)] -#![allow(clippy::nonstandard_macro_braces)] /// Explicit extern crate to use allocator. extern crate global_alloc; use crc32c::crc32c_append; use crc32fast::Hasher; -use napi::{CallContext, JsBuffer, JsNumber, JsObject, Result}; +use napi::bindgen_prelude::{Buffer, Either}; use napi_derive::*; -#[module_exports] -fn init(mut exports: JsObject) -> Result<()> { - exports.create_named_method("crc32c", crc32c)?; - exports.create_named_method("crc32", crc32)?; - Ok(()) +#[napi(js_name = "crc32c")] +pub fn crc32c(input: Either, initial_state: Option) -> u32 { + crc32c_append( + initial_state.unwrap_or(0), + match &input { + Either::A(s) => s.as_bytes(), + Either::B(b) => b.as_ref(), + }, + ) } -#[js_function(2)] -fn crc32c(ctx: CallContext) -> Result { - let input_data = ctx.get::(0)?.into_value()?; - let init_state = ctx.get::(1)?.get_uint32()?; - let result = crc32c_append(init_state, &input_data); - ctx.env.create_uint32(result) -} - -#[js_function(2)] -fn crc32(ctx: CallContext) -> Result { - let input_data = ctx.get::(0)?.into_value()?; - let init_state = ctx.get::(1)?.get_uint32()?; - let mut hasher = Hasher::new_with_initial(init_state); - hasher.update(&input_data); - ctx.env.create_uint32(hasher.finalize()) +#[napi] +pub fn crc32(input_data: Either, initial_state: Option) -> u32 { + let mut hasher = Hasher::new_with_initial(initial_state.unwrap_or(0)); + hasher.update(match &input_data { + Either::A(s) => s.as_bytes(), + Either::B(b) => b.as_ref(), + }); + hasher.finalize() } diff --git a/packages/deno-lint/Cargo.toml b/packages/deno-lint/Cargo.toml index 9228c11a..c66bf912 100644 --- a/packages/deno-lint/Cargo.toml +++ b/packages/deno-lint/Cargo.toml @@ -10,14 +10,14 @@ crate-type = ["cdylib"] [dependencies] annotate-snippets = {version = "0.9", features = ["color"]} anyhow = "1" -deno_ast = "0.5.0" -deno_lint = "0.19.0" +deno_ast = "0.7.0" +deno_lint = "0.20.1" env_logger = "0.9" global_alloc = {path = "../../crates/alloc"} globwalk = "0.8" ignore = "0.4" -napi = {version = "1", features = ["serde-json"]} -napi-derive = "1" +napi = {version = "2"} +napi-derive = {version = "2"} serde = "1" serde_json = "1" diff --git a/packages/deno-lint/index.d.ts b/packages/deno-lint/index.d.ts index e9c87c24..4675cb45 100644 --- a/packages/deno-lint/index.d.ts +++ b/packages/deno-lint/index.d.ts @@ -1,2 +1,14 @@ -export function lint(filename: string, source: string | Buffer): string[] -export function denolint(cwd: string, configPath?: string): boolean +/* eslint-disable */ + +export class ExternalObject { + readonly '': { + readonly '': unique symbol + [K: symbol]: T + } +} +export function lint( + fileName: string, + sourceCode: string | Buffer, + allRules?: boolean | undefined | null, +): Array +export function denolint(dirname: string, configPath: string): boolean diff --git a/packages/deno-lint/index.js b/packages/deno-lint/index.js index 135a37bd..0cac1edb 100644 --- a/packages/deno-lint/index.js +++ b/packages/deno-lint/index.js @@ -1,11 +1,198 @@ -const { loadBinding } = require('@node-rs/helper') +const { existsSync, readFileSync } = require('fs') +const { join } = require('path') -const binding = loadBinding(__dirname, 'deno-lint', '@node-rs/deno-lint') +const { platform, arch } = process -module.exports = { - ...binding, - lint: function lint(path, sourcecode, allRules = false) { - const source = Buffer.isBuffer(sourcecode) ? sourcecode : Buffer.from(sourcecode) - return binding.lint(path, source, allRules) - }, +let nativeBinding = null +let localFileExisted = false +let isMusl = false +let loadError = null + +switch (platform) { + case 'android': + if (arch !== 'arm64') { + throw new Error(`Unsupported architecture on Android ${arch}`) + } + localFileExisted = existsSync(join(__dirname, 'deno-lint.android-arm64.node')) + try { + if (localFileExisted) { + nativeBinding = require('./deno-lint.android-arm64.node') + } else { + nativeBinding = require('@node-rs/deno-lint-android-arm64') + } + } catch (e) { + loadError = e + } + break + case 'win32': + switch (arch) { + case 'x64': + localFileExisted = existsSync(join(__dirname, 'deno-lint.win32-x64-msvc.node')) + try { + if (localFileExisted) { + nativeBinding = require('./deno-lint.win32-x64-msvc.node') + } else { + nativeBinding = require('@node-rs/deno-lint-win32-x64-msvc') + } + } catch (e) { + loadError = e + } + break + case 'ia32': + localFileExisted = existsSync(join(__dirname, 'deno-lint.win32-ia32-msvc.node')) + try { + if (localFileExisted) { + nativeBinding = require('./deno-lint.win32-ia32-msvc.node') + } else { + nativeBinding = require('@node-rs/deno-lint-win32-ia32-msvc') + } + } catch (e) { + loadError = e + } + break + case 'arm64': + localFileExisted = existsSync(join(__dirname, 'deno-lint.win32-arm64-msvc.node')) + try { + if (localFileExisted) { + nativeBinding = require('./deno-lint.win32-arm64-msvc.node') + } else { + nativeBinding = require('@node-rs/deno-lint-win32-arm64-msvc') + } + } catch (e) { + loadError = e + } + break + default: + throw new Error(`Unsupported architecture on Windows: ${arch}`) + } + break + case 'darwin': + switch (arch) { + case 'x64': + localFileExisted = existsSync(join(__dirname, 'deno-lint.darwin-x64.node')) + try { + if (localFileExisted) { + nativeBinding = require('./deno-lint.darwin-x64.node') + } else { + nativeBinding = require('@node-rs/deno-lint-darwin-x64') + } + } catch (e) { + loadError = e + } + break + case 'arm64': + localFileExisted = existsSync(join(__dirname, 'deno-lint.darwin-arm64.node')) + try { + if (localFileExisted) { + nativeBinding = require('./deno-lint.darwin-arm64.node') + } else { + nativeBinding = require('@node-rs/deno-lint-darwin-arm64') + } + } catch (e) { + loadError = e + } + break + default: + throw new Error(`Unsupported architecture on macOS: ${arch}`) + } + break + case 'freebsd': + if (arch !== 'x64') { + throw new Error(`Unsupported architecture on FreeBSD: ${arch}`) + } + localFileExisted = existsSync(join(__dirname, 'deno-lint.freebsd-x64.node')) + try { + if (localFileExisted) { + nativeBinding = require('./deno-lint.freebsd-x64.node') + } else { + nativeBinding = require('@node-rs/deno-lint-freebsd-x64') + } + } catch (e) { + loadError = e + } + break + case 'linux': + switch (arch) { + case 'x64': + isMusl = readFileSync('/usr/bin/ldd', 'utf8').includes('musl') + if (isMusl) { + localFileExisted = existsSync(join(__dirname, 'deno-lint.linux-x64-musl.node')) + try { + if (localFileExisted) { + nativeBinding = require('./deno-lint.linux-x64-musl.node') + } else { + nativeBinding = require('@node-rs/deno-lint-linux-x64-musl') + } + } catch (e) { + loadError = e + } + } else { + localFileExisted = existsSync(join(__dirname, 'deno-lint.linux-x64-gnu.node')) + try { + if (localFileExisted) { + nativeBinding = require('./deno-lint.linux-x64-gnu.node') + } else { + nativeBinding = require('@node-rs/deno-lint-linux-x64-gnu') + } + } catch (e) { + loadError = e + } + } + break + case 'arm64': + isMusl = readFileSync('/usr/bin/ldd', 'utf8').includes('musl') + if (isMusl) { + localFileExisted = existsSync(join(__dirname, 'deno-lint.linux-arm64-musl.node')) + try { + if (localFileExisted) { + nativeBinding = require('./deno-lint.linux-arm64-musl.node') + } else { + nativeBinding = require('@node-rs/deno-lint-linux-arm64-musl') + } + } catch (e) { + loadError = e + } + } else { + localFileExisted = existsSync(join(__dirname, 'deno-lint.linux-arm64-gnu.node')) + try { + if (localFileExisted) { + nativeBinding = require('./deno-lint.linux-arm64-gnu.node') + } else { + nativeBinding = require('@node-rs/deno-lint-linux-arm64-gnu') + } + } catch (e) { + loadError = e + } + } + break + case 'arm': + localFileExisted = existsSync(join(__dirname, 'deno-lint.linux-arm-gnueabihf.node')) + try { + if (localFileExisted) { + nativeBinding = require('./deno-lint.linux-arm-gnueabihf.node') + } else { + nativeBinding = require('@node-rs/deno-lint-linux-arm-gnueabihf') + } + } catch (e) { + loadError = e + } + break + default: + throw new Error(`Unsupported architecture on Linux: ${arch}`) + } + break + default: + throw new Error(`Unsupported OS: ${platform}, architecture: ${arch}`) +} + +if (!nativeBinding) { + if (loadError) { + throw loadError + } + throw new Error(`Failed to load native binding`) } + +const { lint, denolint } = nativeBinding + +module.exports.lint = lint +module.exports.denolint = denolint diff --git a/packages/deno-lint/npm/android-arm-eabi/README.md b/packages/deno-lint/npm/android-arm-eabi/README.md new file mode 100644 index 00000000..f2c6759b --- /dev/null +++ b/packages/deno-lint/npm/android-arm-eabi/README.md @@ -0,0 +1,3 @@ +# `@node-rs/deno-lint-android-arm-eabi` + +This is the **armv7-linux-androideabi** binary for `@node-rs/deno-lint` diff --git a/packages/deno-lint/npm/android-arm-eabi/package.json b/packages/deno-lint/npm/android-arm-eabi/package.json new file mode 100644 index 00000000..2a74b78d --- /dev/null +++ b/packages/deno-lint/npm/android-arm-eabi/package.json @@ -0,0 +1,42 @@ +{ + "name": "@node-rs/deno-lint-android-arm-eabi", + "version": "1.10.3", + "os": [ + "android" + ], + "cpu": [ + "arm" + ], + "main": "deno-lint.android-arm-eabi.node", + "files": [ + "deno-lint.android-arm-eabi.node" + ], + "description": "Deno lint binding for Node.js", + "keywords": [ + "Deno", + "Lint", + "ESLint", + "node-rs", + "napi", + "N-API", + "Rust", + "napi-rs" + ], + "author": "LongYinan ", + "homepage": "https://github.com/napi-rs/node-rs", + "license": "MIT", + "engines": { + "node": ">= 10" + }, + "publishConfig": { + "registry": "https://registry.npmjs.org/", + "access": "public" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/napi-rs/node-rs.git" + }, + "bugs": { + "url": "https://github.com/napi-rs/node-rs/issues" + } +} diff --git a/packages/deno-lint/npm/android-arm64/package.json b/packages/deno-lint/npm/android-arm64/package.json index 8c51bfb1..46ceb273 100644 --- a/packages/deno-lint/npm/android-arm64/package.json +++ b/packages/deno-lint/npm/android-arm64/package.json @@ -1,12 +1,27 @@ { "name": "@node-rs/deno-lint-android-arm64", "version": "1.10.3", - "os": ["android"], - "cpu": ["arm64"], + "os": [ + "android" + ], + "cpu": [ + "arm64" + ], "main": "deno-lint.android-arm64.node", - "files": ["deno-lint.android-arm64.node"], + "files": [ + "deno-lint.android-arm64.node" + ], "description": "Deno lint binding for Node.js", - "keywords": ["Deno", "Lint", "ESLint", "node-rs", "napi", "N-API", "Rust", "napi-rs"], + "keywords": [ + "Deno", + "Lint", + "ESLint", + "node-rs", + "napi", + "N-API", + "Rust", + "napi-rs" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/deno-lint/npm/darwin-arm64/package.json b/packages/deno-lint/npm/darwin-arm64/package.json index 0c2faae0..7762d094 100644 --- a/packages/deno-lint/npm/darwin-arm64/package.json +++ b/packages/deno-lint/npm/darwin-arm64/package.json @@ -1,12 +1,27 @@ { "name": "@node-rs/deno-lint-darwin-arm64", "version": "1.10.3", - "os": ["darwin"], - "cpu": ["arm64"], + "os": [ + "darwin" + ], + "cpu": [ + "arm64" + ], "main": "deno-lint.darwin-arm64.node", - "files": ["deno-lint.darwin-arm64.node"], + "files": [ + "deno-lint.darwin-arm64.node" + ], "description": "Deno lint binding for Node.js", - "keywords": ["Deno", "Lint", "ESLint", "node-rs", "napi", "N-API", "Rust", "napi-rs"], + "keywords": [ + "Deno", + "Lint", + "ESLint", + "node-rs", + "napi", + "N-API", + "Rust", + "napi-rs" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/deno-lint/npm/darwin-x64/package.json b/packages/deno-lint/npm/darwin-x64/package.json index 52485490..b0abcab6 100644 --- a/packages/deno-lint/npm/darwin-x64/package.json +++ b/packages/deno-lint/npm/darwin-x64/package.json @@ -1,12 +1,27 @@ { "name": "@node-rs/deno-lint-darwin-x64", "version": "1.10.3", - "os": ["darwin"], - "cpu": ["x64"], + "os": [ + "darwin" + ], + "cpu": [ + "x64" + ], "main": "deno-lint.darwin-x64.node", - "files": ["deno-lint.darwin-x64.node"], + "files": [ + "deno-lint.darwin-x64.node" + ], "description": "Deno lint binding for Node.js", - "keywords": ["Deno", "Lint", "ESLint", "node-rs", "napi", "N-API", "Rust", "napi-rs"], + "keywords": [ + "Deno", + "Lint", + "ESLint", + "node-rs", + "napi", + "N-API", + "Rust", + "napi-rs" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/deno-lint/npm/freebsd-x64/package.json b/packages/deno-lint/npm/freebsd-x64/package.json index 515fc76b..cd9001d7 100644 --- a/packages/deno-lint/npm/freebsd-x64/package.json +++ b/packages/deno-lint/npm/freebsd-x64/package.json @@ -1,12 +1,27 @@ { "name": "@node-rs/deno-lint-freebsd-x64", "version": "1.10.3", - "os": ["freebsd"], - "cpu": ["x64"], + "os": [ + "freebsd" + ], + "cpu": [ + "x64" + ], "main": "deno-lint.freebsd-x64.node", - "files": ["deno-lint.freebsd-x64.node"], + "files": [ + "deno-lint.freebsd-x64.node" + ], "description": "Deno lint binding for Node.js", - "keywords": ["Deno", "Lint", "ESLint", "node-rs", "napi", "N-API", "Rust", "napi-rs"], + "keywords": [ + "Deno", + "Lint", + "ESLint", + "node-rs", + "napi", + "N-API", + "Rust", + "napi-rs" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/deno-lint/npm/linux-arm-gnueabihf/package.json b/packages/deno-lint/npm/linux-arm-gnueabihf/package.json index 6889af6c..ff0974e2 100644 --- a/packages/deno-lint/npm/linux-arm-gnueabihf/package.json +++ b/packages/deno-lint/npm/linux-arm-gnueabihf/package.json @@ -1,12 +1,27 @@ { "name": "@node-rs/deno-lint-linux-arm-gnueabihf", "version": "1.10.3", - "os": ["linux"], - "cpu": ["arm"], + "os": [ + "linux" + ], + "cpu": [ + "arm" + ], "main": "deno-lint.linux-arm-gnueabihf.node", - "files": ["deno-lint.linux-arm-gnueabihf.node"], + "files": [ + "deno-lint.linux-arm-gnueabihf.node" + ], "description": "Deno lint binding for Node.js", - "keywords": ["Deno", "Lint", "ESLint", "node-rs", "napi", "N-API", "Rust", "napi-rs"], + "keywords": [ + "Deno", + "Lint", + "ESLint", + "node-rs", + "napi", + "N-API", + "Rust", + "napi-rs" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/deno-lint/npm/linux-arm64-gnu/package.json b/packages/deno-lint/npm/linux-arm64-gnu/package.json index 73358e10..58ec58dc 100644 --- a/packages/deno-lint/npm/linux-arm64-gnu/package.json +++ b/packages/deno-lint/npm/linux-arm64-gnu/package.json @@ -1,12 +1,27 @@ { "name": "@node-rs/deno-lint-linux-arm64-gnu", "version": "1.10.3", - "os": ["linux"], - "cpu": ["arm64"], + "os": [ + "linux" + ], + "cpu": [ + "arm64" + ], "main": "deno-lint.linux-arm64-gnu.node", - "files": ["deno-lint.linux-arm64-gnu.node"], + "files": [ + "deno-lint.linux-arm64-gnu.node" + ], "description": "Deno lint binding for Node.js", - "keywords": ["Deno", "Lint", "ESLint", "node-rs", "napi", "N-API", "Rust", "napi-rs"], + "keywords": [ + "Deno", + "Lint", + "ESLint", + "node-rs", + "napi", + "N-API", + "Rust", + "napi-rs" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/deno-lint/npm/linux-arm64-musl/package.json b/packages/deno-lint/npm/linux-arm64-musl/package.json index a5aa2cdc..24bc2bc5 100644 --- a/packages/deno-lint/npm/linux-arm64-musl/package.json +++ b/packages/deno-lint/npm/linux-arm64-musl/package.json @@ -1,12 +1,27 @@ { "name": "@node-rs/deno-lint-linux-arm64-musl", "version": "1.10.3", - "os": ["linux"], - "cpu": ["arm64"], + "os": [ + "linux" + ], + "cpu": [ + "arm64" + ], "main": "deno-lint.linux-arm64-musl.node", - "files": ["deno-lint.linux-arm64-musl.node"], + "files": [ + "deno-lint.linux-arm64-musl.node" + ], "description": "Deno lint binding for Node.js", - "keywords": ["Deno", "Lint", "ESLint", "node-rs", "napi", "N-API", "Rust", "napi-rs"], + "keywords": [ + "Deno", + "Lint", + "ESLint", + "node-rs", + "napi", + "N-API", + "Rust", + "napi-rs" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/deno-lint/npm/linux-x64-gnu/package.json b/packages/deno-lint/npm/linux-x64-gnu/package.json index 38006976..618a8203 100644 --- a/packages/deno-lint/npm/linux-x64-gnu/package.json +++ b/packages/deno-lint/npm/linux-x64-gnu/package.json @@ -1,12 +1,27 @@ { "name": "@node-rs/deno-lint-linux-x64-gnu", "version": "1.10.3", - "os": ["linux"], - "cpu": ["x64"], + "os": [ + "linux" + ], + "cpu": [ + "x64" + ], "main": "deno-lint.linux-x64-gnu.node", - "files": ["deno-lint.linux-x64-gnu.node"], + "files": [ + "deno-lint.linux-x64-gnu.node" + ], "description": "Deno lint binding for Node.js", - "keywords": ["Deno", "Lint", "ESLint", "node-rs", "napi", "N-API", "Rust", "napi-rs"], + "keywords": [ + "Deno", + "Lint", + "ESLint", + "node-rs", + "napi", + "N-API", + "Rust", + "napi-rs" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/deno-lint/npm/linux-x64-musl/package.json b/packages/deno-lint/npm/linux-x64-musl/package.json index e90a01be..a735f46d 100644 --- a/packages/deno-lint/npm/linux-x64-musl/package.json +++ b/packages/deno-lint/npm/linux-x64-musl/package.json @@ -1,12 +1,27 @@ { "name": "@node-rs/deno-lint-linux-x64-musl", "version": "1.10.3", - "os": ["linux"], - "cpu": ["x64"], + "os": [ + "linux" + ], + "cpu": [ + "x64" + ], "main": "deno-lint.linux-x64-musl.node", - "files": ["deno-lint.linux-x64-musl.node"], + "files": [ + "deno-lint.linux-x64-musl.node" + ], "description": "Deno lint binding for Node.js", - "keywords": ["Deno", "Lint", "ESLint", "node-rs", "napi", "N-API", "Rust", "napi-rs"], + "keywords": [ + "Deno", + "Lint", + "ESLint", + "node-rs", + "napi", + "N-API", + "Rust", + "napi-rs" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/deno-lint/npm/win32-arm64-msvc/package.json b/packages/deno-lint/npm/win32-arm64-msvc/package.json index ff53280b..f4d625ca 100644 --- a/packages/deno-lint/npm/win32-arm64-msvc/package.json +++ b/packages/deno-lint/npm/win32-arm64-msvc/package.json @@ -1,12 +1,27 @@ { "name": "@node-rs/deno-lint-win32-arm64-msvc", "version": "1.10.3", - "os": ["win32"], - "cpu": ["arm64"], + "os": [ + "win32" + ], + "cpu": [ + "arm64" + ], "main": "deno-lint.win32-arm64-msvc.node", - "files": ["deno-lint.win32-arm64-msvc.node"], + "files": [ + "deno-lint.win32-arm64-msvc.node" + ], "description": "Deno lint binding for Node.js", - "keywords": ["Deno", "Lint", "ESLint", "node-rs", "napi", "N-API", "Rust", "napi-rs"], + "keywords": [ + "Deno", + "Lint", + "ESLint", + "node-rs", + "napi", + "N-API", + "Rust", + "napi-rs" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/deno-lint/npm/win32-ia32-msvc/package.json b/packages/deno-lint/npm/win32-ia32-msvc/package.json index 13c65fa9..6b4e42df 100644 --- a/packages/deno-lint/npm/win32-ia32-msvc/package.json +++ b/packages/deno-lint/npm/win32-ia32-msvc/package.json @@ -1,12 +1,27 @@ { "name": "@node-rs/deno-lint-win32-ia32-msvc", "version": "1.10.3", - "os": ["win32"], - "cpu": ["ia32"], + "os": [ + "win32" + ], + "cpu": [ + "ia32" + ], "main": "deno-lint.win32-ia32-msvc.node", - "files": ["deno-lint.win32-ia32-msvc.node"], + "files": [ + "deno-lint.win32-ia32-msvc.node" + ], "description": "Deno lint binding for Node.js", - "keywords": ["Deno", "Lint", "ESLint", "node-rs", "napi", "N-API", "Rust", "napi-rs"], + "keywords": [ + "Deno", + "Lint", + "ESLint", + "node-rs", + "napi", + "N-API", + "Rust", + "napi-rs" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/deno-lint/npm/win32-x64-msvc/package.json b/packages/deno-lint/npm/win32-x64-msvc/package.json index ac80a968..ab846c24 100644 --- a/packages/deno-lint/npm/win32-x64-msvc/package.json +++ b/packages/deno-lint/npm/win32-x64-msvc/package.json @@ -1,12 +1,27 @@ { "name": "@node-rs/deno-lint-win32-x64-msvc", "version": "1.10.3", - "os": ["win32"], - "cpu": ["x64"], + "os": [ + "win32" + ], + "cpu": [ + "x64" + ], "main": "deno-lint.win32-x64-msvc.node", - "files": ["deno-lint.win32-x64-msvc.node"], + "files": [ + "deno-lint.win32-x64-msvc.node" + ], "description": "Deno lint binding for Node.js", - "keywords": ["Deno", "Lint", "ESLint", "node-rs", "napi", "N-API", "Rust", "napi-rs"], + "keywords": [ + "Deno", + "Lint", + "ESLint", + "node-rs", + "napi", + "N-API", + "Rust", + "napi-rs" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/deno-lint/package.json b/packages/deno-lint/package.json index b341dc66..4075541d 100644 --- a/packages/deno-lint/package.json +++ b/packages/deno-lint/package.json @@ -2,7 +2,16 @@ "name": "@node-rs/deno-lint", "version": "1.10.3", "description": "Deno lint binding for Node.js", - "keywords": ["Deno", "Lint", "ESLint", "node-rs", "napi", "N-API", "Rust", "napi-rs"], + "keywords": [ + "Deno", + "Lint", + "ESLint", + "node-rs", + "napi", + "N-API", + "Rust", + "napi-rs" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", @@ -11,7 +20,14 @@ "denolint": "./bin.js" }, "typings": "index.d.ts", - "files": ["index.js", "index.d.ts", "bin.js", "cli.js", "webpack-loader.js", "LICENSE"], + "files": [ + "index.js", + "index.d.ts", + "bin.js", + "cli.js", + "webpack-loader.js", + "LICENSE" + ], "napi": { "name": "deno-lint", "triples": { @@ -23,6 +39,7 @@ "aarch64-unknown-linux-gnu", "aarch64-apple-darwin", "aarch64-linux-android", + "armv7-linux-androideabi", "x86_64-unknown-freebsd", "aarch64-unknown-linux-musl", "aarch64-pc-windows-msvc" @@ -43,8 +60,8 @@ "scripts": { "artifacts": "napi artifacts -d ../../artifacts", "bench": "cross-env NODE_ENV=production node benchmark/lint.js", - "build": "napi build --platform --release", - "build:debug": "napi build --platform", + "build": "napi build --platform --release --pipe \"prettier -w\"", + "build:debug": "napi build --platform --pipe \"prettier -w\"", "prepublishOnly": "napi prepublish", "version": "napi version" }, @@ -52,7 +69,6 @@ "url": "https://github.com/napi-rs/node-rs/issues" }, "dependencies": { - "@node-rs/helper": "^1.2.1", "clipanion": "^3.1.0", "loader-utils": "^3.2.0", "typanion": "^3.7.1" diff --git a/packages/deno-lint/src/lib.rs b/packages/deno-lint/src/lib.rs index e2ed7f55..2fd8bea5 100644 --- a/packages/deno-lint/src/lib.rs +++ b/packages/deno-lint/src/lib.rs @@ -1,5 +1,4 @@ #![deny(clippy::all)] -#![allow(clippy::nonstandard_macro_braces)] /// Explicit extern crate to use allocator. extern crate global_alloc; @@ -15,22 +14,12 @@ use deno_lint::linter::LinterBuilder; use deno_lint::rules::{get_all_rules, get_recommended_rules}; use ignore::types::TypesBuilder; use ignore::WalkBuilder; -use napi::{CallContext, Error, JsBoolean, JsBuffer, JsObject, JsString, Result, Status}; +use napi::bindgen_prelude::*; use napi_derive::*; mod config; mod diagnostics; -#[module_exports] -fn init(mut exports: JsObject) -> Result<()> { - env_logger::init(); - - exports.create_named_method("lint", lint)?; - exports.create_named_method("denolint", lint_command)?; - - Ok(()) -} - #[inline(always)] fn get_media_type(p: &Path) -> MediaType { match p.extension().and_then(|e| e.to_str()) { @@ -42,53 +31,52 @@ fn get_media_type(p: &Path) -> MediaType { } } -#[js_function(3)] -fn lint(ctx: CallContext) -> Result { - let file_name = ctx.get::(0)?.into_utf8()?; - let source_code = ctx.get::(1)?.into_value()?; - let all_rules = ctx.get::(2)?; +#[napi] +fn lint( + file_name: String, + source_code: Either, + all_rules: Option, +) -> Result> { + let all_rules = all_rules.unwrap_or(false); let linter = LinterBuilder::default() - .rules(if all_rules.get_value()? { + .rules(if all_rules { get_all_rules() } else { get_recommended_rules() }) - .media_type(get_media_type(Path::new(file_name.as_str()?))) + .media_type(get_media_type(Path::new(file_name.as_str()))) .ignore_diagnostic_directive("eslint-disable-next-line") .build(); - let source_string = str::from_utf8(&source_code).map_err(|e| Error { - status: Status::StringExpected, - reason: format!("Input source is not valid utf8 string {}", e), - })?; - - let file_name_ref = file_name.as_str()?; + let source_string = match &source_code { + Either::A(s) => s, + Either::B(b) => str::from_utf8(b.as_ref()).map_err(|e| { + Error::new( + Status::StringExpected, + format!("Input source is not valid utf8 string {}", e), + ) + })?, + }; let (s, file_diagnostics) = linter - .lint(file_name_ref.to_owned(), source_string.to_owned()) - .map_err(|e| Error { - status: Status::GenericFailure, - reason: format!("Lint failed: {}, at: {}", e, file_name_ref), + .lint(file_name.clone(), source_string.to_owned()) + .map_err(|e| { + Error::new( + Status::GenericFailure, + format!("Lint failed: {}, at: {}", e, file_name), + ) })?; - let mut result = ctx.env.create_array_with_length(file_diagnostics.len())?; - - let d = diagnostics::display_diagnostics(&file_diagnostics, s.source(), false); - for (index, diagnostic) in d.iter().enumerate() { - result.set_element( - index as _, - ctx.env.create_string_from_std(format!("{}", diagnostic))?, - )?; - } - - Ok(result) + Ok( + diagnostics::display_diagnostics(&file_diagnostics, s.source(), false) + .into_iter() + .map(|d| format!("{}", d)) + .collect(), + ) } -#[js_function(2)] -fn lint_command(ctx: CallContext) -> Result { - let __dirname = ctx.get::(0)?.into_utf8()?; - let config_path_js = ctx.get::(1)?.into_utf8()?; - let config_path = config_path_js.as_str()?; +#[napi] +fn denolint(__dirname: String, config_path: String) -> Result { let mut has_error = false; let cwd = env::current_dir().map_err(|e| { Error::new( @@ -145,7 +133,7 @@ fn lint_command(ctx: CallContext) -> Result { &eslint_ignore_file )) })?, - Err(_) => __dirname.as_str()?, + Err(_) => __dirname.as_str(), }, }; let mut dir_walker = WalkBuilder::new(cwd); @@ -178,14 +166,16 @@ fn lint_command(ctx: CallContext) -> Result { .to_owned(), file_content.clone(), ) - .map_err(|e| Error { - status: Status::GenericFailure, - reason: format!("Lint failed: {}, at: {:?}", e, &p), + .map_err(|e| { + Error::new( + Status::GenericFailure, + format!("Lint failed: {}, at: {:?}", e, &p), + ) })?; has_error = has_error || !file_diagnostics.is_empty(); diagnostics::display_diagnostics(&file_diagnostics, s.source(), true); } } - ctx.env.get_boolean(has_error) + Ok(has_error) } diff --git a/packages/helper/package.json b/packages/helper/package.json index f9d50f9f..83a44838 100644 --- a/packages/helper/package.json +++ b/packages/helper/package.json @@ -2,7 +2,12 @@ "name": "@node-rs/helper", "version": "1.2.1", "description": "Helper library for node-rs", - "keywords": ["N-API", "napi", "Rust", "Performance"], + "keywords": [ + "N-API", + "napi", + "Rust", + "Performance" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", @@ -12,7 +17,10 @@ "registry": "https://registry.npmjs.org/", "access": "public" }, - "files": ["lib", "LICENSE"], + "files": [ + "lib", + "LICENSE" + ], "repository": { "type": "git", "url": "git+https://github.com/napi-rs/node-rs.git" diff --git a/packages/jieba/Cargo.toml b/packages/jieba/Cargo.toml index b05182fe..abb576e0 100644 --- a/packages/jieba/Cargo.toml +++ b/packages/jieba/Cargo.toml @@ -10,8 +10,8 @@ crate-type = ["cdylib"] [dependencies] global_alloc = {path = "../../crates/alloc"} jieba-rs = {version = "0.6", features = ["default-dict", "tfidf", "textrank"]} -napi = "1" -napi-derive = "1" +napi = {version = "2"} +napi-derive = {version = "2"} once_cell = "1.8" [build-dependencies] diff --git a/packages/jieba/index.d.ts b/packages/jieba/index.d.ts index 7c381eef..17e69c5b 100644 --- a/packages/jieba/index.d.ts +++ b/packages/jieba/index.d.ts @@ -1,20 +1,24 @@ +/* eslint-disable */ + +export class ExternalObject { + readonly '': { + readonly '': unique symbol + [K: symbol]: T + } +} export function load(): void export function loadDict(dict: Buffer): void -// If you want load dict and TDIDF dict, call `loadDict` before `loadTFIDFDict` -export function loadTFIDFDict(dict: Buffer): void -export function cut(sentence: string | Buffer, hmm?: boolean): string[] +export function cut(sentence: string | Buffer, hmm?: boolean | undefined | null): string[] export function cutAll(sentence: string | Buffer): string[] - -export interface TagResult { - word: string +export function cutForSearch(sentence: string | Buffer, hmm?: boolean | undefined | null): string[] +export interface TaggedWord { tag: string + word: string } - +export function tag(sentence: string | Buffer, hmm?: boolean | undefined | null): Array export interface Keyword { keyword: string weight: number } - -export function tag(sentence: string | Buffer, hmm?: boolean): TagResult[] - -export function extract(sentence: string | Buffer, topn: number, allowedPos?: string[]): Keyword[] +export function extract(sentence: string | Buffer, topn: number, allowedPos?: string | undefined | null): Array +export function loadTFIDFDict(dict: Buffer): void diff --git a/packages/jieba/index.js b/packages/jieba/index.js index 50e7eeee..c74f4960 100644 --- a/packages/jieba/index.js +++ b/packages/jieba/index.js @@ -1,31 +1,204 @@ -const { loadBinding } = require('@node-rs/helper') +const { existsSync, readFileSync } = require('fs') +const { join } = require('path') -const native = loadBinding(__dirname, 'jieba', '@node-rs/jieba') +const { platform, arch } = process -module.exports = { - ...native, - cut: function cut(sentence, hmm = false) { - const input = Buffer.isBuffer(sentence) ? sentence : Buffer.from(sentence) - return native.cut(input, hmm).split(',') - }, - cutAll: function cutAll(sentence) { - return native.cutAll(Buffer.isBuffer(sentence) ? sentence : Buffer.from(sentence)).split(',') - }, - cutForSearch: function cutForSearch(sentence, hmm = false) { - const input = Buffer.isBuffer(sentence) ? sentence : Buffer.from(sentence) - return native.cutForSearch(input, hmm) - }, - tag: function tag(sentence, hmm = false) { - const input = Buffer.isBuffer(sentence) ? sentence : Buffer.from(sentence) - const output = native.tag(input, hmm) - return output.split(',').map((tagged) => { - const [tag, word] = tagged.split('|') - return { tag, word } - }) - }, +let nativeBinding = null +let localFileExisted = false +let isMusl = false +let loadError = null - extract: function extract(sentence, topn, allowedPos = []) { - const input = Buffer.isBuffer(sentence) ? sentence : Buffer.from(sentence) - return native.extract(input, topn, allowedPos.join(',')) - }, +switch (platform) { + case 'android': + if (arch !== 'arm64') { + throw new Error(`Unsupported architecture on Android ${arch}`) + } + localFileExisted = existsSync(join(__dirname, 'jieba.android-arm64.node')) + try { + if (localFileExisted) { + nativeBinding = require('./jieba.android-arm64.node') + } else { + nativeBinding = require('@node-rs/jieba-android-arm64') + } + } catch (e) { + loadError = e + } + break + case 'win32': + switch (arch) { + case 'x64': + localFileExisted = existsSync(join(__dirname, 'jieba.win32-x64-msvc.node')) + try { + if (localFileExisted) { + nativeBinding = require('./jieba.win32-x64-msvc.node') + } else { + nativeBinding = require('@node-rs/jieba-win32-x64-msvc') + } + } catch (e) { + loadError = e + } + break + case 'ia32': + localFileExisted = existsSync(join(__dirname, 'jieba.win32-ia32-msvc.node')) + try { + if (localFileExisted) { + nativeBinding = require('./jieba.win32-ia32-msvc.node') + } else { + nativeBinding = require('@node-rs/jieba-win32-ia32-msvc') + } + } catch (e) { + loadError = e + } + break + case 'arm64': + localFileExisted = existsSync(join(__dirname, 'jieba.win32-arm64-msvc.node')) + try { + if (localFileExisted) { + nativeBinding = require('./jieba.win32-arm64-msvc.node') + } else { + nativeBinding = require('@node-rs/jieba-win32-arm64-msvc') + } + } catch (e) { + loadError = e + } + break + default: + throw new Error(`Unsupported architecture on Windows: ${arch}`) + } + break + case 'darwin': + switch (arch) { + case 'x64': + localFileExisted = existsSync(join(__dirname, 'jieba.darwin-x64.node')) + try { + if (localFileExisted) { + nativeBinding = require('./jieba.darwin-x64.node') + } else { + nativeBinding = require('@node-rs/jieba-darwin-x64') + } + } catch (e) { + loadError = e + } + break + case 'arm64': + localFileExisted = existsSync(join(__dirname, 'jieba.darwin-arm64.node')) + try { + if (localFileExisted) { + nativeBinding = require('./jieba.darwin-arm64.node') + } else { + nativeBinding = require('@node-rs/jieba-darwin-arm64') + } + } catch (e) { + loadError = e + } + break + default: + throw new Error(`Unsupported architecture on macOS: ${arch}`) + } + break + case 'freebsd': + if (arch !== 'x64') { + throw new Error(`Unsupported architecture on FreeBSD: ${arch}`) + } + localFileExisted = existsSync(join(__dirname, 'jieba.freebsd-x64.node')) + try { + if (localFileExisted) { + nativeBinding = require('./jieba.freebsd-x64.node') + } else { + nativeBinding = require('@node-rs/jieba-freebsd-x64') + } + } catch (e) { + loadError = e + } + break + case 'linux': + switch (arch) { + case 'x64': + isMusl = readFileSync('/usr/bin/ldd', 'utf8').includes('musl') + if (isMusl) { + localFileExisted = existsSync(join(__dirname, 'jieba.linux-x64-musl.node')) + try { + if (localFileExisted) { + nativeBinding = require('./jieba.linux-x64-musl.node') + } else { + nativeBinding = require('@node-rs/jieba-linux-x64-musl') + } + } catch (e) { + loadError = e + } + } else { + localFileExisted = existsSync(join(__dirname, 'jieba.linux-x64-gnu.node')) + try { + if (localFileExisted) { + nativeBinding = require('./jieba.linux-x64-gnu.node') + } else { + nativeBinding = require('@node-rs/jieba-linux-x64-gnu') + } + } catch (e) { + loadError = e + } + } + break + case 'arm64': + isMusl = readFileSync('/usr/bin/ldd', 'utf8').includes('musl') + if (isMusl) { + localFileExisted = existsSync(join(__dirname, 'jieba.linux-arm64-musl.node')) + try { + if (localFileExisted) { + nativeBinding = require('./jieba.linux-arm64-musl.node') + } else { + nativeBinding = require('@node-rs/jieba-linux-arm64-musl') + } + } catch (e) { + loadError = e + } + } else { + localFileExisted = existsSync(join(__dirname, 'jieba.linux-arm64-gnu.node')) + try { + if (localFileExisted) { + nativeBinding = require('./jieba.linux-arm64-gnu.node') + } else { + nativeBinding = require('@node-rs/jieba-linux-arm64-gnu') + } + } catch (e) { + loadError = e + } + } + break + case 'arm': + localFileExisted = existsSync(join(__dirname, 'jieba.linux-arm-gnueabihf.node')) + try { + if (localFileExisted) { + nativeBinding = require('./jieba.linux-arm-gnueabihf.node') + } else { + nativeBinding = require('@node-rs/jieba-linux-arm-gnueabihf') + } + } catch (e) { + loadError = e + } + break + default: + throw new Error(`Unsupported architecture on Linux: ${arch}`) + } + break + default: + throw new Error(`Unsupported OS: ${platform}, architecture: ${arch}`) } + +if (!nativeBinding) { + if (loadError) { + throw loadError + } + throw new Error(`Failed to load native binding`) +} + +const { load, loadDict, cut, cutAll, cutForSearch, tag, extract, loadTFIDFDict } = nativeBinding + +module.exports.load = load +module.exports.loadDict = loadDict +module.exports.cut = cut +module.exports.cutAll = cutAll +module.exports.cutForSearch = cutForSearch +module.exports.tag = tag +module.exports.extract = extract +module.exports.loadTFIDFDict = loadTFIDFDict diff --git a/packages/jieba/npm/android-arm-eabi/README.md b/packages/jieba/npm/android-arm-eabi/README.md new file mode 100644 index 00000000..540ec7f9 --- /dev/null +++ b/packages/jieba/npm/android-arm-eabi/README.md @@ -0,0 +1,3 @@ +# `@node-rs/jieba-android-arm-eabi` + +This is the **armv7-linux-androideabi** binary for `@node-rs/jieba` diff --git a/packages/jieba/npm/android-arm-eabi/package.json b/packages/jieba/npm/android-arm-eabi/package.json new file mode 100644 index 00000000..f1f3de72 --- /dev/null +++ b/packages/jieba/npm/android-arm-eabi/package.json @@ -0,0 +1,40 @@ +{ + "name": "@node-rs/jieba-android-arm-eabi", + "version": "1.4.1", + "os": [ + "android" + ], + "cpu": [ + "arm" + ], + "main": "jieba.android-arm-eabi.node", + "files": [ + "jieba.android-arm-eabi.node" + ], + "description": "Fastest Chinese word segmentation in Node.js", + "keywords": [ + "Jieba", + "Rust", + "node-rs", + "napi", + "napi-rs", + "N-API" + ], + "author": "LongYinan ", + "homepage": "https://github.com/napi-rs/node-rs", + "license": "MIT", + "engines": { + "node": ">= 10" + }, + "publishConfig": { + "registry": "https://registry.npmjs.org/", + "access": "public" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/napi-rs/node-rs.git" + }, + "bugs": { + "url": "https://github.com/napi-rs/node-rs/issues" + } +} diff --git a/packages/jieba/npm/android-arm64/package.json b/packages/jieba/npm/android-arm64/package.json index bcea8925..342c663e 100644 --- a/packages/jieba/npm/android-arm64/package.json +++ b/packages/jieba/npm/android-arm64/package.json @@ -1,12 +1,25 @@ { "name": "@node-rs/jieba-android-arm64", "version": "1.4.1", - "os": ["android"], - "cpu": ["arm64"], + "os": [ + "android" + ], + "cpu": [ + "arm64" + ], "main": "jieba.android-arm64.node", - "files": ["jieba.android-arm64.node"], + "files": [ + "jieba.android-arm64.node" + ], "description": "Fastest Chinese word segmentation in Node.js", - "keywords": ["Jieba", "Rust", "node-rs", "napi", "napi-rs", "N-API"], + "keywords": [ + "Jieba", + "Rust", + "node-rs", + "napi", + "napi-rs", + "N-API" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/jieba/npm/darwin-arm64/package.json b/packages/jieba/npm/darwin-arm64/package.json index a3703f57..2ab259a6 100644 --- a/packages/jieba/npm/darwin-arm64/package.json +++ b/packages/jieba/npm/darwin-arm64/package.json @@ -1,12 +1,25 @@ { "name": "@node-rs/jieba-darwin-arm64", "version": "1.4.1", - "os": ["darwin"], - "cpu": ["arm64"], + "os": [ + "darwin" + ], + "cpu": [ + "arm64" + ], "main": "jieba.darwin-arm64.node", - "files": ["jieba.darwin-arm64.node"], + "files": [ + "jieba.darwin-arm64.node" + ], "description": "Fastest Chinese word segmentation in Node.js", - "keywords": ["Jieba", "Rust", "node-rs", "napi", "napi-rs", "N-API"], + "keywords": [ + "Jieba", + "Rust", + "node-rs", + "napi", + "napi-rs", + "N-API" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/jieba/npm/darwin-x64/package.json b/packages/jieba/npm/darwin-x64/package.json index 3e76422a..0f1d7e70 100644 --- a/packages/jieba/npm/darwin-x64/package.json +++ b/packages/jieba/npm/darwin-x64/package.json @@ -1,12 +1,25 @@ { "name": "@node-rs/jieba-darwin-x64", "version": "1.4.1", - "os": ["darwin"], - "cpu": ["x64"], + "os": [ + "darwin" + ], + "cpu": [ + "x64" + ], "main": "jieba.darwin-x64.node", - "files": ["jieba.darwin-x64.node"], + "files": [ + "jieba.darwin-x64.node" + ], "description": "Fastest Chinese word segmentation in Node.js", - "keywords": ["Jieba", "Rust", "node-rs", "napi", "napi-rs", "N-API"], + "keywords": [ + "Jieba", + "Rust", + "node-rs", + "napi", + "napi-rs", + "N-API" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/jieba/npm/freebsd-x64/package.json b/packages/jieba/npm/freebsd-x64/package.json index 23f7a4eb..bffae05f 100644 --- a/packages/jieba/npm/freebsd-x64/package.json +++ b/packages/jieba/npm/freebsd-x64/package.json @@ -1,12 +1,25 @@ { "name": "@node-rs/jieba-freebsd-x64", "version": "1.4.1", - "os": ["freebsd"], - "cpu": ["x64"], + "os": [ + "freebsd" + ], + "cpu": [ + "x64" + ], "main": "jieba.freebsd-x64.node", - "files": ["jieba.freebsd-x64.node"], + "files": [ + "jieba.freebsd-x64.node" + ], "description": "Fastest Chinese word segmentation in Node.js", - "keywords": ["Jieba", "Rust", "node-rs", "napi", "napi-rs", "N-API"], + "keywords": [ + "Jieba", + "Rust", + "node-rs", + "napi", + "napi-rs", + "N-API" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/jieba/npm/linux-arm-gnueabihf/package.json b/packages/jieba/npm/linux-arm-gnueabihf/package.json index 86625697..417335ca 100644 --- a/packages/jieba/npm/linux-arm-gnueabihf/package.json +++ b/packages/jieba/npm/linux-arm-gnueabihf/package.json @@ -1,12 +1,25 @@ { "name": "@node-rs/jieba-linux-arm-gnueabihf", "version": "1.4.1", - "os": ["linux"], - "cpu": ["arm"], + "os": [ + "linux" + ], + "cpu": [ + "arm" + ], "main": "jieba.linux-arm-gnueabihf.node", - "files": ["jieba.linux-arm-gnueabihf.node"], + "files": [ + "jieba.linux-arm-gnueabihf.node" + ], "description": "Fastest Chinese word segmentation in Node.js", - "keywords": ["Jieba", "Rust", "node-rs", "napi", "napi-rs", "N-API"], + "keywords": [ + "Jieba", + "Rust", + "node-rs", + "napi", + "napi-rs", + "N-API" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/jieba/npm/linux-arm64-gnu/package.json b/packages/jieba/npm/linux-arm64-gnu/package.json index 6b8dfc7b..6461e8c9 100644 --- a/packages/jieba/npm/linux-arm64-gnu/package.json +++ b/packages/jieba/npm/linux-arm64-gnu/package.json @@ -1,12 +1,25 @@ { "name": "@node-rs/jieba-linux-arm64-gnu", "version": "1.4.1", - "os": ["linux"], - "cpu": ["arm64"], + "os": [ + "linux" + ], + "cpu": [ + "arm64" + ], "main": "jieba.linux-arm64-gnu.node", - "files": ["jieba.linux-arm64-gnu.node"], + "files": [ + "jieba.linux-arm64-gnu.node" + ], "description": "Fastest Chinese word segmentation in Node.js", - "keywords": ["Jieba", "Rust", "node-rs", "napi", "napi-rs", "N-API"], + "keywords": [ + "Jieba", + "Rust", + "node-rs", + "napi", + "napi-rs", + "N-API" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/jieba/npm/linux-arm64-musl/package.json b/packages/jieba/npm/linux-arm64-musl/package.json index d0fb385f..1252dac6 100644 --- a/packages/jieba/npm/linux-arm64-musl/package.json +++ b/packages/jieba/npm/linux-arm64-musl/package.json @@ -1,12 +1,25 @@ { "name": "@node-rs/jieba-linux-arm64-musl", "version": "1.4.1", - "os": ["linux"], - "cpu": ["arm64"], + "os": [ + "linux" + ], + "cpu": [ + "arm64" + ], "main": "jieba.linux-arm64-musl.node", - "files": ["jieba.linux-arm64-musl.node"], + "files": [ + "jieba.linux-arm64-musl.node" + ], "description": "Fastest Chinese word segmentation in Node.js", - "keywords": ["Jieba", "Rust", "node-rs", "napi", "napi-rs", "N-API"], + "keywords": [ + "Jieba", + "Rust", + "node-rs", + "napi", + "napi-rs", + "N-API" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/jieba/npm/linux-x64-gnu/package.json b/packages/jieba/npm/linux-x64-gnu/package.json index 48437976..eacdabe7 100644 --- a/packages/jieba/npm/linux-x64-gnu/package.json +++ b/packages/jieba/npm/linux-x64-gnu/package.json @@ -1,12 +1,25 @@ { "name": "@node-rs/jieba-linux-x64-gnu", "version": "1.4.1", - "os": ["linux"], - "cpu": ["x64"], + "os": [ + "linux" + ], + "cpu": [ + "x64" + ], "main": "jieba.linux-x64-gnu.node", - "files": ["jieba.linux-x64-gnu.node"], + "files": [ + "jieba.linux-x64-gnu.node" + ], "description": "Fastest Chinese word segmentation in Node.js", - "keywords": ["Jieba", "Rust", "node-rs", "napi", "napi-rs", "N-API"], + "keywords": [ + "Jieba", + "Rust", + "node-rs", + "napi", + "napi-rs", + "N-API" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/jieba/npm/linux-x64-musl/package.json b/packages/jieba/npm/linux-x64-musl/package.json index d08f2c8c..cafe3196 100644 --- a/packages/jieba/npm/linux-x64-musl/package.json +++ b/packages/jieba/npm/linux-x64-musl/package.json @@ -1,12 +1,25 @@ { "name": "@node-rs/jieba-linux-x64-musl", "version": "1.4.1", - "os": ["linux"], - "cpu": ["x64"], + "os": [ + "linux" + ], + "cpu": [ + "x64" + ], "main": "jieba.linux-x64-musl.node", - "files": ["jieba.linux-x64-musl.node"], + "files": [ + "jieba.linux-x64-musl.node" + ], "description": "Fastest Chinese word segmentation in Node.js", - "keywords": ["Jieba", "Rust", "node-rs", "napi", "napi-rs", "N-API"], + "keywords": [ + "Jieba", + "Rust", + "node-rs", + "napi", + "napi-rs", + "N-API" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/jieba/npm/win32-arm64-msvc/package.json b/packages/jieba/npm/win32-arm64-msvc/package.json index 71f41f8b..7c36afc6 100644 --- a/packages/jieba/npm/win32-arm64-msvc/package.json +++ b/packages/jieba/npm/win32-arm64-msvc/package.json @@ -1,12 +1,25 @@ { "name": "@node-rs/jieba-win32-arm64-msvc", "version": "1.4.1", - "os": ["win32"], - "cpu": ["arm64"], + "os": [ + "win32" + ], + "cpu": [ + "arm64" + ], "main": "jieba.win32-arm64-msvc.node", - "files": ["jieba.win32-arm64-msvc.node"], + "files": [ + "jieba.win32-arm64-msvc.node" + ], "description": "Fastest Chinese word segmentation in Node.js", - "keywords": ["Jieba", "Rust", "node-rs", "napi", "napi-rs", "N-API"], + "keywords": [ + "Jieba", + "Rust", + "node-rs", + "napi", + "napi-rs", + "N-API" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/jieba/npm/win32-ia32-msvc/package.json b/packages/jieba/npm/win32-ia32-msvc/package.json index a2367127..08dc463e 100644 --- a/packages/jieba/npm/win32-ia32-msvc/package.json +++ b/packages/jieba/npm/win32-ia32-msvc/package.json @@ -1,12 +1,25 @@ { "name": "@node-rs/jieba-win32-ia32-msvc", "version": "1.4.1", - "os": ["win32"], - "cpu": ["ia32"], + "os": [ + "win32" + ], + "cpu": [ + "ia32" + ], "main": "jieba.win32-ia32-msvc.node", - "files": ["jieba.win32-ia32-msvc.node"], + "files": [ + "jieba.win32-ia32-msvc.node" + ], "description": "Fastest Chinese word segmentation in Node.js", - "keywords": ["Jieba", "Rust", "node-rs", "napi", "napi-rs", "N-API"], + "keywords": [ + "Jieba", + "Rust", + "node-rs", + "napi", + "napi-rs", + "N-API" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/jieba/npm/win32-x64-msvc/package.json b/packages/jieba/npm/win32-x64-msvc/package.json index 1ab85614..8c997c77 100644 --- a/packages/jieba/npm/win32-x64-msvc/package.json +++ b/packages/jieba/npm/win32-x64-msvc/package.json @@ -1,12 +1,25 @@ { "name": "@node-rs/jieba-win32-x64-msvc", "version": "1.4.1", - "os": ["win32"], - "cpu": ["x64"], + "os": [ + "win32" + ], + "cpu": [ + "x64" + ], "main": "jieba.win32-x64-msvc.node", - "files": ["jieba.win32-x64-msvc.node"], + "files": [ + "jieba.win32-x64-msvc.node" + ], "description": "Fastest Chinese word segmentation in Node.js", - "keywords": ["Jieba", "Rust", "node-rs", "napi", "napi-rs", "N-API"], + "keywords": [ + "Jieba", + "Rust", + "node-rs", + "napi", + "napi-rs", + "N-API" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/jieba/package.json b/packages/jieba/package.json index cde0b300..cd5f15b9 100644 --- a/packages/jieba/package.json +++ b/packages/jieba/package.json @@ -2,13 +2,24 @@ "name": "@node-rs/jieba", "version": "1.4.1", "description": "Fastest Chinese word segmentation in Node.js", - "keywords": ["Jieba", "Rust", "node-rs", "napi", "napi-rs", "N-API"], + "keywords": [ + "Jieba", + "Rust", + "node-rs", + "napi", + "napi-rs", + "N-API" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", "main": "index.js", "typings": "index.d.ts", - "files": ["index.js", "index.d.ts", "LICENSE"], + "files": [ + "index.js", + "index.d.ts", + "LICENSE" + ], "napi": { "name": "jieba", "triples": { @@ -20,6 +31,7 @@ "armv7-unknown-linux-gnueabihf", "aarch64-apple-darwin", "aarch64-linux-android", + "armv7-linux-androideabi", "x86_64-unknown-freebsd", "aarch64-unknown-linux-musl", "aarch64-pc-windows-msvc" @@ -40,17 +52,14 @@ "scripts": { "artifacts": "napi artifacts -d ../../artifacts", "bench": "cross-env NODE_ENV=production node benchmark/jieba.js", - "build": "napi build --platform --release", - "build:debug": "napi build --platform", + "build": "napi build --platform --release --pipe \"prettier -w\"", + "build:debug": "napi build --platform --pipe \"prettier -w\"", "prepublishOnly": "napi prepublish", "version": "napi version" }, "bugs": { "url": "https://github.com/napi-rs/node-rs/issues" }, - "dependencies": { - "@node-rs/helper": "^1.2.1" - }, "devDependencies": { "nodejieba": "^2.5.2" }, diff --git a/packages/jieba/src/lib.rs b/packages/jieba/src/lib.rs index bf0f389d..980b00fc 100644 --- a/packages/jieba/src/lib.rs +++ b/packages/jieba/src/lib.rs @@ -7,145 +7,145 @@ extern crate global_alloc; use std::str; use jieba_rs::{Jieba, KeywordExtract, TFIDF}; -use napi::{ - CallContext, Env, Error, JsBoolean, JsBuffer, JsNumber, JsObject, JsString, JsUndefined, Result, - Status, -}; +use napi::bindgen_prelude::*; use napi_derive::*; use once_cell::sync::OnceCell; static JIEBA: OnceCell = OnceCell::new(); static TFIDF_INSTANCE: OnceCell = OnceCell::new(); -#[module_exports] -fn init(mut exports: JsObject) -> Result<()> { - exports.create_named_method("load", load)?; - exports.create_named_method("loadDict", load_dict)?; - exports.create_named_method("loadTFIDFDict", load_tfidf_dict)?; - exports.create_named_method("cut", cut)?; - exports.create_named_method("cutAll", cut_all)?; - exports.create_named_method("cutForSearch", cut_for_search)?; - exports.create_named_method("tag", tag)?; - exports.create_named_method("extract", extract)?; - Ok(()) -} - -#[js_function] -fn load(ctx: CallContext) -> Result { - assert_not_init(ctx.env)?; +#[napi] +fn load() -> Result<()> { + assert_not_init()?; let _ = JIEBA.get_or_init(Jieba::new); - ctx.env.get_undefined() + Ok(()) } -#[js_function(1)] -fn load_dict(ctx: CallContext) -> Result { - assert_not_init(ctx.env)?; - let dict = ctx.get::(0)?.into_value()?; +#[napi] +fn load_dict(dict: Buffer) -> Result<()> { + assert_not_init()?; let mut readable_dict: &[u8] = &dict; JIEBA.get_or_init(|| { let mut jieba = Jieba::new(); jieba .load_dict(&mut readable_dict) .map_err(|_| { - ctx.env.throw_error("Load dict failed", None).unwrap(); + Error::from_reason("Load dict failed".to_owned()); }) .unwrap(); jieba }); - ctx.env.get_undefined() + Ok(()) } #[inline] -fn assert_not_init(env: &Env) -> Result<()> { +fn assert_not_init() -> Result<()> { if JIEBA.get().is_some() { - env.throw_error("Jieba was loaded, could not load again", None) + Err(Error::from_reason( + "Jieba was loaded, could not load again".to_owned(), + )) } else { Ok(()) } } -#[js_function(2)] -fn cut(ctx: CallContext) -> Result { - let sentence = ctx.get::(0)?.into_value()?; - let hmm = ctx - .get::(1) - .or_else(|_| ctx.env.get_boolean(false))?; +#[napi(ts_return_type = "string[]")] +fn cut(env: Env, sentence: Either, hmm: Option) -> Result { + let hmm = hmm.unwrap_or(false); let jieba = JIEBA.get_or_init(Jieba::new); let cutted = jieba.cut( - str::from_utf8(&sentence).map_err(|_| Error::from_status(Status::InvalidArg))?, - hmm.get_value()?, + match &sentence { + Either::A(s) => s.as_str(), + Either::B(b) => { + str::from_utf8(b.as_ref()).map_err(|_| Error::from_status(Status::InvalidArg))? + } + }, + hmm, ); - - let output = cutted.join(","); - - ctx.env.create_string(output.as_str()) + Array::from_vec(&env, cutted) } -#[js_function(1)] -fn cut_all(ctx: CallContext) -> Result { - let sentence = ctx.get::(0)?.into_value()?; +#[napi(ts_return_type = "string[]")] +fn cut_all(env: Env, sentence: Either) -> Result { let jieba = JIEBA.get_or_init(Jieba::new); - let cutted = - jieba.cut_all(str::from_utf8(&sentence).map_err(|_| Error::from_status(Status::InvalidArg))?); - - let output = cutted.join(","); + let cutted = jieba.cut_all(match &sentence { + Either::A(s) => s.as_str(), + Either::B(b) => { + str::from_utf8(b.as_ref()).map_err(|_| Error::from_status(Status::InvalidArg))? + } + }); - ctx.env.create_string(output.as_str()) + Array::from_vec(&env, cutted) } -#[js_function(2)] -fn cut_for_search(ctx: CallContext) -> Result { - let sentence = ctx.get::(0)?.into_value()?; - let hmm = ctx - .get::(1) - .or_else(|_| ctx.env.get_boolean(false))?; +#[napi(ts_return_type = "string[]")] +fn cut_for_search(env: Env, sentence: Either, hmm: Option) -> Result { + let hmm = hmm.unwrap_or(false); let jieba = JIEBA.get_or_init(Jieba::new); let cutted = jieba.cut_for_search( - str::from_utf8(&sentence).map_err(|_| Error::from_status(Status::InvalidArg))?, - hmm.get_value()?, + match &sentence { + Either::A(s) => s.as_str(), + Either::B(b) => { + str::from_utf8(b.as_ref()).map_err(|_| Error::from_status(Status::InvalidArg))? + } + }, + hmm, ); - let output = cutted.join(","); + Array::from_vec(&env, cutted) +} - ctx.env.create_string(output.as_str()) +#[napi(object)] +struct TaggedWord { + pub tag: String, + pub word: String, } -#[js_function(1)] -fn tag(ctx: CallContext) -> Result { - let sentence = ctx.get::(0)?.into_value()?; - let hmm = ctx - .get::(1) - .or_else(|_| ctx.env.get_boolean(false))?; +#[napi] +fn tag(sentence: Either, hmm: Option) -> Result> { let jieba = JIEBA.get_or_init(Jieba::new); let tagged = jieba.tag( - str::from_utf8(&sentence).map_err(|_| Error::from_status(Status::InvalidArg))?, - hmm.get_value()?, + match &sentence { + Either::A(s) => s.as_str(), + Either::B(b) => { + str::from_utf8(b.as_ref()).map_err(|_| Error::from_status(Status::InvalidArg))? + } + }, + hmm.unwrap_or(false), ); - let mut buf = vec![]; - - for tag in tagged { - buf.push(format!("{}|{}", tag.tag, tag.word)); - } - - ctx.env.create_string(buf.join(",").as_str()) + Ok( + tagged + .iter() + .map(|t| TaggedWord { + tag: t.tag.to_owned(), + word: t.word.to_owned(), + }) + .collect(), + ) } -#[js_function(3)] -fn extract(ctx: CallContext) -> Result { - let sentence = ctx.get::(0)?.into_value()?; - let topn = ctx.get::(1)?; - let allowed_pos = ctx - .get::(2) - .or_else(|_| ctx.env.create_string(""))? - .into_utf8()?; +#[napi(object)] +pub struct Keyword { + pub keyword: String, + pub weight: f64, +} - let allowed_pos_str = allowed_pos.as_str()?; +#[napi] +fn extract( + sentence: Either, + topn: u32, + allowed_pos: Option, +) -> Result> { + let allowed_pos_string = allowed_pos.unwrap_or_else(|| "".to_owned()); - let allowed_pos: Vec = if allowed_pos_str.is_empty() { + let allowed_pos: Vec = if allowed_pos_string.is_empty() { vec![] } else { - allowed_pos_str.split(',').map(|s| s.to_owned()).collect() + allowed_pos_string + .split(',') + .map(|s| s.to_owned()) + .collect() }; let keyword_extractor = TFIDF_INSTANCE.get_or_init(|| { @@ -153,33 +153,30 @@ fn extract(ctx: CallContext) -> Result { TFIDF::new_with_jieba(jieba) }); - let topn: u32 = topn.get_uint32()?; - let tags = keyword_extractor.extract_tags( - str::from_utf8(&sentence).map_err(|_| Error::from_status(Status::InvalidArg))?, + match &sentence { + Either::A(s) => s.as_str(), + Either::B(b) => { + str::from_utf8(b.as_ref()).map_err(|_| Error::from_status(Status::InvalidArg))? + } + }, topn as usize, allowed_pos, ); - let mut js_tags = ctx.env.create_array_with_length(tags.len())?; - - for (index, t) in tags.iter().enumerate() { - let mut tag_value = ctx.env.create_object()?; - tag_value.set_named_property("keyword", ctx.env.create_string(t.keyword.as_str())?)?; - tag_value.set_named_property("weight", ctx.env.create_double(t.weight)?)?; - js_tags.set_element(index as _, tag_value)?; - } - Ok(js_tags) -} - -#[js_function] -fn insert_word(ctx: CallContext) -> Result { - ctx.env.get_undefined() + Ok( + tags + .into_iter() + .map(|tag| Keyword { + keyword: tag.keyword, + weight: tag.weight, + }) + .collect::>(), + ) } -#[js_function(1)] -fn load_tfidf_dict(ctx: CallContext) -> Result { - let dict = ctx.get::(0)?.into_value()?; +#[napi(js_name = "loadTFIDFDict")] +fn load_tfidf_dict(dict: Buffer) -> Result<()> { let mut readable_dict: &[u8] = &dict; if TFIDF_INSTANCE.get().is_some() { return Err(Error::new( @@ -195,6 +192,5 @@ fn load_tfidf_dict(ctx: CallContext) -> Result { .map(|_| tfidf) .map_err(|e| Error::new(Status::GenericFailure, format!("{}", e))) })?; - - ctx.env.get_undefined() + Ok(()) } diff --git a/packages/xxhash/Cargo.toml b/packages/xxhash/Cargo.toml index 5ebd8b81..f70e484c 100644 --- a/packages/xxhash/Cargo.toml +++ b/packages/xxhash/Cargo.toml @@ -9,8 +9,8 @@ crate-type = ["cdylib"] [dependencies] global_alloc = {path = "../../crates/alloc"} -napi = {version = "1", features = ["napi6"]} -napi-derive = "1" +napi = {version = "2", features = ["napi6"]} +napi-derive = {version = "2"} xxhash-rust = {version = "0.8", features = ["xxh32", "xxh64", "xxh3"]} [build-dependencies] diff --git a/packages/xxhash/index.d.ts b/packages/xxhash/index.d.ts index 0a54696a..02bb392c 100644 --- a/packages/xxhash/index.d.ts +++ b/packages/xxhash/index.d.ts @@ -1,42 +1,35 @@ -export type BufferLike = - | Buffer - | string - | Uint8Array - | ArrayBuffer - | SharedArrayBuffer - | ReadonlyArray - | number[] - -export function xxh32(input: BufferLike, seed?: number): number -export function xxh64(input: BufferLike, seed?: BigInt): BigInt +/* eslint-disable */ +export class ExternalObject { + readonly '': { + readonly '': unique symbol + [K: symbol]: T + } +} +export function xxh32(input: string | Buffer, seed?: number | undefined | null): number +export function xxh64(input: string | Buffer, seed?: BigInt | undefined | null): BigInt export class Xxh32 { - constructor(seed?: number) - update(input: BufferLike): this + constructor(seed?: number | undefined | null) + update(input: string | Buffer): this digest(): number - reset(): void + reset(newState?: number | undefined | null): void } - export class Xxh64 { - constructor(seed?: BigInt) - update(input: BufferLike): this + constructor(seed?: BigInt | undefined | null) + update(input: string | Buffer): this digest(): BigInt - reset(): void + reset(newState?: BigInt | undefined | null): void } - -export class Xxh3 { - static withSeed(seed?: BigInt): Xxh3 - static withSecret(secret: BufferLike): Xxh3 - private constructor() - update(input: BufferLike): this - digest(): BigInt - reset(): void -} - -export const xxh3: { - xxh64: (input: BufferLike, seed?: BigInt) => BigInt - xxh64WithSecret: (input: BufferLike, secret: BufferLike) => BigInt - xxh128: (input: BufferLike, seed?: BigInt) => BigInt - xxh128WithSecret: (input: BufferLike, secret: BufferLike) => BigInt - Xxh3: typeof Xxh3 +export namespace xxh3 { + export function xxh64(input: string | Buffer, seed?: BigInt | undefined | null): BigInt + export function xxh64WithSecret(input: string | Buffer, secret: Buffer): BigInt + export function xxh128(input: string | Buffer, seed?: BigInt | undefined | null): BigInt + export function xxh128WithSecret(input: string | Buffer, secret: Buffer): BigInt + export class Xxh3 { + static withSeed(seed?: BigInt | undefined | null): Xxh3 + static withSecret(secret: Buffer): Xxh3 + update(input: string | Buffer): this + digest(): BigInt + reset(): void + } } diff --git a/packages/xxhash/index.js b/packages/xxhash/index.js index d3d6d552..1ca805d7 100644 --- a/packages/xxhash/index.js +++ b/packages/xxhash/index.js @@ -1,64 +1,201 @@ -const { loadBinding } = require('@node-rs/helper') +const { existsSync, readFileSync } = require('fs') +const { join } = require('path') -const { - xxh32: _xxh32, - xxh64: _xxh64, - Xxh32: _Xxh32, - Xxh64: _Xxh64, - xxh3, -} = loadBinding(__dirname, 'xxhash', '@node-rs/xxhash') +const { platform, arch } = process -class Xxh3 { - update(data) { - return xxh3.update.call(this, Buffer.from(data)) - } -} +let nativeBinding = null +let localFileExisted = false +let isMusl = false +let loadError = null -Xxh3.withSecret = function withSecret(secret) { - const instance = new Xxh3() - xxh3.createXxh3WithSecret(instance, Buffer.from(secret)) - return instance +switch (platform) { + case 'android': + if (arch !== 'arm64') { + throw new Error(`Unsupported architecture on Android ${arch}`) + } + localFileExisted = existsSync(join(__dirname, 'xxhash.android-arm64.node')) + try { + if (localFileExisted) { + nativeBinding = require('./xxhash.android-arm64.node') + } else { + nativeBinding = require('@node-rs/xxhash-android-arm64') + } + } catch (e) { + loadError = e + } + break + case 'win32': + switch (arch) { + case 'x64': + localFileExisted = existsSync(join(__dirname, 'xxhash.win32-x64-msvc.node')) + try { + if (localFileExisted) { + nativeBinding = require('./xxhash.win32-x64-msvc.node') + } else { + nativeBinding = require('@node-rs/xxhash-win32-x64-msvc') + } + } catch (e) { + loadError = e + } + break + case 'ia32': + localFileExisted = existsSync(join(__dirname, 'xxhash.win32-ia32-msvc.node')) + try { + if (localFileExisted) { + nativeBinding = require('./xxhash.win32-ia32-msvc.node') + } else { + nativeBinding = require('@node-rs/xxhash-win32-ia32-msvc') + } + } catch (e) { + loadError = e + } + break + case 'arm64': + localFileExisted = existsSync(join(__dirname, 'xxhash.win32-arm64-msvc.node')) + try { + if (localFileExisted) { + nativeBinding = require('./xxhash.win32-arm64-msvc.node') + } else { + nativeBinding = require('@node-rs/xxhash-win32-arm64-msvc') + } + } catch (e) { + loadError = e + } + break + default: + throw new Error(`Unsupported architecture on Windows: ${arch}`) + } + break + case 'darwin': + switch (arch) { + case 'x64': + localFileExisted = existsSync(join(__dirname, 'xxhash.darwin-x64.node')) + try { + if (localFileExisted) { + nativeBinding = require('./xxhash.darwin-x64.node') + } else { + nativeBinding = require('@node-rs/xxhash-darwin-x64') + } + } catch (e) { + loadError = e + } + break + case 'arm64': + localFileExisted = existsSync(join(__dirname, 'xxhash.darwin-arm64.node')) + try { + if (localFileExisted) { + nativeBinding = require('./xxhash.darwin-arm64.node') + } else { + nativeBinding = require('@node-rs/xxhash-darwin-arm64') + } + } catch (e) { + loadError = e + } + break + default: + throw new Error(`Unsupported architecture on macOS: ${arch}`) + } + break + case 'freebsd': + if (arch !== 'x64') { + throw new Error(`Unsupported architecture on FreeBSD: ${arch}`) + } + localFileExisted = existsSync(join(__dirname, 'xxhash.freebsd-x64.node')) + try { + if (localFileExisted) { + nativeBinding = require('./xxhash.freebsd-x64.node') + } else { + nativeBinding = require('@node-rs/xxhash-freebsd-x64') + } + } catch (e) { + loadError = e + } + break + case 'linux': + switch (arch) { + case 'x64': + isMusl = readFileSync('/usr/bin/ldd', 'utf8').includes('musl') + if (isMusl) { + localFileExisted = existsSync(join(__dirname, 'xxhash.linux-x64-musl.node')) + try { + if (localFileExisted) { + nativeBinding = require('./xxhash.linux-x64-musl.node') + } else { + nativeBinding = require('@node-rs/xxhash-linux-x64-musl') + } + } catch (e) { + loadError = e + } + } else { + localFileExisted = existsSync(join(__dirname, 'xxhash.linux-x64-gnu.node')) + try { + if (localFileExisted) { + nativeBinding = require('./xxhash.linux-x64-gnu.node') + } else { + nativeBinding = require('@node-rs/xxhash-linux-x64-gnu') + } + } catch (e) { + loadError = e + } + } + break + case 'arm64': + isMusl = readFileSync('/usr/bin/ldd', 'utf8').includes('musl') + if (isMusl) { + localFileExisted = existsSync(join(__dirname, 'xxhash.linux-arm64-musl.node')) + try { + if (localFileExisted) { + nativeBinding = require('./xxhash.linux-arm64-musl.node') + } else { + nativeBinding = require('@node-rs/xxhash-linux-arm64-musl') + } + } catch (e) { + loadError = e + } + } else { + localFileExisted = existsSync(join(__dirname, 'xxhash.linux-arm64-gnu.node')) + try { + if (localFileExisted) { + nativeBinding = require('./xxhash.linux-arm64-gnu.node') + } else { + nativeBinding = require('@node-rs/xxhash-linux-arm64-gnu') + } + } catch (e) { + loadError = e + } + } + break + case 'arm': + localFileExisted = existsSync(join(__dirname, 'xxhash.linux-arm-gnueabihf.node')) + try { + if (localFileExisted) { + nativeBinding = require('./xxhash.linux-arm-gnueabihf.node') + } else { + nativeBinding = require('@node-rs/xxhash-linux-arm-gnueabihf') + } + } catch (e) { + loadError = e + } + break + default: + throw new Error(`Unsupported architecture on Linux: ${arch}`) + } + break + default: + throw new Error(`Unsupported OS: ${platform}, architecture: ${arch}`) } -Xxh3.withSeed = function withSeed(seed = BigInt(0)) { - const instance = new Xxh3() - xxh3.createXxh3WithSeed(instance, seed) - return instance +if (!nativeBinding) { + if (loadError) { + throw loadError + } + throw new Error(`Failed to load native binding`) } -Xxh3.prototype.digest = xxh3.digest -Xxh3.prototype.reset = xxh3.reset +const { xxh32, Xxh32, xxh64, Xxh64, xxh3 } = nativeBinding -module.exports = { - xxh32: function xxh32(input, seed) { - return _xxh32(Buffer.isBuffer(input) ? input : Buffer.from(input), seed == null ? 0 : seed) - }, - xxh64: function xxh64(input, seed) { - return _xxh64(Buffer.isBuffer(input) ? input : Buffer.from(input), seed == null ? BigInt(0) : seed) - }, - Xxh32: class Xxh32 extends _Xxh32 { - update(input) { - return super.update(Buffer.isBuffer(input) ? input : Buffer.from(input)) - } - }, - Xxh64: class Xxh64 extends _Xxh64 { - update(input) { - return super.update(Buffer.isBuffer(input) ? input : Buffer.from(input)) - } - }, - xxh3: { - xxh64: function xxh64(input, seed) { - return xxh3.xxh64(Buffer.isBuffer(input) ? input : Buffer.from(input), seed == null ? BigInt(0) : seed) - }, - xxh64WithSecret(input, secret) { - return xxh3.xxh64WithSecret(Buffer.isBuffer(input) ? input : Buffer.from(input), Buffer.from(secret)) - }, - xxh128: function xxh128(input, seed) { - return xxh3.xxh128(Buffer.isBuffer(input) ? input : Buffer.from(input), seed == null ? BigInt(0) : seed) - }, - xxh128WithSecret(input, secret) { - return xxh3.xxh128WithSecret(Buffer.isBuffer(input) ? input : Buffer.from(input), Buffer.from(secret)) - }, - Xxh3, - }, -} +module.exports.xxh32 = xxh32 +module.exports.Xxh32 = Xxh32 +module.exports.xxh64 = xxh64 +module.exports.Xxh64 = Xxh64 +module.exports.xxh3 = xxh3 diff --git a/packages/xxhash/npm/android-arm-eabi/README.md b/packages/xxhash/npm/android-arm-eabi/README.md new file mode 100644 index 00000000..2dc7093e --- /dev/null +++ b/packages/xxhash/npm/android-arm-eabi/README.md @@ -0,0 +1,3 @@ +# `@node-rs/xxhash-android-arm-eabi` + +This is the **armv7-linux-androideabi** binary for `@node-rs/xxhash` diff --git a/packages/xxhash/npm/android-arm-eabi/package.json b/packages/xxhash/npm/android-arm-eabi/package.json new file mode 100644 index 00000000..bf45b95a --- /dev/null +++ b/packages/xxhash/npm/android-arm-eabi/package.json @@ -0,0 +1,43 @@ +{ + "name": "@node-rs/xxhash-android-arm-eabi", + "version": "1.0.1", + "os": [ + "android" + ], + "cpu": [ + "arm" + ], + "main": "xxhash.android-arm-eabi.node", + "files": [ + "xxhash.android-arm-eabi.node" + ], + "description": "Fastest xxhash implementation in Node.js", + "keywords": [ + "hash", + "xxhash", + "xxhashjs", + "Rust", + "node-rs", + "napi", + "napi-rs", + "N-API", + "Node-API" + ], + "author": "LongYinan ", + "homepage": "https://github.com/napi-rs/node-rs", + "license": "MIT", + "engines": { + "node": ">= 12" + }, + "publishConfig": { + "registry": "https://registry.npmjs.org/", + "access": "public" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/napi-rs/node-rs.git" + }, + "bugs": { + "url": "https://github.com/napi-rs/node-rs/issues" + } +} diff --git a/packages/xxhash/npm/android-arm64/package.json b/packages/xxhash/npm/android-arm64/package.json index dab5d788..9a507229 100644 --- a/packages/xxhash/npm/android-arm64/package.json +++ b/packages/xxhash/npm/android-arm64/package.json @@ -1,12 +1,28 @@ { "name": "@node-rs/xxhash-android-arm64", "version": "1.0.1", - "os": ["android"], - "cpu": ["arm64"], + "os": [ + "android" + ], + "cpu": [ + "arm64" + ], "main": "xxhash.android-arm64.node", - "files": ["xxhash.android-arm64.node"], + "files": [ + "xxhash.android-arm64.node" + ], "description": "Fastest xxhash implementation in Node.js", - "keywords": ["hash", "xxhash", "xxhashjs", "Rust", "node-rs", "napi", "napi-rs", "N-API", "Node-API"], + "keywords": [ + "hash", + "xxhash", + "xxhashjs", + "Rust", + "node-rs", + "napi", + "napi-rs", + "N-API", + "Node-API" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/xxhash/npm/darwin-arm64/package.json b/packages/xxhash/npm/darwin-arm64/package.json index 690dbdf6..2a3d99c3 100644 --- a/packages/xxhash/npm/darwin-arm64/package.json +++ b/packages/xxhash/npm/darwin-arm64/package.json @@ -1,12 +1,28 @@ { "name": "@node-rs/xxhash-darwin-arm64", "version": "1.0.1", - "os": ["darwin"], - "cpu": ["arm64"], + "os": [ + "darwin" + ], + "cpu": [ + "arm64" + ], "main": "xxhash.darwin-arm64.node", - "files": ["xxhash.darwin-arm64.node"], + "files": [ + "xxhash.darwin-arm64.node" + ], "description": "Fastest xxhash implementation in Node.js", - "keywords": ["hash", "xxhash", "xxhashjs", "Rust", "node-rs", "napi", "napi-rs", "N-API", "Node-API"], + "keywords": [ + "hash", + "xxhash", + "xxhashjs", + "Rust", + "node-rs", + "napi", + "napi-rs", + "N-API", + "Node-API" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/xxhash/npm/darwin-x64/package.json b/packages/xxhash/npm/darwin-x64/package.json index 8afe705d..205b6cf9 100644 --- a/packages/xxhash/npm/darwin-x64/package.json +++ b/packages/xxhash/npm/darwin-x64/package.json @@ -1,12 +1,28 @@ { "name": "@node-rs/xxhash-darwin-x64", "version": "1.0.1", - "os": ["darwin"], - "cpu": ["x64"], + "os": [ + "darwin" + ], + "cpu": [ + "x64" + ], "main": "xxhash.darwin-x64.node", - "files": ["xxhash.darwin-x64.node"], + "files": [ + "xxhash.darwin-x64.node" + ], "description": "Fastest xxhash implementation in Node.js", - "keywords": ["hash", "xxhash", "xxhashjs", "Rust", "node-rs", "napi", "napi-rs", "N-API", "Node-API"], + "keywords": [ + "hash", + "xxhash", + "xxhashjs", + "Rust", + "node-rs", + "napi", + "napi-rs", + "N-API", + "Node-API" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/xxhash/npm/freebsd-x64/package.json b/packages/xxhash/npm/freebsd-x64/package.json index 2b9a812c..d7aab977 100644 --- a/packages/xxhash/npm/freebsd-x64/package.json +++ b/packages/xxhash/npm/freebsd-x64/package.json @@ -1,12 +1,28 @@ { "name": "@node-rs/xxhash-freebsd-x64", "version": "1.0.1", - "os": ["freebsd"], - "cpu": ["x64"], + "os": [ + "freebsd" + ], + "cpu": [ + "x64" + ], "main": "xxhash.freebsd-x64.node", - "files": ["xxhash.freebsd-x64.node"], + "files": [ + "xxhash.freebsd-x64.node" + ], "description": "Fastest xxhash implementation in Node.js", - "keywords": ["hash", "xxhash", "xxhashjs", "Rust", "node-rs", "napi", "napi-rs", "N-API", "Node-API"], + "keywords": [ + "hash", + "xxhash", + "xxhashjs", + "Rust", + "node-rs", + "napi", + "napi-rs", + "N-API", + "Node-API" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/xxhash/npm/linux-arm-gnueabihf/package.json b/packages/xxhash/npm/linux-arm-gnueabihf/package.json index 7dd6595b..4ba88c7c 100644 --- a/packages/xxhash/npm/linux-arm-gnueabihf/package.json +++ b/packages/xxhash/npm/linux-arm-gnueabihf/package.json @@ -1,12 +1,28 @@ { "name": "@node-rs/xxhash-linux-arm-gnueabihf", "version": "1.0.1", - "os": ["linux"], - "cpu": ["arm"], + "os": [ + "linux" + ], + "cpu": [ + "arm" + ], "main": "xxhash.linux-arm-gnueabihf.node", - "files": ["xxhash.linux-arm-gnueabihf.node"], + "files": [ + "xxhash.linux-arm-gnueabihf.node" + ], "description": "Fastest xxhash implementation in Node.js", - "keywords": ["hash", "xxhash", "xxhashjs", "Rust", "node-rs", "napi", "napi-rs", "N-API", "Node-API"], + "keywords": [ + "hash", + "xxhash", + "xxhashjs", + "Rust", + "node-rs", + "napi", + "napi-rs", + "N-API", + "Node-API" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/xxhash/npm/linux-arm64-gnu/package.json b/packages/xxhash/npm/linux-arm64-gnu/package.json index d3c5cda8..0bdcf2b5 100644 --- a/packages/xxhash/npm/linux-arm64-gnu/package.json +++ b/packages/xxhash/npm/linux-arm64-gnu/package.json @@ -1,12 +1,28 @@ { "name": "@node-rs/xxhash-linux-arm64-gnu", "version": "1.0.1", - "os": ["linux"], - "cpu": ["arm64"], + "os": [ + "linux" + ], + "cpu": [ + "arm64" + ], "main": "xxhash.linux-arm64-gnu.node", - "files": ["xxhash.linux-arm64-gnu.node"], + "files": [ + "xxhash.linux-arm64-gnu.node" + ], "description": "Fastest xxhash implementation in Node.js", - "keywords": ["hash", "xxhash", "xxhashjs", "Rust", "node-rs", "napi", "napi-rs", "N-API", "Node-API"], + "keywords": [ + "hash", + "xxhash", + "xxhashjs", + "Rust", + "node-rs", + "napi", + "napi-rs", + "N-API", + "Node-API" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/xxhash/npm/linux-arm64-musl/package.json b/packages/xxhash/npm/linux-arm64-musl/package.json index a43a113a..7778d88f 100644 --- a/packages/xxhash/npm/linux-arm64-musl/package.json +++ b/packages/xxhash/npm/linux-arm64-musl/package.json @@ -1,12 +1,28 @@ { "name": "@node-rs/xxhash-linux-arm64-musl", "version": "1.0.1", - "os": ["linux"], - "cpu": ["arm64"], + "os": [ + "linux" + ], + "cpu": [ + "arm64" + ], "main": "xxhash.linux-arm64-musl.node", - "files": ["xxhash.linux-arm64-musl.node"], + "files": [ + "xxhash.linux-arm64-musl.node" + ], "description": "Fastest xxhash implementation in Node.js", - "keywords": ["hash", "xxhash", "xxhashjs", "Rust", "node-rs", "napi", "napi-rs", "N-API", "Node-API"], + "keywords": [ + "hash", + "xxhash", + "xxhashjs", + "Rust", + "node-rs", + "napi", + "napi-rs", + "N-API", + "Node-API" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/xxhash/npm/linux-x64-gnu/package.json b/packages/xxhash/npm/linux-x64-gnu/package.json index 459dd355..cee47886 100644 --- a/packages/xxhash/npm/linux-x64-gnu/package.json +++ b/packages/xxhash/npm/linux-x64-gnu/package.json @@ -1,12 +1,28 @@ { "name": "@node-rs/xxhash-linux-x64-gnu", "version": "1.0.1", - "os": ["linux"], - "cpu": ["x64"], + "os": [ + "linux" + ], + "cpu": [ + "x64" + ], "main": "xxhash.linux-x64-gnu.node", - "files": ["xxhash.linux-x64-gnu.node"], + "files": [ + "xxhash.linux-x64-gnu.node" + ], "description": "Fastest xxhash implementation in Node.js", - "keywords": ["hash", "xxhash", "xxhashjs", "Rust", "node-rs", "napi", "napi-rs", "N-API", "Node-API"], + "keywords": [ + "hash", + "xxhash", + "xxhashjs", + "Rust", + "node-rs", + "napi", + "napi-rs", + "N-API", + "Node-API" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/xxhash/npm/linux-x64-musl/package.json b/packages/xxhash/npm/linux-x64-musl/package.json index e069524d..3c5cc718 100644 --- a/packages/xxhash/npm/linux-x64-musl/package.json +++ b/packages/xxhash/npm/linux-x64-musl/package.json @@ -1,12 +1,28 @@ { "name": "@node-rs/xxhash-linux-x64-musl", "version": "1.0.1", - "os": ["linux"], - "cpu": ["x64"], + "os": [ + "linux" + ], + "cpu": [ + "x64" + ], "main": "xxhash.linux-x64-musl.node", - "files": ["xxhash.linux-x64-musl.node"], + "files": [ + "xxhash.linux-x64-musl.node" + ], "description": "Fastest xxhash implementation in Node.js", - "keywords": ["hash", "xxhash", "xxhashjs", "Rust", "node-rs", "napi", "napi-rs", "N-API", "Node-API"], + "keywords": [ + "hash", + "xxhash", + "xxhashjs", + "Rust", + "node-rs", + "napi", + "napi-rs", + "N-API", + "Node-API" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/xxhash/npm/win32-arm64-msvc/package.json b/packages/xxhash/npm/win32-arm64-msvc/package.json index 379a1fb2..6baa3798 100644 --- a/packages/xxhash/npm/win32-arm64-msvc/package.json +++ b/packages/xxhash/npm/win32-arm64-msvc/package.json @@ -1,12 +1,28 @@ { "name": "@node-rs/xxhash-win32-arm64-msvc", "version": "1.0.1", - "os": ["win32"], - "cpu": ["arm64"], + "os": [ + "win32" + ], + "cpu": [ + "arm64" + ], "main": "xxhash.win32-arm64-msvc.node", - "files": ["xxhash.win32-arm64-msvc.node"], + "files": [ + "xxhash.win32-arm64-msvc.node" + ], "description": "Fastest xxhash implementation in Node.js", - "keywords": ["hash", "xxhash", "xxhashjs", "Rust", "node-rs", "napi", "napi-rs", "N-API", "Node-API"], + "keywords": [ + "hash", + "xxhash", + "xxhashjs", + "Rust", + "node-rs", + "napi", + "napi-rs", + "N-API", + "Node-API" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/xxhash/npm/win32-ia32-msvc/package.json b/packages/xxhash/npm/win32-ia32-msvc/package.json index 216cfe88..563f55aa 100644 --- a/packages/xxhash/npm/win32-ia32-msvc/package.json +++ b/packages/xxhash/npm/win32-ia32-msvc/package.json @@ -1,12 +1,28 @@ { "name": "@node-rs/xxhash-win32-ia32-msvc", "version": "1.0.1", - "os": ["win32"], - "cpu": ["ia32"], + "os": [ + "win32" + ], + "cpu": [ + "ia32" + ], "main": "xxhash.win32-ia32-msvc.node", - "files": ["xxhash.win32-ia32-msvc.node"], + "files": [ + "xxhash.win32-ia32-msvc.node" + ], "description": "Fastest xxhash implementation in Node.js", - "keywords": ["hash", "xxhash", "xxhashjs", "Rust", "node-rs", "napi", "napi-rs", "N-API", "Node-API"], + "keywords": [ + "hash", + "xxhash", + "xxhashjs", + "Rust", + "node-rs", + "napi", + "napi-rs", + "N-API", + "Node-API" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/xxhash/npm/win32-x64-msvc/package.json b/packages/xxhash/npm/win32-x64-msvc/package.json index 364e09ef..7ec2391c 100644 --- a/packages/xxhash/npm/win32-x64-msvc/package.json +++ b/packages/xxhash/npm/win32-x64-msvc/package.json @@ -1,12 +1,28 @@ { "name": "@node-rs/xxhash-win32-x64-msvc", "version": "1.0.1", - "os": ["win32"], - "cpu": ["x64"], + "os": [ + "win32" + ], + "cpu": [ + "x64" + ], "main": "xxhash.win32-x64-msvc.node", - "files": ["xxhash.win32-x64-msvc.node"], + "files": [ + "xxhash.win32-x64-msvc.node" + ], "description": "Fastest xxhash implementation in Node.js", - "keywords": ["hash", "xxhash", "xxhashjs", "Rust", "node-rs", "napi", "napi-rs", "N-API", "Node-API"], + "keywords": [ + "hash", + "xxhash", + "xxhashjs", + "Rust", + "node-rs", + "napi", + "napi-rs", + "N-API", + "Node-API" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", diff --git a/packages/xxhash/package.json b/packages/xxhash/package.json index 1a46c92d..4e87f5f4 100644 --- a/packages/xxhash/package.json +++ b/packages/xxhash/package.json @@ -2,13 +2,26 @@ "name": "@node-rs/xxhash", "version": "1.0.1", "description": "Fastest xxhash implementation in Node.js", - "keywords": ["hash", "xxhash", "xxhashjs", "Rust", "node-rs", "napi", "napi-rs", "N-API", "Node-API"], + "keywords": [ + "hash", + "xxhash", + "xxhashjs", + "Rust", + "node-rs", + "napi", + "napi-rs", + "N-API", + "Node-API" + ], "author": "LongYinan ", "homepage": "https://github.com/napi-rs/node-rs", "license": "MIT", "main": "index.js", "typings": "index.d.ts", - "files": ["index.js", "index.d.ts"], + "files": [ + "index.js", + "index.d.ts" + ], "napi": { "name": "xxhash", "triples": { @@ -20,6 +33,7 @@ "armv7-unknown-linux-gnueabihf", "aarch64-apple-darwin", "aarch64-linux-android", + "armv7-linux-androideabi", "x86_64-unknown-freebsd", "aarch64-unknown-linux-musl", "aarch64-pc-windows-msvc" @@ -40,17 +54,14 @@ "scripts": { "artifacts": "napi artifacts -d ../../artifacts", "bench": "cross-env NODE_ENV=production node benchmark/xxhash.js", - "build": "napi build --platform --release", - "build:debug": "napi build --platform", + "build": "napi build --platform --release --pipe \"prettier -w\"", + "build:debug": "napi build --platform --pipe \"prettier -w\"", "prepublishOnly": "napi prepublish", "version": "napi version" }, "bugs": { "url": "https://github.com/napi-rs/node-rs/issues" }, - "dependencies": { - "@node-rs/helper": "^1.2.1" - }, "devDependencies": { "@types/xxhashjs": "^0.2.2", "webpack": "^5.65.0", diff --git a/packages/xxhash/src/lib.rs b/packages/xxhash/src/lib.rs index 412fddc6..c81e3e29 100644 --- a/packages/xxhash/src/lib.rs +++ b/packages/xxhash/src/lib.rs @@ -1,240 +1,189 @@ /// Explicit extern crate to use allocator. extern crate global_alloc; -use napi::*; -use napi_derive::*; -use xxhash_rust::{xxh3, xxh32, xxh64}; - -#[module_exports] -fn init(mut exports: JsObject, env: Env) -> Result<()> { - exports.create_named_method("xxh32", xxh32)?; - exports.create_named_method("xxh64", xxh64)?; - - let xxh32_class = env.define_class( - "Xxh32", - xxh32_constructor, - &[ - Property::new(&env, "update")?.with_method(update_xxh32), - Property::new(&env, "digest")?.with_method(digest_xxh32), - Property::new(&env, "reset")?.with_method(reset_xxh32), - ], - )?; - let xxh64_class = env.define_class( - "Xxh64", - xxh64_constructor, - &[ - Property::new(&env, "update")?.with_method(update_xxh64), - Property::new(&env, "digest")?.with_method(digest_xxh64), - Property::new(&env, "reset")?.with_method(reset_xxh64), - ], - )?; - exports.set_named_property("Xxh32", xxh32_class)?; - exports.set_named_property("Xxh64", xxh64_class)?; - - let mut xxh3 = env.create_object()?; - xxh3.create_named_method("xxh64", xxh3_xxh64)?; - xxh3.create_named_method("xxh64WithSecret", xxh3_xxh64_with_secret)?; - xxh3.create_named_method("xxh128", xxh3_xxh128)?; - xxh3.create_named_method("xxh128WithSecret", xxh3_xxh128_with_secret)?; - xxh3.create_named_method("createXxh3WithSeed", create_xxh3_with_seed)?; - xxh3.create_named_method("createXxh3WithSecret", create_xxh3_with_secret)?; - xxh3.create_named_method("update", update_xxh3)?; - xxh3.create_named_method("digest", digest_xxh3)?; - xxh3.create_named_method("reset", reset_xxh3)?; - exports.set_named_property("xxh3", xxh3)?; - Ok(()) -} - -#[js_function(2)] -fn xxh32(ctx: CallContext) -> Result { - let input = ctx.get::(0)?.into_value()?; - let seed = ctx.get::(1)?.get_uint32()?; - ctx - .env - .create_uint32(xxhash_rust::xxh32::xxh32(input.as_ref(), seed)) -} - -#[js_function(1)] -fn xxh32_constructor(ctx: CallContext) -> Result { - let mut this = ctx.this_unchecked::(); - let seed = if ctx.length == 1 { - ctx.get::(0)?.get_uint32()? - } else { - 0 - }; - let native = xxh32::Xxh32::new(seed); - ctx.env.wrap(&mut this, native)?; - ctx.env.get_undefined() -} - -#[js_function(1)] -fn update_xxh32(ctx: CallContext) -> Result { - let this = ctx.this_unchecked::(); - let native = ctx.env.unwrap::(&this)?; - let input = ctx.get::(0)?.into_value()?; - native.update(input.as_ref()); - Ok(this) -} - -#[js_function] -fn digest_xxh32(ctx: CallContext) -> Result { - let this = ctx.this_unchecked::(); - let native = ctx.env.unwrap::(&this)?; - ctx.env.create_uint32(native.digest()) -} - -#[js_function(1)] -fn reset_xxh32(ctx: CallContext) -> Result { - let this = ctx.this_unchecked::(); - let native = ctx.env.unwrap::(&this)?; - let seed = if ctx.length == 1 { - ctx.get::(0)?.get_uint32()? - } else { - 0 - }; - native.reset(seed); - ctx.env.get_undefined() -} - -#[js_function(2)] -fn xxh64(ctx: CallContext) -> Result { - let input = ctx.get::(0)?.into_value()?; - let (seed, _) = ctx.get::(1)?.get_u64()?; - ctx - .env - .create_bigint_from_u64(xxhash_rust::xxh64::xxh64(input.as_ref(), seed)) -} - -#[js_function(1)] -fn xxh64_constructor(ctx: CallContext) -> Result { - let mut this = ctx.this_unchecked::(); - let seed = if ctx.length == 1 { - ctx.get::(0)?.get_u64()?.0 - } else { - 0 - }; - let native = xxh64::Xxh64::new(seed); - ctx.env.wrap(&mut this, native)?; - ctx.env.get_undefined() -} - -#[js_function(1)] -fn update_xxh64(ctx: CallContext) -> Result { - let this = ctx.this_unchecked::(); - let native = ctx.env.unwrap::(&this)?; - let input = ctx.get::(0)?.into_value()?; - native.update(input.as_ref()); - Ok(this) -} - -#[js_function] -fn digest_xxh64(ctx: CallContext) -> Result { - let this = ctx.this_unchecked::(); - let native = ctx.env.unwrap::(&this)?; - ctx.env.create_bigint_from_u64(native.digest()) -} - -#[js_function(1)] -fn reset_xxh64(ctx: CallContext) -> Result { - let this = ctx.this_unchecked::(); - let native = ctx.env.unwrap::(&this)?; - let seed = if ctx.length == 1 { - ctx.get::(0)?.get_u64()?.0 - } else { - 0 - }; - native.reset(seed); - ctx.env.get_undefined() -} - -#[js_function(2)] -fn xxh3_xxh64(ctx: CallContext) -> Result { - let input = ctx.get::(0)?.into_value()?; - let seed = if ctx.length == 2 { - ctx.get::(1)?.get_u64()?.0 - } else { - 0 - }; - ctx - .env - .create_bigint_from_u64(xxh3::xxh3_64_with_seed(input.as_ref(), seed)) -} - -#[js_function(2)] -fn xxh3_xxh64_with_secret(ctx: CallContext) -> Result { - let input = ctx.get::(0)?.into_value()?; - let secret = ctx.get::(1)?.into_value()?; - ctx - .env - .create_bigint_from_u64(xxh3::xxh3_64_with_secret(input.as_ref(), secret.as_ref())) -} - -#[js_function(2)] -fn xxh3_xxh128(ctx: CallContext) -> Result { - let input = ctx.get::(0)?.into_value()?; - let seed = if ctx.length == 2 { - ctx.get::(1)?.get_u64()?.0 - } else { - 0 - }; - ctx - .env - .create_bigint_from_u128(xxh3::xxh3_128_with_seed(input.as_ref(), seed)) -} - -#[js_function(2)] -fn xxh3_xxh128_with_secret(ctx: CallContext) -> Result { - let input = ctx.get::(0)?.into_value()?; - let secret = ctx.get::(1)?.into_value()?; - ctx - .env - .create_bigint_from_u128(xxh3::xxh3_128_with_secret(input.as_ref(), secret.as_ref())) -} - -#[js_function(2)] -fn create_xxh3_with_seed(ctx: CallContext) -> Result { - let mut js_this = ctx.get::(0)?; - let seed = if ctx.length == 2 { - ctx.get::(1)?.get_u64()?.0 - } else { - 0 - }; - let xxh3_instance = xxh3::Xxh3::with_seed(seed); - ctx.env.wrap(&mut js_this, xxh3_instance)?; - ctx.env.get_undefined() -} - -#[js_function(2)] -fn create_xxh3_with_secret(ctx: CallContext) -> Result { - let mut js_this = ctx.get::(0)?; - let secret = ctx.get::(1)?.into_value()?; - let mut sec = [0u8; 192]; - sec.copy_from_slice(secret.as_ref()); - let xxh3_instance = xxh3::Xxh3::with_secret(sec); - ctx.env.wrap(&mut js_this, xxh3_instance)?; - ctx.env.get_undefined() -} - -#[js_function(2)] -fn update_xxh3(ctx: CallContext) -> Result { - let this = ctx.this_unchecked::(); - let native = ctx.env.unwrap::(&this)?; - let input = ctx.get::(0)?.into_value()?; - native.update(input.as_ref()); - Ok(this) -} - -#[js_function] -fn digest_xxh3(ctx: CallContext) -> Result { - let this = ctx.this_unchecked::(); - let native = ctx.env.unwrap::(&this)?; - ctx.env.create_bigint_from_u64(native.digest()) -} - -#[js_function] -fn reset_xxh3(ctx: CallContext) -> Result { - let this = ctx.this_unchecked::(); - let native = ctx.env.unwrap::(&this)?; - native.reset(); - ctx.env.get_undefined() +use napi::bindgen_prelude::*; +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, + ) +} + +#[napi] +pub struct Xxh32 { + inner: xxh32::Xxh32, +} + +#[napi] +impl Xxh32 { + #[napi(constructor)] + pub fn new(seed: Option) -> Xxh32 { + Xxh32 { + inner: xxh32::Xxh32::new(seed.unwrap_or(0)), + } + } + + #[napi] + 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()), + }; + self + } + + #[napi] + pub fn digest(&self) -> u32 { + self.inner.digest() + } + + #[napi] + pub fn reset(&mut self, new_state: Option) { + self.inner.reset(new_state.unwrap_or(0)); + } +} + +#[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, + ) +} + +#[napi] +pub struct Xxh64 { + inner: xxh64::Xxh64, +} + +#[napi] +impl Xxh64 { + #[napi(constructor)] + pub fn new(seed: Option) -> Self { + Self { + inner: xxh64::Xxh64::new(seed.map(|b| b.get_u64().1).unwrap_or(0)), + } + } + + #[napi] + 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()), + }; + self + } + + #[napi] + pub fn digest(&self) -> u64 { + self.inner.digest() + } + + #[napi] + pub fn reset(&mut self, new_state: Option) { + self + .inner + .reset(new_state.map(|b| b.get_u64().1).unwrap_or(0)); + } +} + +#[napi(js_name = "xxh3")] +mod xxh3_js { + use napi::bindgen_prelude::*; + 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), + } + } + + #[napi] + pub fn xxh64_with_secret(input: Either, secret: Buffer) -> 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()), + } + } + + #[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, + ) + } + + #[napi] + pub fn xxh128_with_secret(input: Either, secret: Buffer) -> u128 { + xxh3::xxh3_128_with_secret( + match &input { + Either::A(s) => s.as_bytes(), + Either::B(b) => b.as_ref(), + }, + secret.as_ref(), + ) + } + + #[napi] + pub struct Xxh3 { + inner: xxh3::Xxh3, + } + + #[napi] + impl Xxh3 { + #[napi(factory)] + pub fn with_seed(seed: Option) -> Self { + Self { + inner: xxh3::Xxh3::with_seed(seed.map(|b| b.get_u64().1).unwrap_or(0)), + } + } + + #[napi(factory)] + pub fn with_secret(secret: Buffer) -> Self { + let mut sec = [0u8; 192]; + sec.copy_from_slice(secret.as_ref()); + Self { + inner: xxh3::Xxh3::with_secret(sec), + } + } + + #[napi] + 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(), + }); + self + } + + #[napi] + pub fn digest(&self) -> u64 { + self.inner.digest() + } + + #[napi] + pub fn reset(&mut self) { + self.inner.reset(); + } + } } diff --git a/rust-toolchain b/rust-toolchain index 7cc42efd..c740dfcf 100644 --- a/rust-toolchain +++ b/rust-toolchain @@ -1 +1 @@ -nightly-2021-11-01 +nightly-2021-12-05 diff --git a/scripts/packages.js b/scripts/packages.js deleted file mode 100644 index fde5a906..00000000 --- a/scripts/packages.js +++ /dev/null @@ -1,8 +0,0 @@ -const { readdirSync, existsSync, statSync } = require('fs') -const { join } = require('path') - -const packagesDir = join(__dirname, '..', 'packages') - -module.exports = readdirSync(packagesDir) - .filter((dir) => statSync(join(packagesDir, dir)).isDirectory()) - .filter((dir) => existsSync(join(packagesDir, dir, 'Cargo.toml'))) diff --git a/yarn.lock b/yarn.lock index e5ca8776..5ff5d58e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,39 +2,32 @@ # yarn lockfile v1 -"@babel/code-frame@7.12.11": - version "7.12.11" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" - integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.16.0": + version "7.16.0" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz#0dfc80309beec8411e65e706461c408b0bb9b431" + integrity sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA== dependencies: - "@babel/highlight" "^7.10.4" + "@babel/highlight" "^7.16.0" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb" - integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw== - dependencies: - "@babel/highlight" "^7.14.5" - -"@babel/compat-data@^7.15.0": - version "7.15.0" - resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz#2dbaf8b85334796cafbb0f5793a90a2fc010b176" - integrity sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA== +"@babel/compat-data@^7.16.0": + version "7.16.4" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz#081d6bbc336ec5c2435c6346b2ae1fb98b5ac68e" + integrity sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q== "@babel/core@^7.7.5": - version "7.15.5" - resolved "https://registry.npmjs.org/@babel/core/-/core-7.15.5.tgz#f8ed9ace730722544609f90c9bb49162dc3bf5b9" - integrity sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg== - dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/generator" "^7.15.4" - "@babel/helper-compilation-targets" "^7.15.4" - "@babel/helper-module-transforms" "^7.15.4" - "@babel/helpers" "^7.15.4" - "@babel/parser" "^7.15.5" - "@babel/template" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.4" + version "7.16.5" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.16.5.tgz#924aa9e1ae56e1e55f7184c8bf073a50d8677f5c" + integrity sha512-wUcenlLzuWMZ9Zt8S0KmFwGlH6QKRh3vsm/dhDA3CHkiTA45YuG1XkHRcNRl73EFPXDp/d5kVOU0/y7x2w6OaQ== + dependencies: + "@babel/code-frame" "^7.16.0" + "@babel/generator" "^7.16.5" + "@babel/helper-compilation-targets" "^7.16.3" + "@babel/helper-module-transforms" "^7.16.5" + "@babel/helpers" "^7.16.5" + "@babel/parser" "^7.16.5" + "@babel/template" "^7.16.0" + "@babel/traverse" "^7.16.5" + "@babel/types" "^7.16.0" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" @@ -42,170 +35,154 @@ semver "^6.3.0" source-map "^0.5.0" -"@babel/generator@^7.15.4": - version "7.15.4" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.15.4.tgz#85acb159a267ca6324f9793986991ee2022a05b0" - integrity sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw== +"@babel/generator@^7.16.5": + version "7.16.5" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.16.5.tgz#26e1192eb8f78e0a3acaf3eede3c6fc96d22bedf" + integrity sha512-kIvCdjZqcdKqoDbVVdt5R99icaRtrtYhYK/xux5qiWCBmfdvEYMFZ68QCrpE5cbFM1JsuArUNs1ZkuKtTtUcZA== dependencies: - "@babel/types" "^7.15.4" + "@babel/types" "^7.16.0" jsesc "^2.5.1" source-map "^0.5.0" -"@babel/helper-compilation-targets@^7.15.4": - version "7.15.4" - resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz#cf6d94f30fbefc139123e27dd6b02f65aeedb7b9" - integrity sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ== +"@babel/helper-compilation-targets@^7.16.3": + version "7.16.3" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz#5b480cd13f68363df6ec4dc8ac8e2da11363cbf0" + integrity sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA== dependencies: - "@babel/compat-data" "^7.15.0" + "@babel/compat-data" "^7.16.0" "@babel/helper-validator-option" "^7.14.5" - browserslist "^4.16.6" + browserslist "^4.17.5" semver "^6.3.0" -"@babel/helper-function-name@^7.15.4": - version "7.15.4" - resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz#845744dafc4381a4a5fb6afa6c3d36f98a787ebc" - integrity sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw== +"@babel/helper-environment-visitor@^7.16.5": + version "7.16.5" + resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.5.tgz#f6a7f38b3c6d8b07c88faea083c46c09ef5451b8" + integrity sha512-ODQyc5AnxmZWm/R2W7fzhamOk1ey8gSguo5SGvF0zcB3uUzRpTRmM/jmLSm9bDMyPlvbyJ+PwPEK0BWIoZ9wjg== dependencies: - "@babel/helper-get-function-arity" "^7.15.4" - "@babel/template" "^7.15.4" - "@babel/types" "^7.15.4" + "@babel/types" "^7.16.0" -"@babel/helper-get-function-arity@^7.15.4": - version "7.15.4" - resolved "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz#098818934a137fce78b536a3e015864be1e2879b" - integrity sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA== +"@babel/helper-function-name@^7.16.0": + version "7.16.0" + resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz#b7dd0797d00bbfee4f07e9c4ea5b0e30c8bb1481" + integrity sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog== dependencies: - "@babel/types" "^7.15.4" + "@babel/helper-get-function-arity" "^7.16.0" + "@babel/template" "^7.16.0" + "@babel/types" "^7.16.0" -"@babel/helper-hoist-variables@^7.15.4": - version "7.15.4" - resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz#09993a3259c0e918f99d104261dfdfc033f178df" - integrity sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA== +"@babel/helper-get-function-arity@^7.16.0": + version "7.16.0" + resolved "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz#0088c7486b29a9cb5d948b1a1de46db66e089cfa" + integrity sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ== dependencies: - "@babel/types" "^7.15.4" + "@babel/types" "^7.16.0" -"@babel/helper-member-expression-to-functions@^7.15.4": - version "7.15.4" - resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz#bfd34dc9bba9824a4658b0317ec2fd571a51e6ef" - integrity sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA== +"@babel/helper-hoist-variables@^7.16.0": + version "7.16.0" + resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz#4c9023c2f1def7e28ff46fc1dbcd36a39beaa81a" + integrity sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg== dependencies: - "@babel/types" "^7.15.4" + "@babel/types" "^7.16.0" -"@babel/helper-module-imports@^7.15.4": - version "7.15.4" - resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz#e18007d230632dea19b47853b984476e7b4e103f" - integrity sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA== +"@babel/helper-module-imports@^7.16.0": + version "7.16.0" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz#90538e60b672ecf1b448f5f4f5433d37e79a3ec3" + integrity sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg== dependencies: - "@babel/types" "^7.15.4" + "@babel/types" "^7.16.0" -"@babel/helper-module-transforms@^7.15.4": - version "7.15.4" - resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.4.tgz#962cc629a7f7f9a082dd62d0307fa75fe8788d7c" - integrity sha512-9fHHSGE9zTC++KuXLZcB5FKgvlV83Ox+NLUmQTawovwlJ85+QMhk1CnVk406CQVj97LaWod6KVjl2Sfgw9Aktw== +"@babel/helper-module-transforms@^7.16.5": + version "7.16.5" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.5.tgz#530ebf6ea87b500f60840578515adda2af470a29" + integrity sha512-CkvMxgV4ZyyioElFwcuWnDCcNIeyqTkCm9BxXZi73RR1ozqlpboqsbGUNvRTflgZtFbbJ1v5Emvm+lkjMYY/LQ== dependencies: - "@babel/helper-module-imports" "^7.15.4" - "@babel/helper-replace-supers" "^7.15.4" - "@babel/helper-simple-access" "^7.15.4" - "@babel/helper-split-export-declaration" "^7.15.4" - "@babel/helper-validator-identifier" "^7.14.9" - "@babel/template" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.4" + "@babel/helper-environment-visitor" "^7.16.5" + "@babel/helper-module-imports" "^7.16.0" + "@babel/helper-simple-access" "^7.16.0" + "@babel/helper-split-export-declaration" "^7.16.0" + "@babel/helper-validator-identifier" "^7.15.7" + "@babel/template" "^7.16.0" + "@babel/traverse" "^7.16.5" + "@babel/types" "^7.16.0" -"@babel/helper-optimise-call-expression@^7.15.4": - version "7.15.4" - resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz#f310a5121a3b9cc52d9ab19122bd729822dee171" - integrity sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw== +"@babel/helper-simple-access@^7.16.0": + version "7.16.0" + resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz#21d6a27620e383e37534cf6c10bba019a6f90517" + integrity sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw== dependencies: - "@babel/types" "^7.15.4" + "@babel/types" "^7.16.0" -"@babel/helper-replace-supers@^7.15.4": - version "7.15.4" - resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz#52a8ab26ba918c7f6dee28628b07071ac7b7347a" - integrity sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw== +"@babel/helper-split-export-declaration@^7.16.0": + version "7.16.0" + resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz#29672f43663e936df370aaeb22beddb3baec7438" + integrity sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw== dependencies: - "@babel/helper-member-expression-to-functions" "^7.15.4" - "@babel/helper-optimise-call-expression" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.4" + "@babel/types" "^7.16.0" -"@babel/helper-simple-access@^7.15.4": - version "7.15.4" - resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz#ac368905abf1de8e9781434b635d8f8674bcc13b" - integrity sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-split-export-declaration@^7.15.4": - version "7.15.4" - resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz#aecab92dcdbef6a10aa3b62ab204b085f776e257" - integrity sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-validator-identifier@^7.14.5", "@babel/helper-validator-identifier@^7.14.9": - version "7.14.9" - resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz#6654d171b2024f6d8ee151bf2509699919131d48" - integrity sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g== +"@babel/helper-validator-identifier@^7.15.7": + version "7.15.7" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389" + integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w== "@babel/helper-validator-option@^7.14.5": version "7.14.5" resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow== -"@babel/helpers@^7.15.4": - version "7.15.4" - resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz#5f40f02050a3027121a3cf48d497c05c555eaf43" - integrity sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ== +"@babel/helpers@^7.16.5": + version "7.16.5" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.5.tgz#29a052d4b827846dd76ece16f565b9634c554ebd" + integrity sha512-TLgi6Lh71vvMZGEkFuIxzaPsyeYCHQ5jJOOX1f0xXn0uciFuE8cEk0wyBquMcCxBXZ5BJhE2aUB7pnWTD150Tw== dependencies: - "@babel/template" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.4" + "@babel/template" "^7.16.0" + "@babel/traverse" "^7.16.5" + "@babel/types" "^7.16.0" -"@babel/highlight@^7.10.4", "@babel/highlight@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" - integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== +"@babel/highlight@^7.16.0": + version "7.16.0" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz#6ceb32b2ca4b8f5f361fb7fd821e3fddf4a1725a" + integrity sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g== dependencies: - "@babel/helper-validator-identifier" "^7.14.5" + "@babel/helper-validator-identifier" "^7.15.7" chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.15.4", "@babel/parser@^7.15.5": - version "7.15.5" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.15.5.tgz#d33a58ca69facc05b26adfe4abebfed56c1c2dac" - integrity sha512-2hQstc6I7T6tQsWzlboMh3SgMRPaS4H6H7cPQsJkdzTzEGqQrpLDsE2BGASU5sBPoEQyHzeqU6C8uKbFeEk6sg== - -"@babel/template@^7.15.4": - version "7.15.4" - resolved "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz#51898d35dcf3faa670c4ee6afcfd517ee139f194" - integrity sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg== - dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/parser" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/traverse@^7.15.4": - version "7.15.4" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz#ff8510367a144bfbff552d9e18e28f3e2889c22d" - integrity sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA== - dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/generator" "^7.15.4" - "@babel/helper-function-name" "^7.15.4" - "@babel/helper-hoist-variables" "^7.15.4" - "@babel/helper-split-export-declaration" "^7.15.4" - "@babel/parser" "^7.15.4" - "@babel/types" "^7.15.4" +"@babel/parser@^7.16.0", "@babel/parser@^7.16.5": + version "7.16.6" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.16.6.tgz#8f194828193e8fa79166f34a4b4e52f3e769a314" + integrity sha512-Gr86ujcNuPDnNOY8mi383Hvi8IYrJVJYuf3XcuBM/Dgd+bINn/7tHqsj+tKkoreMbmGsFLsltI/JJd8fOFWGDQ== + +"@babel/template@^7.16.0": + version "7.16.0" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz#d16a35ebf4cd74e202083356fab21dd89363ddd6" + integrity sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A== + dependencies: + "@babel/code-frame" "^7.16.0" + "@babel/parser" "^7.16.0" + "@babel/types" "^7.16.0" + +"@babel/traverse@^7.16.5": + version "7.16.5" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.5.tgz#d7d400a8229c714a59b87624fc67b0f1fbd4b2b3" + integrity sha512-FOCODAzqUMROikDYLYxl4nmwiLlu85rNqBML/A5hKRVXG2LV8d0iMqgPzdYTcIpjZEBB7D6UDU9vxRZiriASdQ== + dependencies: + "@babel/code-frame" "^7.16.0" + "@babel/generator" "^7.16.5" + "@babel/helper-environment-visitor" "^7.16.5" + "@babel/helper-function-name" "^7.16.0" + "@babel/helper-hoist-variables" "^7.16.0" + "@babel/helper-split-export-declaration" "^7.16.0" + "@babel/parser" "^7.16.5" + "@babel/types" "^7.16.0" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.15.4": - version "7.15.4" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz#74eeb86dbd6748d2741396557b9860e57fce0a0d" - integrity sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw== +"@babel/types@^7.16.0": + version "7.16.0" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz#db3b313804f96aadd0b776c4823e127ad67289ba" + integrity sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg== dependencies: - "@babel/helper-validator-identifier" "^7.14.9" + "@babel/helper-validator-identifier" "^7.15.7" to-fast-properties "^2.0.0" "@concordance/react@^2.0.0": @@ -215,18 +192,18 @@ dependencies: arrify "^1.0.1" -"@eslint/eslintrc@^0.4.3": - version "0.4.3" - resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" - integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== +"@eslint/eslintrc@^1.0.5": + version "1.0.5" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.5.tgz#33f1b838dbf1f923bfa517e008362b78ddbbf318" + integrity sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ== dependencies: ajv "^6.12.4" - debug "^4.1.1" - espree "^7.3.0" + debug "^4.3.2" + espree "^9.2.0" globals "^13.9.0" ignore "^4.0.6" import-fresh "^3.2.1" - js-yaml "^3.13.1" + js-yaml "^4.1.0" minimatch "^3.0.4" strip-json-comments "^3.1.1" @@ -235,19 +212,19 @@ resolved "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.2.tgz#30aa825f11d438671d585bd44e7fd564535fc210" integrity sha512-82cpyJyKRoQoRi+14ibCeGPu0CwypgtBAdBhq1WfvagpCZNKqwXbKwXllYSMG91DhmG4jt9gN8eP6lGOtozuaw== -"@humanwhocodes/config-array@^0.5.0": - version "0.5.0" - resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" - integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== +"@humanwhocodes/config-array@^0.9.2": + version "0.9.2" + resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.2.tgz#68be55c737023009dfc5fe245d51181bb6476914" + integrity sha512-UXOuFCGcwciWckOpmfKDq/GyhlTf9pN/BzG//x8p8zTOFEcGuA68ANXheFS0AGvy3qgZqLBUkMs7hqzqCKOVwA== dependencies: - "@humanwhocodes/object-schema" "^1.2.0" + "@humanwhocodes/object-schema" "^1.2.1" debug "^4.1.1" minimatch "^3.0.4" -"@humanwhocodes/object-schema@^1.2.0": - version "1.2.0" - resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz#87de7af9c231826fdd68ac7258f77c429e0e5fcf" - integrity sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w== +"@humanwhocodes/object-schema@^1.2.1": + version "1.2.1" + resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== "@hutson/parse-repository-url@^3.0.0": version "3.0.2" @@ -942,30 +919,28 @@ write-file-atomic "^3.0.3" "@mapbox/node-pre-gyp@^1.0.0", "@mapbox/node-pre-gyp@^1.0.4": - version "1.0.5" - resolved "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.5.tgz#2a0b32fcb416fb3f2250fd24cb2a81421a4f5950" - integrity sha512-4srsKPXWlIxp5Vbqz5uLfBN+du2fJChBoYn/f2h991WLdk7jUvcSk/McVLSv/X+xQIPI8eGD5GjrnygdyHnhPA== + version "1.0.8" + resolved "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.8.tgz#32abc8a5c624bc4e46c43d84dfb8b26d33a96f58" + integrity sha512-CMGKi28CF+qlbXh26hDe6NxCd7amqeAzEqnS6IHeO6LoaKyM/n+Xw3HT1COdq8cuioOdlKdqn/hCmqPUOMOywg== dependencies: detect-libc "^1.0.3" https-proxy-agent "^5.0.0" make-dir "^3.1.0" - node-fetch "^2.6.1" + node-fetch "^2.6.5" nopt "^5.0.0" - npmlog "^4.1.2" + npmlog "^5.0.1" rimraf "^3.0.2" - semver "^7.3.4" - tar "^6.1.0" + semver "^7.3.5" + tar "^6.1.11" -"@napi-rs/cli@^1.3.5": - version "1.3.5" - resolved "https://registry.yarnpkg.com/@napi-rs/cli/-/cli-1.3.5.tgz#89e4d97127edc4ed10a06637a43d27a1ed3c288d" - integrity sha512-Z0KZIciemioYODTyO908v2AtL8Zg4sohQDD+dyHeHmOiOfaez/y/xQ8XnpOHc2W5fRidKUW+MVWyTtpLTbKsqw== - dependencies: - inquirer "^8.1.3" +"@napi-rs/cli@^2.0.0": + version "2.0.0" + resolved "https://registry.npmjs.org/@napi-rs/cli/-/cli-2.0.0.tgz#cf237de31548f68ad7d173279293bf24a70e5f83" + integrity sha512-2R24dtZoPYb9TxIQJbhUSloSVK4HGfa6CVn5JgUeO9WTvZecC5i8WaFm2CC7GWbYmDlPu2AnULwaSr+AP7r1RQ== "@napi-rs/triples@^1.1.0": version "1.1.0" - resolved "https://registry.yarnpkg.com/@napi-rs/triples/-/triples-1.1.0.tgz#88c35b72e79a20b79bb4c9b3e2817241a1c9f4f9" + resolved "https://registry.npmjs.org/@napi-rs/triples/-/triples-1.1.0.tgz#88c35b72e79a20b79bb4c9b3e2817241a1c9f4f9" integrity sha512-XQr74QaLeMiqhStEhLn1im9EOMnkypp7MZOwQhGzqp2Weu5eQJbpPxWxixxlYRKWPOmJjsk6qYfYH9kq43yc2w== "@nodelib/fs.scandir@2.1.5": @@ -990,14 +965,14 @@ fastq "^1.6.0" "@npmcli/ci-detect@^1.0.0": - version "1.3.0" - resolved "https://registry.npmjs.org/@npmcli/ci-detect/-/ci-detect-1.3.0.tgz#6c1d2c625fb6ef1b9dea85ad0a5afcbef85ef22a" - integrity sha512-oN3y7FAROHhrAt7Rr7PnTSwrHrZVRTS2ZbyxeQwSSYD0ifwM3YNgQqbaRmjcWoPyq77MjchusjJDspbzMmip1Q== + version "1.4.0" + resolved "https://registry.npmjs.org/@npmcli/ci-detect/-/ci-detect-1.4.0.tgz#18478bbaa900c37bfbd8a2006a6262c62e8b0fe1" + integrity sha512-3BGrt6FLjqM6br5AhWRKTr3u5GIVkjRYeAFrMp3HjnfICrg4xOrVRwFavKT6tsp++bq5dluL5t8ME/Nha/6c1Q== "@npmcli/fs@^1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/@npmcli/fs/-/fs-1.0.0.tgz#589612cfad3a6ea0feafcb901d29c63fd52db09f" - integrity sha512-8ltnOpRR/oJbOp8vaGUnipOi3bqkcW+sLHFlyXIr08OGHmVJLB1Hn7QtGXbYcpVtH1gAYZTlmDXtE4YV0+AMMQ== + version "1.1.0" + resolved "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.0.tgz#bec1d1b89c170d40e1b73ad6c943b0b75e7d2951" + integrity sha512-VhP1qZLXcrXRIaPoqb4YA55JQxLNF3jNR4T55IdOJa3+IFJKNYHtPvtXx8slmeMavj37vCzCfrqQM1vWLsYKLA== dependencies: "@gar/promisify" "^1.0.1" semver "^7.3.5" @@ -1033,9 +1008,9 @@ rimraf "^3.0.2" "@npmcli/node-gyp@^1.0.2": - version "1.0.2" - resolved "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.2.tgz#3cdc1f30e9736dbc417373ed803b42b1a0a29ede" - integrity sha512-yrJUe6reVMpktcvagumoqD9r08fH1iRo01gn1u0zoCApa9lnZGEigVKUd2hzsCId4gdtkZZIVscLhNxMECKgRg== + version "1.0.3" + resolved "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz#a912e637418ffc5f2db375e93b85837691a43a33" + integrity sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA== "@npmcli/promise-spawn@^1.2.0", "@npmcli/promise-spawn@^1.3.2": version "1.3.2" @@ -1055,9 +1030,9 @@ read-package-json-fast "^2.0.1" "@octokit/auth-token@^2.4.4": - version "2.4.5" - resolved "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.4.5.tgz#568ccfb8cb46f36441fac094ce34f7a875b197f3" - integrity sha512-BpGYsPgJt05M7/L/5FoE1PiAbdxXFZkX/3kDYcsvd1v6UhlnE5e96dTDr0ezX/EFwciQxf3cNV0loipsURU+WA== + version "2.5.0" + resolved "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz#27c37ea26c205f28443402477ffd261311f21e36" + integrity sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g== dependencies: "@octokit/types" "^6.0.3" @@ -1092,34 +1067,34 @@ "@octokit/types" "^6.0.3" universal-user-agent "^6.0.0" -"@octokit/openapi-types@^10.1.0": - version "10.1.1" - resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-10.1.1.tgz#74607482d193e9c9cc7e23ecf04b1bde3eabb6d8" - integrity sha512-ygp/6r25Ezb1CJuVMnFfOsScEtPF0zosdTJDZ7mZ+I8IULl7DP1BS5ZvPRwglcarGPXOvS5sHdR0bjnVDDfQdQ== +"@octokit/openapi-types@^11.2.0": + version "11.2.0" + resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-11.2.0.tgz#b38d7fc3736d52a1e96b230c1ccd4a58a2f400a6" + integrity sha512-PBsVO+15KSlGmiI8QAzaqvsNlZlrDlyAJYcrXBCvVUxCp7VnXjkwPoFHgjEJXx3WF9BAwkA6nfCUA7i9sODzKA== "@octokit/plugin-enterprise-rest@^6.0.1": version "6.0.1" resolved "https://registry.npmjs.org/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz#e07896739618dab8da7d4077c658003775f95437" integrity sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw== -"@octokit/plugin-paginate-rest@^2.16.0": - version "2.16.0" - resolved "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.16.0.tgz#09dbda2e5fbca022e3cdf76b63618f7b357c9f0c" - integrity sha512-8YYzALPMvEZ35kgy5pdYvQ22Roz+BIuEaedO575GwE2vb/ACDqQn0xQrTJR4tnZCJn7pi8+AWPVjrFDaERIyXQ== +"@octokit/plugin-paginate-rest@^2.16.8": + version "2.17.0" + resolved "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.17.0.tgz#32e9c7cab2a374421d3d0de239102287d791bce7" + integrity sha512-tzMbrbnam2Mt4AhuyCHvpRkS0oZ5MvwwcQPYGtMv4tUa5kkzG58SVB0fcsLulOZQeRnOgdkZWkRUiyBlh0Bkyw== dependencies: - "@octokit/types" "^6.26.0" + "@octokit/types" "^6.34.0" "@octokit/plugin-request-log@^1.0.4": version "1.0.4" resolved "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz#5e50ed7083a613816b1e4a28aeec5fb7f1462e85" integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA== -"@octokit/plugin-rest-endpoint-methods@^5.9.0": - version "5.10.1" - resolved "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.10.1.tgz#9683c4cf476fb6c80f668c4b468919e69c71f66a" - integrity sha512-Rf1iMl40I0dIxjh1g32qZ6Ym/uT8QWZMm2vYGG5Vi8SX1MwZvbuxEGXYgmzTUWSD3PYWSLilE2+4L8kmdLGTMg== +"@octokit/plugin-rest-endpoint-methods@^5.12.0": + version "5.13.0" + resolved "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.13.0.tgz#8c46109021a3412233f6f50d28786f8e552427ba" + integrity sha512-uJjMTkN1KaOIgNtUPMtIXDOjx6dGYysdIFhgA52x4xSadQCz3b/zJexvITDVpANnfKPW/+E0xkOvLntqMYpviA== dependencies: - "@octokit/types" "^6.27.0" + "@octokit/types" "^6.34.0" deprecation "^2.3.1" "@octokit/request-error@^2.0.5", "@octokit/request-error@^2.1.0": @@ -1132,9 +1107,9 @@ once "^1.4.0" "@octokit/request@^5.6.0": - version "5.6.1" - resolved "https://registry.npmjs.org/@octokit/request/-/request-5.6.1.tgz#f97aff075c37ab1d427c49082fefeef0dba2d8ce" - integrity sha512-Ls2cfs1OfXaOKzkcxnqw5MR6drMA/zWX/LIS/p8Yjdz7QKTPQLMsB3R+OvoxE6XnXeXEE2X7xe4G4l4X0gRiKQ== + version "5.6.2" + resolved "https://registry.npmjs.org/@octokit/request/-/request-5.6.2.tgz#1aa74d5da7b9e04ac60ef232edd9a7438dcf32d8" + integrity sha512-je66CvSEVf0jCpRISxkUcCa0UkxmFs6eGDRSbfJtAVwbLH5ceqF+YEyC8lj8ystKyZTy8adWr0qmkY52EfOeLA== dependencies: "@octokit/endpoint" "^6.0.1" "@octokit/request-error" "^2.1.0" @@ -1144,133 +1119,133 @@ universal-user-agent "^6.0.0" "@octokit/rest@^18.1.0": - version "18.10.0" - resolved "https://registry.npmjs.org/@octokit/rest/-/rest-18.10.0.tgz#8a0add9611253e0e31d3ed5b4bc941a3795a7648" - integrity sha512-esHR5OKy38bccL/sajHqZudZCvmv4yjovMJzyXlphaUo7xykmtOdILGJ3aAm0mFHmMLmPFmDMJXf39cAjNJsrw== + version "18.12.0" + resolved "https://registry.npmjs.org/@octokit/rest/-/rest-18.12.0.tgz#f06bc4952fc87130308d810ca9d00e79f6988881" + integrity sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q== dependencies: "@octokit/core" "^3.5.1" - "@octokit/plugin-paginate-rest" "^2.16.0" + "@octokit/plugin-paginate-rest" "^2.16.8" "@octokit/plugin-request-log" "^1.0.4" - "@octokit/plugin-rest-endpoint-methods" "^5.9.0" + "@octokit/plugin-rest-endpoint-methods" "^5.12.0" -"@octokit/types@^6.0.3", "@octokit/types@^6.16.1", "@octokit/types@^6.26.0", "@octokit/types@^6.27.0": - version "6.27.0" - resolved "https://registry.npmjs.org/@octokit/types/-/types-6.27.0.tgz#2ffcd4d1cf344285f4151978c6fd36a2edcdf922" - integrity sha512-ha27f8DToxXBPEJdzHCCuqpw7AgKfjhWGdNf3yIlBAhAsaexBXTfWw36zNSsncALXGvJq4EjLy1p3Wz45Aqb4A== +"@octokit/types@^6.0.3", "@octokit/types@^6.16.1", "@octokit/types@^6.34.0": + version "6.34.0" + resolved "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz#c6021333334d1ecfb5d370a8798162ddf1ae8218" + integrity sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw== dependencies: - "@octokit/openapi-types" "^10.1.0" + "@octokit/openapi-types" "^11.2.0" "@sindresorhus/is@^0.14.0": version "0.14.0" resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== -"@swc-node/core@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@swc-node/core/-/core-1.8.0.tgz#76389ab2881bd9caa5ccf90932856455271c53da" - integrity sha512-oolF9LG4GP6NhUMWqGi2bDomE3v0CYmNl/kJN2+Hh+iYLdv7l36B0GWFGLnSnq0sWyjrp+1Ur7MZTZFGnK1a3w== +"@swc-node/core@^1.8.2": + version "1.8.2" + resolved "https://registry.npmjs.org/@swc-node/core/-/core-1.8.2.tgz#950ad394a8e8385658e6a951ec554bbf61a1693e" + integrity sha512-IoJ7tGHQ6JOMSmFe4VhP64uLmFKMNasS0QEgUrLFQ0h/dTvpQMynnoGBEJoPL6LfsebZ/q4uKqbpWrth6/yrAA== dependencies: - "@swc/core" "^1.2.104" + "@swc/core" "^1.2.119" -"@swc-node/register@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@swc-node/register/-/register-1.4.0.tgz#bbd3c445ae95be1bf1cf247a7fb4174b2516c055" - integrity sha512-CYWzafuOLjzFdjogPb6zgxonF564HSA0Pzo6KtcLsszJq2+ylyPl/RgdxhrD8FfRPLVabiG3GZ7gagX+70jQCA== +"@swc-node/register@^1.4.2": + version "1.4.2" + resolved "https://registry.npmjs.org/@swc-node/register/-/register-1.4.2.tgz#98801cc5ad8792519511bd6ae31c01f40aa487a3" + integrity sha512-wLZz0J7BTO//1Eq7e4eBQjKF380Hr2eVemz849msQSKcVM1D7UJUt/dP2TinEVGx++/BXJ/0q37i6n9Iw0EM0w== dependencies: - "@swc-node/core" "^1.8.0" - "@swc-node/sourcemap-support" "^0.1.10" - chalk "^4.1.2" - debug "^4.3.2" - pirates "^4.0.1" + "@swc-node/core" "^1.8.2" + "@swc-node/sourcemap-support" "^0.1.11" + chalk "4" + debug "^4.3.3" + pirates "^4.0.4" tslib "^2.3.1" - typescript "^4.4.4" - -"@swc-node/sourcemap-support@^0.1.10": - version "0.1.10" - resolved "https://registry.yarnpkg.com/@swc-node/sourcemap-support/-/sourcemap-support-0.1.10.tgz#85b9b3951a0581dd2493333a956f92260c982b66" - integrity sha512-t+AhsxpSYxqQfrFJ8LMSXvJ4qMjTyVMFJ1bcmebo3fbmIGOjyev9uUToOsItocxNFIYcbO3NfbzwlD2YCQwv7w== - dependencies: - source-map-support "^0.5.20" - -"@swc/core-android-arm64@^1.2.106": - version "1.2.106" - resolved "https://registry.yarnpkg.com/@swc/core-android-arm64/-/core-android-arm64-1.2.106.tgz#86fb16a40d112502051252dfa29c8482b341ce36" - integrity sha512-F5T6kP3yV9S0/oXyco305QaAyE6rLNsNSdR0QI4CtACwKadiPwTOptwNIDCiTNLNgWlWLQmIRkPpxg+G4doT6Q== - -"@swc/core-darwin-arm64@^1.2.106": - version "1.2.106" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.106.tgz#02a9ce94fee6d7f8a81a94233e4c455d55273fed" - integrity sha512-bgKzzYLFnc+mv2mDS/DLwzBvx5DCC9ZCKYY46b4dAnBfasr+SMHj+v/WI84HtilbjLBMUfYZ2hgYKls3CebIIQ== - -"@swc/core-darwin-x64@^1.2.106": - version "1.2.106" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.2.106.tgz#72448061266e9fb44427898bd13154ec3b63ebba" - integrity sha512-I5Uhit5RqbXaMIV2+v9jL+MIQeR3lT1DqVwzxZs1bTARclAheFZQpTmg+h6QmichjCiUT74SXQb6Apc/vqYKog== - -"@swc/core-freebsd-x64@^1.2.106": - version "1.2.106" - resolved "https://registry.yarnpkg.com/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.106.tgz#070ec3ab798009ac14a18c692ede1542b5640ef1" - integrity sha512-ZSK3vgzbA2Pkpw2LgHlAkUdx4okIpdXXTbLXuc5jkZMw1KhRWpeQaDlwbrN7XVynAYjkj2qgGQ7wv1tD43vQig== - -"@swc/core-linux-arm-gnueabihf@^1.2.106": - version "1.2.106" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.106.tgz#a94a29bfe81425c6f90a27d5977e58cb469db0a0" - integrity sha512-WZh6XV8cQ9Fh3IQNX9z87Tv68+sLtfnT51ghMQxceRhfvc5gIaYW+PCppezDDdlPJnWXhybGWNPAl5SHppWb2g== - -"@swc/core-linux-arm64-gnu@^1.2.106": - version "1.2.106" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.106.tgz#6ec685cd37ab3655dbc8eb07a38df6d9532ac32c" - integrity sha512-OSI9VUWPsRrCbUlRQ4KdYqdwV63VYBC5ahSNq+72DXhtRwVbLSFuF7MNsnXgUSMHidxbc0No3/bPPamshqHdsQ== - -"@swc/core-linux-arm64-musl@^1.2.106": - version "1.2.106" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.106.tgz#805841ab7bcca134a2712fb1084c09338ef61168" - integrity sha512-de8AAUOP8D2/tZIpQ399xw+pGGKlR1+l5Jmy4lW7ixarEI4xKkBSF4bS9eXtC1jckmenzrLPiK/5sSbQSf6BWQ== - -"@swc/core-linux-x64-gnu@^1.2.106": - version "1.2.106" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.106.tgz#d403dfce5d31dafd5d87491ce80ed603545e4864" - integrity sha512-QzFC7+lBSuVBmX5tS2pdM+74voiJcGgIMJ+x9pcjUu3GkDl3ow6WC6ta2WUzlgGopCGNp6IdZaFemKRzjLr3lw== - -"@swc/core-linux-x64-musl@^1.2.106": - version "1.2.106" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.106.tgz#0fce602e60cf1c9d9e72d33083dda18b963b3b6d" - integrity sha512-QZ1gFqNiCJefkNMihbmYc7nr5stERyjoQpWgAIN6dzrgMUzRHXHGDRl/p1qsXW2VKos+okSdLwPFEmRT94H+1A== - -"@swc/core-win32-arm64-msvc@^1.2.106": - version "1.2.106" - resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.106.tgz#c0e6f5b38a6eac8a5ce438492f23c4ffc47f326f" - integrity sha512-MbuQwk+s43bfBNnAZTKnoQlfo4UPSOsy6t9F15yU4P3rVUuFtcxdZg6CpDnUqNPbojILXujp8z4SSigRYh5cgg== - -"@swc/core-win32-ia32-msvc@^1.2.106": - version "1.2.106" - resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.106.tgz#5cf4a824a5bc3cfa6346733a3407e423c1920020" - integrity sha512-BFxWpcPxsG2LLQZ+8K8ma45rbTckjpPbnvOOhybQ0hEhLgoVzMVPp3RIUGmC+RMZe6DkGSaEQf/Rjn2cbMdQhw== - -"@swc/core-win32-x64-msvc@^1.2.106": - version "1.2.106" - resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.106.tgz#237d699d25944538fda57dd879478f2cc7835827" - integrity sha512-Emn5akqApGXzPsA7ntSXEohL0AH0WjQMHy6mT3MS9Yil42yTJ96dJGf68ejKVptxwg7Iz798mT+J9r1JbAFBgg== - -"@swc/core@^1.2.104": - version "1.2.106" - resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.2.106.tgz#d1ae8d5745b6b37fcc5c076e433eb31312c81372" - integrity sha512-9uw8gqU+lsk7KROAcSNhsrnBgNiC5H4MIaps5LlnnEevJmKu/o1ws22tXc2qjJg+F4/V1ynUbh8E0rYlmo1XGw== + typescript "^4.5.3" + +"@swc-node/sourcemap-support@^0.1.11": + version "0.1.11" + resolved "https://registry.npmjs.org/@swc-node/sourcemap-support/-/sourcemap-support-0.1.11.tgz#50cda396baade0636e8f53596b7a66386490c06d" + integrity sha512-b+Mn3oQl+7nUSt7hPzIbY9B30YhcFo1PT4kd9P4QmD6raycmIealOAhAdZID/JevphzsOXHQB4OqJm7Yi5tMcA== + dependencies: + source-map-support "^0.5.21" + +"@swc/core-android-arm64@^1.2.120": + version "1.2.120" + resolved "https://registry.npmjs.org/@swc/core-android-arm64/-/core-android-arm64-1.2.120.tgz#1cc98f0136ce7b6f932f7c4cf469f2fa44497384" + integrity sha512-WrXVXDAVpjPKhySuyC6mei4sW+gjv0m58kNOQ3D7hVfWGSKc3PtnQLHMwKEJKPJ4DKXEhe1twdUY60yzRcyMLg== + +"@swc/core-darwin-arm64@^1.2.120": + version "1.2.120" + resolved "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.120.tgz#bd32cd8fc68241b33a2a8be68737866c2614d02e" + integrity sha512-OqR+j4NmkwszLsqLGt4FMc4aXlLPxqtXGe7QdnJDM6i7btTi2MjqkF2CuEnwE+UX6DHw8M/z1uJliHU5kllvgw== + +"@swc/core-darwin-x64@^1.2.120": + version "1.2.120" + resolved "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.2.120.tgz#0f302694d20ed746577ecfb6259d983655965acd" + integrity sha512-lX639zOJ0agdpdCrPiQk1bmEh3oAcbrEhNEgJROxU0mVhO6xkzPCdmy27LDSOzJS9GLrP/4cMewcaYRmv9VAbA== + +"@swc/core-freebsd-x64@^1.2.120": + version "1.2.120" + resolved "https://registry.npmjs.org/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.120.tgz#5968df7b64d9a3610e0d1ed210331dc0fb332877" + integrity sha512-93VXbYmXYKuAwqKUTzNEYbnQbGF4fkDt+drfjk6+/EpCTrpw2mhZeKp1TxgKlQa4KLmXNg1A8XYrXOhG80tGbA== + +"@swc/core-linux-arm-gnueabihf@^1.2.120": + version "1.2.120" + resolved "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.120.tgz#4d2e6724b8540be90a0b812a6ce352fbc02f6a3f" + integrity sha512-WXpjEtvj+VE7bnhyhGcs7X/d5wPHVhdyv4IsF64ycWSWaZo1LmKlXtWFH1SWczSDffisd3HCwGDhqGVZb9cZaA== + +"@swc/core-linux-arm64-gnu@^1.2.120": + version "1.2.120" + resolved "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.120.tgz#f60d0d3ae36e255fc2df278631334918c779ee15" + integrity sha512-iugMs6AuFxs9H0TnWy+kejF3UGvHF7TSropGeCOj6VooUkx4PQd4xVnn/DF8NNJy8ReI38FsHVj7brS1AsRNyg== + +"@swc/core-linux-arm64-musl@^1.2.120": + version "1.2.120" + resolved "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.120.tgz#8597bfa37ab317e2f610339b651ed4b19c36822d" + integrity sha512-HdD++mlst1C4APVPIxeCr3lKEaGPXJSsKHvrJ+NDp+E5SIEvcHJfekUgC62xG+y0WI6Ix36Sun83MnEEPwFN1A== + +"@swc/core-linux-x64-gnu@^1.2.120": + version "1.2.120" + resolved "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.120.tgz#328224dbee46181e24e13056b3d4151e782b1abd" + integrity sha512-VYU2esPrdyfZTwwSUmHBIcmasa16+dyZMA1CZyW8m/4gppH3QvPreofVL+mu8+CG52ZRGs3g69runRN140ipSQ== + +"@swc/core-linux-x64-musl@^1.2.120": + version "1.2.120" + resolved "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.120.tgz#c94b123ea74efdd35caceebfb52a52ab22d2c19f" + integrity sha512-hfBgSoAP4PGkHUqFDMi+iIvjyO4/GZg64ba+rECWW5ygAQ0cb+5QH+pWoOnixu0QDj2nbmziX/5v4OK4uRDpDw== + +"@swc/core-win32-arm64-msvc@^1.2.120": + version "1.2.120" + resolved "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.120.tgz#ddf2446c57a1084f22d19bfeab30087f161f0aea" + integrity sha512-tYv0pGdDXBlyldqO5ywghzklQ/BVce/qZlXAwpEJrcLUWNRvLlv8czPCw/rhPPK7M67CuAmskAix7RRRQAoY2g== + +"@swc/core-win32-ia32-msvc@^1.2.120": + version "1.2.120" + resolved "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.120.tgz#f6f25a27513288f14fc75f1f03d714cc3fc9eace" + integrity sha512-zz9xhjp/fJEOFhG2pPhj2yEm5PE2XLUwGrVoi7+oHT6VHNaJAVmExRyKKYpzJIQt53k483jD8YvuAjWUvriy0A== + +"@swc/core-win32-x64-msvc@^1.2.120": + version "1.2.120" + resolved "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.120.tgz#593f44a45213d8161b94eeeb1c23ade0c352731b" + integrity sha512-GfuWWhxjoAoQGJrkaZgrrv/XQucg7M00dpIOsS0FT2eA4p5nrQ+aoaCS3hejWzgL9cNhKrpYRB6+lunK52yeNg== + +"@swc/core@^1.2.119": + version "1.2.120" + resolved "https://registry.npmjs.org/@swc/core/-/core-1.2.120.tgz#69719e265e6702da654ba6d0b53f71cdf8edb8d8" + integrity sha512-9bSN4ZdDQsAiKEdNT0lv/8o0/70xkGFieq/I4cKdA9dQibAtfagzRyLPkCm54XKqd9NwvI9neAfYydbesyY/nw== dependencies: "@node-rs/helper" "^1.0.0" optionalDependencies: - "@swc/core-android-arm64" "^1.2.106" - "@swc/core-darwin-arm64" "^1.2.106" - "@swc/core-darwin-x64" "^1.2.106" - "@swc/core-freebsd-x64" "^1.2.106" - "@swc/core-linux-arm-gnueabihf" "^1.2.106" - "@swc/core-linux-arm64-gnu" "^1.2.106" - "@swc/core-linux-arm64-musl" "^1.2.106" - "@swc/core-linux-x64-gnu" "^1.2.106" - "@swc/core-linux-x64-musl" "^1.2.106" - "@swc/core-win32-arm64-msvc" "^1.2.106" - "@swc/core-win32-ia32-msvc" "^1.2.106" - "@swc/core-win32-x64-msvc" "^1.2.106" + "@swc/core-android-arm64" "^1.2.120" + "@swc/core-darwin-arm64" "^1.2.120" + "@swc/core-darwin-x64" "^1.2.120" + "@swc/core-freebsd-x64" "^1.2.120" + "@swc/core-linux-arm-gnueabihf" "^1.2.120" + "@swc/core-linux-arm64-gnu" "^1.2.120" + "@swc/core-linux-arm64-musl" "^1.2.120" + "@swc/core-linux-x64-gnu" "^1.2.120" + "@swc/core-linux-x64-musl" "^1.2.120" + "@swc/core-win32-arm64-msvc" "^1.2.120" + "@swc/core-win32-ia32-msvc" "^1.2.120" + "@swc/core-win32-x64-msvc" "^1.2.120" "@szmarczak/http-timer@^1.1.2": version "1.1.2" @@ -1299,17 +1274,17 @@ "@types/node" "*" "@types/eslint-scope@^3.7.0": - version "3.7.1" - resolved "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.1.tgz#8dc390a7b4f9dd9f1284629efce982e41612116e" - integrity sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g== + version "3.7.2" + resolved "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.2.tgz#11e96a868c67acf65bf6f11d10bb89ea71d5e473" + integrity sha512-TzgYCWoPiTeRg6RQYgtuW7iODtVoKu3RVL72k3WohqhjfaOLK5Mg2T4Tg1o2bSfu0vPkoI48wdQFv5b/Xe04wQ== dependencies: "@types/eslint" "*" "@types/estree" "*" "@types/eslint@*": - version "7.28.0" - resolved "https://registry.npmjs.org/@types/eslint/-/eslint-7.28.0.tgz#7e41f2481d301c68e14f483fe10b017753ce8d5a" - integrity sha512-07XlgzX0YJUn4iG1ocY4IX9DzKSmMGUs6ESKlxWhZRaa0fatIWaHWUVapcuGa8r5HFnTqzj+4OCjd5f7EZ/i/A== + version "8.2.1" + resolved "https://registry.npmjs.org/@types/eslint/-/eslint-8.2.1.tgz#13f3d69bac93c2ae008019c28783868d0a1d6605" + integrity sha512-UP9rzNn/XyGwb5RQ2fok+DzcIRIYwc16qTXse5+Smsy8MOIccCChT15KAwnsgQx4PzJkaMq4myFyZ4CL5TjhIQ== dependencies: "@types/estree" "*" "@types/json-schema" "*" @@ -1319,7 +1294,7 @@ resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83" integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw== -"@types/json-schema@*", "@types/json-schema@^7.0.7", "@types/json-schema@^7.0.8": +"@types/json-schema@*", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": version "7.0.9" resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== @@ -1339,10 +1314,10 @@ resolved "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== -"@types/node@*", "@types/node@^16.11.12": - version "16.11.12" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.12.tgz#ac7fb693ac587ee182c3780c26eb65546a1a3c10" - integrity sha512-+2Iggwg7PxoO5Kyhvsq9VarmPbIelXP070HMImEpbtGCoyWNINQj4wzjbQCXzdHTRXnqufutJb5KAURZANNBAw== +"@types/node@*", "@types/node@^17.0.0": + version "17.0.0" + resolved "https://registry.npmjs.org/@types/node/-/node-17.0.0.tgz#62797cee3b8b497f6547503b2312254d4fe3c2bb" + integrity sha512-eMhwJXc931Ihh4tkU+Y7GiLzT/y/DBNpNtr4yU9O2w3SYBsr9NaOPhQlLKRmoWtI54uNwuo0IOUFQjVOTZYRvw== "@types/normalize-package-data@^2.4.0": version "2.4.1" @@ -1370,75 +1345,75 @@ dependencies: "@types/node" "*" -"@typescript-eslint/eslint-plugin@^4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz#c24dc7c8069c7706bc40d99f6fa87edcb2005276" - integrity sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg== +"@typescript-eslint/eslint-plugin@^5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.7.0.tgz#12d54709f8ea1da99a01d8a992cd0474ad0f0aa9" + integrity sha512-8RTGBpNn5a9M628wBPrCbJ+v3YTEOE2qeZb7TDkGKTDXSj36KGRg92SpFFaR/0S3rSXQxM0Og/kV9EyadsYSBg== dependencies: - "@typescript-eslint/experimental-utils" "4.33.0" - "@typescript-eslint/scope-manager" "4.33.0" - debug "^4.3.1" + "@typescript-eslint/experimental-utils" "5.7.0" + "@typescript-eslint/scope-manager" "5.7.0" + debug "^4.3.2" functional-red-black-tree "^1.0.1" ignore "^5.1.8" - regexpp "^3.1.0" + regexpp "^3.2.0" semver "^7.3.5" tsutils "^3.21.0" -"@typescript-eslint/experimental-utils@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz#6f2a786a4209fa2222989e9380b5331b2810f7fd" - integrity sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q== +"@typescript-eslint/experimental-utils@5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.7.0.tgz#2b1633e6613c3238036156f70c32634843ad034f" + integrity sha512-u57eZ5FbEpzN5kSjmVrSesovWslH2ZyNPnaXQMXWgH57d5+EVHEt76W75vVuI9qKZ5BMDKNfRN+pxcPEjQjb2A== dependencies: - "@types/json-schema" "^7.0.7" - "@typescript-eslint/scope-manager" "4.33.0" - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/typescript-estree" "4.33.0" + "@types/json-schema" "^7.0.9" + "@typescript-eslint/scope-manager" "5.7.0" + "@typescript-eslint/types" "5.7.0" + "@typescript-eslint/typescript-estree" "5.7.0" eslint-scope "^5.1.1" eslint-utils "^3.0.0" -"@typescript-eslint/parser@^4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.33.0.tgz#dfe797570d9694e560528d18eecad86c8c744899" - integrity sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA== +"@typescript-eslint/parser@^5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.7.0.tgz#4dca6de463d86f02d252e681136a67888ea3b181" + integrity sha512-m/gWCCcS4jXw6vkrPQ1BjZ1vomP01PArgzvauBqzsoZ3urLbsRChexB8/YV8z9HwE3qlJM35FxfKZ1nfP/4x8g== dependencies: - "@typescript-eslint/scope-manager" "4.33.0" - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/typescript-estree" "4.33.0" - debug "^4.3.1" + "@typescript-eslint/scope-manager" "5.7.0" + "@typescript-eslint/types" "5.7.0" + "@typescript-eslint/typescript-estree" "5.7.0" + debug "^4.3.2" -"@typescript-eslint/scope-manager@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz#d38e49280d983e8772e29121cf8c6e9221f280a3" - integrity sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ== +"@typescript-eslint/scope-manager@5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.7.0.tgz#70adf960e5a58994ad50438ba60d98ecadd79452" + integrity sha512-7mxR520DGq5F7sSSgM0HSSMJ+TFUymOeFRMfUfGFAVBv8BR+Jv1vHgAouYUvWRZeszVBJlLcc9fDdktxb5kmxA== dependencies: - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/visitor-keys" "4.33.0" + "@typescript-eslint/types" "5.7.0" + "@typescript-eslint/visitor-keys" "5.7.0" -"@typescript-eslint/types@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.33.0.tgz#a1e59036a3b53ae8430ceebf2a919dc7f9af6d72" - integrity sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ== +"@typescript-eslint/types@5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.7.0.tgz#2d4cae0105ba7d08bffa69698197a762483ebcbe" + integrity sha512-5AeYIF5p2kAneIpnLFve8g50VyAjq7udM7ApZZ9JYjdPjkz0LvODfuSHIDUVnIuUoxafoWzpFyU7Sqbxgi79mA== -"@typescript-eslint/typescript-estree@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz#0dfb51c2908f68c5c08d82aefeaf166a17c24609" - integrity sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA== +"@typescript-eslint/typescript-estree@5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.7.0.tgz#968fad899050ccce4f08a40cd5fabc0798525006" + integrity sha512-aO1Ql+izMrTnPj5aFFlEJkpD4jRqC4Gwhygu2oHK2wfVQpmOPbyDSveJ+r/NQo+PWV43M6uEAeLVbTi09dFLhg== dependencies: - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/visitor-keys" "4.33.0" - debug "^4.3.1" - globby "^11.0.3" - is-glob "^4.0.1" + "@typescript-eslint/types" "5.7.0" + "@typescript-eslint/visitor-keys" "5.7.0" + debug "^4.3.2" + globby "^11.0.4" + is-glob "^4.0.3" semver "^7.3.5" tsutils "^3.21.0" -"@typescript-eslint/visitor-keys@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz#2a22f77a41604289b7a186586e9ec48ca92ef1dd" - integrity sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg== +"@typescript-eslint/visitor-keys@5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.7.0.tgz#e05164239eb7cb8aa9fa06c516ede480ce260178" + integrity sha512-hdohahZ4lTFcglZSJ3DGdzxQHBSxsLVqHzkiOmKi7xVAWC4y2c1bIMKmPJSrA4aOEoRUPOKQ87Y/taC7yVHpFg== dependencies: - "@typescript-eslint/types" "4.33.0" - eslint-visitor-keys "^2.0.0" + "@typescript-eslint/types" "5.7.0" + eslint-visitor-keys "^3.0.0" "@webassemblyjs/ast@1.11.1": version "1.11.1" @@ -1585,9 +1560,9 @@ abbrev@1: integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== acorn-import-assertions@^1.7.6: - version "1.7.6" - resolved "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.7.6.tgz#580e3ffcae6770eebeec76c3b9723201e9d01f78" - integrity sha512-FlVvVFA1TX6l3lp8VjDnYYq7R1nyW6x3svAt4nDgrWQ9SBaSh9CnbwgSUTasgfNfOG5HlM1ehugCvM+hjo56LA== + version "1.8.0" + resolved "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" + integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== acorn-jsx@^5.3.1: version "5.3.2" @@ -1599,15 +1574,10 @@ acorn-walk@^8.0.0: resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== -acorn@^7.4.0: - version "7.4.1" - resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== - -acorn@^8.0.4, acorn@^8.4.1: - version "8.5.0" - resolved "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz#4512ccb99b3698c752591e9bb4472e38ad43cee2" - integrity sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q== +acorn@^8.0.4, acorn@^8.4.1, acorn@^8.6.0: + version "8.6.0" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz#e3692ba0eb1a0c83eaa4f37f5fa7368dd7142895" + integrity sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw== add-stream@^1.0.0: version "1.0.0" @@ -1653,22 +1623,12 @@ ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.1: - version "8.6.2" - resolved "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz#2fb45e0e5fcbc0813326c1c3da535d1881bb0571" - integrity sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - ansi-align@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" - integrity sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw== + version "3.0.1" + resolved "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" + integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== dependencies: - string-width "^3.0.0" + string-width "^4.1.0" ansi-colors@^4.1.1: version "4.1.1" @@ -1687,24 +1647,14 @@ ansi-regex@^2.0.0: resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= - -ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" - integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== - -ansi-regex@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" - integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== ansi-regex@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== ansi-styles@^3.2.1: @@ -1728,7 +1678,7 @@ ansi-styles@^5.0.0: ansi-styles@^6.0.0: version "6.1.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.1.0.tgz#87313c102b8118abd57371afab34618bf7350ed3" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.0.tgz#87313c102b8118abd57371afab34618bf7350ed3" integrity sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ== anymatch@~3.1.2: @@ -1751,7 +1701,7 @@ aproba@^1.0.3: resolved "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== -aproba@^2.0.0: +"aproba@^1.0.3 || ^2.0.0", aproba@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== @@ -1761,6 +1711,14 @@ archy@^1.0.0: resolved "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= +are-we-there-yet@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz#372e0e7bd279d8e94c653aaa1f67200884bf3e1c" + integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw== + dependencies: + delegates "^1.0.0" + readable-stream "^3.6.0" + are-we-there-yet@~1.1.2: version "1.1.7" resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz#b15474a932adab4ff8a50d9adfa7e4e926f21146" @@ -1776,6 +1734,11 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + argv@0.0.2: version "0.0.2" resolved "https://registry.npmjs.org/argv/-/argv-0.0.2.tgz#ecbd16f8949b157183711b1bda334f37840185ab" @@ -1798,7 +1761,7 @@ array-ify@^1.0.0: array-includes@^3.1.4: version "3.1.4" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.4.tgz#f5b493162c760f3539631f005ba2bb46acb45ba9" + resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz#f5b493162c760f3539631f005ba2bb46acb45ba9" integrity sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw== dependencies: call-bind "^1.0.2" @@ -1814,7 +1777,7 @@ array-union@^2.1.0: array.prototype.flat@^1.2.5: version "1.2.5" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz#07e0975d84bbc7c48cd1879d609e682598d33e13" + resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz#07e0975d84bbc7c48cd1879d609e682598d33e13" integrity sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg== dependencies: call-bind "^1.0.2" @@ -1842,9 +1805,9 @@ asap@^2.0.0: integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + version "0.2.6" + resolved "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" + integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== dependencies: safer-buffer "~2.1.0" @@ -2005,20 +1968,20 @@ bl@^4.1.0: readable-stream "^3.4.0" blueimp-md5@^2.10.0: - version "2.18.0" - resolved "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.18.0.tgz#1152be1335f0c6b3911ed9e36db54f3e6ac52935" - integrity sha512-vE52okJvzsVWhcgUHOv+69OG3Mdg151xyn41aVQN/5W5S+S43qZhxECtYLAEHMSFWX6Mv5IZrzj3T5+JqXfj5Q== + version "2.19.0" + resolved "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.19.0.tgz#b53feea5498dcb53dc6ec4b823adb84b729c4af0" + integrity sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w== boxen@^5.0.0: - version "5.0.1" - resolved "https://registry.npmjs.org/boxen/-/boxen-5.0.1.tgz#657528bdd3f59a772b8279b831f27ec2c744664b" - integrity sha512-49VBlw+PrWEF51aCmy7QIteYPIFZxSpvqBdP/2itCPPlJ49kj9zg/XPRFrdkne2W+CfwXUls8exMvu1RysZpKA== + version "5.1.2" + resolved "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50" + integrity sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ== dependencies: ansi-align "^3.0.0" camelcase "^6.2.0" chalk "^4.1.0" cli-boxes "^2.2.1" - string-width "^4.2.0" + string-width "^4.2.2" type-fest "^0.20.2" widest-line "^3.1.0" wrap-ansi "^7.0.0" @@ -2038,16 +2001,16 @@ braces@^3.0.1, braces@~3.0.2: dependencies: fill-range "^7.0.1" -browserslist@^4.14.5, browserslist@^4.16.6: - version "4.17.0" - resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.17.0.tgz#1fcd81ec75b41d6d4994fb0831b92ac18c01649c" - integrity sha512-g2BJ2a0nEYvEFQC208q8mVAhfNwpZ5Mu8BwgtCdZKO3qx98HChmeg448fPdUzld8aFmfLgVh7yymqV+q1lJZ5g== +browserslist@^4.14.5, browserslist@^4.17.5: + version "4.19.1" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz#4ac0435b35ab655896c31d53018b6dd5e9e4c9a3" + integrity sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A== dependencies: - caniuse-lite "^1.0.30001254" - colorette "^1.3.0" - electron-to-chromium "^1.3.830" + caniuse-lite "^1.0.30001286" + electron-to-chromium "^1.4.17" escalade "^3.1.1" - node-releases "^1.1.75" + node-releases "^2.0.1" + picocolors "^1.0.0" buffer-from@^1.0.0: version "1.1.2" @@ -2152,20 +2115,28 @@ camelcase@^5.0.0, camelcase@^5.3.1: integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== camelcase@^6.2.0: - version "6.2.0" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" - integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== + version "6.2.1" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.2.1.tgz#250fd350cfd555d0d2160b1d51510eaf8326e86e" + integrity sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA== -caniuse-lite@^1.0.30001254: - version "1.0.30001255" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001255.tgz#f3b09b59ab52e39e751a569523618f47c4298ca0" - integrity sha512-F+A3N9jTZL882f/fg/WWVnKSu6IOo3ueLz4zwaOPbPYHNmM/ZaDUyzyJwS1mZhX7Ex5jqTyW599Gdelh5PDYLQ== +caniuse-lite@^1.0.30001286: + version "1.0.30001287" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001287.tgz#5fab6a46ab9e47146d5dd35abfe47beaf8073c71" + integrity sha512-4udbs9bc0hfNrcje++AxBuc6PfLNHwh3PO9kbwnfCQWyqtlzg3py0YgFu8jyRTTo85VAz4U+VLxSlID09vNtWA== caseless@~0.12.0: version "0.12.0" resolved "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= +chalk@4, chalk@^4.0.0, chalk@^4.1.0: + version "4.1.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + chalk@^2.0.0, chalk@^2.4.1: version "2.4.2" resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -2175,14 +2146,6 @@ chalk@^2.0.0, chalk@^2.4.1: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: - version "4.1.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - chardet@^0.7.0: version "0.7.0" resolved "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" @@ -2256,9 +2219,9 @@ cli-cursor@^3.1.0: restore-cursor "^3.1.0" cli-spinners@^2.5.0: - version "2.6.0" - resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.0.tgz#36c7dc98fb6a9a76bd6238ec3f77e2425627e939" - integrity sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q== + version "2.6.1" + resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" + integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== cli-truncate@^2.1.0: version "2.1.0" @@ -2270,7 +2233,7 @@ cli-truncate@^2.1.0: cli-truncate@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-3.1.0.tgz#3f23ab12535e3d73e839bb43e73c9de487db1389" + resolved "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz#3f23ab12535e3d73e839bb43e73c9de487db1389" integrity sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA== dependencies: slice-ansi "^5.0.0" @@ -2283,7 +2246,7 @@ cli-width@^3.0.0: clipanion@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/clipanion/-/clipanion-3.1.0.tgz#3e217dd6476bb9236638b07eb4673f7309839819" + resolved "https://registry.npmjs.org/clipanion/-/clipanion-3.1.0.tgz#3e217dd6476bb9236638b07eb4673f7309839819" integrity sha512-v025Hz+IDQ15FpOyK8p02h5bFznMu6rLFsJSyOPR+7WrbSnZ1Ek6pblPukV7K5tC/dsWfncQPIrJ4iUy2PXkbw== dependencies: typanion "^3.3.1" @@ -2327,11 +2290,6 @@ clone@^1.0.2: resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= -clone@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" - integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= - cmd-shim@^4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/cmd-shim/-/cmd-shim-4.1.0.tgz#b3a904a6743e9fede4148c6f3800bf2a08135bdd" @@ -2386,14 +2344,14 @@ color-name@~1.1.4: resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -colorette@^1.3.0: - version "1.4.0" - resolved "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40" - integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== +color-support@^1.1.2: + version "1.1.3" + resolved "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== colorette@^2.0.16: version "2.0.16" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.16.tgz#713b9af84fdb000139f04546bd4a93f62a5085da" + resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz#713b9af84fdb000139f04546bd4a93f62a5085da" integrity sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g== columnify@^1.5.4: @@ -2418,7 +2376,7 @@ commander@^2.20.0: commander@^8.3.0: version "8.3.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" + resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== common-path-prefix@^3.0.0: @@ -2488,23 +2446,23 @@ configstore@^5.0.1: write-file-atomic "^3.0.0" xdg-basedir "^4.0.0" -console-control-strings@^1.0.0, console-control-strings@~1.1.0: +console-control-strings@^1.0.0, console-control-strings@^1.1.0, console-control-strings@~1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= conventional-changelog-angular@^5.0.12: - version "5.0.12" - resolved "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.12.tgz#c979b8b921cbfe26402eb3da5bbfda02d865a2b9" - integrity sha512-5GLsbnkR/7A89RyHLvvoExbiGbd9xKdKqDTrArnPbOqBqG/2wIosu0fHwpeIRI8Tl94MhVNBXcLJZl92ZQ5USw== + version "5.0.13" + resolved "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz#896885d63b914a70d4934b59d2fe7bde1832b28c" + integrity sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA== dependencies: compare-func "^2.0.0" q "^1.5.1" conventional-changelog-core@^4.2.2: - version "4.2.3" - resolved "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.3.tgz#ce44d4bbba4032e3dc14c00fcd5b53fc00b66433" - integrity sha512-MwnZjIoMRL3jtPH5GywVNqetGILC7g6RQFvdb8LRU/fA/338JbeWAku3PZ8yQ+mtVRViiISqJlb0sOz0htBZig== + version "4.2.4" + resolved "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz#e50d047e8ebacf63fac3dc67bf918177001e1e9f" + integrity sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg== dependencies: add-stream "^1.0.0" conventional-changelog-writer "^5.0.0" @@ -2550,9 +2508,9 @@ conventional-commits-filter@^2.0.7: modify-values "^1.0.0" conventional-commits-parser@^3.2.0: - version "3.2.1" - resolved "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.1.tgz#ba44f0b3b6588da2ee9fd8da508ebff50d116ce2" - integrity sha512-OG9kQtmMZBJD/32NEw5IhN5+HnBqVjy03eC+I71I0oQRFA5rOgA4OtPOYG7mz1GkCfCNxn3gKIX8EiHJYuf1cA== + version "3.2.3" + resolved "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.3.tgz#fc43704698239451e3ef35fd1d8ed644f46bd86e" + integrity sha512-YyRDR7On9H07ICFpRm/igcdjIqebXbvf4Cff+Pf0BrBys1i1EOzx9iFXNlAbdrLAR8jf7bkUYkDAr8pEy0q4Pw== dependencies: JSONStream "^1.0.4" is-text-path "^1.0.1" @@ -2560,7 +2518,6 @@ conventional-commits-parser@^3.2.0: meow "^8.0.0" split2 "^3.0.0" through2 "^4.0.0" - trim-off-newlines "^1.0.0" conventional-recommended-bump@^6.1.0: version "6.1.0" @@ -2684,10 +2641,10 @@ dateformat@^3.0.0: resolved "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== -debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2: - version "4.3.2" - resolved "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" - integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3: + version "4.3.3" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" + integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== dependencies: ms "2.1.2" @@ -2886,21 +2843,16 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" -electron-to-chromium@^1.3.830: - version "1.3.833" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.833.tgz#e1394eb32ab8a9430ffd7d5adf632ce6c3b05e18" - integrity sha512-h+9aVaUHjyunLqtCjJF2jrJ73tYcJqo2cCGKtVAXH9WmnBsb8hiChRQ0P1uXjdxR6Wcfxibephy41c1YlZA/pA== +electron-to-chromium@^1.4.17: + version "1.4.23" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.23.tgz#c8fa28db6354062bbd388e24d95c4a263fff5cac" + integrity sha512-q3tB59Api3+DMbLnDPkW/UBHBO7KTGcF+rDCeb0GAGyqFj562s6y+c/2tDKTS/y5lbC+JOvT4MSUALJLPqlcSA== emittery@^0.8.0: version "0.8.1" resolved "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== - emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" @@ -2908,7 +2860,7 @@ emoji-regex@^8.0.0: emoji-regex@^9.2.2: version "9.2.2" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== encoding@^0.1.12: @@ -2967,33 +2919,9 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.18.0-next.2: - version "1.18.6" - resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.6.tgz#2c44e3ea7a6255039164d26559777a6d978cb456" - integrity sha512-kAeIT4cku5eNLNuUKhlmtuk1/TRZvQoYccn6TO0cSVdf1kzB0T7+dYuVK9MWM7l+/53W2Q8M7N2c6MQvhXFcUQ== - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - get-intrinsic "^1.1.1" - get-symbol-description "^1.0.0" - has "^1.0.3" - has-symbols "^1.0.2" - internal-slot "^1.0.3" - is-callable "^1.2.4" - is-negative-zero "^2.0.1" - is-regex "^1.1.4" - is-string "^1.0.7" - object-inspect "^1.11.0" - object-keys "^1.1.1" - object.assign "^4.1.2" - string.prototype.trimend "^1.0.4" - string.prototype.trimstart "^1.0.4" - unbox-primitive "^1.0.1" - es-abstract@^1.19.0, es-abstract@^1.19.1: version "1.19.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3" + resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3" integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w== dependencies: call-bind "^1.0.2" @@ -3076,7 +3004,7 @@ eslint-import-resolver-node@^0.3.6: eslint-module-utils@^2.7.1: version "2.7.1" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.1.tgz#b435001c9f8dd4ab7f6d0efcae4b9696d4c24b7c" + resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.1.tgz#b435001c9f8dd4ab7f6d0efcae4b9696d4c24b7c" integrity sha512-fjoetBXQZq2tSTWZ9yWVl2KuFrTZZH3V+9iD1V1RfpDgxzJR+mPd/KZmMiA8gbPqdBzpNiEHOuT7IYEWxrH0zQ== dependencies: debug "^3.2.7" @@ -3085,7 +3013,7 @@ eslint-module-utils@^2.7.1: eslint-plugin-import@^2.25.3: version "2.25.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.25.3.tgz#a554b5f66e08fb4f6dc99221866e57cfff824766" + resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.3.tgz#a554b5f66e08fb4f6dc99221866e57cfff824766" integrity sha512-RzAVbby+72IB3iOEL8clzPLzL3wpDrlwjsTBAQXgyp5SeTqqY+0bFubwuo+y/HLhNZcXV4XqTBO4LGsfyHIDXg== dependencies: array-includes "^3.1.4" @@ -3109,11 +3037,6 @@ eslint-plugin-prettier@^4.0.0: dependencies: prettier-linter-helpers "^1.0.0" -eslint-plugin-sonarjs@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-sonarjs/-/eslint-plugin-sonarjs-0.11.0.tgz#46d18bc4066c66e490de057253b9cc97bde9f176" - integrity sha512-ei/WuZiL0wP+qx2KrxKyZs3+eDbxiGAhFSm3GKCOOAUkg+G2ny6TSXDB2j67tvyqHefi+eoQsAgGQvz+nEtIBw== - eslint-scope@5.1.1, eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" @@ -3122,12 +3045,13 @@ eslint-scope@5.1.1, eslint-scope@^5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" - integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== +eslint-scope@^7.1.0: + version "7.1.0" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz#c1f6ea30ac583031f203d65c73e723b01298f153" + integrity sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg== dependencies: - eslint-visitor-keys "^1.1.0" + esrecurse "^4.3.0" + estraverse "^5.2.0" eslint-utils@^3.0.0: version "3.0.0" @@ -3136,47 +3060,46 @@ eslint-utils@^3.0.0: dependencies: eslint-visitor-keys "^2.0.0" -eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" - integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== - eslint-visitor-keys@^2.0.0: version "2.1.0" resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== -eslint@^7.32.0: - version "7.32.0" - resolved "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" - integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== +eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz#eee4acea891814cda67a7d8812d9647dd0179af2" + integrity sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA== + +eslint@^8.4.1: + version "8.4.1" + resolved "https://registry.npmjs.org/eslint/-/eslint-8.4.1.tgz#d6531bbf3e598dffd7c0c7d35ec52a0b30fdfa2d" + integrity sha512-TxU/p7LB1KxQ6+7aztTnO7K0i+h0tDi81YRY9VzB6Id71kNz+fFYnf5HD5UOQmxkzcoa0TlVZf9dpMtUv0GpWg== dependencies: - "@babel/code-frame" "7.12.11" - "@eslint/eslintrc" "^0.4.3" - "@humanwhocodes/config-array" "^0.5.0" + "@eslint/eslintrc" "^1.0.5" + "@humanwhocodes/config-array" "^0.9.2" ajv "^6.10.0" chalk "^4.0.0" cross-spawn "^7.0.2" - debug "^4.0.1" + debug "^4.3.2" doctrine "^3.0.0" enquirer "^2.3.5" escape-string-regexp "^4.0.0" - eslint-scope "^5.1.1" - eslint-utils "^2.1.0" - eslint-visitor-keys "^2.0.0" - espree "^7.3.1" + eslint-scope "^7.1.0" + eslint-utils "^3.0.0" + eslint-visitor-keys "^3.1.0" + espree "^9.2.0" esquery "^1.4.0" esutils "^2.0.2" fast-deep-equal "^3.1.3" file-entry-cache "^6.0.1" functional-red-black-tree "^1.0.1" - glob-parent "^5.1.2" + glob-parent "^6.0.1" globals "^13.6.0" ignore "^4.0.6" import-fresh "^3.0.0" imurmurhash "^0.1.4" is-glob "^4.0.0" - js-yaml "^3.13.1" + js-yaml "^4.1.0" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.4.1" lodash.merge "^4.6.2" @@ -3184,22 +3107,21 @@ eslint@^7.32.0: natural-compare "^1.4.0" optionator "^0.9.1" progress "^2.0.0" - regexpp "^3.1.0" + regexpp "^3.2.0" semver "^7.2.1" - strip-ansi "^6.0.0" + strip-ansi "^6.0.1" strip-json-comments "^3.1.0" - table "^6.0.9" text-table "^0.2.0" v8-compile-cache "^2.0.3" -espree@^7.3.0, espree@^7.3.1: - version "7.3.1" - resolved "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" - integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== +espree@^9.2.0: + version "9.2.0" + resolved "https://registry.npmjs.org/espree/-/espree-9.2.0.tgz#c50814e01611c2d0f8bd4daa83c369eabba80dbc" + integrity sha512-oP3utRkynpZWF/F2x/HZJ+AGtnIclaR7z1pYPxy7NYM2fSO6LgK/Rkny8anRSPK/VwEA1eqm2squui0T7ZMOBg== dependencies: - acorn "^7.4.0" + acorn "^8.6.0" acorn-jsx "^5.3.1" - eslint-visitor-keys "^1.3.0" + eslint-visitor-keys "^3.1.0" esprima@^4.0.0: version "4.0.1" @@ -3226,9 +3148,9 @@ estraverse@^4.1.1: integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== estraverse@^5.1.0, estraverse@^5.2.0: - version "5.2.0" - resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" - integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== + version "5.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== esutils@^2.0.2, esutils@^2.0.3: version "2.0.3" @@ -3280,9 +3202,9 @@ extsprintf@1.3.0: integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + version "1.4.1" + resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" + integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" @@ -3323,9 +3245,9 @@ fast-url-parser@^1.1.3: punycode "^1.3.2" fastq@^1.6.0: - version "1.12.0" - resolved "https://registry.npmjs.org/fastq/-/fastq-1.12.0.tgz#ed7b6ab5d62393fb2cc591c853652a5c318bf794" - integrity sha512-VNX0QkHK3RsXVKr9KrlUv/FoTa0NdbYoHHl7uXHv2rzyHSlxjdNAKug2twd9luJxpcyNeAgf5iPPMutJO67Dfg== + version "1.13.0" + resolved "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" + integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== dependencies: reusify "^1.0.4" @@ -3400,9 +3322,9 @@ flat-cache@^3.0.4: rimraf "^3.0.2" flatted@^3.1.0: - version "3.2.2" - resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz#64bfed5cb68fe3ca78b3eb214ad97b63bedce561" - integrity sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA== + version "3.2.4" + resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz#28d9969ea90661b5134259f312ab6aa7929ac5e2" + integrity sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw== foreground-child@^2.0.0: version "2.0.0" @@ -3475,6 +3397,21 @@ functional-red-black-tree@^1.0.1: resolved "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= +gauge@^3.0.0: + version "3.0.2" + resolved "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz#03bf4441c044383908bcfa0656ad91803259b395" + integrity sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q== + dependencies: + aproba "^1.0.3 || ^2.0.0" + color-support "^1.1.2" + console-control-strings "^1.0.0" + has-unicode "^2.0.1" + object-assign "^4.1.1" + signal-exit "^3.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wide-align "^1.1.2" + gauge@~2.7.3: version "2.7.4" resolved "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" @@ -3618,15 +3555,22 @@ glob-parent@^5.1.1, glob-parent@^5.1.2, glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" +glob-parent@^6.0.1: + version "6.0.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + glob-to-regexp@^0.4.1: version "0.4.1" resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== glob@^7.1.1, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: - version "7.1.7" - resolved "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" - integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== + version "7.2.0" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -3648,13 +3592,13 @@ globals@^11.1.0: integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== globals@^13.6.0, globals@^13.9.0: - version "13.11.0" - resolved "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz#40ef678da117fe7bd2e28f1fab24951bd0255be7" - integrity sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g== + version "13.12.0" + resolved "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz#4d733760304230a0082ed96e21e5c565f898089e" + integrity sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg== dependencies: type-fest "^0.20.2" -globby@^11.0.1, globby@^11.0.2, globby@^11.0.3: +globby@^11.0.1, globby@^11.0.2, globby@^11.0.4: version "11.0.4" resolved "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5" integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg== @@ -3832,7 +3776,7 @@ humanize-ms@^1.2.1: husky@^7.0.4: version "7.0.4" - resolved "https://registry.yarnpkg.com/husky/-/husky-7.0.4.tgz#242048245dc49c8fb1bf0cc7cfb98dd722531535" + resolved "https://registry.npmjs.org/husky/-/husky-7.0.4.tgz#242048245dc49c8fb1bf0cc7cfb98dd722531535" integrity sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ== iconv-lite@^0.4.24: @@ -3872,9 +3816,9 @@ ignore@^4.0.6: integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== ignore@^5.1.4, ignore@^5.1.8: - version "5.1.8" - resolved "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" - integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== + version "5.1.9" + resolved "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz#9ec1a5cbe8e1446ec60d4420060d43aa6e7382fb" + integrity sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ== import-fresh@^3.0.0, import-fresh@^3.2.1: version "3.3.0" @@ -3890,9 +3834,9 @@ import-lazy@^2.1.0: integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= import-local@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" - integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA== + version "3.0.3" + resolved "https://registry.npmjs.org/import-local/-/import-local-3.0.3.tgz#4d51c2c495ca9393da259ec66b62e022920211e0" + integrity sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA== dependencies: pkg-dir "^4.2.0" resolve-cwd "^3.0.0" @@ -3936,15 +3880,14 @@ ini@^1.3.2, ini@^1.3.4, ini@~1.3.0: integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== init-package-json@^2.0.2: - version "2.0.4" - resolved "https://registry.npmjs.org/init-package-json/-/init-package-json-2.0.4.tgz#9f9f66cd5934e6d5f645150e15013d384d0b90d2" - integrity sha512-gUACSdZYka+VvnF90TsQorC+1joAVWNI724vBNj3RD0LLMeDss2IuzaeiQs0T4YzKs76BPHtrp/z3sn2p+KDTw== + version "2.0.5" + resolved "https://registry.npmjs.org/init-package-json/-/init-package-json-2.0.5.tgz#78b85f3c36014db42d8f32117252504f68022646" + integrity sha512-u1uGAtEFu3VA6HNl/yUWw57jmKEMx8SKOxHhxjGnOFUiIlFnohKDFg4ZrPpv9wWqk44nDxGJAtqjdQFm+9XXQA== dependencies: - glob "^7.1.1" - npm-package-arg "^8.1.2" + npm-package-arg "^8.1.5" promzard "^0.3.0" read "~1.0.1" - read-package-json "^4.0.0" + read-package-json "^4.1.1" semver "^7.3.5" validate-npm-package-license "^3.0.4" validate-npm-package-name "^3.0.0" @@ -3968,26 +3911,6 @@ inquirer@^7.3.3: strip-ansi "^6.0.0" through "^2.3.6" -inquirer@^8.1.3: - version "8.1.5" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.1.5.tgz#2dc5159203c826d654915b5fe6990fd17f54a150" - integrity sha512-G6/9xUqmt/r+UvufSyrPpt84NYwhKZ9jLsgMbQzlx804XErNupor8WQdBnBRrXmBfTPpuwf1sV+ss2ovjgdXIg== - dependencies: - ansi-escapes "^4.2.1" - chalk "^4.1.1" - cli-cursor "^3.1.0" - cli-width "^3.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.21" - mute-stream "0.0.8" - ora "^5.4.1" - run-async "^2.4.0" - rxjs "^7.2.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - through "^2.3.6" - internal-slot@^1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" @@ -4048,7 +3971,7 @@ is-ci@^2.0.0: is-core-module@^2.2.0, is-core-module@^2.5.0, is-core-module@^2.8.0: version "2.8.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548" integrity sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw== dependencies: has "^1.0.3" @@ -4077,11 +4000,6 @@ is-fullwidth-code-point@^1.0.0: dependencies: number-is-nan "^1.0.0" -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" @@ -4089,12 +4007,12 @@ is-fullwidth-code-point@^3.0.0: is-fullwidth-code-point@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz#fae3167c729e7463f8461ce512b080a49268aa88" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz#fae3167c729e7463f8461ce512b080a49268aa88" integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ== is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: is-extglob "^2.1.1" @@ -4118,9 +4036,9 @@ is-lambda@^1.0.1: integrity sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU= is-negative-zero@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" - integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== + version "2.0.2" + resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== is-npm@^5.0.0: version "5.0.0" @@ -4191,7 +4109,7 @@ is-regex@^1.1.4: is-shared-array-buffer@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" + resolved "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA== is-ssh@^1.3.0: @@ -4238,11 +4156,11 @@ is-unicode-supported@^0.1.0: integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== is-weakref@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.1.tgz#842dba4ec17fa9ac9850df2d6efbc1737274f2a2" - integrity sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ== + version "1.0.2" + resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== dependencies: - call-bind "^1.0.0" + call-bind "^1.0.2" is-windows@^1.0.2: version "1.0.2" @@ -4275,9 +4193,9 @@ isstream@~0.1.2: integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.0.0-alpha.1: - version "3.0.0" - resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" - integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== + version "3.2.0" + resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" + integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== istanbul-lib-hook@^3.0.0: version "3.0.0" @@ -4319,26 +4237,26 @@ istanbul-lib-report@^3.0.0: supports-color "^7.1.0" istanbul-lib-source-maps@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" - integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg== + version "4.0.1" + resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" + integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== dependencies: debug "^4.1.1" istanbul-lib-coverage "^3.0.0" source-map "^0.6.1" istanbul-reports@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" - integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== + version "3.1.1" + resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.1.tgz#7085857f17d2441053c6ce5c3b8fdf6882289397" + integrity sha512-q1kvhAXWSsXfMjCdNHNPKZZv94OlspKnoGv+R9RGbnqOOQ0VbNfLFgQDVgi7hHenKsndGq3/o0OBdzDXthWcNw== dependencies: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -jest-worker@^27.0.6: - version "27.1.1" - resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.1.1.tgz#eb5f05c4657fdcb702c36c48b20d785bd4599378" - integrity sha512-XJKCL7tu+362IUYTWvw8+3S75U7qMiYiRU6u5yqscB48bTvzwN6i8L/7wVTXiFLwkRsxARNM7TISnTvcgv9hxA== +jest-worker@^27.4.1: + version "27.4.5" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.5.tgz#d696e3e46ae0f24cff3fa7195ffba22889262242" + integrity sha512-f2s8kEdy15cv9r7q4KkzGXvlY0JTcmCbMHZBfSQDwW77REr45IDWwd0lksDFeVHH2jJ5pqb90T77XscrjeGzzg== dependencies: "@types/node" "*" merge-stream "^2.0.0" @@ -4362,6 +4280,13 @@ js-yaml@3.14.1, js-yaml@^3.13.1, js-yaml@^3.14.0: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + jsbn@~0.1.0: version "0.1.1" resolved "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" @@ -4392,15 +4317,10 @@ json-schema-traverse@^0.4.1: resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== -json-schema-traverse@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" - integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== - -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= +json-schema@0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" + integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" @@ -4441,13 +4361,13 @@ jsonparse@^1.2.0, jsonparse@^1.3.1: integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + version "1.4.2" + resolved "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" + integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== dependencies: assert-plus "1.0.0" extsprintf "1.3.0" - json-schema "0.2.3" + json-schema "0.4.0" verror "1.10.0" keyv@^3.0.0: @@ -4524,17 +4444,17 @@ libnpmpublish@^4.0.0: lilconfig@2.0.4: version "2.0.4" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.4.tgz#f4507d043d7058b380b6a8f5cb7bcd4b34cee082" + resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.4.tgz#f4507d043d7058b380b6a8f5cb7bcd4b34cee082" integrity sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA== lines-and-columns@^1.1.6: - version "1.1.6" - resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" - integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + version "1.2.4" + resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== lint-staged@^12.1.2: version "12.1.2" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-12.1.2.tgz#90c571927e1371fc133e720671dd7989eab53f74" + resolved "https://registry.npmjs.org/lint-staged/-/lint-staged-12.1.2.tgz#90c571927e1371fc133e720671dd7989eab53f74" integrity sha512-bSMcQVqMW98HLLLR2c2tZ+vnDCnx4fd+0QJBQgN/4XkdspGRPc8DGp7UuOEBe1ApCfJ+wXXumYnJmU+wDo7j9A== dependencies: cli-truncate "^3.1.0" @@ -4553,15 +4473,15 @@ lint-staged@^12.1.2: yaml "^1.10.2" listr2@^3.13.3: - version "3.13.3" - resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.13.3.tgz#d8f6095c9371b382c9b1c2bc33c5941d8e177f11" - integrity sha512-VqAgN+XVfyaEjSaFewGPcDs5/3hBbWVaX1VgWv2f52MF7US45JuARlArULctiB44IIcEk3JF7GtoFCLqEdeuPA== + version "3.13.5" + resolved "https://registry.npmjs.org/listr2/-/listr2-3.13.5.tgz#105a813f2eb2329c4aae27373a281d610ee4985f" + integrity sha512-3n8heFQDSk+NcwBn3CgxEibZGaRzx+pC64n3YjpMD1qguV4nWus3Al+Oo3KooqFKTQEJ1v7MmnbnyyNspgx3NA== dependencies: cli-truncate "^2.1.0" - clone "^2.1.2" colorette "^2.0.16" log-update "^4.0.0" p-map "^4.0.0" + rfdc "^1.3.0" rxjs "^7.4.0" through "^2.3.8" wrap-ansi "^7.0.0" @@ -4604,7 +4524,7 @@ loader-runner@^4.2.0: loader-utils@^3.2.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.2.0.tgz#bcecc51a7898bee7473d4bc6b845b23af8304d4f" + resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.0.tgz#bcecc51a7898bee7473d4bc6b845b23af8304d4f" integrity sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ== locate-path@^2.0.0: @@ -4635,11 +4555,6 @@ lodash._reinterpolate@^3.0.0: resolved "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= -lodash.clonedeep@^4.5.0: - version "4.5.0" - resolved "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" - integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= - lodash.flattendeep@^4.4.0: version "4.4.0" resolved "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" @@ -4670,12 +4585,7 @@ lodash.templatesettings@^4.0.0: dependencies: lodash._reinterpolate "^3.0.0" -lodash.truncate@^4.4.2: - version "4.4.2" - resolved "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" - integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= - -lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.7.0: +lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.4, lodash@^4.7.0: version "4.17.21" resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -4786,9 +4696,9 @@ map-obj@^1.0.0: integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= map-obj@^4.0.0: - version "4.2.1" - resolved "https://registry.npmjs.org/map-obj/-/map-obj-4.2.1.tgz#e4ea399dbc979ae735c83c863dd31bdf364277b7" - integrity sha512-+WA2/1sPmDj1dlvvJmB5G6JKfY9dpn7EVBUL06+y6PoljPkh+6V1QihwxNkbcGxCRjt2b0F9K0taiCuo7MbdFQ== + version "4.3.0" + resolved "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" + integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== matcher@^3.0.0: version "3.0.0" @@ -4852,17 +4762,17 @@ micromatch@^4.0.4: braces "^3.0.1" picomatch "^2.2.3" -mime-db@1.49.0: - version "1.49.0" - resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz#f3dfde60c99e9cf3bc9701d687778f537001cbed" - integrity sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA== +mime-db@1.51.0: + version "1.51.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c" + integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g== mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.19: - version "2.1.32" - resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz#1d00e89e7de7fe02008db61001d9e02852670fd5" - integrity sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A== + version "2.1.34" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24" + integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A== dependencies: - mime-db "1.49.0" + mime-db "1.51.0" mimic-fn@^2.1.0: version "2.1.0" @@ -4961,9 +4871,9 @@ minipass@^2.6.0, minipass@^2.9.0: yallist "^3.0.0" minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3: - version "3.1.3" - resolved "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" - integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== + version "3.1.6" + resolved "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz#3b8150aa688a711a1521af5e8779c1d3bb4f45ee" + integrity sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ== dependencies: yallist "^4.0.0" @@ -5074,10 +4984,12 @@ node-addon-api@^3.0.2, node-addon-api@^3.1.0: resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== -node-fetch@^2.6.1: - version "2.6.2" - resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.2.tgz#986996818b73785e47b1965cc34eb093a1d464d0" - integrity sha512-aLoxToI6RfZ+0NOjmWAgn9+LEd30YCkJKFSyWacNZdEKTit/ZMcKjGkTRo8uWEsnIb/hfKecNPEbln02PdWbcA== +node-fetch@^2.6.1, node-fetch@^2.6.5: + version "2.6.6" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.6.tgz#1751a7c01834e8e1697758732e9efb6eeadfaf89" + integrity sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA== + dependencies: + whatwg-url "^5.0.0" node-gyp@^5.0.2: version "5.1.1" @@ -5112,11 +5024,6 @@ node-gyp@^7.1.0: tar "^6.0.2" which "^2.0.2" -node-modules-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" - integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= - node-preload@^0.2.1: version "0.2.1" resolved "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz#c03043bb327f417a18fee7ab7ee57b408a144301" @@ -5124,10 +5031,10 @@ node-preload@^0.2.1: dependencies: process-on-spawn "^1.0.0" -node-releases@^1.1.75: - version "1.1.75" - resolved "https://registry.npmjs.org/node-releases/-/node-releases-1.1.75.tgz#6dd8c876b9897a1b8e5a02de26afa79bb54ebbfe" - integrity sha512-Qe5OUajvqrqDSy6wrWFmMwfJ0jVgwiw4T3KqmbTcZ62qW0gQkheXYhcFM1+lOVcGUoRxcEcfyvFMAnDgaF1VWw== +node-releases@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5" + integrity sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA== nodejieba@^2.5.2: version "2.5.2" @@ -5220,7 +5127,7 @@ npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1: resolved "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== -npm-package-arg@^8.0.0, npm-package-arg@^8.0.1, npm-package-arg@^8.1.0, npm-package-arg@^8.1.2: +npm-package-arg@^8.0.0, npm-package-arg@^8.0.1, npm-package-arg@^8.1.0, npm-package-arg@^8.1.2, npm-package-arg@^8.1.5: version "8.1.5" resolved "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz#3369b2d5fe8fdc674baa7f1786514ddc15466e44" integrity sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q== @@ -5307,6 +5214,16 @@ npmlog@^4.1.2: gauge "~2.7.3" set-blocking "~2.0.0" +npmlog@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz#f06678e80e29419ad67ab964e0fa69959c1eb8b0" + integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw== + dependencies: + are-we-there-yet "^2.0.0" + console-control-strings "^1.1.0" + gauge "^3.0.0" + set-blocking "^2.0.0" + number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" @@ -5350,15 +5267,15 @@ oauth-sign@~0.9.0: resolved "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== -object-assign@^4.1.0: +object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= object-inspect@^1.11.0, object-inspect@^1.9.0: - version "1.11.0" - resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1" - integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg== + version "1.11.1" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.1.tgz#d4bd7d7de54b9a75599f59a00bd698c1f1c6549b" + integrity sha512-If7BjFlpkzzBeV1cqgT3OSWT3azyoxDGajR+iGnFBfVV2EWyDyWaZZW2ERDjUaY2QM8i5jI3Sj7mhsM4DDAqWA== object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" @@ -5376,17 +5293,17 @@ object.assign@^4.1.2: object-keys "^1.1.1" object.getownpropertydescriptors@^2.0.3: - version "2.1.2" - resolved "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz#1bd63aeacf0d5d2d2f31b5e393b03a7c601a23f7" - integrity sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ== + version "2.1.3" + resolved "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz#b223cf38e17fefb97a63c10c91df72ccb386df9e" + integrity sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw== dependencies: call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" + es-abstract "^1.19.1" object.values@^1.1.5: version "1.1.5" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" + resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== dependencies: call-bind "^1.0.2" @@ -5419,7 +5336,7 @@ optionator@^0.9.1: type-check "^0.4.0" word-wrap "^1.2.3" -ora@^5.2.0, ora@^5.4.1: +ora@^5.2.0: version "5.4.1" resolved "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== @@ -5488,13 +5405,6 @@ p-limit@^2.0.0, p-limit@^2.2.0: dependencies: p-try "^2.0.0" -p-limit@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - p-locate@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" @@ -5719,6 +5629,11 @@ performance-now@^2.1.0: resolved "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3: version "2.3.0" resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" @@ -5749,12 +5664,10 @@ pify@^5.0.0: resolved "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f" integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== -pirates@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" - integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== - dependencies: - node-modules-regexp "^1.0.0" +pirates@^4.0.4: + version "4.0.4" + resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.4.tgz#07df81e61028e402735cdd49db701e4885b4e6e6" + integrity sha512-ZIrVPH+A52Dw84R0L3/VS9Op04PuQ2SEoJL6bkshmiTic/HldyW9Tf7oH5mhJZBK7NmDx27vSMrYEXPXclpDKw== pkg-conf@^3.1.0: version "3.1.0" @@ -5809,7 +5722,7 @@ prettier-linter-helpers@^1.0.0: prettier@^2.5.1: version "2.5.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.5.1.tgz#fff75fa9d519c54cf0fce328c1017d94546bc56a" + resolved "https://registry.npmjs.org/prettier/-/prettier-2.5.1.tgz#fff75fa9d519c54cf0fce328c1017d94546bc56a" integrity sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg== pretty-ms@^7.0.1: @@ -5902,9 +5815,9 @@ q@^1.5.1: integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= qs@^6.9.4: - version "6.10.1" - resolved "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz#4931482fa8d647a5aab799c5271d2133b981fb6a" - integrity sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg== + version "6.10.2" + resolved "https://registry.npmjs.org/qs/-/qs-6.10.2.tgz#c1431bea37fc5b24c5bdbafa20f16bdf2a4b9ffe" + integrity sha512-mSIdjzqznWgfd4pMii7sHtaYF8rx8861hBO80SraY5GT0XQibWZWJSid0avzHGkDIZLImux2S5mXO0Hfct2QCw== dependencies: side-channel "^1.0.4" @@ -5983,7 +5896,7 @@ read-package-json@^3.0.0: normalize-package-data "^3.0.0" npm-normalize-package-bin "^1.0.0" -read-package-json@^4.0.0: +read-package-json@^4.1.1: version "4.1.1" resolved "https://registry.npmjs.org/read-package-json/-/read-package-json-4.1.1.tgz#153be72fce801578c1c86b8ef2b21188df1b9eea" integrity sha512-P82sbZJ3ldDrWCOSKxJT0r/CXMWR0OR3KRh55SgKo3p91GSIEEC32v3lSHAvO/UcH3/IoL7uqhOFBduAnwdldw== @@ -6045,7 +5958,7 @@ read@1, read@~1.0.1: dependencies: mute-stream "~0.0.4" -readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.4.0: +readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.4.0, readable-stream@^3.6.0: version "3.6.0" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -6092,7 +6005,7 @@ redent@^3.0.0: indent-string "^4.0.0" strip-indent "^3.0.0" -regexpp@^3.1.0: +regexpp@^3.2.0: version "3.2.0" resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== @@ -6149,11 +6062,6 @@ require-directory@^2.1.1: resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= -require-from-string@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== - require-main-filename@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" @@ -6209,6 +6117,11 @@ reusify@^1.0.4: resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== +rfdc@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" + integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== + rimraf@^2.6.3: version "2.7.1" resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" @@ -6242,16 +6155,9 @@ rxjs@^6.6.0: dependencies: tslib "^1.9.0" -rxjs@^7.2.0: - version "7.3.0" - resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.3.0.tgz#39fe4f3461dc1e50be1475b2b85a0a88c1e938c6" - integrity sha512-p2yuGIg9S1epc3vrjKf6iVb3RCaAYjYskkO+jHIaV0IjOPlJop4UnodOoFb2xeNwlguqLYvGw1b1McillYb5Gw== - dependencies: - tslib "~2.1.0" - rxjs@^7.4.0: version "7.4.0" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.4.0.tgz#a12a44d7eebf016f5ff2441b87f28c9a51cebc68" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.4.0.tgz#a12a44d7eebf016f5ff2441b87f28c9a51cebc68" integrity sha512-7SQDi7xeTMCJpqViXh8gL/lebcwlp3d831F05+9B44A4B0WfsEwUQHR64gsH1kvJ+Ep/J9K2+n1hVl1CsGN23w== dependencies: tslib "~2.1.0" @@ -6355,9 +6261,9 @@ shebang-regex@^3.0.0: integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== shell-quote@^1.6.1: - version "1.7.2" - resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" - integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== + version "1.7.3" + resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123" + integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw== side-channel@^1.0.4: version "1.0.4" @@ -6369,9 +6275,9 @@ side-channel@^1.0.4: object-inspect "^1.9.0" signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" - integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== + version "3.0.6" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz#24e630c4b0f03fea446a2bd299e62b4a6ca8d0af" + integrity sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ== slash@^3.0.0: version "3.0.0" @@ -6398,7 +6304,7 @@ slice-ansi@^4.0.0: slice-ansi@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-5.0.0.tgz#b73063c57aa96f9cd881654b15294d95d285c42a" + resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz#b73063c57aa96f9cd881654b15294d95d285c42a" integrity sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ== dependencies: ansi-styles "^6.0.0" @@ -6424,9 +6330,9 @@ socks-proxy-agent@^5.0.0: socks "^2.3.3" socks-proxy-agent@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.0.0.tgz#9f8749cdc05976505fa9f9a958b1818d0e60573b" - integrity sha512-FIgZbQWlnjVEQvMkylz64/rUggGtrKstPnx8OZyYFG0tAFR8CSBtpXxSwbFLHyeXFn/cunFL7MpuSOvDSOPo9g== + version "6.1.1" + resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz#e664e8f1aaf4e1fb3df945f09e3d94f911137f87" + integrity sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew== dependencies: agent-base "^6.0.2" debug "^4.3.1" @@ -6454,18 +6360,10 @@ sort-keys@^4.0.0: dependencies: is-plain-obj "^2.0.0" -source-map-support@^0.5.19, source-map-support@~0.5.19: - version "0.5.19" - resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" - integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-support@^0.5.20: - version "0.5.20" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.20.tgz#12166089f8f5e5e8c56926b377633392dd2cb6c9" - integrity sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw== +source-map-support@^0.5.19, source-map-support@^0.5.21, source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" @@ -6519,9 +6417,9 @@ spdx-expression-parse@^3.0.0: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.10" - resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz#0d9becccde7003d6c658d487dd48a32f0bf3014b" - integrity sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA== + version "3.0.11" + resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz#50c0d8c40a14ec1bf449bae69a0ea4685a9d9f95" + integrity sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g== split-on-first@^1.0.0: version "1.1.0" @@ -6578,9 +6476,9 @@ ssri@^8.0.0, ssri@^8.0.1: minipass "^3.1.1" stack-utils@^2.0.3: - version "2.0.3" - resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.3.tgz#cd5f030126ff116b78ccb3c027fe302713b61277" - integrity sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw== + version "2.0.5" + resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz#d25265fca995154659dbbfba3b49254778d2fdd5" + integrity sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA== dependencies: escape-string-regexp "^2.0.0" @@ -6598,7 +6496,7 @@ strict-uri-encode@^2.0.0: string-argv@^0.3.1: version "0.3.1" - resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" + resolved "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== string-width@^1.0.1: @@ -6610,35 +6508,18 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2": - version "2.1.1" - resolved "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string-width@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" - -string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0: - version "4.2.2" - resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" - integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: emoji-regex "^8.0.0" is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.0" + strip-ansi "^6.0.1" string-width@^5.0.0: version "5.0.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.0.1.tgz#0d8158335a6cfd8eb95da9b6b262ce314a036ffd" + resolved "https://registry.npmjs.org/string-width/-/string-width-5.0.1.tgz#0d8158335a6cfd8eb95da9b6b262ce314a036ffd" integrity sha512-5ohWO/M4//8lErlUUtrFy3b11GtNOuMOU0ysKCDXFcfXuuvUXu95akgj/i8ofmaGdN0hCqyl6uu9i8dS/mQp5g== dependencies: emoji-regex "^9.2.2" @@ -6646,13 +6527,13 @@ string-width@^5.0.0: strip-ansi "^7.0.1" string.prototype.padend@^3.0.0: - version "3.1.2" - resolved "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.2.tgz#6858ca4f35c5268ebd5e8615e1327d55f59ee311" - integrity sha512-/AQFLdYvePENU3W5rgurfWSMU6n+Ww8n/3cUt7E+vPBB/D7YDG8x+qjoFs4M/alR2bW7Qg6xMjVwWUOvuQ0XpQ== + version "3.1.3" + resolved "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.3.tgz#997a6de12c92c7cb34dc8a201a6c53d9bd88a5f1" + integrity sha512-jNIIeokznm8SD/TZISQsZKYu7RJyheFNt84DUPrh482GC8RVp2MKqm2O5oBRdGxbDQoXrhhWtPIWQOiy20svUg== dependencies: call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" + es-abstract "^1.19.1" string.prototype.trimend@^1.0.4: version "1.0.4" @@ -6691,30 +6572,16 @@ strip-ansi@^3.0.0, strip-ansi@^3.0.1: dependencies: ansi-regex "^2.0.0" -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" - -strip-ansi@^5.1.0: - version "5.2.0" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - -strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: - ansi-regex "^5.0.0" + ansi-regex "^5.0.1" strip-ansi@^7.0.1: version "7.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2" integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw== dependencies: ansi-regex "^6.0.1" @@ -6798,26 +6665,14 @@ supports-color@^8.0.0: has-flag "^4.0.0" supports-color@^9.0.2: - version "9.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-9.1.0.tgz#558963681dafeff41ed68220488cbf438d29f351" - integrity sha512-lOCGOTmBSN54zKAoPWhHkjoqVQ0MqgzPE5iirtoSixhr0ZieR/6l7WZ32V53cvy9+1qghFnIk7k52p991lKd6g== - -table@^6.0.9: - version "6.7.1" - resolved "https://registry.npmjs.org/table/-/table-6.7.1.tgz#ee05592b7143831a8c94f3cee6aae4c1ccef33e2" - integrity sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg== - dependencies: - ajv "^8.0.1" - lodash.clonedeep "^4.5.0" - lodash.truncate "^4.4.2" - slice-ansi "^4.0.0" - string-width "^4.2.0" - strip-ansi "^6.0.0" + version "9.2.1" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-9.2.1.tgz#599dc9d45acf74c6176e0d880bab1d7d718fe891" + integrity sha512-Obv7ycoCTG51N7y175StI9BlAXrmgZrFhZOb0/PyjHBher/NmsdBgbbQ1Inhq+gIhz6+7Gb+jWF2Vqi7Mf1xnQ== tapable@^2.1.1, tapable@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz#5c373d281d9c672848213d0e037d1c4165ab426b" - integrity sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw== + version "2.2.1" + resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== tar@^4.4.12: version "4.4.19" @@ -6832,7 +6687,7 @@ tar@^4.4.12: safe-buffer "^5.2.1" yallist "^3.1.1" -tar@^6.0.2, tar@^6.1.0: +tar@^6.0.2, tar@^6.1.0, tar@^6.1.11: version "6.1.11" resolved "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== @@ -6877,25 +6732,24 @@ temp-write@^4.0.0: uuid "^3.3.2" terser-webpack-plugin@^5.1.3: - version "5.2.3" - resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.2.3.tgz#4852c91f709a4ea2bcf324cf48e7e88124cda0cc" - integrity sha512-eDbuaDlXhVaaoKuLD3DTNTozKqln6xOG6Us0SzlKG5tNlazG+/cdl8pm9qiF1Di89iWScTI0HcO+CDcf2dkXiw== + version "5.3.0" + resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.0.tgz#21641326486ecf91d8054161c816e464435bae9f" + integrity sha512-LPIisi3Ol4chwAaPP8toUJ3L4qCM1G0wao7L3qNv57Drezxj6+VEyySpPw4B1HSO2Eg/hDY/MNF5XihCAoqnsQ== dependencies: - jest-worker "^27.0.6" - p-limit "^3.1.0" + jest-worker "^27.4.1" schema-utils "^3.1.1" serialize-javascript "^6.0.0" source-map "^0.6.1" terser "^5.7.2" terser@^5.7.2: - version "5.7.2" - resolved "https://registry.npmjs.org/terser/-/terser-5.7.2.tgz#d4d95ed4f8bf735cb933e802f2a1829abf545e3f" - integrity sha512-0Omye+RD4X7X69O0eql3lC4Heh/5iLj3ggxR/B5ketZLOtLiOqukUgjw3q4PDnNQbsrkKr3UMypqStQG3XKRvw== + version "5.10.0" + resolved "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz#b86390809c0389105eb0a0b62397563096ddafcc" + integrity sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA== dependencies: commander "^2.20.0" source-map "~0.7.2" - source-map-support "~0.5.19" + source-map-support "~0.5.20" test-exclude@^6.0.0: version "6.0.0" @@ -6980,20 +6834,25 @@ tr46@^2.1.0: dependencies: punycode "^2.1.1" +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= + trim-newlines@^3.0.0: version "3.0.1" resolved "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== -trim-off-newlines@^1.0.0, trim-off-newlines@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3" - integrity sha1-n5up2e+odkw4dpi8v+sshI8RrbM= +trim-off-newlines@^1.0.1: + version "1.0.3" + resolved "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.3.tgz#8df24847fcb821b0ab27d58ab6efec9f2fe961a1" + integrity sha512-kh6Tu6GbeSNMGfrrZh6Bb/4ZEHV1QlB4xNDBeog8Y9/QwFlKTRyWvY3Fs9tRDAMZliVUwieMgEdIeL/FtqjkJg== tsconfig-paths@^3.11.0: - version "3.11.0" - resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.11.0.tgz#954c1fe973da6339c78e06b03ce2e48810b65f36" - integrity sha512-7ecdYDnIdmv639mmDwslG6KQg1Z9STTz1j7Gcz0xa+nshh/gKDAHcPxRbWOsA3SPp0tXP2leTcY9Kw+NAkfZzA== + version "3.12.0" + resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz#19769aca6ee8f6a1a341e38c8fa45dd9fb18899b" + integrity sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg== dependencies: "@types/json5" "^0.0.29" json5 "^1.0.1" @@ -7036,7 +6895,7 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: typanion@^3.3.1, typanion@^3.7.1: version "3.7.1" - resolved "https://registry.yarnpkg.com/typanion/-/typanion-3.7.1.tgz#5fceb57a2fa0c0a5beca25a7e90ac2a420863709" + resolved "https://registry.npmjs.org/typanion/-/typanion-3.7.1.tgz#5fceb57a2fa0c0a5beca25a7e90ac2a420863709" integrity sha512-g2QDI/ZLpuEor9EnJ1b7s9S2QSJgNCPBw9ZCSkQdqXNjg5ZQs4mASgW/elVifSxISFwBeMaIAmMBP5luAOIKAw== type-check@^0.4.0, type-check@~0.4.0: @@ -7098,15 +6957,15 @@ typedarray@^0.0.6: resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@^4.4.4, typescript@^4.5.3: - version "4.5.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.3.tgz#afaa858e68c7103317d89eb90c5d8906268d353c" - integrity sha512-eVYaEHALSt+s9LbvgEv4Ef+Tdq7hBiIZgii12xXJnukryt3pMgJf6aKhoCZ3FWQsu6sydEnkg11fYXLzhLBjeQ== +typescript@^4.5.3, typescript@^4.5.4: + version "4.5.4" + resolved "https://registry.npmjs.org/typescript/-/typescript-4.5.4.tgz#a17d3a0263bf5c8723b9c52f43c5084edf13c2e8" + integrity sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg== uglify-js@^3.1.4: - version "3.14.2" - resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.2.tgz#d7dd6a46ca57214f54a2d0a43cad0f35db82ac99" - integrity sha512-rtPMlmcO4agTUfz10CbgJ1k6UAoXM2gWb3GoMPPZB/+/Ackf8lNWk11K4rYi2D0apgoFRLtQOZhb+/iGNJq26A== + version "3.14.5" + resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.5.tgz#cdabb7d4954231d80cb4a927654c4655e51f4859" + integrity sha512-qZukoSxOG0urUTvjc2ERMTcAy+BiFh3weWAkeurLwjrCba73poHmG3E36XEjd/JGukMzwTL7uCxZiAexj8ppvQ== uid-number@0.0.6: version "0.0.6" @@ -7258,7 +7117,7 @@ verror@1.10.0: watchpack@^2.3.1: version "2.3.1" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.3.1.tgz#4200d9447b401156eeca7767ee610f8809bc9d25" + resolved "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz#4200d9447b401156eeca7767ee610f8809bc9d25" integrity sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA== dependencies: glob-to-regexp "^0.4.1" @@ -7271,6 +7130,11 @@ wcwidth@^1.0.0, wcwidth@^1.0.1: dependencies: defaults "^1.0.3" +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= + webidl-conversions@^6.1.0: version "6.1.0" resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" @@ -7278,12 +7142,12 @@ webidl-conversions@^6.1.0: webpack-sources@^3.2.2: version "3.2.2" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.2.tgz#d88e3741833efec57c4c789b6010db9977545260" + resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.2.tgz#d88e3741833efec57c4c789b6010db9977545260" integrity sha512-cp5qdmHnu5T8wRg2G3vZZHoJPN14aqQ89SyQ11NpGH5zEMDCclt49rzo+MaRazk7/UeILhAI+/sEtcM+7Fr0nw== webpack@^5, webpack@^5.65.0: version "5.65.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.65.0.tgz#ed2891d9145ba1f0d318e4ea4f89c3fa18e6f9be" + resolved "https://registry.npmjs.org/webpack/-/webpack-5.65.0.tgz#ed2891d9145ba1f0d318e4ea4f89c3fa18e6f9be" integrity sha512-Q5or2o6EKs7+oKmJo7LaqZaMOlDWQse9Tm5l1WAfU/ujLGN5Pb0SqGeVkN/4bpPmEqEP5RnVhiqsOtWtUVwGRw== dependencies: "@types/eslint-scope" "^3.7.0" @@ -7316,6 +7180,14 @@ well-known-symbols@^2.0.0: resolved "https://registry.npmjs.org/well-known-symbols/-/well-known-symbols-2.0.0.tgz#e9c7c07dbd132b7b84212c8174391ec1f9871ba5" integrity sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q== +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + whatwg-url@^8.4.0: version "8.7.0" resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" @@ -7355,12 +7227,12 @@ which@^2.0.1, which@^2.0.2: dependencies: isexe "^2.0.0" -wide-align@^1.1.0: - version "1.1.3" - resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== +wide-align@^1.1.0, wide-align@^1.1.2: + version "1.1.5" + resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" + integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== dependencies: - string-width "^1.0.2 || 2" + string-width "^1.0.2 || 2 || 3 || 4" widest-line@^3.1.0: version "3.1.0" @@ -7550,8 +7422,3 @@ yargs@^16.2.0: string-width "^4.2.0" y18n "^5.0.5" yargs-parser "^20.2.2" - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==