From fbf007e6c1994d2f6ddcbc904e17d55ddd0d5300 Mon Sep 17 00:00:00 2001 From: Daniel Freytag Date: Wed, 20 Nov 2024 16:33:28 +0100 Subject: [PATCH 1/9] refact!: remove crc hash functions other than `crc64*` --- .eslintrc | 312 --- .github/dependabot.yml | 8 +- .github/workflows/ci.yml | 47 +- .vscode/launch.json | 12 - .vscode/tasks.json | 23 - CHANGELOG.md | 6 + Cargo.toml | 9 +- README.md | 112 +- build.sh | 8 +- bun.lockb | Bin 0 -> 252202 bytes eslint.config.mjs | 76 + lib/lib.d.ts | 1 + package-lock.json | 4114 -------------------------------------- package.json | 33 +- rustfmt.toml | 2 +- src/lib.rs | 278 --- src/lib.ts | 628 +----- tests/tests.test.ts | 95 +- tsconfig.json | 80 +- 19 files changed, 250 insertions(+), 5594 deletions(-) delete mode 100644 .eslintrc delete mode 100644 .vscode/launch.json delete mode 100644 .vscode/tasks.json create mode 100755 bun.lockb create mode 100644 eslint.config.mjs delete mode 100644 package-lock.json diff --git a/.eslintrc b/.eslintrc deleted file mode 100644 index e92d7dc..0000000 --- a/.eslintrc +++ /dev/null @@ -1,312 +0,0 @@ -{ - "parser": "@typescript-eslint/parser", - "plugins": [ - "@typescript-eslint" - ], - "env": { - "browser": true, - "node": true - }, - "extends": [ - "eslint:recommended", - "plugin:@typescript-eslint/eslint-recommended", - "plugin:@typescript-eslint/recommended" - ], - "rules": { - "@typescript-eslint/no-var-requires": "warn", - "array-bracket-newline": [ - "error", - { - "minItems": 4, - "multiline": true - } - ], - "array-bracket-spacing": [ - "error", - "never" - ], - "array-element-newline": [ - "error", - "consistent" - ], - "block-spacing": [ - "error", - "always" - ], - "brace-style": [ - "error", - "1tbs" - ], - "camelcase": [ - "error", - { - "properties": "never" - } - ], - "comma-dangle": [ - "error", - "always-multiline" - ], - "comma-spacing": [ - "error", - { - "before": false, - "after": true - } - ], - "comma-style": [ - "error", - "last" - ], - "computed-property-spacing": [ - "error", - "never" - ], - "consistent-this": [ - "error", - "self" - ], - "eol-last": [ - "error", - "always" - ], - "func-call-spacing": [ - "error", - "never" - ], - "func-style": [ - "error", - "expression" - ], - "function-call-argument-newline": [ - "error", - "consistent" - ], - "function-paren-newline": [ - "error", - { - "minItems": 4 - } - ], - "implicit-arrow-linebreak": [ - "error", - "beside" - ], - "indent": [ - "error", - 4, - { - "SwitchCase": 1 - } - ], - "jsx-quotes": [ - "error", - "prefer-double" - ], - "key-spacing": [ - "error", - { - "beforeColon": false, - "afterColon": true - } - ], - "keyword-spacing": [ - "error", - { - "before": true, - "after": true - } - ], - "linebreak-style": [ - "error", - "unix" - ], - "lines-between-class-members": [ - "error", - "always" - ], - "multiline-ternary": [ - "error", - "never" - ], - "new-cap": [ - "error", - { - "newIsCap": true, - "capIsNew": true, - "properties": true - } - ], - "new-parens": [ - "error", - "always" - ], - "no-array-constructor": [ - "error" - ], - "no-lonely-if": [ - "error" - ], - "no-mixed-operators": [ - "error" - ], - "no-multi-assign": [ - "error" - ], - "no-multiple-empty-lines": [ - "error", - { - "max": 2, - "maxEOF": 0, - "maxBOF": 0 - } - ], - "no-new-object": [ - "error" - ], - "no-plusplus": [ - "error", - { - "allowForLoopAfterthoughts": true - } - ], - "no-tabs": [ - "error", - { - "allowIndentationTabs": true - } - ], - "no-trailing-spaces": [ - "error", - { - "skipBlankLines": true - } - ], - "no-unneeded-ternary": [ - "error", - { - "defaultAssignment": true - } - ], - "no-whitespace-before-property": [ - "error" - ], - "nonblock-statement-body-position": [ - "error", - "beside" - ], - "object-curly-newline": [ - "error", - { - "multiline": true, - "minProperties": 4 - } - ], - "object-curly-spacing": [ - "error", - "always", - { - "arraysInObjects": true, - "objectsInObjects": true - } - ], - "object-property-newline": [ - "error", - { - "allowAllPropertiesOnSameLine": true - } - ], - "one-var": [ - "error", - "never" - ], - "operator-linebreak": [ - "error", - "before" - ], - "padded-blocks": [ - "error", - "never" - ], - "prefer-exponentiation-operator": [ - "error" - ], - "prefer-object-spread": [ - "error" - ], - "quote-props": [ - "error", - "as-needed" - ], - "quotes": [ - "error", - "double" - ], - "semi": [ - "error", - "always" - ], - "semi-spacing": [ - "error", - { - "before": false, - "after": false - } - ], - "semi-style": [ - "error", - "last" - ], - "space-before-blocks": [ - "error", - "always" - ], - "space-before-function-paren": [ - "error", - { - "anonymous": "always", - "named": "never", - "asyncArrow": "always" - } - ], - "space-in-parens": [ - "error", - "never" - ], - "space-infix-ops": [ - "error", - { - "int32Hint": false - } - ], - "space-unary-ops": [ - "error", - { - "words": true, - "nonwords": false - } - ], - "spaced-comment": [ - "error", - "always" - ], - "switch-colon-spacing": [ - "error", - { - "after": true, - "before": false - } - ], - "template-tag-spacing": [ - "error", - "never" - ], - "unicode-bom": [ - "error", - "never" - ], - "wrap-regex": [ - "error" - ] - } -} \ No newline at end of file diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 8d658f7..6adb01c 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,6 +1,12 @@ version: 2 updates: - - package-ecosystem: 'npm' + - package-ecosystem: cargo + directory: '/' + open-pull-requests-limit: 10 + schedule: + interval: 'weekly' + day: 'sunday' + - package-ecosystem: npm directory: '/' open-pull-requests-limit: 10 schedule: diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d2867da..3ccbf90 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -4,11 +4,12 @@ on: workflow_dispatch: push: branches: - - master + - main + - feat/* - dev/* jobs: - tests: + test-node: strategy: fail-fast: false matrix: @@ -17,16 +18,48 @@ jobs: - macos-latest - windows-latest node-version: - - 16.x - - 18.x + - 20.x + - 22.x + - 23.x name: Use ${{ matrix.node-version }} on ${{ matrix.os }} runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v5 + - uses: dtolnay/rust-toolchain@stable - - uses: actions/setup-node@v3 + + - uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} + - run: npm install - - run: npm run build --if-present + + - run: npm run build + - run: npm run check + + test-node: + strategy: + fail-fast: false + matrix: + os: + - ubuntu-latest + - macos-latest + - windows-latest + name: Use Bun on ${{ matrix.os }} + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v5 + + - uses: dtolnay/rust-toolchain@stable + + - name: 🛠 Setup Bun + uses: oven-sh/setup-bun@v2 + with: + bun-version: latest + + - run: bun install + + - run: bun run build + + - run: bun run check diff --git a/.vscode/launch.json b/.vscode/launch.json deleted file mode 100644 index a66725d..0000000 --- a/.vscode/launch.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "version": "0.2.0", - "configurations": [ - { - "type": "node-terminal", - "name": "Dev", - "request": "launch", - "command": "npm run dev", - "cwd": "${workspaceFolder}" - } - ] -} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json deleted file mode 100644 index 68e5b71..0000000 --- a/.vscode/tasks.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "version": "2.0.0", - "tasks": [ - { - "type": "npm", - "script": "build", - "label": "Build", - "group": { - "kind": "build", - "isDefault": true - } - }, - { - "type": "npm", - "script": "test", - "label": "Test", - "group": { - "kind": "test", - "isDefault": true - } - } - ] -} diff --git a/CHANGELOG.md b/CHANGELOG.md index 06b9afa..e018e9b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [3.0.0] - 2024-11-20 + +- chore: update dependencies +- chore!: increase node version to v20 +- refact!: remove crc hash functions other than `crc64*` + ## [2.1.0] - 2022-12-19 - feat: activate dependabot checks diff --git a/Cargo.toml b/Cargo.toml index 501abdd..1abf400 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,12 +1,11 @@ [package] name = "node-crc" -version = "2.1.0" +version = "3.0.0" edition = "2021" -repository = "https://github.com/magiclen/node-crc" -homepage = "https://magiclen.org/node-js-crc/" -keywords = ["node.js", "crc8", "crc16", "crc32", "crc64"] +repository = "https://github.com/swrlab/node-crc" +keywords = ["node.js", "crc64"] categories = [] -description = "To compute CRC values by providing the length of bits, expression, reflection, an initial value and a final xor value. It has many built-in CRC functions." +description = "To compute CRC64 values using built-in functions and pre-built binaries." license = "MIT" publish = false diff --git a/README.md b/README.md index d6e4138..8deb92c 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,4 @@ -CRC For Node.js -================================= +# CRC For Node.js [![CI](https://github.com/magiclen/node-crc/actions/workflows/ci.yml/badge.svg)](https://github.com/magiclen/node-crc/actions/workflows/ci.yml) @@ -22,110 +21,41 @@ Since version 2.0.15 pre-build [binaries](./bin) for following platforms can be You can use `crc` function to compute a CRC value by providing the length of bits, expression, reflection, an initial value and a final xor value. For example, if you want to compute a CRC-24 value. ```javascript -const result = crc.crc(0x00864cfb, 0x00000000, 24, 0x00b704ce, 0x00000000, 0x00000000, 0x00000000, false, Buffer.from("hello", "utf8")).toString("hex"); +const result = crc + .crc( + 0x00864cfb, + 0x00000000, + 24, + 0x00b704ce, + 0x00000000, + 0x00000000, + 0x00000000, + false, + Buffer.from('hello', 'utf8') + ) + .toString('hex') // Arguments: low bits of expression, high bits of expression, the length of bits, low bits of the initial value, high bits of the initial value, low bits of the final xor value, high bits of the final xor value, reflection, the source data buffer ``` To simplify the usage, there are several common versions of CRC whose computing functions are already built-in. -* crc3gsm -* crc4itu -* crc4interlaken -* crc5epc -* crc5itu -* crc5usb -* crc6cdma2000_a -* crc6cdma2000_b -* crc6darc -* crc6gsm -* crc6itu -* crc7 -* crc7umts -* crc8 -* crc8cdma2000 -* crc8darc -* crc8dvb_s2 -* crc8ebu -* crc8icode -* crc8itu -* crc8maxim -* crc8rohc -* crc8wcdma -* crc10 -* crc10cdma2000 -* crc10gsm -* crc11 -* crc12 -* crc12cdma2000 -* crc12gsm -* crc13bbc -* crc14darc -* crc14gsm -* crc15can -* crc15mpt1327 -* crc16 -* crc16ccitt_false -* crc16aug_ccitt -* crc16buypass -* crc16cdma2000 -* crc16dds_110 -* crc16dect_r -* crc16dect_x -* crc16dnp -* crc16en_13757 -* crc16genibus -* crc16maxim -* crc16mcrf4cc -* crc16riello -* crc16t10_dif -* crc16teledisk -* crc16tms13157 -* crc16usb -* crc_a -* crc16kermit -* crc16modbus -* crc16_x25 -* crc16xmodem -* crc17can -* crc21can -* crc24 -* crc24ble -* crc24flexray_a -* crc24flexray_b -* crc24lte_a -* crc24lte_b -* crc24os9 -* crc30cdma -* crc32 - * It also called `crc32b` in `mhash`. -* crc32mhash - * `mhash` is a common library which has two weird versions of CRC32 called `crc32` and `crc32b`. `crc32` and `crc32mhash` in this module are `crc32b` and `crc32` in mhash respectively. -* crc32bzip2 -* crc32c -* crc32d -* crc32mpeg2 -* crc32posix -* crc32q -* crc32jamcrc -* crc32xfer -* crc40gsm -* crc64 -* crc64iso -* crc64we -* crc64jones +- crc64 +- crc64iso +- crc64we +- crc64jones Input data and output data are buffers. For instance, ```javascript -const result = crc.crc32(Buffer.from("hello", "utf8")).toString("hex"); -const result2 = crc.crc64(Buffer.from("world", "utf8")).toString("hex"); +const result = crc.crc32(Buffer.from('hello', 'utf8')).toString('hex') +const result2 = crc.crc64(Buffer.from('world', 'utf8')).toString('hex') ``` ## Pre-Build -To build the binaries, install Docker and Rust-Toolchain. Then execute `npm run build:binary`. +To build the binaries, install Docker, [Cross](https://github.com/cross-rs/cross#installation) and [Rust-Toolchain](https://www.rust-lang.org/learn/get-started). Then execute `npm run build:bin`. ## TODO diff --git a/build.sh b/build.sh index 2d0c90c..6dbf2c7 100755 --- a/build.sh +++ b/build.sh @@ -2,6 +2,7 @@ # Exit when any command fails set -e +set -x # Define archs [0], libs [1] and targets [2] @@ -39,22 +40,18 @@ for (( i=0; i<${#archs[@]}; i++ )); do # Check if binary file already exists if [[ -f "$destination" ]]; then - echo echo "Skipping ${archs[i]} (binary exists)" echo "===========================================" else # Install toolchain and use cargo for darwin if [[ "${archs[i]}" = *"darwin"* ]]; then - echo echo "Install toolchain for ${archs[i]}" echo "========================================" rustup target add "${archs[i]}" - echo echo "Building binary for ${archs[i]}" cargo build --"$flavor" --target="${archs[i]}" else - echo echo "Building binary for ${archs[i]}" echo "========================================" # Add build flags for linux musl variant @@ -65,13 +62,10 @@ for (( i=0; i<${#archs[@]}; i++ )); do fi fi - echo echo "Copy binary ${libs[i]} to bin/${targets[i]}" cp "$export" "$destination" - echo echo "Clean build folder: targets/$flavor" - echo rimraf "$temp" echo "Done" diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..e5e362c7c231b96b9fd8bf0bd3553e7105d02f1d GIT binary patch literal 252202 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 t{_0C_1*b&{{y;RmdOAB literal 0 HcmV?d00001 diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000..2425dc6 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,76 @@ +import { audiolab } from '@swrlab/style-guide/eslint/index.js' + +export default audiolab( + [ + { + ignores: [ + /* ignore these files, since biome already covers them */ + '**/*.mjs', + '**/*.js', + '**/*.jsx', + '**/*.ts', + '**/*.tsx', + '**/*.json', + '**/*.jsonc', + /* ignore these directories */ + '**/static/**', + '**/store/**', + '**/keys/**', + '**/node_modules/**', + '**/test/*.json', + '**/test/*.xml', + ], + }, + { + languageOptions: { + globals: { + Bun: 'readonly', + }, + }, + }, + { + rules: { + // previous config (does not trigger errors) + // 'import/no-extraneous-dependencies': 0, + // radix: 0, + // 'no-param-reassign': [2, { props: false }], + // 'no-restricted-syntax': 0, + // 'no-underscore-dangle': 0, + // 'no-return-assign': ['error', 'except-parens'], + 'one-var': 0, + + // should be fixed / easy to fix + 'prefer-promise-reject-errors': 'off', + 'n/prefer-global/process': 'off', + 'n/prefer-global/buffer': 'off', + 'n/no-process-exit': 'off', + 'n/no-unpublished-import': 'off', + 'n/no-unpublished-require': 'off', + 'eslint-comments/require-description': 'off', + 'vue/multi-word-component-names': 'off', + 'import/no-default-export': 'off', + 'n/no-missing-import': ['error', { allowModules: ['bun', 'Bun'] }], + 'no-console': 'off', + 'import/order': 'off', + 'n/no-unsupported-features/node-builtins': [ + 'error', + { + version: '>=20.0.0', + ignores: [], + }, + ], + }, + }, + { + files: ['**/*.vue'], + rules: { + 'n/no-unsupported-features/node-builtins': 'off', + }, + }, + ], + { + prettier: true, + comments: true, + vue: true, + } +) diff --git a/lib/lib.d.ts b/lib/lib.d.ts index bf0f727..9a146d3 100644 --- a/lib/lib.d.ts +++ b/lib/lib.d.ts @@ -1,4 +1,5 @@ /// +/// /** * Create a CRC instance by providing the length of bits, expression, reflection, an initial value and a final xor value. */ diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 7c2b400..0000000 --- a/package-lock.json +++ /dev/null @@ -1,4114 +0,0 @@ -{ - "name": "node-crc", - "version": "2.1.0", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "node-crc", - "version": "2.1.0", - "license": "MIT", - "dependencies": { - "@types/node": "^18.11.17", - "detect-libc": "^2.0.1" - }, - "devDependencies": { - "@types/chai": "^4.3.4", - "@types/mocha": "^10.0.1", - "@typescript-eslint/eslint-plugin": "^5.46.1", - "@typescript-eslint/parser": "^5.46.1", - "cargo-cp-artifact": "^0.1.7", - "chai": "^4.3.7", - "eslint": "^8.30.0", - "mocha": "^10.2.0", - "ts-node": "^10.9.1", - "typescript": "^4.9.4" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.0.tgz", - "integrity": "sha512-7yfvXy6MWLgWSFsLhz5yH3iQ52St8cdUY6FoGieKkRDVxuxmrNuUetIuu6cmjNWwniUHiWXjxCr5tTXDrbYS5A==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.4.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", - "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.13", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", - "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", - "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", - "dev": true - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", - "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", - "dev": true - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", - "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", - "dev": true - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", - "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", - "dev": true - }, - "node_modules/@types/chai": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.4.tgz", - "integrity": "sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==", - "dev": true - }, - "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "node_modules/@types/mocha": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.1.tgz", - "integrity": "sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q==", - "dev": true - }, - "node_modules/@types/node": { - "version": "18.11.17", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.17.tgz", - "integrity": "sha512-HJSUJmni4BeDHhfzn6nF0sVmd1SMezP7/4F0Lq+aXzmp2xm9O7WXrUtHW/CHlYVtZUbByEvWidHqRtcJXGF2Ng==" - }, - "node_modules/@types/semver": { - "version": "7.3.13", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", - "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", - "dev": true - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.46.1.tgz", - "integrity": "sha512-YpzNv3aayRBwjs4J3oz65eVLXc9xx0PDbIRisHj+dYhvBn02MjYOD96P8YGiWEIFBrojaUjxvkaUpakD82phsA==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "5.46.1", - "@typescript-eslint/type-utils": "5.46.1", - "@typescript-eslint/utils": "5.46.1", - "debug": "^4.3.4", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "regexpp": "^3.2.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.46.1.tgz", - "integrity": "sha512-RelQ5cGypPh4ySAtfIMBzBGyrNerQcmfA1oJvPj5f+H4jI59rl9xxpn4bonC0tQvUKOEN7eGBFWxFLK3Xepneg==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "5.46.1", - "@typescript-eslint/types": "5.46.1", - "@typescript-eslint/typescript-estree": "5.46.1", - "debug": "^4.3.4" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.46.1.tgz", - "integrity": "sha512-iOChVivo4jpwUdrJZyXSMrEIM/PvsbbDOX1y3UCKjSgWn+W89skxWaYXACQfxmIGhPVpRWK/VWPYc+bad6smIA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.46.1", - "@typescript-eslint/visitor-keys": "5.46.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.46.1.tgz", - "integrity": "sha512-V/zMyfI+jDmL1ADxfDxjZ0EMbtiVqj8LUGPAGyBkXXStWmCUErMpW873zEHsyguWCuq2iN4BrlWUkmuVj84yng==", - "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "5.46.1", - "@typescript-eslint/utils": "5.46.1", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/types": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.46.1.tgz", - "integrity": "sha512-Z5pvlCaZgU+93ryiYUwGwLl9AQVB/PQ1TsJ9NZ/gHzZjN7g9IAn6RSDkpCV8hqTwAiaj6fmCcKSQeBPlIpW28w==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.46.1.tgz", - "integrity": "sha512-j9W4t67QiNp90kh5Nbr1w92wzt+toiIsaVPnEblB2Ih2U9fqBTyqV9T3pYWZBRt6QoMh/zVWP59EpuCjc4VRBg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.46.1", - "@typescript-eslint/visitor-keys": "5.46.1", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.46.1.tgz", - "integrity": "sha512-RBdBAGv3oEpFojaCYT4Ghn4775pdjvwfDOfQ2P6qzNVgQOVrnSPe5/Pb88kv7xzYQjoio0eKHKB9GJ16ieSxvA==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.46.1", - "@typescript-eslint/types": "5.46.1", - "@typescript-eslint/typescript-estree": "5.46.1", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0", - "semver": "^7.3.7" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.46.1.tgz", - "integrity": "sha512-jczZ9noovXwy59KjRTk1OftT78pwygdcmCuBf8yMoWt/8O8l+6x2LSEze0E4TeepXK4MezW3zGSyoDRZK7Y9cg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.46.1", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cargo-cp-artifact": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/cargo-cp-artifact/-/cargo-cp-artifact-0.1.7.tgz", - "integrity": "sha512-pxEV9p1on8vu3BOKstVisF9TwMyGKCBRvzaVpQHuU2sLULCKrn3MJWx/4XlNzmG6xNCTPf78DJ7WCGgr2mOzjg==", - "dev": true, - "bin": { - "cargo-cp-artifact": "bin/cargo-cp-artifact.js" - } - }, - "node_modules/chai": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", - "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", - "dev": true, - "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^4.1.2", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", - "pathval": "^1.1.1", - "type-detect": "^4.0.5" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chalk/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/chalk/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/chalk/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/chalk/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/chalk/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/deep-eql": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", - "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", - "dev": true, - "dependencies": { - "type-detect": "^4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/detect-libc": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", - "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", - "engines": { - "node": ">=8" - } - }, - "node_modules/diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "8.30.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.30.0.tgz", - "integrity": "sha512-MGADB39QqYuzEGov+F/qb18r4i7DohCDOfatHaxI2iGlPuC65bwG2gxgO+7DkyL38dRFaRH7RaRAgU6JKL9rMQ==", - "dev": true, - "dependencies": { - "@eslint/eslintrc": "^1.4.0", - "@humanwhocodes/config-array": "^0.11.8", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/espree": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", - "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", - "dev": true, - "dependencies": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "node_modules/fastq": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.14.0.tgz", - "integrity": "sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true, - "bin": { - "flat": "cli.js" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", - "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", - "dev": true - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "13.19.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", - "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" - } - }, - "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "node_modules/js-sdsl": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz", - "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" - } - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/loupe": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz", - "integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==", - "dev": true, - "dependencies": { - "get-func-name": "^2.0.0" - } - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/mocha": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", - "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", - "dev": true, - "dependencies": { - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.4", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "5.0.1", - "ms": "2.1.3", - "nanoid": "3.3.3", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "workerpool": "6.2.1", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" - } - }, - "node_modules/mocha/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/mocha/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/mocha/node_modules/minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mocha/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/mocha/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/nanoid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", - "dev": true, - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "node_modules/ts-node/node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typescript": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz", - "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/workerpool": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", - "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", - "dev": true - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, - "dependencies": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - }, - "dependencies": { - "@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "0.3.9" - } - }, - "@eslint/eslintrc": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.0.tgz", - "integrity": "sha512-7yfvXy6MWLgWSFsLhz5yH3iQ52St8cdUY6FoGieKkRDVxuxmrNuUetIuu6cmjNWwniUHiWXjxCr5tTXDrbYS5A==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.4.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - } - }, - "@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - } - }, - "@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true - }, - "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "@jridgewell/resolve-uri": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", - "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", - "dev": true - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.13", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", - "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@tsconfig/node10": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", - "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", - "dev": true - }, - "@tsconfig/node12": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", - "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", - "dev": true - }, - "@tsconfig/node14": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", - "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", - "dev": true - }, - "@tsconfig/node16": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", - "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", - "dev": true - }, - "@types/chai": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.4.tgz", - "integrity": "sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==", - "dev": true - }, - "@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "@types/mocha": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.1.tgz", - "integrity": "sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q==", - "dev": true - }, - "@types/node": { - "version": "18.11.17", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.17.tgz", - "integrity": "sha512-HJSUJmni4BeDHhfzn6nF0sVmd1SMezP7/4F0Lq+aXzmp2xm9O7WXrUtHW/CHlYVtZUbByEvWidHqRtcJXGF2Ng==" - }, - "@types/semver": { - "version": "7.3.13", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", - "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", - "dev": true - }, - "@typescript-eslint/eslint-plugin": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.46.1.tgz", - "integrity": "sha512-YpzNv3aayRBwjs4J3oz65eVLXc9xx0PDbIRisHj+dYhvBn02MjYOD96P8YGiWEIFBrojaUjxvkaUpakD82phsA==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "5.46.1", - "@typescript-eslint/type-utils": "5.46.1", - "@typescript-eslint/utils": "5.46.1", - "debug": "^4.3.4", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "regexpp": "^3.2.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/parser": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.46.1.tgz", - "integrity": "sha512-RelQ5cGypPh4ySAtfIMBzBGyrNerQcmfA1oJvPj5f+H4jI59rl9xxpn4bonC0tQvUKOEN7eGBFWxFLK3Xepneg==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "5.46.1", - "@typescript-eslint/types": "5.46.1", - "@typescript-eslint/typescript-estree": "5.46.1", - "debug": "^4.3.4" - } - }, - "@typescript-eslint/scope-manager": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.46.1.tgz", - "integrity": "sha512-iOChVivo4jpwUdrJZyXSMrEIM/PvsbbDOX1y3UCKjSgWn+W89skxWaYXACQfxmIGhPVpRWK/VWPYc+bad6smIA==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.46.1", - "@typescript-eslint/visitor-keys": "5.46.1" - } - }, - "@typescript-eslint/type-utils": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.46.1.tgz", - "integrity": "sha512-V/zMyfI+jDmL1ADxfDxjZ0EMbtiVqj8LUGPAGyBkXXStWmCUErMpW873zEHsyguWCuq2iN4BrlWUkmuVj84yng==", - "dev": true, - "requires": { - "@typescript-eslint/typescript-estree": "5.46.1", - "@typescript-eslint/utils": "5.46.1", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/types": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.46.1.tgz", - "integrity": "sha512-Z5pvlCaZgU+93ryiYUwGwLl9AQVB/PQ1TsJ9NZ/gHzZjN7g9IAn6RSDkpCV8hqTwAiaj6fmCcKSQeBPlIpW28w==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.46.1.tgz", - "integrity": "sha512-j9W4t67QiNp90kh5Nbr1w92wzt+toiIsaVPnEblB2Ih2U9fqBTyqV9T3pYWZBRt6QoMh/zVWP59EpuCjc4VRBg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.46.1", - "@typescript-eslint/visitor-keys": "5.46.1", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/utils": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.46.1.tgz", - "integrity": "sha512-RBdBAGv3oEpFojaCYT4Ghn4775pdjvwfDOfQ2P6qzNVgQOVrnSPe5/Pb88kv7xzYQjoio0eKHKB9GJ16ieSxvA==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.46.1", - "@typescript-eslint/types": "5.46.1", - "@typescript-eslint/typescript-estree": "5.46.1", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0", - "semver": "^7.3.7" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.46.1.tgz", - "integrity": "sha512-jczZ9noovXwy59KjRTk1OftT78pwygdcmCuBf8yMoWt/8O8l+6x2LSEze0E4TeepXK4MezW3zGSyoDRZK7Y9cg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.46.1", - "eslint-visitor-keys": "^3.3.0" - } - }, - "acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "dev": true - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} - }, - "acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, - "assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", - "dev": true - }, - "cargo-cp-artifact": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/cargo-cp-artifact/-/cargo-cp-artifact-0.1.7.tgz", - "integrity": "sha512-pxEV9p1on8vu3BOKstVisF9TwMyGKCBRvzaVpQHuU2sLULCKrn3MJWx/4XlNzmG6xNCTPf78DJ7WCGgr2mOzjg==", - "dev": true - }, - "chai": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", - "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", - "dev": true, - "requires": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^4.1.2", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", - "pathval": "^1.1.1", - "type-detect": "^4.0.5" - } - }, - "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", - "dev": true - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true - }, - "deep-eql": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", - "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", - "dev": true, - "requires": { - "type-detect": "^4.0.0" - } - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "detect-libc": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", - "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==" - }, - "diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", - "dev": true - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - } - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "eslint": { - "version": "8.30.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.30.0.tgz", - "integrity": "sha512-MGADB39QqYuzEGov+F/qb18r4i7DohCDOfatHaxI2iGlPuC65bwG2gxgO+7DkyL38dRFaRH7RaRAgU6JKL9rMQ==", - "dev": true, - "requires": { - "@eslint/eslintrc": "^1.4.0", - "@humanwhocodes/config-array": "^0.11.8", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "dependencies": { - "eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - } - } - }, - "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true - }, - "espree": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", - "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", - "dev": true, - "requires": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" - } - }, - "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "fastq": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.14.0.tgz", - "integrity": "sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", - "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", - "dev": true - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", - "dev": true - }, - "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "globals": { - "version": "13.19.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", - "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - } - }, - "grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true - }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true - }, - "is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true - }, - "is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "js-sdsl": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz", - "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==", - "dev": true - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - } - }, - "loupe": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz", - "integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==", - "dev": true, - "requires": { - "get-func-name": "^2.0.0" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "mocha": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", - "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", - "dev": true, - "requires": { - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.4", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "5.0.1", - "ms": "2.1.3", - "nanoid": "3.3.3", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "workerpool": "6.2.1", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "nanoid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", - "dev": true - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, - "pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", - "dev": true, - "requires": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "dependencies": { - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true - } - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - } - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - }, - "typescript": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz", - "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==", - "dev": true - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "workerpool": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", - "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", - "dev": true - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - }, - "yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true - }, - "yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, - "requires": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - } - }, - "yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true - }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true - } - } -} diff --git a/package.json b/package.json index 7999ce2..83d9a56 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,11 @@ { "name": "node-crc", - "version": "2.1.0", - "description": "To compute CRC values by providing the length of bits, expression, reflection, an initial value and a final xor value. It has many built-in CRC functions.", + "version": "3.0.0", + "description": "To compute CRC64 values using built-in functions and pre-built binaries.", "main": "lib/lib.js", "typings": "lib/lib.d.ts", "scripts": { - "build": "npm run build:ts && npm run build:neon", + "build": "bun run build:ts && bun run build:neon", "build:ts": "tsc", "build:watch": "tsc -w", "build:neon": "cargo-cp-artifact -nc index.node -- cargo build --release --message-format=json-render-diagnostics", @@ -13,37 +13,27 @@ "build:clean": "rimraf target && rimraf bin && cargo clean && mkdir -p bin", "lint": "eslint src tests --fix", "test": "mocha -r ts-node/register tests/**/*.test.ts", - "check": "npm run lint && npm run test", - "prepublishOnly": "npm run build:bin && npm run lint && npm run test" + "check": "bun run lint && bun run test", + "prepublishOnly": "bun run build:bin && bun run lint && bun run test" }, "engines": { - "node": ">=16" + "node": ">=20" }, "repository": { "type": "git", - "url": "git+https://github.com/magiclen/node-crc.git" + "url": "git+https://github.com/swrlab/node-crc.git" }, - "keywords": [ - "node.js", - "crc", - "crc8", - "crc16", - "crc32", - "crc64" - ], + "keywords": ["node.js", "crc64"], "author": "Magic Len (https://magiclen.org)", "license": "MIT", - "bugs": { - "url": "https://github.com/magiclen/node-crc/issues" - }, - "homepage": "https://magiclen.org/node-js-crc/", "dependencies": { - "@types/node": "^18.11.17", "detect-libc": "^2.0.1" }, "devDependencies": { + "@swrlab/style-guide": "^1.0.3", "@types/chai": "^4.3.4", "@types/mocha": "^10.0.1", + "@types/node": "^18.11.17", "@typescript-eslint/eslint-plugin": "^5.46.1", "@typescript-eslint/parser": "^5.46.1", "cargo-cp-artifact": "^0.1.7", @@ -52,5 +42,6 @@ "mocha": "^10.2.0", "ts-node": "^10.9.1", "typescript": "^4.9.4" - } + }, + "prettier": "@swrlab/style-guide/prettier" } diff --git a/rustfmt.toml b/rustfmt.toml index f323f5f..fd43a33 100644 --- a/rustfmt.toml +++ b/rustfmt.toml @@ -12,4 +12,4 @@ reorder_impl_items = true struct_lit_single_line = false use_field_init_shorthand = true use_small_heuristics = "Off" -use_try_shorthand = true \ No newline at end of file +use_try_shorthand = true diff --git a/src/lib.rs b/src/lib.rs index c980c29..84ecf76 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -48,55 +48,6 @@ fn js_number_to_u32<'a, T: Managed>( } } -fn to_js_buffer_1<'a>(cx: &mut FunctionContext<'a>, u: u8) -> JsResult<'a, JsBuffer> { - let mut buffer = unsafe { JsBuffer::uninitialized(cx, 1)? }; - - let slice = buffer.as_mut_slice(cx); - slice[0]= u; - - Ok(buffer) -} - -fn to_js_buffer_2<'a>(cx: &mut FunctionContext<'a>, u: u16) -> JsResult<'a, JsBuffer> { - let mut buffer = unsafe { JsBuffer::uninitialized(cx, 2)? }; - - let slice = buffer.as_mut_slice(cx); - - slice.copy_from_slice(&u.to_be_bytes()); - - Ok(buffer) -} - -fn to_js_buffer_3<'a>(cx: &mut FunctionContext<'a>, u: u32) -> JsResult<'a, JsBuffer> { - let mut buffer = unsafe { JsBuffer::uninitialized(cx, 3)? }; - - let slice = buffer.as_mut_slice(cx); - - slice.copy_from_slice(&u.to_be_bytes()[1..]); - - Ok(buffer) -} - -fn to_js_buffer_4<'a>(cx: &mut FunctionContext<'a>, u: u32) -> JsResult<'a, JsBuffer> { - let mut buffer = unsafe { JsBuffer::uninitialized(cx, 4)? }; - - let slice = buffer.as_mut_slice(cx); - - slice.copy_from_slice(&u.to_be_bytes()); - - Ok(buffer) -} - -fn to_js_buffer_5<'a>(cx: &mut FunctionContext<'a>, u: u64) -> JsResult<'a, JsBuffer> { - let mut buffer = unsafe { JsBuffer::uninitialized(cx, 5)? }; - - let slice = buffer.as_mut_slice(cx); - - slice.copy_from_slice(&u.to_be_bytes()[3..]); - - Ok(buffer) -} - fn to_js_buffer_8<'a>(cx: &mut FunctionContext<'a>, u: u64) -> JsResult<'a, JsBuffer> { let mut buffer = unsafe { JsBuffer::uninitialized(cx, 8)? }; @@ -191,141 +142,6 @@ fn crc(mut cx: FunctionContext) -> JsResult { Ok(buffer) } -macro_rules! crc_functions_1 { - (@inner $cx:expr, $f:ident) => { - fn $f(mut cx: FunctionContext) -> JsResult { - let buffer = cx.argument::(0)?; - - let crc = { - let data = buffer.as_slice(&cx); - - let mut crc = CRCu8::$f(); - - crc.digest(data); - - crc.get_crc() - }; - - to_js_buffer_1(&mut cx, crc) - } - - $cx.export_function(stringify!($f), $f)?; - }; - ($cx:expr; $($f:ident),+ $(,)* ) => { - $( - crc_functions_1!(@inner $cx, $f); - )+ - }; -} - -macro_rules! crc_functions_2 { - (@inner $cx:expr, $f:ident) => { - fn $f(mut cx: FunctionContext) -> JsResult { - let buffer = cx.argument::(0)?; - - let crc = { - let data = buffer.as_slice(&cx); - - let mut crc = CRCu16::$f(); - - crc.digest(data); - - crc.get_crc() - }; - - to_js_buffer_2(&mut cx, crc) - } - - $cx.export_function(stringify!($f), $f)?; - }; - ($cx:expr; $($f:ident),+ $(,)* ) => { - $( - crc_functions_2!(@inner $cx, $f); - )+ - }; -} - -macro_rules! crc_functions_3 { - (@inner $cx:expr, $f:ident) => { - fn $f(mut cx: FunctionContext) -> JsResult { - let buffer = cx.argument::(0)?; - - let crc = { - let data = buffer.as_slice(&cx); - - let mut crc = CRCu32::$f(); - - crc.digest(data); - - crc.get_crc() - }; - - to_js_buffer_3(&mut cx, crc) - } - - $cx.export_function(stringify!($f), $f)?; - }; - ($cx:expr; $($f:ident),+ $(,)* ) => { - $( - crc_functions_3!(@inner $cx, $f); - )+ - }; -} - -macro_rules! crc_functions_4 { - (@inner $cx:expr, $f:ident) => { - fn $f(mut cx: FunctionContext) -> JsResult { - let buffer = cx.argument::(0)?; - - let crc = { - let data = buffer.as_slice(&cx); - - let mut crc = CRCu32::$f(); - - crc.digest(data); - - crc.get_crc() - }; - - to_js_buffer_4(&mut cx, crc) - } - - $cx.export_function(stringify!($f), $f)?; - }; - ($cx:expr; $($f:ident),+ $(,)* ) => { - $( - crc_functions_4!(@inner $cx, $f); - )+ - }; -} - -macro_rules! crc_functions_5 { - (@inner $cx:expr, $f:ident) => { - fn $f(mut cx: FunctionContext) -> JsResult { - let buffer = cx.argument::(0)?; - - let crc = { - let data = buffer.as_slice(&cx); - - let mut crc = CRCu64::$f(); - - crc.digest(data); - - crc.get_crc() - }; - - to_js_buffer_5(&mut cx, crc) - } - - $cx.export_function(stringify!($f), $f)?; - }; - ($cx:expr; $($f:ident),+ $(,)* ) => { - $( - crc_functions_5!(@inner $cx, $f); - )+ - }; -} - macro_rules! crc_functions_8 { (@inner $cx:expr, $f:ident) => { fn $f(mut cx: FunctionContext) -> JsResult { @@ -357,100 +173,6 @@ macro_rules! crc_functions_8 { fn main(mut cx: ModuleContext) -> NeonResult<()> { cx.export_function("crc", crc)?; - crc_functions_1!(cx; - crc3gsm, - crc4itu, - crc4interlaken, - crc5epc, - crc5itu, - crc5usb, - crc6cdma2000_a, - crc6cdma2000_b, - crc6darc, - crc6gsm, - crc6itu, - crc7, - crc7umts, - crc8, - crc8cdma2000, - crc8darc, - crc8dvb_s2, - crc8ebu, - crc8icode, - crc8itu, - crc8maxim, - crc8rohc, - crc8wcdma, - ); - - crc_functions_2!(cx; - crc10, - crc10cdma2000, - crc10gsm, - crc11, - crc12, - crc12cdma2000, - crc12gsm, - crc13bbc, - crc14darc, - crc14gsm, - crc15can, - crc15mpt1327, - crc16, - crc16ccitt_false, - crc16aug_ccitt, - crc16buypass, - crc16cdma2000, - crc16dds_110, - crc16dect_r, - crc16dect_x, - crc16dnp, - crc16en_13757, - crc16genibus, - crc16maxim, - crc16mcrf4cc, - crc16riello, - crc16t10_dif, - crc16teledisk, - crc16tms13157, - crc16usb, - crc_a, - crc16kermit, - crc16modbus, - crc16_x25, - crc16xmodem, - ); - - crc_functions_3!(cx; - crc17can, - crc21can, - crc24, - crc24ble, - crc24flexray_a, - crc24flexray_b, - crc24lte_a, - crc24lte_b, - crc24os9, - ); - - crc_functions_4!(cx; - crc30cdma, - crc32, - crc32mhash, - crc32bzip2, - crc32c, - crc32d, - crc32mpeg2, - crc32posix, - crc32q, - crc32jamcrc, - crc32xfer, - ); - - crc_functions_5!(cx; - crc40gsm, - ); - crc_functions_8!(cx; crc64, crc64iso, diff --git a/src/lib.ts b/src/lib.ts index 55b8fba..e756d37 100644 --- a/src/lib.ts +++ b/src/lib.ts @@ -1,620 +1,80 @@ -/* eslint-disable @typescript-eslint/no-var-requires */ -/* eslint-disable camelcase */ - -import { familySync, GLIBC, MUSL } from "detect-libc"; +import { familySync, GLIBC, MUSL } from 'detect-libc' /** * Check linux family to select correct libc */ const getLinuxFamily = () => { - switch (familySync()) { - case GLIBC: - return "-gnu"; - case MUSL: - return "-musl"; - default: - return ""; - } -}; + switch (familySync()) { + case GLIBC: + return '-gnu' + case MUSL: + return '-musl' + default: + return '' + } +} /** * Check platform and arch to load correct prebuild binary */ -const arch = process.arch; -const platform = process.platform; -const family = platform === "linux" ? getLinuxFamily() : ""; -const binary = `../bin/${platform}-${arch}${family}.node`; +const arch = process.arch +const platform = process.platform +const family = platform === 'linux' ? getLinuxFamily() : '' +const binary = `../bin/${platform}-${arch}${family}.node` -const _crc = require(binary); +const _crc = require(binary) /** * Create a CRC instance by providing the length of bits, expression, reflection, an initial value and a final xor value. */ export const crc = ( - polyLow: number, polyHigh: number, bit: number, initialLow: number, initialHigh: number, finalXorLow: number, finalXorHigh: number, reflect: boolean, data: Buffer + polyLow: number, + polyHigh: number, + bit: number, + initialLow: number, + initialHigh: number, + finalXorLow: number, + finalXorHigh: number, + reflect: boolean, + data: Buffer ): Buffer => { - return _crc.crc( - polyLow, polyHigh, bit, initialLow, initialHigh, finalXorLow, finalXorHigh, reflect, data - ); -}; - -/** - * Check = 0x4, Poly = 0x3, Init = 0x0, Ref = false, XorOut = 0x7 - */ -export const crc3gsm = (data: Buffer): Buffer => { - return _crc.crc3gsm(data); -}; - -/** - * Check = 0x7, Poly = 0x3 (rev: 0xC), Init = 0x0, Ref = true, XorOut = 0x0 - */ -export const crc4itu = (data: Buffer): Buffer => { - return _crc.crc4itu(data); -}; - -/** - * Check = 0xB, Poly = 0x3, Init = 0xF, Ref = false, XorOut = 0xF - */ -export const crc4interlaken = (data: Buffer): Buffer => { - return _crc.crc4interlaken(data); -}; - -/** - * Check = 0x00, Poly = 0x09, Init = 0x09, Ref = false, XorOut = 0x00 - */ -export const crc5epc = (data: Buffer): Buffer => { - return _crc.crc5epc(data); -}; - -/** - * Check = 0x07, Poly = 0x15 (rev: 0x15), Init = 0x00, Ref = true, XorOut = 0x00 - */ -export const crc5itu = (data: Buffer): Buffer => { - return _crc.crc5itu(data); -}; - -/** - * Check = 0x19, Poly = 0x05 (rev: 0x14), Init = 0x1F, Ref = true, XorOut = 0x1F - */ -export const crc5usb = (data: Buffer): Buffer => { - return _crc.crc5usb(data); -}; - -/** - * Check = 0x0D, Poly = 0x27, Init = 0x3F, Ref = false, XorOut = 0x00 - */ -export const crc6cdma2000_a = (data: Buffer): Buffer => { - return _crc.crc6cdma2000_a(data); -}; - -/** - * Check = 0x3B, Poly = 0x07, Init = 0x3F, Ref = false, XorOut = 0x00 - */ -export const crc6cdma2000_b = (data: Buffer): Buffer => { - return _crc.crc6cdma2000_b(data); -}; - -/** - * Check = 0x26, Poly = 0x19 (rev: 0x26), Init = 0x00, Ref = true, XorOut = 0x00 - */ -export const crc6darc = (data: Buffer): Buffer => { - return _crc.crc6darc(data); -}; - -/** - * Check = 0x13, Poly = 0x2F, Init = 0x00, Ref = false, XorOut = 0x3F - */ -export const crc6gsm = (data: Buffer): Buffer => { - return _crc.crc6gsm(data); -}; - -/** - * Check = 0x06, Poly = 0x03 (rev: 0x30), Init = 0x00, Ref = true, XorOut = 0x00 - */ -export const crc6itu = (data: Buffer): Buffer => { - return _crc.crc6itu(data); -}; - -/** - * Check = 0x75, Poly = 0x09, Init = 0x00, Ref = false, XorOut = 0x00 - */ -export const crc7 = (data: Buffer): Buffer => { - return _crc.crc7(data); -}; - -/** - * Check = 0x61, Poly = 0x45, Init = 0x00, Ref = false, XorOut = 0x00 - */ -export const crc7umts = (data: Buffer): Buffer => { - return _crc.crc7umts(data); -}; - -/** - * Check = 0xF4, Poly = 0x07, Init = 0x00, Ref = false, XorOut = 0x00 - */ -export const crc8 = (data: Buffer): Buffer => { - return _crc.crc8(data); -}; - -/** - * Check = 0xDA, Poly = 0x9B, Init = 0xFF, Ref = false, XorOut = 0x00 - */ -export const crc8cdma2000 = (data: Buffer): Buffer => { - return _crc.crc8cdma2000(data); -}; - -/** - * Check = 0x15, Poly = 0x39 (rev: 0x9C), Init = 0x00, Ref = true, XorOut = 0x00 - */ -export const crc8darc = (data: Buffer): Buffer => { - return _crc.crc8darc(data); -}; - -/** - * Check = 0xBC, Poly = 0xD5, Init = 0x00, Ref = false, XorOut = 0x00 - */ -export const crc8dvb_s2 = (data: Buffer): Buffer => { - return _crc.crc8dvb_s2(data); -}; - -/** - * Check = 0x97, Poly = 0x1D (rev: 0xB8), Init = 0xFF, Ref = true, XorOut = 0x00 - */ -export const crc8ebu = (data: Buffer): Buffer => { - return _crc.crc8ebu(data); -}; - -/** - * Check = 0x7E, Poly = 0x1D, Init = 0xFD, Ref = false, XorOut = 0x00 - */ -export const crc8icode = (data: Buffer): Buffer => { - return _crc.crc8icode(data); -}; - -/** - * Check = 0xA1, Poly = 0x07, Init = 0x00, Ref = false, XorOut = 0x55 - */ -export const crc8itu = (data: Buffer): Buffer => { - return _crc.crc8itu(data); -}; - -/** - * Check = 0xA1, Poly = 0x31 (rev: 0x8C), Init = 0x00, Ref = true, XorOut = 0x00 - */ -export const crc8maxim = (data: Buffer): Buffer => { - return _crc.crc8maxim(data); -}; - -/** - * Check = 0xD0, Poly = 0x07 (rev: 0xE0), Init = 0xFF, Ref = true, XorOut = 0x00 - */ -export const crc8rohc = (data: Buffer): Buffer => { - return _crc.crc8rohc(data); -}; - -/** - * Check = 0x25, Poly = 0x9B (rev: 0xD9), Init = 0x00, Ref = true, XorOut = 0x00 - */ -export const crc8wcdma = (data: Buffer): Buffer => { - return _crc.crc8wcdma(data); -}; - -/** - * Check = 0x199, Poly = 0x233, Init = 0x000, Ref = false, XorOut = 0x000 - */ -export const crc10 = (data: Buffer): Buffer => { - return _crc.crc10(data); -}; - -/** - * Check = 0x233, Poly = 0x3D9, Init = 0x3FF, Ref = false, XorOut = 0x000 - */ -export const crc10cdma2000 = (data: Buffer): Buffer => { - return _crc.crc10cdma2000(data); -}; - -/** - * Check = 0x12A, Poly = 0x175, Init = 0x000, Ref = false, XorOut = 0x3FF - */ -export const crc10gsm = (data: Buffer): Buffer => { - return _crc.crc10gsm(data); -}; - -/** - * Check = 0x5A3, Poly = 0x385, Init = 0x01a, Ref = false, XorOut = 0x000 - */ -export const crc11 = (data: Buffer): Buffer => { - return _crc.crc11(data); -}; - -/** - * Check = 0xF5B, Poly = 0x80F, Init = 0x000, Ref = false, XorOut = 0x000 - */ -export const crc12 = (data: Buffer): Buffer => { - return _crc.crc12(data); -}; - -/** - * Check = 0xD4D, Poly = 0xF13, Init = 0xFFF, Ref = false, XorOut = 0x000 - */ -export const crc12cdma2000 = (data: Buffer): Buffer => { - return _crc.crc12cdma2000(data); -}; - -/** - * Check = 0xB34, Poly = 0xD31, Init = 0x000, Ref = false, XorOut = 0xFFF - */ -export const crc12gsm = (data: Buffer): Buffer => { - return _crc.crc12gsm(data); -}; - -/** - * Check = 0x04FA, Poly = 0x1CF5, Init = 0x0000, Ref = false, XorOut = 0x0000 - */ -export const crc13bbc = (data: Buffer): Buffer => { - return _crc.crc13bbc(data); -}; - -/** - * Check = 0x082D, Poly = 0x0805 (rev: 0x2804), Init = 0x0000, Ref = true, XorOut = 0x0000 - */ -export const crc14darc = (data: Buffer): Buffer => { - return _crc.crc14darc(data); -}; - -/** - * Check = 0x30AE, Poly = 0x202D, Init = 0x0000, Ref = false, XorOut = 0x3FFF - */ -export const crc14gsm = (data: Buffer): Buffer => { - return _crc.crc14gsm(data); -}; - -/** - * Check = 0x059E, Poly = 0x4599, Init = 0x0000, Ref = false, XorOut = 0x0000 - */ -export const crc15can = (data: Buffer): Buffer => { - return _crc.crc15can(data); -}; - -/** - * Check = 0x2566, Poly = 0x6815, Init = 0x0000, Ref = false, XorOut = 0x0001 - */ -export const crc15mpt1327 = (data: Buffer): Buffer => { - return _crc.crc15mpt1327(data); -}; - -/** - * Check = 0xBB3D, Poly = 0x8005 (rev: 0xA001), Init = 0x0000, Ref = true, XorOut = 0x0000 - */ -export const crc16 = (data: Buffer): Buffer => { - return _crc.crc16(data); -}; - -/** - * Check = 0x29B1, Poly = 0x1021, Init = 0xFFFF, Ref = false, XorOut = 0x0000 - */ -export const crc16ccitt_false = (data: Buffer): Buffer => { - return _crc.crc16ccitt_false(data); -}; - -/** - * Check = 0xE5CC, Poly = 0x1021, Init = 0x1D0F, Ref = false, XorOut = 0x0000 - */ -export const crc16aug_ccitt = (data: Buffer): Buffer => { - return _crc.crc16aug_ccitt(data); -}; - -/** - * Check = 0xFEE8, Poly = 0x8005, Init = 0x0000, Ref = false, XorOut = 0x0000 - */ -export const crc16buypass = (data: Buffer): Buffer => { - return _crc.crc16buypass(data); -}; - -/** - * Check = 0x4C06, Poly = 0xC867, Init = 0xFFFF, Ref = false, XorOut = 0x0000 - */ -export const crc16cdma2000 = (data: Buffer): Buffer => { - return _crc.crc16cdma2000(data); -}; - -/** - * Check = 0x9ECF, Poly = 0x8005, Init = 0x800D, Ref = false, XorOut = 0x0000 - */ -export const crc16dds_110 = (data: Buffer): Buffer => { - return _crc.crc16dds_110(data); -}; - -/** - * Check = 0x007E, Poly = 0x0589, Init = 0x800D, Ref = false, XorOut = 0x0001 - */ -export const crc16dect_r = (data: Buffer): Buffer => { - return _crc.crc16dect_r(data); -}; - -/** - * Check = 0x007E, Poly = 0x0589, Init = 0x0000, Ref = false, XorOut = 0x0000 - */ -export const crc16dect_x = (data: Buffer): Buffer => { - return _crc.crc16dect_x(data); -}; - -/** - * Check = 0xEA82, Poly = 0x3D65 (rev: 0xA6BC), Init = 0x0000, Ref = true, XorOut = 0xFFFF - */ -export const crc16dnp = (data: Buffer): Buffer => { - return _crc.crc16dnp(data); -}; - -/** - * Check = 0xC2B7, Poly = 0x3D65, Init = 0x0000, Ref = false, XorOut = 0xFFFF - */ -export const crc16en_13757 = (data: Buffer): Buffer => { - return _crc.crc16en_13757(data); -}; - -/** - * Check = 0xD64E, Poly = 0x1021, Init = 0xFFFF, Ref = false, XorOut = 0xFFFF - */ -export const crc16genibus = (data: Buffer): Buffer => { - return _crc.crc16genibus(data); -}; - -/** - * Check = 0x44C2, Poly = 0x8005 (rev: 0xA001), Init = 0xFFFF, Ref = true, XorOut = 0xFFFF - */ -export const crc16maxim = (data: Buffer): Buffer => { - return _crc.crc16maxim(data); -}; - -/** - * Check = 0x6F91, Poly = 0x1021 (rev: 0x8408), Init = 0xFFFF, Ref = true, XorOut = 0x0000 - */ -export const crc16mcrf4cc = (data: Buffer): Buffer => { - return _crc.crc16mcrf4cc(data); -}; - -/** - * Check = 0x63D0, Poly = 0x1021 (rev: 0x8408), Init = 0xB2AA, Ref = true, XorOut = 0x0000 - */ -export const crc16riello = (data: Buffer): Buffer => { - return _crc.crc16riello(data); -}; - -/** - * Check = 0xD0DB, Poly = 0x8BB7, Init = 0x0000, Ref = false, XorOut = 0x0000 - */ -export const crc16t10_dif = (data: Buffer): Buffer => { - return _crc.crc16t10_dif(data); -}; - -/** - * Check = 0x0FB3, Poly = 0xA097, Init = 0x0000, Ref = false, XorOut = 0x0000 - */ -export const crc16teledisk = (data: Buffer): Buffer => { - return _crc.crc16teledisk(data); -}; - -/** - * Check = 0x26B1, Poly = 0x1021 (rev: 0x8408), Init = 0x89EC, Ref = true, XorOut = 0x0000 - */ -export const crc16tms13157 = (data: Buffer): Buffer => { - return _crc.crc16tms13157(data); -}; - -/** - * Check = 0xB4C8, Poly = 0x8005 (rev: 0xA001), Init = 0xFFFF, Ref = true, XorOut = 0xFFFF - */ -export const crc16usb = (data: Buffer): Buffer => { - return _crc.crc16usb(data); -}; - -/** - * Check = 0xBF05, Poly = 0x1021 (rev: 0x8408), Init = 0xC6C6, Ref = true, XorOut = 0x0000 - */ -export const crc_a = (data: Buffer): Buffer => { - return _crc.crc_a(data); -}; - -/** - * Check = 0x2189, Poly = 0x1021 (rev: 0x8408), Init = 0x0000, Ref = true, XorOut = 0x0000 - */ -export const crc16kermit = (data: Buffer): Buffer => { - return _crc.crc16kermit(data); -}; - -/** - * Check = 0x4B37, Poly = 0x8005 (rev: 0xA001), Init = 0xFFFF, Ref = true, XorOut = 0x0000 - */ -export const crc16modbus = (data: Buffer): Buffer => { - return _crc.crc16modbus(data); -}; - -/** - * Check = 0x906E, Poly = 0x8005 (rev: 0xA001), Init = 0xFFFF, Ref = true, XorOut = 0xFFFF - */ -export const crc16_x25 = (data: Buffer): Buffer => { - return _crc.crc16_x25(data); -}; - -/** - * Check = 0x31C3, Poly = 0x1021, Init = 0x0000, Ref = false, XorOut = 0x0000 - */ -export const crc16xmodem = (data: Buffer): Buffer => { - return _crc.crc16xmodem(data); -}; - -/** - * Check = 0x04F03, Poly = 0x1685B, Init = 0x00000, Ref = false, XorOut = 0x00000 - */ -export const crc17can = (data: Buffer): Buffer => { - return _crc.crc17can(data); -}; - -/** - * Check = 0x0ED841, Poly = 0x102899, Init = 0x000000, Ref = false, XorOut = 0x000000 - */ -export const crc21can = (data: Buffer): Buffer => { - return _crc.crc21can(data); -}; - -/** - * Check = 0x21CF02, Poly = 0x864CFB, Init = 0xB704CE, Ref = false, XorOut = 0x000000 - */ -export const crc24 = (data: Buffer): Buffer => { - return _crc.crc24(data); -}; - -/** - * Check = 0xC25A56, Poly = 0x00065B (rev: 0xDA6000), Init = 0x555555, Ref = true, XorOut = 0x000000 - */ -export const crc24ble = (data: Buffer): Buffer => { - return _crc.crc24ble(data); -}; - -/** - * Check = 0x7979BD, Poly = 0x5D6DCB, Init = 0xFEDCBA, Ref = false, XorOut = 0x000000 - */ -export const crc24flexray_a = (data: Buffer): Buffer => { - return _crc.crc24flexray_a(data); -}; - -/** - * Check = 0x1F23B8, Poly = 0x5D6DCB, Init = 0xABCDEF, Ref = false, XorOut = 0x000000 - */ -export const crc24flexray_b = (data: Buffer): Buffer => { - return _crc.crc24flexray_b(data); -}; - -/** - * Check = 0xCDE703, Poly = 0x864CFB, Init = 0x000000, Ref = false, XorOut = 0x000000 - */ -export const crc24lte_a = (data: Buffer): Buffer => { - return _crc.crc24lte_a(data); -}; - -/** - * Check = 0x23EF52, Poly = 0x800063, Init = 0x000000, Ref = false, XorOut = 0x000000 - */ -export const crc24lte_b = (data: Buffer): Buffer => { - return _crc.crc24lte_b(data); -}; - -/** - * Check = 0x200FA5, Poly = 0x800063, Init = 0xFFFFFF, Ref = false, XorOut = 0xFFFFFF - */ -export const crc24os9 = (data: Buffer): Buffer => { - return _crc.crc24os9(data); -}; - -/** - * Check = 0x04C34ABF, Poly = 0x2030B9C7, Init = 0x3FFFFFFF, Ref = false, XorOut = 0x3FFFFFFF - */ -export const crc30cdma = (data: Buffer): Buffer => { - return _crc.crc30cdma(data); -}; - -/** - * Check = 0xCBF43926, Poly = 0x04C11DB7 (rev: 0xEDB88320), Init = 0xFFFFFFFF, Ref = true, XorOut = 0xFFFFFFFF - */ -export const crc32 = (data: Buffer): Buffer => { - return _crc.crc32(data); -}; - -/** - * Check = 0x181989FC, Poly = 0x04C11DB7, Init = 0xFFFFFFFF, Ref = false, XorOut = 0xFFFFFFFF - */ -export const crc32mhash = (data: Buffer): Buffer => { - return _crc.crc32mhash(data); -}; - -/** - * Check = 0xFC891918, Poly = 0x04C11DB7, Init = 0xFFFFFFFF, Ref = false, XorOut = 0xFFFFFFFF - */ -export const crc32bzip2 = (data: Buffer): Buffer => { - return _crc.crc32bzip2(data); -}; - -/** - * Check = 0xE3069283, Poly = 0x1EDC6F41 (rev: 0x82F63B78), Init = 0xFFFFFFFF, Ref = true, XorOut = 0xFFFFFFFF - */ -export const crc32c = (data: Buffer): Buffer => { - return _crc.crc32c(data); -}; - -/** - * Check = 0x87315576, Poly = 0xA833982B (rev: 0xD419CC15), Init = 0xFFFFFFFF, Ref = true, XorOut = 0xFFFFFFFF - */ -export const crc32d = (data: Buffer): Buffer => { - return _crc.crc32d(data); -}; - -/** - * Check = 0x0376E6E7, Poly = 0x04C11DB7, Init = 0xFFFFFFFF, Ref = false, XorOut = 0x00000000 - */ -export const crc32mpeg2 = (data: Buffer): Buffer => { - return _crc.crc32mpeg2(data); -}; - -/** - * Check = 0x765E7680, Poly = 0x04C11DB7, Init = 0x00000000, Ref = false, XorOut = 0xFFFFFFFF - */ -export const crc32posix = (data: Buffer): Buffer => { - return _crc.crc32posix(data); -}; - -/** - * Check = 0x3010BF7F, Poly = 0x814141AB, Init = 0x00000000, Ref = false, XorOut = 0x00000000 - */ -export const crc32q = (data: Buffer): Buffer => { - return _crc.crc32q(data); -}; - -/** - * Check = 0x340BC6D9, Poly = 0x04C11DB7 (rev: 0xEDB88320), Init = 0xFFFFFFFF, Ref = true, XorOut = 0x00000000 - */ -export const crc32jamcrc = (data: Buffer): Buffer => { - return _crc.crc32jamcrc(data); -}; - -/** - * Check = 0xBD0BE338, Poly = 0x000000AF, Init = 0x00000000, Ref = false, XorOut = 0x00000000 - */ -export const crc32xfer = (data: Buffer): Buffer => { - return _crc.crc32xfer(data); -}; - -/** - * Check = 0xD4164FC646, Poly = 0x0004820009, Init = 0x0000000000, Ref = false, XorOut = 0xFFFFFFFFFF - */ -export const crc40gsm = (data: Buffer): Buffer => { - return _crc.crc40gsm(data); -}; + return _crc.crc( + polyLow, + polyHigh, + bit, + initialLow, + initialHigh, + finalXorLow, + finalXorHigh, + reflect, + data + ) +} /** * Check = 0x6C40DF5F0B497347, Poly = 0x42F0E1EBA9EA3693, Init = 0x0000000000000000, Ref = false, XorOut = 0x0000000000000000 */ export const crc64 = (data: Buffer): Buffer => { - return _crc.crc64(data); -}; + return _crc.crc64(data) +} /** * Check = 0xB90956C775A41001, Poly = 0x000000000000001B (rev: 0xD800000000000000), Init = 0xFFFFFFFFFFFFFFFF, Ref = true, XorOut = 0xFFFFFFFFFFFFFFFF */ export const crc64iso = (data: Buffer): Buffer => { - return _crc.crc64iso(data); -}; + return _crc.crc64iso(data) +} /** * Check = 0x62EC59E3F1A4F00A, Poly = 0x42F0E1EBA9EA3693, Init = 0xFFFFFFFFFFFFFFFF, Ref = false, XorOut = 0xFFFFFFFFFFFFFFFF */ export const crc64we = (data: Buffer): Buffer => { - return _crc.crc64we(data); -}; + return _crc.crc64we(data) +} /** * Check = 0xE9C6D914C4B8D9CA, Poly = 0xAD93D23594C935A9 (rev: 0x95AC9329AC4BC9B5), Init = 0x0000000000000000, Ref = true, XorOut = 0x0000000000000000 */ export const crc64jones = (data: Buffer): Buffer => { - return _crc.crc64jones(data); -}; + return _crc.crc64jones(data) +} diff --git a/tests/tests.test.ts b/tests/tests.test.ts index 0eccfe2..44e77ed 100644 --- a/tests/tests.test.ts +++ b/tests/tests.test.ts @@ -1,74 +1,25 @@ -import { describe, it } from "mocha"; -import { expect } from "chai"; +import { describe, it } from 'mocha' +import { expect } from 'chai' -import * as crc from ".."; +import * as crc from '../lib/lib.js' -describe("CRC-8 Family", function () { - it("should calculate CRC-8(CRC-8-ATM)", function () { - const result = crc.crc8(Buffer.from("hello", "utf8")).toString("hex"); - expect(result).to.equal("92"); - }); - it("should calculate CRC-8-CDMA", function () { - const result = crc.crc8cdma2000(Buffer.from("hello", "utf8")).toString("hex"); - expect(result).to.equal("4c"); - }); -}); - -describe("CRC-16 Family", function () { - it("should calculate CRC-16(CRC-16-IBM)", function () { - const result = crc.crc16(Buffer.from("hello", "utf8")).toString("hex"); - expect(result).to.equal("34d2"); - }); - it("should calculate CRC-16-CCITT(CRC-CCITT)", function () { - const result = crc.crc16ccitt_false(Buffer.from("hello", "utf8")).toString("hex"); - expect(result).to.equal("d26e"); - }); -}); - -describe("CRC-24 Family", function () { - it("should calculate CRC-24", function () { - const result = crc.crc24(Buffer.from("hello", "utf8")).toString("hex"); - expect(result).to.equal("47f58a"); - }); - - it("should calculate CRC-24 (using poly)", function () { - const result = crc.crc( - 0x00864cfb, 0x00000000, 24, 0x00b704ce, 0x00000000, 0x00000000, 0x00000000, false, Buffer.from("hello", "utf8"), - ).toString("hex"); - expect(result).to.equal("47f58a"); - }); -}); - -describe("CRC-32 Family", function () { - it("should calculate CRC-32(CRC-32-IEEE) which is also called crc32b in mhash library", function () { - const result = crc.crc32(Buffer.from("hello", "utf8")).toString("hex"); - expect(result).to.equal("3610a686"); - }); - it("should calculate crc32 according to the mhash library", function () { - const result = crc.crc32mhash(Buffer.from("hello", "utf8")).toString("hex"); - expect(result).to.equal("3d653119"); - }); - it("should calculate CRC-32-C", function () { - const result = crc.crc32c(Buffer.from("hello", "utf8")).toString("hex"); - expect(result).to.equal("9a71bb4c"); - }); -}); - -describe("CRC-64 Family", function () { - it("should calculate CRC-64(CRC-64-ECMA)", function () { - const result = crc.crc64(Buffer.from("hello", "utf8")).toString("hex"); - expect(result).to.equal("40544a306137b6ec"); - }); - it("should calculate CRC-64-ISO", function () { - const result = crc.crc64iso(Buffer.from("hello", "utf8")).toString("hex"); - expect(result).to.equal("3c3eeee2d8100000"); - }); - it("should calculate CRC-64-WE", function () { - const result = crc.crc64we(Buffer.from("hello", "utf8")).toString("hex"); - expect(result).to.equal("ec5388479a7c913f"); - }); - it("should calculate CRC-64-JONES", function () { - const result = crc.crc64jones(Buffer.from("123456789", "utf8")).toString("hex"); - expect(result).to.equal("e9c6d914c4b8d9ca"); - }); -}); +describe('CRC-64 Family', () => { + it('should calculate CRC-64(CRC-64-ECMA)', () => { + const result = crc.crc64(Buffer.from('hello', 'utf8')).toString('hex') + expect(result).to.equal('40544a306137b6ec') + }) + it('should calculate CRC-64-ISO', () => { + const result = crc.crc64iso(Buffer.from('hello', 'utf8')).toString('hex') + expect(result).to.equal('3c3eeee2d8100000') + }) + it('should calculate CRC-64-WE', () => { + const result = crc.crc64we(Buffer.from('hello', 'utf8')).toString('hex') + expect(result).to.equal('ec5388479a7c913f') + }) + it('should calculate CRC-64-JONES', () => { + const result = crc + .crc64jones(Buffer.from('123456789', 'utf8')) + .toString('hex') + expect(result).to.equal('e9c6d914c4b8d9ca') + }) +}) diff --git a/tsconfig.json b/tsconfig.json index 96f2257..c529361 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,67 +1,15 @@ { - "compilerOptions": { - /* Visit https://aka.ms/tsconfig.json to read more about this file */ - /* Basic Options */ - // "incremental": true, /* Enable incremental compilation */ - "target": "ES2018", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */ - "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */ - // "lib": [], /* Specify library files to be included in the compilation. */ - // "allowJs": true, /* Allow javascript files to be compiled. */ - // "checkJs": true, /* Report errors in .js files. */ - // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', 'react', 'react-jsx' or 'react-jsxdev'. */ - "declaration": true, /* Generates corresponding '.d.ts' file. */ - // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ - // "sourceMap": true, /* Generates corresponding '.map' file. */ - // "outFile": "./", /* Concatenate and emit output to single file. */ - "outDir": "./lib", /* Redirect output structure to the directory. */ - "rootDir": "./src", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ - // "composite": true, /* Enable project compilation */ - // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ - // "removeComments": true, /* Do not emit comments to output. */ - // "noEmit": true, /* Do not emit outputs. */ - // "importHelpers": true, /* Import emit helpers from 'tslib'. */ - // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ - // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ - /* Strict Type-Checking Options */ - "strict": true, /* Enable all strict type-checking options. */ - // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ - // "strictNullChecks": true, /* Enable strict null checks. */ - // "strictFunctionTypes": true, /* Enable strict checking of function types. */ - // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ - // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ - // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ - // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ - /* Additional Checks */ - // "noUnusedLocals": true, /* Report errors on unused locals. */ - // "noUnusedParameters": true, /* Report errors on unused parameters. */ - // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ - // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ - // "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */ - // "noPropertyAccessFromIndexSignature": true, /* Require undeclared properties from index signatures to use element accesses. */ - /* Module Resolution Options */ - "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ - // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ - // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ - // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ - // "typeRoots": [], /* List of folders to include type definitions from. */ - // "types": [], /* Type declaration files to be included in compilation. */ - // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ - "esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ - // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ - // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ - /* Source Map Options */ - // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ - // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ - /* Experimental Options */ - // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ - // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ - /* Advanced Options */ - "skipLibCheck": true, /* Skip type checking of declaration files. */ - "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ - }, - "include": [ - "src/**/*" - ] -} \ No newline at end of file + "compilerOptions": { + /* Visit https://aka.ms/tsconfig.json to read more about this file */ + "target": "ES2018" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */, + "module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */, + "declaration": true /* Generates corresponding '.d.ts' file. */, + "outDir": "./lib" /* Redirect output structure to the directory. */, + "rootDir": "./src" /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */, + "strict": true /* Enable all strict type-checking options. */, + "moduleResolution": "node" /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */, + "skipLibCheck": true /* Skip type checking of declaration files. */, + "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ + }, + "include": ["src/**/*"] +} From ef56550c684dcd8bf177457b8da8c57a313bd85c Mon Sep 17 00:00:00 2001 From: Daniel Freytag Date: Wed, 20 Nov 2024 16:37:51 +0100 Subject: [PATCH 2/9] fix: ci script --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3ccbf90..6fbd37c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -38,7 +38,7 @@ jobs: - run: npm run check - test-node: + test-bun: strategy: fail-fast: false matrix: From f94f80c2826ec609a6cf6cf23821f1103af871a7 Mon Sep 17 00:00:00 2001 From: Daniel Freytag Date: Wed, 20 Nov 2024 16:38:31 +0100 Subject: [PATCH 3/9] fix: ci script --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6fbd37c..4107262 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -24,7 +24,7 @@ jobs: name: Use ${{ matrix.node-version }} on ${{ matrix.os }} runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable @@ -49,7 +49,7 @@ jobs: name: Use Bun on ${{ matrix.os }} runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable From 4256a187100d5e20a5c8d75cec574f1b3334bae7 Mon Sep 17 00:00:00 2001 From: Daniel Freytag Date: Wed, 20 Nov 2024 16:41:01 +0100 Subject: [PATCH 4/9] chore: update dependencies --- bun.lockb | Bin 252202 -> 252194 bytes package.json | 24 ++++++++++++------------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/bun.lockb b/bun.lockb index e5e362c7c231b96b9fd8bf0bd3553e7105d02f1d..8a5d81368f66f2dff3c33f833d1f305c64f5ddb6 100755 GIT binary patch delta 52695 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 delta 52885 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 yMR>B$g}UOJF;{xy-(s+a^lft%q@q~f?965; (https://magiclen.org)", "license": "MIT", "dependencies": { - "detect-libc": "^2.0.1" + "detect-libc": "^2.0.3" }, "devDependencies": { "@swrlab/style-guide": "^1.0.3", - "@types/chai": "^4.3.4", - "@types/mocha": "^10.0.1", - "@types/node": "^18.11.17", - "@typescript-eslint/eslint-plugin": "^5.46.1", - "@typescript-eslint/parser": "^5.46.1", - "cargo-cp-artifact": "^0.1.7", - "chai": "^4.3.7", - "eslint": "^8.30.0", - "mocha": "^10.2.0", - "ts-node": "^10.9.1", - "typescript": "^4.9.4" + "@types/chai": "^4.3.20", + "@types/mocha": "^10.0.9", + "@types/node": "^18.19.64", + "@typescript-eslint/eslint-plugin": "^5.62.0", + "@typescript-eslint/parser": "^5.62.0", + "cargo-cp-artifact": "^0.1.9", + "chai": "^4.5.0", + "eslint": "^8.57.1", + "mocha": "^10.8.2", + "ts-node": "^10.9.2", + "typescript": "^4.9.5" }, "prettier": "@swrlab/style-guide/prettier" } From 746b06defd30bd997127695dd39c21619747a5e3 Mon Sep 17 00:00:00 2001 From: Daniel Freytag Date: Wed, 20 Nov 2024 16:44:04 +0100 Subject: [PATCH 5/9] chore: update dependencies --- bun.lockb | Bin 252194 -> 258247 bytes package.json | 12 +++++------- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/bun.lockb b/bun.lockb index 8a5d81368f66f2dff3c33f833d1f305c64f5ddb6..9c4eb17256caccc8f122dba10251b39d2357bd00 100755 GIT binary patch delta 56576 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

H(~?j$+Yga= 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 Date: Wed, 20 Nov 2024 16:46:30 +0100 Subject: [PATCH 6/9] chore: update dependencies --- eslint.config.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index 2425dc6..287bba9 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,4 +1,4 @@ -import { audiolab } from '@swrlab/style-guide/eslint/index.js' +import { audiolab } from '@swrlab/style-guide/eslint/index' export default audiolab( [ From 3bf6ecff0d11b7362e6071fdea2768b0088a332c Mon Sep 17 00:00:00 2001 From: Daniel Freytag Date: Wed, 20 Nov 2024 16:48:41 +0100 Subject: [PATCH 7/9] fix: ci script --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4107262..ca30bd3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -34,7 +34,7 @@ jobs: - run: npm install - - run: npm run build + - run: npm run build:ts && npm run build:neon - run: npm run check @@ -60,6 +60,6 @@ jobs: - run: bun install - - run: bun run build + - run: bun run build:ts && bun run build:neon - run: bun run check From 2f99fde2341eccc55f5dae4c7e636201668dc9ca Mon Sep 17 00:00:00 2001 From: Daniel Freytag Date: Wed, 20 Nov 2024 17:01:40 +0100 Subject: [PATCH 8/9] fix: ci scripts --- .github/workflows/ci.yml | 5 ++--- eslint.config.mjs | 28 ++++------------------------ package.json | 12 +++++------- tsconfig.json => tsconfig.jsonc | 0 4 files changed, 11 insertions(+), 34 deletions(-) rename tsconfig.json => tsconfig.jsonc (100%) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ca30bd3..0fc31a8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,7 +20,6 @@ jobs: node-version: - 20.x - 22.x - - 23.x name: Use ${{ matrix.node-version }} on ${{ matrix.os }} runs-on: ${{ matrix.os }} steps: @@ -36,7 +35,7 @@ jobs: - run: npm run build:ts && npm run build:neon - - run: npm run check + - run: npm run test test-bun: strategy: @@ -62,4 +61,4 @@ jobs: - run: bun run build:ts && bun run build:neon - - run: bun run check + - run: bun run test diff --git a/eslint.config.mjs b/eslint.config.mjs index 287bba9..655b1a8 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -3,23 +3,7 @@ import { audiolab } from '@swrlab/style-guide/eslint/index' export default audiolab( [ { - ignores: [ - /* ignore these files, since biome already covers them */ - '**/*.mjs', - '**/*.js', - '**/*.jsx', - '**/*.ts', - '**/*.tsx', - '**/*.json', - '**/*.jsonc', - /* ignore these directories */ - '**/static/**', - '**/store/**', - '**/keys/**', - '**/node_modules/**', - '**/test/*.json', - '**/test/*.xml', - ], + ignores: ['node_modules/**', 'lib/**', 'target/**', 'test/*.json', 'test/*.xml'], }, { languageOptions: { @@ -59,18 +43,14 @@ export default audiolab( ignores: [], }, ], - }, - }, - { - files: ['**/*.vue'], - rules: { - 'n/no-unsupported-features/node-builtins': 'off', + 'jsonc/no-comments': 'warn', + 'jsonc/sort-keys': 'warn', }, }, ], { prettier: true, comments: true, - vue: true, + vue: false, } ) diff --git a/package.json b/package.json index 519ad36..3f7e2c9 100644 --- a/package.json +++ b/package.json @@ -11,18 +11,16 @@ "build:neon": "cargo-cp-artifact -nc index.node -- cargo build --release --message-format=json-render-diagnostics", "build:bin": "./build.sh", "build:clean": "rimraf target && rimraf bin && cargo clean && mkdir -p bin", - "lint": "eslint src tests --fix", - "test": "mocha -r ts-node/register tests/**/*.test.ts", - "check": "bun run lint && bun run test", - "prepublishOnly": "bun run build:bin && bun run lint && bun run test" - }, - "engines": { - "node": ">=20" + "lint": "eslint .", + "test": "mocha -r ts-node/register tests/**/*.test.ts" }, "repository": { "type": "git", "url": "git+https://github.com/swrlab/node-crc.git" }, + "engines": { + "node": ">=20" + }, "keywords": ["node.js", "crc64"], "author": "Magic Len (https://magiclen.org)", "license": "MIT", diff --git a/tsconfig.json b/tsconfig.jsonc similarity index 100% rename from tsconfig.json rename to tsconfig.jsonc From 9c2ec3844a9cb817f4249cba24b835514682a180 Mon Sep 17 00:00:00 2001 From: Daniel Freytag Date: Wed, 20 Nov 2024 17:06:17 +0100 Subject: [PATCH 9/9] fix: ci scripts --- lib/lib.d.ts | 318 ------------------ lib/lib.js | 566 +------------------------------- package.json | 1 - tsconfig.jsonc => tsconfig.json | 2 +- 4 files changed, 6 insertions(+), 881 deletions(-) rename tsconfig.jsonc => tsconfig.json (88%) diff --git a/lib/lib.d.ts b/lib/lib.d.ts index 9a146d3..fdac03e 100644 --- a/lib/lib.d.ts +++ b/lib/lib.d.ts @@ -1,325 +1,7 @@ -/// -/// /** * Create a CRC instance by providing the length of bits, expression, reflection, an initial value and a final xor value. */ export declare const crc: (polyLow: number, polyHigh: number, bit: number, initialLow: number, initialHigh: number, finalXorLow: number, finalXorHigh: number, reflect: boolean, data: Buffer) => Buffer; -/** - * Check = 0x4, Poly = 0x3, Init = 0x0, Ref = false, XorOut = 0x7 - */ -export declare const crc3gsm: (data: Buffer) => Buffer; -/** - * Check = 0x7, Poly = 0x3 (rev: 0xC), Init = 0x0, Ref = true, XorOut = 0x0 - */ -export declare const crc4itu: (data: Buffer) => Buffer; -/** - * Check = 0xB, Poly = 0x3, Init = 0xF, Ref = false, XorOut = 0xF - */ -export declare const crc4interlaken: (data: Buffer) => Buffer; -/** - * Check = 0x00, Poly = 0x09, Init = 0x09, Ref = false, XorOut = 0x00 - */ -export declare const crc5epc: (data: Buffer) => Buffer; -/** - * Check = 0x07, Poly = 0x15 (rev: 0x15), Init = 0x00, Ref = true, XorOut = 0x00 - */ -export declare const crc5itu: (data: Buffer) => Buffer; -/** - * Check = 0x19, Poly = 0x05 (rev: 0x14), Init = 0x1F, Ref = true, XorOut = 0x1F - */ -export declare const crc5usb: (data: Buffer) => Buffer; -/** - * Check = 0x0D, Poly = 0x27, Init = 0x3F, Ref = false, XorOut = 0x00 - */ -export declare const crc6cdma2000_a: (data: Buffer) => Buffer; -/** - * Check = 0x3B, Poly = 0x07, Init = 0x3F, Ref = false, XorOut = 0x00 - */ -export declare const crc6cdma2000_b: (data: Buffer) => Buffer; -/** - * Check = 0x26, Poly = 0x19 (rev: 0x26), Init = 0x00, Ref = true, XorOut = 0x00 - */ -export declare const crc6darc: (data: Buffer) => Buffer; -/** - * Check = 0x13, Poly = 0x2F, Init = 0x00, Ref = false, XorOut = 0x3F - */ -export declare const crc6gsm: (data: Buffer) => Buffer; -/** - * Check = 0x06, Poly = 0x03 (rev: 0x30), Init = 0x00, Ref = true, XorOut = 0x00 - */ -export declare const crc6itu: (data: Buffer) => Buffer; -/** - * Check = 0x75, Poly = 0x09, Init = 0x00, Ref = false, XorOut = 0x00 - */ -export declare const crc7: (data: Buffer) => Buffer; -/** - * Check = 0x61, Poly = 0x45, Init = 0x00, Ref = false, XorOut = 0x00 - */ -export declare const crc7umts: (data: Buffer) => Buffer; -/** - * Check = 0xF4, Poly = 0x07, Init = 0x00, Ref = false, XorOut = 0x00 - */ -export declare const crc8: (data: Buffer) => Buffer; -/** - * Check = 0xDA, Poly = 0x9B, Init = 0xFF, Ref = false, XorOut = 0x00 - */ -export declare const crc8cdma2000: (data: Buffer) => Buffer; -/** - * Check = 0x15, Poly = 0x39 (rev: 0x9C), Init = 0x00, Ref = true, XorOut = 0x00 - */ -export declare const crc8darc: (data: Buffer) => Buffer; -/** - * Check = 0xBC, Poly = 0xD5, Init = 0x00, Ref = false, XorOut = 0x00 - */ -export declare const crc8dvb_s2: (data: Buffer) => Buffer; -/** - * Check = 0x97, Poly = 0x1D (rev: 0xB8), Init = 0xFF, Ref = true, XorOut = 0x00 - */ -export declare const crc8ebu: (data: Buffer) => Buffer; -/** - * Check = 0x7E, Poly = 0x1D, Init = 0xFD, Ref = false, XorOut = 0x00 - */ -export declare const crc8icode: (data: Buffer) => Buffer; -/** - * Check = 0xA1, Poly = 0x07, Init = 0x00, Ref = false, XorOut = 0x55 - */ -export declare const crc8itu: (data: Buffer) => Buffer; -/** - * Check = 0xA1, Poly = 0x31 (rev: 0x8C), Init = 0x00, Ref = true, XorOut = 0x00 - */ -export declare const crc8maxim: (data: Buffer) => Buffer; -/** - * Check = 0xD0, Poly = 0x07 (rev: 0xE0), Init = 0xFF, Ref = true, XorOut = 0x00 - */ -export declare const crc8rohc: (data: Buffer) => Buffer; -/** - * Check = 0x25, Poly = 0x9B (rev: 0xD9), Init = 0x00, Ref = true, XorOut = 0x00 - */ -export declare const crc8wcdma: (data: Buffer) => Buffer; -/** - * Check = 0x199, Poly = 0x233, Init = 0x000, Ref = false, XorOut = 0x000 - */ -export declare const crc10: (data: Buffer) => Buffer; -/** - * Check = 0x233, Poly = 0x3D9, Init = 0x3FF, Ref = false, XorOut = 0x000 - */ -export declare const crc10cdma2000: (data: Buffer) => Buffer; -/** - * Check = 0x12A, Poly = 0x175, Init = 0x000, Ref = false, XorOut = 0x3FF - */ -export declare const crc10gsm: (data: Buffer) => Buffer; -/** - * Check = 0x5A3, Poly = 0x385, Init = 0x01a, Ref = false, XorOut = 0x000 - */ -export declare const crc11: (data: Buffer) => Buffer; -/** - * Check = 0xF5B, Poly = 0x80F, Init = 0x000, Ref = false, XorOut = 0x000 - */ -export declare const crc12: (data: Buffer) => Buffer; -/** - * Check = 0xD4D, Poly = 0xF13, Init = 0xFFF, Ref = false, XorOut = 0x000 - */ -export declare const crc12cdma2000: (data: Buffer) => Buffer; -/** - * Check = 0xB34, Poly = 0xD31, Init = 0x000, Ref = false, XorOut = 0xFFF - */ -export declare const crc12gsm: (data: Buffer) => Buffer; -/** - * Check = 0x04FA, Poly = 0x1CF5, Init = 0x0000, Ref = false, XorOut = 0x0000 - */ -export declare const crc13bbc: (data: Buffer) => Buffer; -/** - * Check = 0x082D, Poly = 0x0805 (rev: 0x2804), Init = 0x0000, Ref = true, XorOut = 0x0000 - */ -export declare const crc14darc: (data: Buffer) => Buffer; -/** - * Check = 0x30AE, Poly = 0x202D, Init = 0x0000, Ref = false, XorOut = 0x3FFF - */ -export declare const crc14gsm: (data: Buffer) => Buffer; -/** - * Check = 0x059E, Poly = 0x4599, Init = 0x0000, Ref = false, XorOut = 0x0000 - */ -export declare const crc15can: (data: Buffer) => Buffer; -/** - * Check = 0x2566, Poly = 0x6815, Init = 0x0000, Ref = false, XorOut = 0x0001 - */ -export declare const crc15mpt1327: (data: Buffer) => Buffer; -/** - * Check = 0xBB3D, Poly = 0x8005 (rev: 0xA001), Init = 0x0000, Ref = true, XorOut = 0x0000 - */ -export declare const crc16: (data: Buffer) => Buffer; -/** - * Check = 0x29B1, Poly = 0x1021, Init = 0xFFFF, Ref = false, XorOut = 0x0000 - */ -export declare const crc16ccitt_false: (data: Buffer) => Buffer; -/** - * Check = 0xE5CC, Poly = 0x1021, Init = 0x1D0F, Ref = false, XorOut = 0x0000 - */ -export declare const crc16aug_ccitt: (data: Buffer) => Buffer; -/** - * Check = 0xFEE8, Poly = 0x8005, Init = 0x0000, Ref = false, XorOut = 0x0000 - */ -export declare const crc16buypass: (data: Buffer) => Buffer; -/** - * Check = 0x4C06, Poly = 0xC867, Init = 0xFFFF, Ref = false, XorOut = 0x0000 - */ -export declare const crc16cdma2000: (data: Buffer) => Buffer; -/** - * Check = 0x9ECF, Poly = 0x8005, Init = 0x800D, Ref = false, XorOut = 0x0000 - */ -export declare const crc16dds_110: (data: Buffer) => Buffer; -/** - * Check = 0x007E, Poly = 0x0589, Init = 0x800D, Ref = false, XorOut = 0x0001 - */ -export declare const crc16dect_r: (data: Buffer) => Buffer; -/** - * Check = 0x007E, Poly = 0x0589, Init = 0x0000, Ref = false, XorOut = 0x0000 - */ -export declare const crc16dect_x: (data: Buffer) => Buffer; -/** - * Check = 0xEA82, Poly = 0x3D65 (rev: 0xA6BC), Init = 0x0000, Ref = true, XorOut = 0xFFFF - */ -export declare const crc16dnp: (data: Buffer) => Buffer; -/** - * Check = 0xC2B7, Poly = 0x3D65, Init = 0x0000, Ref = false, XorOut = 0xFFFF - */ -export declare const crc16en_13757: (data: Buffer) => Buffer; -/** - * Check = 0xD64E, Poly = 0x1021, Init = 0xFFFF, Ref = false, XorOut = 0xFFFF - */ -export declare const crc16genibus: (data: Buffer) => Buffer; -/** - * Check = 0x44C2, Poly = 0x8005 (rev: 0xA001), Init = 0xFFFF, Ref = true, XorOut = 0xFFFF - */ -export declare const crc16maxim: (data: Buffer) => Buffer; -/** - * Check = 0x6F91, Poly = 0x1021 (rev: 0x8408), Init = 0xFFFF, Ref = true, XorOut = 0x0000 - */ -export declare const crc16mcrf4cc: (data: Buffer) => Buffer; -/** - * Check = 0x63D0, Poly = 0x1021 (rev: 0x8408), Init = 0xB2AA, Ref = true, XorOut = 0x0000 - */ -export declare const crc16riello: (data: Buffer) => Buffer; -/** - * Check = 0xD0DB, Poly = 0x8BB7, Init = 0x0000, Ref = false, XorOut = 0x0000 - */ -export declare const crc16t10_dif: (data: Buffer) => Buffer; -/** - * Check = 0x0FB3, Poly = 0xA097, Init = 0x0000, Ref = false, XorOut = 0x0000 - */ -export declare const crc16teledisk: (data: Buffer) => Buffer; -/** - * Check = 0x26B1, Poly = 0x1021 (rev: 0x8408), Init = 0x89EC, Ref = true, XorOut = 0x0000 - */ -export declare const crc16tms13157: (data: Buffer) => Buffer; -/** - * Check = 0xB4C8, Poly = 0x8005 (rev: 0xA001), Init = 0xFFFF, Ref = true, XorOut = 0xFFFF - */ -export declare const crc16usb: (data: Buffer) => Buffer; -/** - * Check = 0xBF05, Poly = 0x1021 (rev: 0x8408), Init = 0xC6C6, Ref = true, XorOut = 0x0000 - */ -export declare const crc_a: (data: Buffer) => Buffer; -/** - * Check = 0x2189, Poly = 0x1021 (rev: 0x8408), Init = 0x0000, Ref = true, XorOut = 0x0000 - */ -export declare const crc16kermit: (data: Buffer) => Buffer; -/** - * Check = 0x4B37, Poly = 0x8005 (rev: 0xA001), Init = 0xFFFF, Ref = true, XorOut = 0x0000 - */ -export declare const crc16modbus: (data: Buffer) => Buffer; -/** - * Check = 0x906E, Poly = 0x8005 (rev: 0xA001), Init = 0xFFFF, Ref = true, XorOut = 0xFFFF - */ -export declare const crc16_x25: (data: Buffer) => Buffer; -/** - * Check = 0x31C3, Poly = 0x1021, Init = 0x0000, Ref = false, XorOut = 0x0000 - */ -export declare const crc16xmodem: (data: Buffer) => Buffer; -/** - * Check = 0x04F03, Poly = 0x1685B, Init = 0x00000, Ref = false, XorOut = 0x00000 - */ -export declare const crc17can: (data: Buffer) => Buffer; -/** - * Check = 0x0ED841, Poly = 0x102899, Init = 0x000000, Ref = false, XorOut = 0x000000 - */ -export declare const crc21can: (data: Buffer) => Buffer; -/** - * Check = 0x21CF02, Poly = 0x864CFB, Init = 0xB704CE, Ref = false, XorOut = 0x000000 - */ -export declare const crc24: (data: Buffer) => Buffer; -/** - * Check = 0xC25A56, Poly = 0x00065B (rev: 0xDA6000), Init = 0x555555, Ref = true, XorOut = 0x000000 - */ -export declare const crc24ble: (data: Buffer) => Buffer; -/** - * Check = 0x7979BD, Poly = 0x5D6DCB, Init = 0xFEDCBA, Ref = false, XorOut = 0x000000 - */ -export declare const crc24flexray_a: (data: Buffer) => Buffer; -/** - * Check = 0x1F23B8, Poly = 0x5D6DCB, Init = 0xABCDEF, Ref = false, XorOut = 0x000000 - */ -export declare const crc24flexray_b: (data: Buffer) => Buffer; -/** - * Check = 0xCDE703, Poly = 0x864CFB, Init = 0x000000, Ref = false, XorOut = 0x000000 - */ -export declare const crc24lte_a: (data: Buffer) => Buffer; -/** - * Check = 0x23EF52, Poly = 0x800063, Init = 0x000000, Ref = false, XorOut = 0x000000 - */ -export declare const crc24lte_b: (data: Buffer) => Buffer; -/** - * Check = 0x200FA5, Poly = 0x800063, Init = 0xFFFFFF, Ref = false, XorOut = 0xFFFFFF - */ -export declare const crc24os9: (data: Buffer) => Buffer; -/** - * Check = 0x04C34ABF, Poly = 0x2030B9C7, Init = 0x3FFFFFFF, Ref = false, XorOut = 0x3FFFFFFF - */ -export declare const crc30cdma: (data: Buffer) => Buffer; -/** - * Check = 0xCBF43926, Poly = 0x04C11DB7 (rev: 0xEDB88320), Init = 0xFFFFFFFF, Ref = true, XorOut = 0xFFFFFFFF - */ -export declare const crc32: (data: Buffer) => Buffer; -/** - * Check = 0x181989FC, Poly = 0x04C11DB7, Init = 0xFFFFFFFF, Ref = false, XorOut = 0xFFFFFFFF - */ -export declare const crc32mhash: (data: Buffer) => Buffer; -/** - * Check = 0xFC891918, Poly = 0x04C11DB7, Init = 0xFFFFFFFF, Ref = false, XorOut = 0xFFFFFFFF - */ -export declare const crc32bzip2: (data: Buffer) => Buffer; -/** - * Check = 0xE3069283, Poly = 0x1EDC6F41 (rev: 0x82F63B78), Init = 0xFFFFFFFF, Ref = true, XorOut = 0xFFFFFFFF - */ -export declare const crc32c: (data: Buffer) => Buffer; -/** - * Check = 0x87315576, Poly = 0xA833982B (rev: 0xD419CC15), Init = 0xFFFFFFFF, Ref = true, XorOut = 0xFFFFFFFF - */ -export declare const crc32d: (data: Buffer) => Buffer; -/** - * Check = 0x0376E6E7, Poly = 0x04C11DB7, Init = 0xFFFFFFFF, Ref = false, XorOut = 0x00000000 - */ -export declare const crc32mpeg2: (data: Buffer) => Buffer; -/** - * Check = 0x765E7680, Poly = 0x04C11DB7, Init = 0x00000000, Ref = false, XorOut = 0xFFFFFFFF - */ -export declare const crc32posix: (data: Buffer) => Buffer; -/** - * Check = 0x3010BF7F, Poly = 0x814141AB, Init = 0x00000000, Ref = false, XorOut = 0x00000000 - */ -export declare const crc32q: (data: Buffer) => Buffer; -/** - * Check = 0x340BC6D9, Poly = 0x04C11DB7 (rev: 0xEDB88320), Init = 0xFFFFFFFF, Ref = true, XorOut = 0x00000000 - */ -export declare const crc32jamcrc: (data: Buffer) => Buffer; -/** - * Check = 0xBD0BE338, Poly = 0x000000AF, Init = 0x00000000, Ref = false, XorOut = 0x00000000 - */ -export declare const crc32xfer: (data: Buffer) => Buffer; -/** - * Check = 0xD4164FC646, Poly = 0x0004820009, Init = 0x0000000000, Ref = false, XorOut = 0xFFFFFFFFFF - */ -export declare const crc40gsm: (data: Buffer) => Buffer; /** * Check = 0x6C40DF5F0B497347, Poly = 0x42F0E1EBA9EA3693, Init = 0x0000000000000000, Ref = false, XorOut = 0x0000000000000000 */ diff --git a/lib/lib.js b/lib/lib.js index 7a730c8..ba6ebe1 100644 --- a/lib/lib.js +++ b/lib/lib.js @@ -1,9 +1,6 @@ "use strict"; -/* eslint-disable @typescript-eslint/no-var-requires */ -/* eslint-disable camelcase */ Object.defineProperty(exports, "__esModule", { value: true }); -exports.crc16riello = exports.crc16mcrf4cc = exports.crc16maxim = exports.crc16genibus = exports.crc16en_13757 = exports.crc16dnp = exports.crc16dect_x = exports.crc16dect_r = exports.crc16dds_110 = exports.crc16cdma2000 = exports.crc16buypass = exports.crc16aug_ccitt = exports.crc16ccitt_false = exports.crc16 = exports.crc15mpt1327 = exports.crc15can = exports.crc14gsm = exports.crc14darc = exports.crc13bbc = exports.crc12gsm = exports.crc12cdma2000 = exports.crc12 = exports.crc11 = exports.crc10gsm = exports.crc10cdma2000 = exports.crc10 = exports.crc8wcdma = exports.crc8rohc = exports.crc8maxim = exports.crc8itu = exports.crc8icode = exports.crc8ebu = exports.crc8dvb_s2 = exports.crc8darc = exports.crc8cdma2000 = exports.crc8 = exports.crc7umts = exports.crc7 = exports.crc6itu = exports.crc6gsm = exports.crc6darc = exports.crc6cdma2000_b = exports.crc6cdma2000_a = exports.crc5usb = exports.crc5itu = exports.crc5epc = exports.crc4interlaken = exports.crc4itu = exports.crc3gsm = exports.crc = void 0; -exports.crc64jones = exports.crc64we = exports.crc64iso = exports.crc64 = exports.crc40gsm = exports.crc32xfer = exports.crc32jamcrc = exports.crc32q = exports.crc32posix = exports.crc32mpeg2 = exports.crc32d = exports.crc32c = exports.crc32bzip2 = exports.crc32mhash = exports.crc32 = exports.crc30cdma = exports.crc24os9 = exports.crc24lte_b = exports.crc24lte_a = exports.crc24flexray_b = exports.crc24flexray_a = exports.crc24ble = exports.crc24 = exports.crc21can = exports.crc17can = exports.crc16xmodem = exports.crc16_x25 = exports.crc16modbus = exports.crc16kermit = exports.crc_a = exports.crc16usb = exports.crc16tms13157 = exports.crc16teledisk = exports.crc16t10_dif = void 0; +exports.crc64jones = exports.crc64we = exports.crc64iso = exports.crc64 = exports.crc = void 0; const detect_libc_1 = require("detect-libc"); /** * Check linux family to select correct libc @@ -11,11 +8,11 @@ const detect_libc_1 = require("detect-libc"); const getLinuxFamily = () => { switch ((0, detect_libc_1.familySync)()) { case detect_libc_1.GLIBC: - return "-gnu"; + return '-gnu'; case detect_libc_1.MUSL: - return "-musl"; + return '-musl'; default: - return ""; + return ''; } }; /** @@ -23,7 +20,7 @@ const getLinuxFamily = () => { */ const arch = process.arch; const platform = process.platform; -const family = platform === "linux" ? getLinuxFamily() : ""; +const family = platform === 'linux' ? getLinuxFamily() : ''; const binary = `../bin/${platform}-${arch}${family}.node`; const _crc = require(binary); /** @@ -33,559 +30,6 @@ const crc = (polyLow, polyHigh, bit, initialLow, initialHigh, finalXorLow, final return _crc.crc(polyLow, polyHigh, bit, initialLow, initialHigh, finalXorLow, finalXorHigh, reflect, data); }; exports.crc = crc; -/** - * Check = 0x4, Poly = 0x3, Init = 0x0, Ref = false, XorOut = 0x7 - */ -const crc3gsm = (data) => { - return _crc.crc3gsm(data); -}; -exports.crc3gsm = crc3gsm; -/** - * Check = 0x7, Poly = 0x3 (rev: 0xC), Init = 0x0, Ref = true, XorOut = 0x0 - */ -const crc4itu = (data) => { - return _crc.crc4itu(data); -}; -exports.crc4itu = crc4itu; -/** - * Check = 0xB, Poly = 0x3, Init = 0xF, Ref = false, XorOut = 0xF - */ -const crc4interlaken = (data) => { - return _crc.crc4interlaken(data); -}; -exports.crc4interlaken = crc4interlaken; -/** - * Check = 0x00, Poly = 0x09, Init = 0x09, Ref = false, XorOut = 0x00 - */ -const crc5epc = (data) => { - return _crc.crc5epc(data); -}; -exports.crc5epc = crc5epc; -/** - * Check = 0x07, Poly = 0x15 (rev: 0x15), Init = 0x00, Ref = true, XorOut = 0x00 - */ -const crc5itu = (data) => { - return _crc.crc5itu(data); -}; -exports.crc5itu = crc5itu; -/** - * Check = 0x19, Poly = 0x05 (rev: 0x14), Init = 0x1F, Ref = true, XorOut = 0x1F - */ -const crc5usb = (data) => { - return _crc.crc5usb(data); -}; -exports.crc5usb = crc5usb; -/** - * Check = 0x0D, Poly = 0x27, Init = 0x3F, Ref = false, XorOut = 0x00 - */ -const crc6cdma2000_a = (data) => { - return _crc.crc6cdma2000_a(data); -}; -exports.crc6cdma2000_a = crc6cdma2000_a; -/** - * Check = 0x3B, Poly = 0x07, Init = 0x3F, Ref = false, XorOut = 0x00 - */ -const crc6cdma2000_b = (data) => { - return _crc.crc6cdma2000_b(data); -}; -exports.crc6cdma2000_b = crc6cdma2000_b; -/** - * Check = 0x26, Poly = 0x19 (rev: 0x26), Init = 0x00, Ref = true, XorOut = 0x00 - */ -const crc6darc = (data) => { - return _crc.crc6darc(data); -}; -exports.crc6darc = crc6darc; -/** - * Check = 0x13, Poly = 0x2F, Init = 0x00, Ref = false, XorOut = 0x3F - */ -const crc6gsm = (data) => { - return _crc.crc6gsm(data); -}; -exports.crc6gsm = crc6gsm; -/** - * Check = 0x06, Poly = 0x03 (rev: 0x30), Init = 0x00, Ref = true, XorOut = 0x00 - */ -const crc6itu = (data) => { - return _crc.crc6itu(data); -}; -exports.crc6itu = crc6itu; -/** - * Check = 0x75, Poly = 0x09, Init = 0x00, Ref = false, XorOut = 0x00 - */ -const crc7 = (data) => { - return _crc.crc7(data); -}; -exports.crc7 = crc7; -/** - * Check = 0x61, Poly = 0x45, Init = 0x00, Ref = false, XorOut = 0x00 - */ -const crc7umts = (data) => { - return _crc.crc7umts(data); -}; -exports.crc7umts = crc7umts; -/** - * Check = 0xF4, Poly = 0x07, Init = 0x00, Ref = false, XorOut = 0x00 - */ -const crc8 = (data) => { - return _crc.crc8(data); -}; -exports.crc8 = crc8; -/** - * Check = 0xDA, Poly = 0x9B, Init = 0xFF, Ref = false, XorOut = 0x00 - */ -const crc8cdma2000 = (data) => { - return _crc.crc8cdma2000(data); -}; -exports.crc8cdma2000 = crc8cdma2000; -/** - * Check = 0x15, Poly = 0x39 (rev: 0x9C), Init = 0x00, Ref = true, XorOut = 0x00 - */ -const crc8darc = (data) => { - return _crc.crc8darc(data); -}; -exports.crc8darc = crc8darc; -/** - * Check = 0xBC, Poly = 0xD5, Init = 0x00, Ref = false, XorOut = 0x00 - */ -const crc8dvb_s2 = (data) => { - return _crc.crc8dvb_s2(data); -}; -exports.crc8dvb_s2 = crc8dvb_s2; -/** - * Check = 0x97, Poly = 0x1D (rev: 0xB8), Init = 0xFF, Ref = true, XorOut = 0x00 - */ -const crc8ebu = (data) => { - return _crc.crc8ebu(data); -}; -exports.crc8ebu = crc8ebu; -/** - * Check = 0x7E, Poly = 0x1D, Init = 0xFD, Ref = false, XorOut = 0x00 - */ -const crc8icode = (data) => { - return _crc.crc8icode(data); -}; -exports.crc8icode = crc8icode; -/** - * Check = 0xA1, Poly = 0x07, Init = 0x00, Ref = false, XorOut = 0x55 - */ -const crc8itu = (data) => { - return _crc.crc8itu(data); -}; -exports.crc8itu = crc8itu; -/** - * Check = 0xA1, Poly = 0x31 (rev: 0x8C), Init = 0x00, Ref = true, XorOut = 0x00 - */ -const crc8maxim = (data) => { - return _crc.crc8maxim(data); -}; -exports.crc8maxim = crc8maxim; -/** - * Check = 0xD0, Poly = 0x07 (rev: 0xE0), Init = 0xFF, Ref = true, XorOut = 0x00 - */ -const crc8rohc = (data) => { - return _crc.crc8rohc(data); -}; -exports.crc8rohc = crc8rohc; -/** - * Check = 0x25, Poly = 0x9B (rev: 0xD9), Init = 0x00, Ref = true, XorOut = 0x00 - */ -const crc8wcdma = (data) => { - return _crc.crc8wcdma(data); -}; -exports.crc8wcdma = crc8wcdma; -/** - * Check = 0x199, Poly = 0x233, Init = 0x000, Ref = false, XorOut = 0x000 - */ -const crc10 = (data) => { - return _crc.crc10(data); -}; -exports.crc10 = crc10; -/** - * Check = 0x233, Poly = 0x3D9, Init = 0x3FF, Ref = false, XorOut = 0x000 - */ -const crc10cdma2000 = (data) => { - return _crc.crc10cdma2000(data); -}; -exports.crc10cdma2000 = crc10cdma2000; -/** - * Check = 0x12A, Poly = 0x175, Init = 0x000, Ref = false, XorOut = 0x3FF - */ -const crc10gsm = (data) => { - return _crc.crc10gsm(data); -}; -exports.crc10gsm = crc10gsm; -/** - * Check = 0x5A3, Poly = 0x385, Init = 0x01a, Ref = false, XorOut = 0x000 - */ -const crc11 = (data) => { - return _crc.crc11(data); -}; -exports.crc11 = crc11; -/** - * Check = 0xF5B, Poly = 0x80F, Init = 0x000, Ref = false, XorOut = 0x000 - */ -const crc12 = (data) => { - return _crc.crc12(data); -}; -exports.crc12 = crc12; -/** - * Check = 0xD4D, Poly = 0xF13, Init = 0xFFF, Ref = false, XorOut = 0x000 - */ -const crc12cdma2000 = (data) => { - return _crc.crc12cdma2000(data); -}; -exports.crc12cdma2000 = crc12cdma2000; -/** - * Check = 0xB34, Poly = 0xD31, Init = 0x000, Ref = false, XorOut = 0xFFF - */ -const crc12gsm = (data) => { - return _crc.crc12gsm(data); -}; -exports.crc12gsm = crc12gsm; -/** - * Check = 0x04FA, Poly = 0x1CF5, Init = 0x0000, Ref = false, XorOut = 0x0000 - */ -const crc13bbc = (data) => { - return _crc.crc13bbc(data); -}; -exports.crc13bbc = crc13bbc; -/** - * Check = 0x082D, Poly = 0x0805 (rev: 0x2804), Init = 0x0000, Ref = true, XorOut = 0x0000 - */ -const crc14darc = (data) => { - return _crc.crc14darc(data); -}; -exports.crc14darc = crc14darc; -/** - * Check = 0x30AE, Poly = 0x202D, Init = 0x0000, Ref = false, XorOut = 0x3FFF - */ -const crc14gsm = (data) => { - return _crc.crc14gsm(data); -}; -exports.crc14gsm = crc14gsm; -/** - * Check = 0x059E, Poly = 0x4599, Init = 0x0000, Ref = false, XorOut = 0x0000 - */ -const crc15can = (data) => { - return _crc.crc15can(data); -}; -exports.crc15can = crc15can; -/** - * Check = 0x2566, Poly = 0x6815, Init = 0x0000, Ref = false, XorOut = 0x0001 - */ -const crc15mpt1327 = (data) => { - return _crc.crc15mpt1327(data); -}; -exports.crc15mpt1327 = crc15mpt1327; -/** - * Check = 0xBB3D, Poly = 0x8005 (rev: 0xA001), Init = 0x0000, Ref = true, XorOut = 0x0000 - */ -const crc16 = (data) => { - return _crc.crc16(data); -}; -exports.crc16 = crc16; -/** - * Check = 0x29B1, Poly = 0x1021, Init = 0xFFFF, Ref = false, XorOut = 0x0000 - */ -const crc16ccitt_false = (data) => { - return _crc.crc16ccitt_false(data); -}; -exports.crc16ccitt_false = crc16ccitt_false; -/** - * Check = 0xE5CC, Poly = 0x1021, Init = 0x1D0F, Ref = false, XorOut = 0x0000 - */ -const crc16aug_ccitt = (data) => { - return _crc.crc16aug_ccitt(data); -}; -exports.crc16aug_ccitt = crc16aug_ccitt; -/** - * Check = 0xFEE8, Poly = 0x8005, Init = 0x0000, Ref = false, XorOut = 0x0000 - */ -const crc16buypass = (data) => { - return _crc.crc16buypass(data); -}; -exports.crc16buypass = crc16buypass; -/** - * Check = 0x4C06, Poly = 0xC867, Init = 0xFFFF, Ref = false, XorOut = 0x0000 - */ -const crc16cdma2000 = (data) => { - return _crc.crc16cdma2000(data); -}; -exports.crc16cdma2000 = crc16cdma2000; -/** - * Check = 0x9ECF, Poly = 0x8005, Init = 0x800D, Ref = false, XorOut = 0x0000 - */ -const crc16dds_110 = (data) => { - return _crc.crc16dds_110(data); -}; -exports.crc16dds_110 = crc16dds_110; -/** - * Check = 0x007E, Poly = 0x0589, Init = 0x800D, Ref = false, XorOut = 0x0001 - */ -const crc16dect_r = (data) => { - return _crc.crc16dect_r(data); -}; -exports.crc16dect_r = crc16dect_r; -/** - * Check = 0x007E, Poly = 0x0589, Init = 0x0000, Ref = false, XorOut = 0x0000 - */ -const crc16dect_x = (data) => { - return _crc.crc16dect_x(data); -}; -exports.crc16dect_x = crc16dect_x; -/** - * Check = 0xEA82, Poly = 0x3D65 (rev: 0xA6BC), Init = 0x0000, Ref = true, XorOut = 0xFFFF - */ -const crc16dnp = (data) => { - return _crc.crc16dnp(data); -}; -exports.crc16dnp = crc16dnp; -/** - * Check = 0xC2B7, Poly = 0x3D65, Init = 0x0000, Ref = false, XorOut = 0xFFFF - */ -const crc16en_13757 = (data) => { - return _crc.crc16en_13757(data); -}; -exports.crc16en_13757 = crc16en_13757; -/** - * Check = 0xD64E, Poly = 0x1021, Init = 0xFFFF, Ref = false, XorOut = 0xFFFF - */ -const crc16genibus = (data) => { - return _crc.crc16genibus(data); -}; -exports.crc16genibus = crc16genibus; -/** - * Check = 0x44C2, Poly = 0x8005 (rev: 0xA001), Init = 0xFFFF, Ref = true, XorOut = 0xFFFF - */ -const crc16maxim = (data) => { - return _crc.crc16maxim(data); -}; -exports.crc16maxim = crc16maxim; -/** - * Check = 0x6F91, Poly = 0x1021 (rev: 0x8408), Init = 0xFFFF, Ref = true, XorOut = 0x0000 - */ -const crc16mcrf4cc = (data) => { - return _crc.crc16mcrf4cc(data); -}; -exports.crc16mcrf4cc = crc16mcrf4cc; -/** - * Check = 0x63D0, Poly = 0x1021 (rev: 0x8408), Init = 0xB2AA, Ref = true, XorOut = 0x0000 - */ -const crc16riello = (data) => { - return _crc.crc16riello(data); -}; -exports.crc16riello = crc16riello; -/** - * Check = 0xD0DB, Poly = 0x8BB7, Init = 0x0000, Ref = false, XorOut = 0x0000 - */ -const crc16t10_dif = (data) => { - return _crc.crc16t10_dif(data); -}; -exports.crc16t10_dif = crc16t10_dif; -/** - * Check = 0x0FB3, Poly = 0xA097, Init = 0x0000, Ref = false, XorOut = 0x0000 - */ -const crc16teledisk = (data) => { - return _crc.crc16teledisk(data); -}; -exports.crc16teledisk = crc16teledisk; -/** - * Check = 0x26B1, Poly = 0x1021 (rev: 0x8408), Init = 0x89EC, Ref = true, XorOut = 0x0000 - */ -const crc16tms13157 = (data) => { - return _crc.crc16tms13157(data); -}; -exports.crc16tms13157 = crc16tms13157; -/** - * Check = 0xB4C8, Poly = 0x8005 (rev: 0xA001), Init = 0xFFFF, Ref = true, XorOut = 0xFFFF - */ -const crc16usb = (data) => { - return _crc.crc16usb(data); -}; -exports.crc16usb = crc16usb; -/** - * Check = 0xBF05, Poly = 0x1021 (rev: 0x8408), Init = 0xC6C6, Ref = true, XorOut = 0x0000 - */ -const crc_a = (data) => { - return _crc.crc_a(data); -}; -exports.crc_a = crc_a; -/** - * Check = 0x2189, Poly = 0x1021 (rev: 0x8408), Init = 0x0000, Ref = true, XorOut = 0x0000 - */ -const crc16kermit = (data) => { - return _crc.crc16kermit(data); -}; -exports.crc16kermit = crc16kermit; -/** - * Check = 0x4B37, Poly = 0x8005 (rev: 0xA001), Init = 0xFFFF, Ref = true, XorOut = 0x0000 - */ -const crc16modbus = (data) => { - return _crc.crc16modbus(data); -}; -exports.crc16modbus = crc16modbus; -/** - * Check = 0x906E, Poly = 0x8005 (rev: 0xA001), Init = 0xFFFF, Ref = true, XorOut = 0xFFFF - */ -const crc16_x25 = (data) => { - return _crc.crc16_x25(data); -}; -exports.crc16_x25 = crc16_x25; -/** - * Check = 0x31C3, Poly = 0x1021, Init = 0x0000, Ref = false, XorOut = 0x0000 - */ -const crc16xmodem = (data) => { - return _crc.crc16xmodem(data); -}; -exports.crc16xmodem = crc16xmodem; -/** - * Check = 0x04F03, Poly = 0x1685B, Init = 0x00000, Ref = false, XorOut = 0x00000 - */ -const crc17can = (data) => { - return _crc.crc17can(data); -}; -exports.crc17can = crc17can; -/** - * Check = 0x0ED841, Poly = 0x102899, Init = 0x000000, Ref = false, XorOut = 0x000000 - */ -const crc21can = (data) => { - return _crc.crc21can(data); -}; -exports.crc21can = crc21can; -/** - * Check = 0x21CF02, Poly = 0x864CFB, Init = 0xB704CE, Ref = false, XorOut = 0x000000 - */ -const crc24 = (data) => { - return _crc.crc24(data); -}; -exports.crc24 = crc24; -/** - * Check = 0xC25A56, Poly = 0x00065B (rev: 0xDA6000), Init = 0x555555, Ref = true, XorOut = 0x000000 - */ -const crc24ble = (data) => { - return _crc.crc24ble(data); -}; -exports.crc24ble = crc24ble; -/** - * Check = 0x7979BD, Poly = 0x5D6DCB, Init = 0xFEDCBA, Ref = false, XorOut = 0x000000 - */ -const crc24flexray_a = (data) => { - return _crc.crc24flexray_a(data); -}; -exports.crc24flexray_a = crc24flexray_a; -/** - * Check = 0x1F23B8, Poly = 0x5D6DCB, Init = 0xABCDEF, Ref = false, XorOut = 0x000000 - */ -const crc24flexray_b = (data) => { - return _crc.crc24flexray_b(data); -}; -exports.crc24flexray_b = crc24flexray_b; -/** - * Check = 0xCDE703, Poly = 0x864CFB, Init = 0x000000, Ref = false, XorOut = 0x000000 - */ -const crc24lte_a = (data) => { - return _crc.crc24lte_a(data); -}; -exports.crc24lte_a = crc24lte_a; -/** - * Check = 0x23EF52, Poly = 0x800063, Init = 0x000000, Ref = false, XorOut = 0x000000 - */ -const crc24lte_b = (data) => { - return _crc.crc24lte_b(data); -}; -exports.crc24lte_b = crc24lte_b; -/** - * Check = 0x200FA5, Poly = 0x800063, Init = 0xFFFFFF, Ref = false, XorOut = 0xFFFFFF - */ -const crc24os9 = (data) => { - return _crc.crc24os9(data); -}; -exports.crc24os9 = crc24os9; -/** - * Check = 0x04C34ABF, Poly = 0x2030B9C7, Init = 0x3FFFFFFF, Ref = false, XorOut = 0x3FFFFFFF - */ -const crc30cdma = (data) => { - return _crc.crc30cdma(data); -}; -exports.crc30cdma = crc30cdma; -/** - * Check = 0xCBF43926, Poly = 0x04C11DB7 (rev: 0xEDB88320), Init = 0xFFFFFFFF, Ref = true, XorOut = 0xFFFFFFFF - */ -const crc32 = (data) => { - return _crc.crc32(data); -}; -exports.crc32 = crc32; -/** - * Check = 0x181989FC, Poly = 0x04C11DB7, Init = 0xFFFFFFFF, Ref = false, XorOut = 0xFFFFFFFF - */ -const crc32mhash = (data) => { - return _crc.crc32mhash(data); -}; -exports.crc32mhash = crc32mhash; -/** - * Check = 0xFC891918, Poly = 0x04C11DB7, Init = 0xFFFFFFFF, Ref = false, XorOut = 0xFFFFFFFF - */ -const crc32bzip2 = (data) => { - return _crc.crc32bzip2(data); -}; -exports.crc32bzip2 = crc32bzip2; -/** - * Check = 0xE3069283, Poly = 0x1EDC6F41 (rev: 0x82F63B78), Init = 0xFFFFFFFF, Ref = true, XorOut = 0xFFFFFFFF - */ -const crc32c = (data) => { - return _crc.crc32c(data); -}; -exports.crc32c = crc32c; -/** - * Check = 0x87315576, Poly = 0xA833982B (rev: 0xD419CC15), Init = 0xFFFFFFFF, Ref = true, XorOut = 0xFFFFFFFF - */ -const crc32d = (data) => { - return _crc.crc32d(data); -}; -exports.crc32d = crc32d; -/** - * Check = 0x0376E6E7, Poly = 0x04C11DB7, Init = 0xFFFFFFFF, Ref = false, XorOut = 0x00000000 - */ -const crc32mpeg2 = (data) => { - return _crc.crc32mpeg2(data); -}; -exports.crc32mpeg2 = crc32mpeg2; -/** - * Check = 0x765E7680, Poly = 0x04C11DB7, Init = 0x00000000, Ref = false, XorOut = 0xFFFFFFFF - */ -const crc32posix = (data) => { - return _crc.crc32posix(data); -}; -exports.crc32posix = crc32posix; -/** - * Check = 0x3010BF7F, Poly = 0x814141AB, Init = 0x00000000, Ref = false, XorOut = 0x00000000 - */ -const crc32q = (data) => { - return _crc.crc32q(data); -}; -exports.crc32q = crc32q; -/** - * Check = 0x340BC6D9, Poly = 0x04C11DB7 (rev: 0xEDB88320), Init = 0xFFFFFFFF, Ref = true, XorOut = 0x00000000 - */ -const crc32jamcrc = (data) => { - return _crc.crc32jamcrc(data); -}; -exports.crc32jamcrc = crc32jamcrc; -/** - * Check = 0xBD0BE338, Poly = 0x000000AF, Init = 0x00000000, Ref = false, XorOut = 0x00000000 - */ -const crc32xfer = (data) => { - return _crc.crc32xfer(data); -}; -exports.crc32xfer = crc32xfer; -/** - * Check = 0xD4164FC646, Poly = 0x0004820009, Init = 0x0000000000, Ref = false, XorOut = 0xFFFFFFFFFF - */ -const crc40gsm = (data) => { - return _crc.crc40gsm(data); -}; -exports.crc40gsm = crc40gsm; /** * Check = 0x6C40DF5F0B497347, Poly = 0x42F0E1EBA9EA3693, Init = 0x0000000000000000, Ref = false, XorOut = 0x0000000000000000 */ diff --git a/package.json b/package.json index 3f7e2c9..77faa00 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,6 @@ "scripts": { "build": "bun run build:ts && bun run build:neon", "build:ts": "tsc", - "build:watch": "tsc -w", "build:neon": "cargo-cp-artifact -nc index.node -- cargo build --release --message-format=json-render-diagnostics", "build:bin": "./build.sh", "build:clean": "rimraf target && rimraf bin && cargo clean && mkdir -p bin", diff --git a/tsconfig.jsonc b/tsconfig.json similarity index 88% rename from tsconfig.jsonc rename to tsconfig.json index c529361..efc8e6b 100644 --- a/tsconfig.jsonc +++ b/tsconfig.json @@ -7,7 +7,7 @@ "outDir": "./lib" /* Redirect output structure to the directory. */, "rootDir": "./src" /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */, "strict": true /* Enable all strict type-checking options. */, - "moduleResolution": "node" /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */, + "moduleResolution": "node10" /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */, "skipLibCheck": true /* Skip type checking of declaration files. */, "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ },