diff --git a/.changeset/khaki-cobras-hide.md b/.changeset/khaki-cobras-hide.md new file mode 100644 index 00000000..cf6a91f3 --- /dev/null +++ b/.changeset/khaki-cobras-hide.md @@ -0,0 +1,5 @@ +--- +"feat: typescript support": minor +--- + +Now BBob supports Typescript with typings diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 00000000..8d7dd934 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,25 @@ +// For format details, see https://aka.ms/devcontainer.json. For config options, see the +// README at: https://github.com/devcontainers/templates/tree/main/src/typescript-node +{ + "name": "Node.js & TypeScript", + // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile + "image": "mcr.microsoft.com/devcontainers/typescript-node:1-20-bullseye", + "features": { + "ghcr.io/devcontainers/features/node:1": {} + } + + // Features to add to the dev container. More info: https://containers.dev/features. + // "features": {}, + + // Use 'forwardPorts' to make a list of ports inside the container available locally. + // "forwardPorts": [], + + // Use 'postCreateCommand' to run commands after the container is created. + // "postCreateCommand": "yarn install", + + // Configure tool-specific properties. + // "customizations": {}, + + // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root. + // "remoteUser": "root" +} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 83d75ea0..1df5ad8e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -32,16 +32,16 @@ jobs: cache: 'pnpm' - name: Install - run: pnpm install --frozen-lockfile --strict-peer-dependencies + run: pnpm i --frozen-lockfile --strict-peer-dependencies - name: Run the lint - run: pnpm lint + run: pnpm run lint - name: Install coverage run: pnpm install --global codecov - name: Run the coverage - run: pnpm cover + run: pnpm run cover - name: Run the coverage run: codecov diff --git a/.gitignore b/.gitignore index e65f739c..dd56be10 100644 --- a/.gitignore +++ b/.gitignore @@ -64,3 +64,8 @@ typings/ # benchmark test files benchmark/html5 .nx + +.nx + + +.nx/cache diff --git a/.npmrc b/.npmrc index 214c29d1..361b1968 100644 --- a/.npmrc +++ b/.npmrc @@ -1 +1,2 @@ registry=https://registry.npmjs.org/ +link-workspace-packages=true diff --git a/.swcrc-commonjs.json b/.swcrc-commonjs.json index f334ce80..b5e908a2 100644 --- a/.swcrc-commonjs.json +++ b/.swcrc-commonjs.json @@ -1,4 +1,5 @@ { + "$schema": "https://json.schemastore.org/swcrc", "module": { "type": "commonjs", @@ -9,14 +10,12 @@ }, "jsc": { "transform": { - "optimizer": { - "simplify": false - } + "optimizer": {} }, "loose": true, "parser": { - "syntax": "ecmascript", - "jsx": true + "syntax": "typescript", + "tsx": true } } } diff --git a/.swcrc.json b/.swcrc.json index b03dcfe7..4e71507d 100644 --- a/.swcrc.json +++ b/.swcrc.json @@ -1,4 +1,5 @@ { + "$schema": "https://json.schemastore.org/swcrc", "module": { "type": "es6", "strict": false, @@ -9,15 +10,13 @@ "minify": false, "jsc": { "transform": { - "optimizer": { - "simplify": false - } + "optimizer": {} }, "target": "es2018", "loose": true, "parser": { - "syntax": "ecmascript", - "jsx": true + "syntax": "typescript", + "tsx": true }, "externalHelpers": false } diff --git a/benchmark/index.js b/benchmark/index.js index 59f23d3a..40d736bd 100644 --- a/benchmark/index.js +++ b/benchmark/index.js @@ -48,17 +48,17 @@ suite }); }) .add('@bbob/parser lexer old', () => { - const lexer1 = require('@bbob/parser/lib/lexer_old'); + const lexer1 = require('./lexer_old'); - return require('@bbob/parser/lib/index').parse(stub, { + return require('@bbob/parser').parse(stub, { onlyAllowTags: ['ch'], createTokenizer: lexer1.createLexer, }); }) .add('@bbob/parser lexer', () => { - const lexer2 = require('@bbob/parser/lib/lexer'); + const lexer2 = require('@bbob/parser'); - return require('@bbob/parser/lib/index').parse(stub, { + return require('@bbob/parser').parse(stub, { onlyAllowTags: ['ch'], createTokenizer: lexer2.createLexer, }); diff --git a/packages/bbob-parser/src/lexer_old.js b/benchmark/lexer_old.js similarity index 97% rename from packages/bbob-parser/src/lexer_old.js rename to benchmark/lexer_old.js index dd64d1ed..0332fabb 100644 --- a/packages/bbob-parser/src/lexer_old.js +++ b/benchmark/lexer_old.js @@ -1,5 +1,5 @@ /* eslint-disable no-plusplus,no-param-reassign */ -import { +const { OPEN_BRAKET, CLOSE_BRAKET, QUOTEMARK, @@ -9,12 +9,12 @@ import { TAB, EQ, N, -} from '@bbob/plugin-helper'; +} = require('@bbob/plugin-helper'); -import { +const { Token, TYPE_ATTR_NAME, TYPE_ATTR_VALUE, TYPE_NEW_LINE, TYPE_SPACE, TYPE_TAG, TYPE_WORD, -} from './Token'; -import { createCharGrabber, trimChar, unquote } from './utils'; +} = require('@bbob/parser/Token'); +const { createCharGrabber, trimChar, unquote } = require('@bbob/parser/utils'); // for cases const EM = '!'; @@ -238,5 +238,4 @@ function createLexer(buffer, options = {}) { }; } -export const createTokenOfType = createToken; -export { createLexer }; +module.exports.createLexer = createLexer; diff --git a/benchmark/package.json b/benchmark/package.json index 7d7bfb1b..2bfdcff6 100644 --- a/benchmark/package.json +++ b/benchmark/package.json @@ -13,7 +13,8 @@ "url": "https://artkost.ru/" }, "dependencies": { - "@bbob/parser": "workspace:*", + "@bbob/parser": "*", + "@bbob/plugin-helper": "*", "benchmark": "2.1.4", "picocolors": "1.0.0", "xbbcode-parser": "0.1.2", diff --git a/lerna.json b/lerna.json index 8f0cc1fc..385a8642 100644 --- a/lerna.json +++ b/lerna.json @@ -27,5 +27,7 @@ "message": "chore(release): publish %s" } }, - "useNx": true + "npmClient": "pnpm", + "useNx": true, + "useWorkspaces": true } diff --git a/nx.json b/nx.json index 0e5b9009..9952b4ed 100644 --- a/nx.json +++ b/nx.json @@ -1,12 +1,81 @@ { - "tasksRunnerOptions": { - "default": { - "runner": "nx/tasks-runners/default", + "targetDefaults": { + "types": { + "dependsOn": [ + "^types" + ], + "outputs": ["{projectRoot}/types"], + "cache": true + }, + "build": { + "dependsOn": [ + "^types", + "^build:commonjs", + "^build:es", + "^build:umd" + ], + "outputs": ["{projectRoot}/lib", "{projectRoot}/es", "{projectRoot}/dist"], + "cache": true + }, + "test": { + "dependsOn": [ + "^build", + "^test" + ] + }, + "cover": { + "dependsOn": [ + "^build", + "^cover" + ], + "outputs": ["{projectRoot}/coverage"] + }, + "lint": { + "dependsOn": [ + "^lint" + ] + }, + "build:commonjs": { + "dependsOn": [ + "^build:es", + "^build:commonjs" + ], + "outputs": ["{projectRoot}/lib"], + "cache": true + }, + "build:es": { + "dependsOn": [ + "^build:es" + ], + "outputs": ["{projectRoot}/es"], + "cache": true + }, + "build:umd": { + "dependsOn": [ + "^build:es", + "^build:umd" + ], + "outputs": ["{projectRoot}/dist"], + "cache": true + } + }, + "$schema": "./node_modules/nx/schemas/nx-schema.json", + "defaultBase": "master", + "extends": "nx/presets/npm.json", + "plugins": [ + { + "plugin": "@nx/eslint/plugin", "options": { - "cacheableOperations": ["build"] + "targetName": "eslint:lint", + "extensions": [ + "ts", + "tsx", + "js", + "jsx", + "html", + "vue" + ] } } - }, - "targetDefaults": {}, - "defaultBase": "master" + ] } diff --git a/package.json b/package.json index a1e53c3e..33fc5db6 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,8 @@ { + "name": "bbob", "scripts": { "prepublishOnly": "npm run test", - "bootstrap": "lerna bootstrap --no-ci", + "bootstrap": "pnpm re", "publish-ci": "npm run build && lerna publish from-package --yes --include-merged-tags --conventional-commits", "publish-canary": "npm run build && lerna publish --yes --include-merged-tags --conventional-commits --no-private --no-git-tag-version", "publish-from-packages": "npm run build && lerna publish from-package --yes --include-merged-tags --conventional-commits --create-release github", @@ -10,11 +11,13 @@ "publish-minor": "npm run build && lerna version minor --include-merged-tags --conventional-commits --no-git-tag-version --no-private", "size": "nx run-many --target=size", "bundlesize": "nx run-many --target=bundlesize", - "test": "npm run build && nx run-many --target=link && nx run-many --target=test", + "test": "nx run-many --target=test", "cover": "nx run-many --target=cover", "build": "nx run-many --target=build", + "types": "nx run-many --target=types", "release": "npm run build && changeset publish", - "lint": "nx run-many --target=link && npm run build && nx run-many --target=lint" + "lint": "nx run-many --target=lint", + "cleanup": "node scripts/cleanup" }, "author": { "name": "Nikolay Kostyurin ", @@ -26,14 +29,13 @@ "@changesets/cli": "2.26.2", "@commitlint/cli": "13.2.1", "@commitlint/config-conventional": "13.2.0", - "@nrwl/cli": "15.3.3", - "@rollup/plugin-commonjs": "23.0.2", - "@rollup/plugin-node-resolve": "15.0.1", - "@rollup/plugin-replace": "5.0.1", - "@size-limit/preset-small-lib": "6.0.1", - "@swc/cli": "0.1.57", - "@swc/core": "1.3.16", - "@swc/jest": "0.2.23", + "@rollup/plugin-commonjs": "25.0.7", + "@rollup/plugin-node-resolve": "15.2.3", + "@rollup/plugin-replace": "5.0.5", + "@size-limit/preset-small-lib": "11.0.1", + "@swc/cli": "0.3.10", + "@swc/core": "1.3.107", + "@swc/jest": "0.2.36", "@testing-library/dom": "9.3.1", "@testing-library/jest-dom": "6.1.2", "bundlesize2": "0.0.31", @@ -46,18 +48,26 @@ "eslint-plugin-react": "7.26.1", "eslint-plugin-react-hooks": "4.6.0", "husky": "7.0.2", - "jest": "29.5.0", - "jest-environment-jsdom": "29.6.4", - "lerna": "6.0.3", + "jest": "29.7.0", + "jest-environment-jsdom": "29.7.0", + "lerna": "7.4.1", "lint-staged": "11.2.3", "microtime": "3.0.0", - "nx": "15.3.3", - "posthtml-render": "^3.0.0", - "rimraf": "^3.0.2", - "rollup": "3.3.0", + "nx": "18.3.3", + "posthtml-render": "3.0.0", + "rimraf": "5.0.5", + "rollup": "4.1.5", "rollup-plugin-gzip": "3.1.0", - "rollup-plugin-swc3": "0.7.0", - "size-limit": "6.0.1" + "rollup-plugin-swc3": "0.11.0", + "size-limit": "11.0.1", + "typescript": "5.1.6", + "@types/node": "20.4.5", + "@types/jest": "29.5.3", + "@types/react": "18.2.18", + "@nx/eslint": "18.3.3", + "@nx/rollup": "18.3.3", + "@nx/jest": "18.3.3", + "@bbob/scripts": "*" }, "publishConfig": { "access": "public", @@ -69,15 +79,18 @@ } }, "pkgTasks": { - "build-commonjs": "@/cross-env BABEL_ENV=commonjs NODE_ENV=production @/swc --config-file ../../.swcrc-commonjs.json --out-dir lib src", - "build-es": "@/cross-env BABEL_ENV=es NODE_ENV=production @/swc --config-file ../../.swcrc.json --out-dir es src", - "build-umd": "@/cross-env BABEL_ENV=rollup NODE_ENV=production @/rollup --config ../../rollup.config.mjs", + "build:commonjs": "@/cross-env BABEL_ENV=commonjs NODE_ENV=production @/swc ./src/ --config-file ../../.swcrc-commonjs.json --out-dir lib --strip-leading-paths", + "build:es": "@/cross-env BABEL_ENV=es NODE_ENV=production @/swc ./src/ --config-file ../../.swcrc.json --out-dir es --strip-leading-paths", + "build:umd": "@/cross-env BABEL_ENV=rollup NODE_ENV=production @/rollup --config ../../rollup.config.mjs", + "build": "npm run build:es && npm run build:commonjs && npm run build:umd", "test": "@/jest", - "cover": "@/jest --config ../../jest.config.js --coverage .", + "cover": "@/jest --coverage .", "lint": "@/eslint .", - "bundlesize": "npm run build && @/cross-env NODE_ENV=production @/bundlesize ." + "types": "@/tsc", + "bundlesize": "npm run build && @/cross-env NODE_ENV=production @/bundlesize .", + "size": "npm run build && @/cross-env NODE_ENV=production @/size-limit ." }, - "packageManager": "pnpm@8.7.6", + "packageManager": "pnpm@8.15.1", "pnpm": { "overrides": { "semver@>=7.0.0 <7.5.2": ">=7.5.2", @@ -100,5 +113,8 @@ } } } + }, + "nx": { + "includedScripts": [] } } diff --git a/packages/bbob-cli/.gitignore b/packages/bbob-cli/.gitignore index 29f44348..62307a2c 100644 --- a/packages/bbob-cli/.gitignore +++ b/packages/bbob-cli/.gitignore @@ -1,2 +1,7 @@ coverage dist +lib +es +types +test/*.d.ts +test/*.map diff --git a/packages/bbob-cli/.npmignore b/packages/bbob-cli/.npmignore index 57abbddd..c1046191 100644 --- a/packages/bbob-cli/.npmignore +++ b/packages/bbob-cli/.npmignore @@ -1,5 +1,7 @@ -package-lock.json +pnpm-lock.yaml coverage src -dist -!lib \ No newline at end of file +!dist +!lib +!es +*.test.js diff --git a/packages/bbob-cli/README.md b/packages/bbob-cli/README.md index 5ce47522..5cd0e32b 100644 --- a/packages/bbob-cli/README.md +++ b/packages/bbob-cli/README.md @@ -1,4 +1,15 @@ -#@bbob/cli +# @bbob/cli +[![install size](https://packagephobia.now.sh/badge?p=@bbob/cli)](https://packagephobia.now.sh/result?p=@bbob/html) [![Known Vulnerabilities](https://snyk.io/test/github/JiLiZART/bbob/badge.svg?targetFile=packages%2Fbbob-cli%2Fpackage.json)](https://snyk.io/test/github/JiLiZART/bbob?targetFile=packages%2Fbbob-cli%2Fpackage.json) -Convert BBCode to HTML +> Converts bbcode string to html +```shell +npm i -g @bbob/cli +``` + +```shell +echo "[i]Text[/i]" | bbob + +# prints +Text +``` diff --git a/packages/bbob-cli/bin/bbob b/packages/bbob-cli/bin/bbob deleted file mode 100755 index d2316ff6..00000000 --- a/packages/bbob-cli/bin/bbob +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env node - -require('../lib/cli'); diff --git a/packages/bbob-cli/bin/bbob.js b/packages/bbob-cli/bin/bbob.js deleted file mode 100644 index d2316ff6..00000000 --- a/packages/bbob-cli/bin/bbob.js +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env node - -require('../lib/cli'); diff --git a/packages/bbob-cli/lib/cli.js b/packages/bbob-cli/lib/cli.js deleted file mode 100644 index f9749fc8..00000000 --- a/packages/bbob-cli/lib/cli.js +++ /dev/null @@ -1,25 +0,0 @@ -const fs = require('fs'); -const program = require('commander'); -const { version } = require('../package.json'); - -program - .version(version) - .parse(process.argv); - -const options = {}; - -// eslint-disable-next-line no-unused-vars -function readFile(filename, encoding, callback) { - if (options.file === '-') { - // read from stdin - const chunks = []; - - process.stdin.on('data', (chunk) => { - chunks.push(chunk); - }); - - process.stdin.on('end', () => callback(null, Buffer.concat(chunks).toString(encoding))); - } else { - fs.readFile(filename, encoding, callback); - } -} diff --git a/packages/bbob-cli/package.json b/packages/bbob-cli/package.json index f7a90f33..92bd9247 100644 --- a/packages/bbob-cli/package.json +++ b/packages/bbob-cli/package.json @@ -2,17 +2,30 @@ "name": "@bbob/cli", "version": "3.0.2", "description": "Comand line bbcode parser", - "main": "lib/cli.js", "bin": { - "bbob": "bin/bbob" + "bbob": "lib/cli.js" }, - "directories": { - "lib": "lib" + "main": "lib/index.js", + "module": "es/index.js", + "jsnext:main": "es/index.js", + "browser": "dist/index.js", + "browserName": "BbobCli", + "types": "types/index.d.ts", + "exports": { + ".": { + "types": "./types/index.d.ts", + "import": "./es/index.js", + "require": "./lib/index.js", + "browser": "./dist/index.min.js", + "umd": "./dist/index.min.js" + } }, "dependencies": { - "@bbob/html": "workspace:*", - "@bbob/preset-html5": "workspace:*", - "commander": "^2.15.1" + "@bbob/html": "*", + "@bbob/preset-html5": "*" + }, + "devDependencies": { + "@types/node": "20.11.30" }, "repository": { "type": "git", @@ -29,9 +42,16 @@ }, "homepage": "https://github.com/JiLiZART/bbob#readme", "scripts": { - "test": "../../scripts/pkg-task test", - "cover": "../../scripts/pkg-task cover", - "lint": "../../scripts/pkg-task lint" + "build:commonjs": "pkg-task", + "build:es": "pkg-task", + "build:umd": "pkg-task", + "build": "pkg-task", + "test": "pkg-task", + "lint": "pkg-task", + "size": "pkg-task", + "bundlesize": "pkg-task", + "types": "pkg-task", + "prepublishOnly": "npm run build" }, "author": "Nikolay Kostyurin ", "license": "MIT", diff --git a/packages/bbob-cli/src/cli.ts b/packages/bbob-cli/src/cli.ts new file mode 100755 index 00000000..cd5b6bcd --- /dev/null +++ b/packages/bbob-cli/src/cli.ts @@ -0,0 +1,4 @@ +#!/usr/bin/env node +import { run } from './index'; + +run(process.stdin, process.stdout); diff --git a/packages/bbob-cli/src/index.ts b/packages/bbob-cli/src/index.ts new file mode 100644 index 00000000..91630ba7 --- /dev/null +++ b/packages/bbob-cli/src/index.ts @@ -0,0 +1,24 @@ +import html from '@bbob/html' +import presetHTML5 from '@bbob/preset-html5' + +export function run(stdin = process.stdin, stdout = process.stdout) { + stdin.setEncoding('utf8'); + + let inputData = ''; + + // Read data from stdin + stdin.on('readable', () => { + const chunk = stdin.read(); + + if (chunk !== null) { + inputData += chunk; + } + }); + + // Once there's no more data to read, reverse the input and write it to stdout + stdin.on('end', () => { + const reversedData = html(inputData, presetHTML5()).toString(); + + stdout.write(reversedData); + }); +} diff --git a/packages/bbob-cli/test/cli.test.js b/packages/bbob-cli/test/cli.test.js deleted file mode 100644 index 0de9d1fc..00000000 --- a/packages/bbob-cli/test/cli.test.js +++ /dev/null @@ -1,8 +0,0 @@ - - - -describe('CLI Interface', () => { - test('read from file', () => { - - }) -}); \ No newline at end of file diff --git a/packages/bbob-cli/test/cli.test.ts b/packages/bbob-cli/test/cli.test.ts new file mode 100644 index 00000000..47daf208 --- /dev/null +++ b/packages/bbob-cli/test/cli.test.ts @@ -0,0 +1,30 @@ +const { execSync } = require('child_process'); +const path = require('path'); + +const pathToBin = path.resolve(__dirname, '../lib/cli.js') + +describe('@bbob/cli', () => { + test('simple string', () => { + const stdout = execSync(`echo "hello" | ${pathToBin}`); + + expect(String(stdout).trim()).toBe('hello'); + }); + + test('string with bbcodes', () => { + const stdout = execSync(`echo "[i]Text[/i]" | ${pathToBin}`); + + expect(String(stdout).trim()).toBe('Text'); + }); + + test('empty string', () => { + const stdout = execSync(`echo "" | ${pathToBin}`); + + expect(String(stdout).trim()).toBe(''); + }); + + test('multiline string', () => { + const stdout = execSync(`echo "[i]Text[/i]\n[i]Text[/i]" | ${pathToBin}`); + + expect(String(stdout).trim()).toBe('Text\nText'); + }); +}); diff --git a/packages/bbob-cli/tsconfig.json b/packages/bbob-cli/tsconfig.json new file mode 100644 index 00000000..305c0bb6 --- /dev/null +++ b/packages/bbob-cli/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "baseUrl": ".", + "outDir": "./types" + }, + "include": [ + "./src/*" + ] +} diff --git a/packages/bbob-core/.gitignore b/packages/bbob-core/.gitignore index 22f5164e..62307a2c 100644 --- a/packages/bbob-core/.gitignore +++ b/packages/bbob-core/.gitignore @@ -2,3 +2,6 @@ coverage dist lib es +types +test/*.d.ts +test/*.map diff --git a/packages/bbob-core/.npmignore b/packages/bbob-core/.npmignore index 65922b56..c1046191 100644 --- a/packages/bbob-core/.npmignore +++ b/packages/bbob-core/.npmignore @@ -1,4 +1,4 @@ -package-lock.json +pnpm-lock.yaml coverage src !dist diff --git a/packages/bbob-core/package.json b/packages/bbob-core/package.json index 1d9e8598..8af558b4 100644 --- a/packages/bbob-core/package.json +++ b/packages/bbob-core/package.json @@ -20,13 +20,24 @@ "core" ], "dependencies": { - "@bbob/parser": "workspace:*" + "@bbob/parser": "*", + "@bbob/plugin-helper": "*" }, "main": "lib/index.js", "module": "es/index.js", "jsnext:main": "es/index.js", "browser": "dist/index.js", "browserName": "BbobCore", + "types": "types/index.d.ts", + "exports": { + ".": { + "types": "./types/index.d.ts", + "import": "./es/index.js", + "require": "./lib/index.js", + "browser": "./dist/index.min.js", + "umd": "./dist/index.min.js" + } + }, "homepage": "https://github.com/JiLiZART/bbob", "author": "Nikolay Kostyurin ", "license": "MIT", @@ -38,19 +49,22 @@ "url": "git://github.com/JiLiZART/bbob.git" }, "scripts": { - "build:commonjs": "../../scripts/pkg-task build-commonjs", - "build:es": "../../scripts/pkg-task build-es", - "build:umd": "../../scripts/pkg-task build-umd", - "build": "npm run build:commonjs && npm run build:es && npm run build:umd", - "test": "../../scripts/pkg-task test", - "cover": "../../scripts/pkg-task cover", - "lint": "../../scripts/pkg-task lint", - "size": "../../scripts/pkg-task size", - "bundlesize": "../../scripts/pkg-task bundlesize" + "build:commonjs": "pkg-task", + "build:es": "pkg-task", + "build:umd": "pkg-task", + "build": "pkg-task", + "test": "pkg-task", + "cover": "pkg-task", + "lint": "pkg-task", + "size": "pkg-task", + "bundlesize": "pkg-task", + "types": "pkg-task", + "prepublishOnly": "npm run build" }, "size-limit": [ { - "path": "lib/index.js" + "path": "./dist/index.min.js", + "limit": "4.5 KB" } ], "bundlesize": [ diff --git a/packages/bbob-core/pnpm-lock.yaml b/packages/bbob-core/pnpm-lock.yaml index 060dfd9d..fd24893d 100644 --- a/packages/bbob-core/pnpm-lock.yaml +++ b/packages/bbob-core/pnpm-lock.yaml @@ -8,3 +8,6 @@ dependencies: '@bbob/parser': specifier: workspace:* version: link:../bbob-parser + '@bbob/plugin-helper': + specifier: workspace:* + version: link:../bbob-plugin-helper diff --git a/packages/bbob-core/src/errors.ts b/packages/bbob-core/src/errors.ts new file mode 100644 index 00000000..eb80e47b --- /dev/null +++ b/packages/bbob-core/src/errors.ts @@ -0,0 +1,10 @@ + +let C1 = 'C1' +let C2 = 'C2' + +if (process.env.NODE_ENV !== 'production') { + C1 = '"parser" is not a function, please pass to "process(input, { parser })" right function' + C2 = '"render" function not defined, please pass to "process(input, { render })"' +} + +export { C1, C2 } diff --git a/packages/bbob-core/src/index.js b/packages/bbob-core/src/index.js deleted file mode 100644 index cb01d20e..00000000 --- a/packages/bbob-core/src/index.js +++ /dev/null @@ -1,62 +0,0 @@ -import { parse } from '@bbob/parser'; -import { iterate, match } from './utils'; - -function walk(cb) { - return iterate(this, cb); -} - -export default function bbob(plugs) { - const plugins = typeof plugs === 'function' ? [plugs] : plugs || []; - - let options = { - skipParse: false, - }; - - return { - process(input, opts) { - options = opts || {}; - - const parseFn = options.parser || parse; - const renderFn = options.render; - const data = options.data || null; - - if (typeof parseFn !== 'function') { - throw new Error('"parser" is not a function, please pass to "process(input, { parser })" right function'); - } - - let tree = options.skipParse - ? input || [] - : parseFn(input, options); - - // raw tree before modification with plugins - const raw = tree; - - tree.messages = []; - tree.options = options; - tree.walk = walk; - tree.match = match; - - plugins.forEach((plugin) => { - tree = plugin(tree, { - parse: parseFn, - render: renderFn, - iterate, - match, - data, - }) || tree; - }); - - return { - get html() { - if (typeof renderFn !== 'function') { - throw new Error('"render" function not defined, please pass to "process(input, { render })"'); - } - return renderFn(tree, tree.options); - }, - tree, - raw, - messages: tree.messages, - }; - }, - }; -} diff --git a/packages/bbob-core/src/index.ts b/packages/bbob-core/src/index.ts new file mode 100644 index 00000000..7dadc055 --- /dev/null +++ b/packages/bbob-core/src/index.ts @@ -0,0 +1,76 @@ +import { parse } from '@bbob/parser'; +import { iterate, match } from './utils'; +import { C1, C2 } from './errors' + +import type { IterateCallback } from './utils'; +import type { NodeContent, PartialNodeContent } from "@bbob/plugin-helper"; +import type { BBobCore, BBobCoreOptions, BBobCoreTagNodeTree, BBobPlugins } from "./types"; + +export * from './types' + +export function createTree(tree: NodeContent[], options: Options) { + const extendedTree = tree as BBobCoreTagNodeTree + + extendedTree.messages = [...(extendedTree.messages || [])] + extendedTree.options = {...options, ...extendedTree.options} + extendedTree.walk = function walkNodes(cb: IterateCallback) { + return iterate(this, cb); + } + extendedTree.match = function matchNodes(expr: PartialNodeContent | PartialNodeContent[], cb: IterateCallback) { + return match(this, expr, cb) + } + + return extendedTree +} + +export default function bbob( + plugs?: BBobPlugins +): BBobCore { + const plugins = typeof plugs === 'function' ? [plugs] : plugs || []; + const mockRender = () => "" + + return { + process(input, opts) { + const options = opts || { skipParse: false, parser: parse, render: mockRender, data: null } as BBobCoreOptions + const parseFn = options.parser || parse; + const renderFn = options.render; + const data = options.data || null; + + if (typeof parseFn !== 'function') { + throw new Error(C1); + } + + // raw tree before modification with plugins + const raw = options.skipParse && Array.isArray(input) ? input : parseFn(input as string, options); + let tree = options.skipParse && Array.isArray(input) ? createTree((input || []) as NodeContent[], options) : createTree(raw, options) + + for (let idx = 0; idx < plugins.length; idx++) { + const plugin = plugins[idx] + + if (typeof plugin === 'function' && renderFn) { + const newTree = plugin(tree, { + parse: parseFn, + render: renderFn, + iterate, + data, + }) + + tree = createTree(newTree || tree, options) + } + } + + return { + get html() { + if (typeof renderFn !== 'function') { + throw new Error(C2); + } + + return renderFn(tree, tree.options); + }, + tree, + raw, + messages: tree.messages, + }; + }, + }; +} diff --git a/packages/bbob-core/src/types.ts b/packages/bbob-core/src/types.ts new file mode 100644 index 00000000..8cfed97a --- /dev/null +++ b/packages/bbob-core/src/types.ts @@ -0,0 +1,57 @@ +import type { ParseOptions, TagNode } from "@bbob/parser"; +import type { + NodeContent, + PartialNodeContent, + TagNodeTree, +} from "@bbob/plugin-helper"; +import type { IterateCallback, iterate } from "./utils"; + +export interface BBobCoreOptions< + Data = unknown | null, + Options extends ParseOptions = ParseOptions +> extends ParseOptions { + skipParse?: boolean; + parser?: (source: string, options?: Options) => TagNode[]; + render?: (ast: TagNodeTree, options?: Options) => string; + data?: Data; +} + +export interface BbobPluginOptions< + Options extends ParseOptions = ParseOptions +> { + parse: BBobCoreOptions["parser"]; + render: (ast: TagNodeTree, options?: Options) => string; + iterate: typeof iterate; + data: unknown | null; +} + +export interface BBobPluginFunction { + (tree: BBobCoreTagNodeTree, options: BbobPluginOptions): BBobCoreTagNodeTree; +} + +export interface BBobCore< + InputValue = string | TagNode[], + Options extends BBobCoreOptions = BBobCoreOptions +> { + process( + input: InputValue, + opts?: Options + ): { + readonly html: string; + tree: BBobCoreTagNodeTree; + raw: TagNode[] | string; + messages: unknown[]; + }; +} + +export interface BBobCoreTagNodeTree extends Array { + messages: unknown[]; + options: BBobCoreOptions; + walk: (cb: IterateCallback) => BBobCoreTagNodeTree; + match: ( + expression: PartialNodeContent | PartialNodeContent[], + cb: IterateCallback + ) => BBobCoreTagNodeTree; +} + +export type BBobPlugins = BBobPluginFunction | BBobPluginFunction[]; diff --git a/packages/bbob-core/src/utils.js b/packages/bbob-core/src/utils.js deleted file mode 100644 index e0f24e71..00000000 --- a/packages/bbob-core/src/utils.js +++ /dev/null @@ -1,60 +0,0 @@ -/* eslint-disable no-plusplus */ -const isObj = (value) => (typeof value === 'object'); -const isBool = (value) => (typeof value === 'boolean'); - -export function iterate(t, cb) { - const tree = t; - - if (Array.isArray(tree)) { - for (let idx = 0; idx < tree.length; idx++) { - tree[idx] = iterate(cb(tree[idx]), cb); - } - } else if (tree && isObj(tree) && tree.content) { - iterate(tree.content, cb); - } - - return tree; -} - -export function same(expected, actual) { - if (typeof expected !== typeof actual) { - return false; - } - - if (!isObj(expected) || expected === null) { - return expected === actual; - } - - if (Array.isArray(expected)) { - return expected.every((exp) => [].some.call(actual, (act) => same(exp, act))); - } - - return Object.keys(expected).every((key) => { - const ao = actual[key]; - const eo = expected[key]; - - if (isObj(eo) && eo !== null && ao !== null) { - return same(eo, ao); - } - - if (isBool(eo)) { - return eo !== (ao === null); - } - - return ao === eo; - }); -} - -export function match(expression, cb) { - return Array.isArray(expression) - ? iterate(this, (node) => { - for (let idx = 0; idx < expression.length; idx++) { - if (same(expression[idx], node)) { - return cb(node); - } - } - - return node; - }) - : iterate(this, (node) => (same(expression, node) ? cb(node) : node)); -} diff --git a/packages/bbob-core/src/utils.ts b/packages/bbob-core/src/utils.ts new file mode 100644 index 00000000..d271e780 --- /dev/null +++ b/packages/bbob-core/src/utils.ts @@ -0,0 +1,72 @@ +/* eslint-disable no-plusplus */ +const isObj = (value: unknown): value is Record => (typeof value === 'object' && value !== null); +const isBool = (value: unknown): value is boolean => (typeof value === 'boolean'); + +export type IterateCallback = (node: Content) => Content + +export function iterate | Content>(t: Iterable, cb: IterateCallback): Iterable { + const tree = t; + + if (Array.isArray(tree)) { + for (let idx = 0; idx < tree.length; idx++) { + tree[idx] = iterate(cb(tree[idx]), cb); + } + } else if (isObj(tree) && 'content' in tree) { + iterate(tree.content, cb); + } + + return tree; +} + +export function same(expected: unknown, actual: unknown): boolean { + if (typeof expected !== typeof actual) { + return false; + } + + if (!isObj(expected) || expected === null) { + return expected === actual; + } + + if (Array.isArray(expected)) { + return expected.every((exp) => [].some.call(actual, (act) => same(exp, act))); + } + + if (isObj(expected) && isObj(actual)) { + return Object.keys(expected).every((key) => { + const ao = actual[key]; + const eo = expected[key]; + + if (isObj(eo) && isObj(ao)) { + return same(eo, ao); + } + + if (isBool(eo)) { + return eo !== (ao === null); + } + + return ao === eo; + }); + } + + return false +} + +export function match>( + t: Iterable, + expression: Content | ArrayLike, + cb: IterateCallback +) { + if (Array.isArray(expression)) { + return iterate(t, (node) => { + for (let idx = 0; idx < expression.length; idx++) { + if (same(expression[idx], node)) { + return cb(node); + } + } + + return node; + }) + } + + return iterate(t, (node) => (same(expression, node) ? cb(node) : node)); +} diff --git a/packages/bbob-core/test/index.test.js b/packages/bbob-core/test/index.test.ts similarity index 65% rename from packages/bbob-core/test/index.test.js rename to packages/bbob-core/test/index.test.ts index 18e3affa..f8732272 100644 --- a/packages/bbob-core/test/index.test.js +++ b/packages/bbob-core/test/index.test.ts @@ -1,9 +1,10 @@ import { TagNode } from '@bbob/parser' -import core from '../src' +import core, { BBobPluginFunction, BBobPlugins } from '../src' +import { isTagNode } from "@bbob/plugin-helper"; -const stringify = val => JSON.stringify(val); +const stringify = (val: unknown) => JSON.stringify(val); -const process = (plugins, input) => core(plugins).process(input, { render: stringify }); +const process = (plugins: BBobPlugins, input: string) => core(plugins).process(input, { render: stringify }); describe('@bbob/core', () => { test('parse bbcode string to ast and html', () => { @@ -22,17 +23,27 @@ describe('@bbob/core', () => { }); test('plugin walk api node', () => { - const testPlugin = () => (tree) => tree.walk(node => { - if (node.tag === 'mytag') { - node.attrs = { - pass: 1 - }; + const testPlugin = () => { + + const plugin: BBobPluginFunction = (tree) => tree.walk(node => { + if (isTagNode(node)) { + if (node?.tag === 'mytag') { + node.attrs = { + pass: 1 + }; + + if (Array.isArray(node.content)) { + node.content.push('Test'); + } + } - node.content.push('Test'); - } + } - return node - }); + return node + }); + + return plugin + } const res = process([testPlugin()], '[mytag size="15px"]Large Text[/mytag]'); const ast = res.tree; @@ -56,13 +67,18 @@ describe('@bbob/core', () => { }); test('plugin walk api string', () => { - const testPlugin = () => (tree) => tree.walk(node => { - if (node === ':)') { - return TagNode.create('test-tag') - } + const testPlugin = () => { - return node - }); + const plugin: BBobPluginFunction = (tree) => tree.walk(node => { + if (node === ':)') { + return TagNode.create('test-tag') + } + + return node + }) + + return plugin + }; const res = process([testPlugin()], '[mytag]Large Text :)[/mytag]'); const ast = res.tree; @@ -89,13 +105,18 @@ describe('@bbob/core', () => { }); test('plugin match api', () => { - const testPlugin = () => (tree) => tree.match([{ tag: 'mytag1' }, { tag: 'mytag2' }], node => { - if (node.attrs) { - node.attrs['pass'] = 1 - } + const testPlugin = () => { + + const plugin: BBobPluginFunction = (tree) => tree.match([{ tag: 'mytag1' }, { tag: 'mytag2' }], node => { + if (isTagNode(node) && node.attrs) { + node.attrs['pass'] = 1 + } + + return node + }) - return node - }); + return plugin + }; const res = process([testPlugin()], `[mytag1 size="15"]Tag1[/mytag1][mytag2 size="16"]Tag2[/mytag2][mytag3]Tag3[/mytag3]`); const ast = res.tree; diff --git a/packages/bbob-core/test/utils.test.js b/packages/bbob-core/test/utils.test.ts similarity index 70% rename from packages/bbob-core/test/utils.test.js rename to packages/bbob-core/test/utils.test.ts index 591039cf..7a42de34 100644 --- a/packages/bbob-core/test/utils.test.js +++ b/packages/bbob-core/test/utils.test.ts @@ -1,7 +1,5 @@ import { iterate, match, same } from '../src/utils'; - -const stringify = val => JSON.stringify(val); - +import { isTagNode } from "@bbob/plugin-helper"; describe('@bbob/core utils', () => { test('iterate', () => { @@ -14,7 +12,12 @@ describe('@bbob/core utils', () => { }]; const resultArr = iterate(testArr, node => { - node.pass = 1; + if (typeof node === 'object' && node !== null) { + return { + ...node, + pass: 1 + } + } return node; }); @@ -31,7 +34,7 @@ describe('@bbob/core utils', () => { } ]; - expect(stringify(resultArr)).toEqual(stringify(expected)); + expect(resultArr).toEqual(expected); }); test('match', () => { const testArr = [ @@ -43,24 +46,25 @@ describe('@bbob/core utils', () => { { tag: 'mytag6', six: 1 }, ]; - testArr.match = match; - - const resultArr = testArr.match([{ tag: 'mytag1' }, { tag: 'mytag2' }], node => { - node.pass = 1; + const resultArr = match(testArr, [{ tag: 'mytag1' }, { tag: 'mytag2' }], node => { + if (isTagNode(node)) { + node.attrs = node.attrs || {} + node.attrs.pass = 1 + } return node; }); const expected = [ - { tag: 'mytag1', one: 1, pass: 1 }, - { tag: 'mytag2', two: 1, pass: 1 }, + { tag: 'mytag1', one: 1, attrs: { pass: 1 } }, + { tag: 'mytag2', two: 1, attrs: { pass: 1 } }, { tag: 'mytag3', three: 1 }, { tag: 'mytag4', four: 1 }, { tag: 'mytag5', five: 1 }, { tag: 'mytag6', six: 1 }, ]; - expect(stringify(resultArr)).toEqual(stringify(expected)) + expect(resultArr).toEqual(expected) }) describe('same', () => { @@ -79,5 +83,8 @@ describe('@bbob/core utils', () => { test('same object', () => { expect(same({ foo: true, bar: 'test' }, { foo: true, bar: 'test', ext: true })).toBe(true) }) + test('same string', () => { + expect(same('bar', 'bar')).toBe(true) + }) }) }); diff --git a/packages/bbob-core/tsconfig.json b/packages/bbob-core/tsconfig.json new file mode 100644 index 00000000..385f1a81 --- /dev/null +++ b/packages/bbob-core/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "baseUrl": ".", + "outDir": "./types" + }, + "include": [ + "./src/**/*" + ] +} diff --git a/packages/bbob-html/.gitignore b/packages/bbob-html/.gitignore index 22f5164e..3f22f0b7 100644 --- a/packages/bbob-html/.gitignore +++ b/packages/bbob-html/.gitignore @@ -2,3 +2,7 @@ coverage dist lib es +types +test/*.d.ts +test/*.map +tsconfig.tsbuildinfo diff --git a/packages/bbob-html/.npmignore b/packages/bbob-html/.npmignore index 65922b56..c1046191 100644 --- a/packages/bbob-html/.npmignore +++ b/packages/bbob-html/.npmignore @@ -1,4 +1,4 @@ -package-lock.json +pnpm-lock.yaml coverage src !dist diff --git a/packages/bbob-html/package.json b/packages/bbob-html/package.json index 89d0c0af..391ba43b 100644 --- a/packages/bbob-html/package.json +++ b/packages/bbob-html/package.json @@ -9,14 +9,24 @@ "bbob" ], "dependencies": { - "@bbob/core": "workspace:*", - "@bbob/plugin-helper": "workspace:*" + "@bbob/core": "*", + "@bbob/plugin-helper": "*" }, "main": "lib/index.js", "module": "es/index.js", "jsnext:main": "es/index.js", "browser": "dist/index.js", "browserName": "BbobHtml", + "types": "types/index.d.ts", + "exports": { + ".": { + "types": "./types/index.d.ts", + "import": "./es/index.js", + "require": "./lib/index.js", + "browser": "./dist/index.min.js", + "umd": "./dist/index.min.js" + } + }, "homepage": "https://github.com/JiLiZART/bbob", "author": "Nikolay Kostyurin ", "license": "MIT", @@ -28,19 +38,22 @@ "url": "git://github.com/JiLiZART/bbob.git" }, "scripts": { - "build:commonjs": "../../scripts/pkg-task build-commonjs", - "build:es": "../../scripts/pkg-task build-es", - "build:umd": "../../scripts/pkg-task build-umd", - "build": "npm run build:commonjs && npm run build:es && npm run build:umd", - "test": "../../scripts/pkg-task test", - "cover": "../../scripts/pkg-task cover", - "lint": "../../scripts/pkg-task lint", - "size": "../../scripts/pkg-task size", - "bundlesize": "../../scripts/pkg-task bundlesize" + "build:commonjs": "pkg-task", + "build:es": "pkg-task", + "build:umd": "pkg-task", + "build": "pkg-task", + "test": "pkg-task", + "cover": "pkg-task", + "lint": "pkg-task", + "size": "pkg-task", + "bundlesize": "pkg-task", + "types": "pkg-task", + "prepublishOnly": "npm run build" }, "size-limit": [ { - "path": "lib/index.js" + "path": "./dist/index.min.js", + "size": "4.6 KB" } ], "bundlesize": [ diff --git a/packages/bbob-html/src/index.js b/packages/bbob-html/src/index.js deleted file mode 100644 index 10acab4c..00000000 --- a/packages/bbob-html/src/index.js +++ /dev/null @@ -1,47 +0,0 @@ -import core from '@bbob/core'; -import { attrsToString } from '@bbob/plugin-helper'; - -const SELFCLOSE_END_TAG = '/>'; -const CLOSE_START_TAG = ''; - -const renderNode = (node, { stripTags = false }) => { - if (!node) return ''; - const type = typeof node; - - if (type === 'string' || type === 'number') { - return node; - } - - if (type === 'object') { - if (stripTags === true) { - // eslint-disable-next-line no-use-before-define - return renderNodes(node.content, { stripTags }); - } - - if (node.content === null) { - return [START_TAG, node.tag, attrsToString(node.attrs), SELFCLOSE_END_TAG].join(''); - } - - // eslint-disable-next-line no-use-before-define - return [START_TAG, node.tag, attrsToString(node.attrs), END_TAG, renderNodes(node.content), CLOSE_START_TAG, node.tag, END_TAG].join(''); - } - - if (Array.isArray(node)) { - // eslint-disable-next-line no-use-before-define - return renderNodes(node, { stripTags }); - } - - return ''; -}; - -const renderNodes = (nodes, { stripTags = false } = {}) => [] - .concat(nodes) - .reduce((r, node) => r + renderNode(node, { stripTags }), ''); - -const toHTML = (source, plugins, options) => core(plugins) - .process(source, { ...options, render: renderNodes }).html; - -export const render = renderNodes; -export default toHTML; diff --git a/packages/bbob-html/src/index.ts b/packages/bbob-html/src/index.ts new file mode 100644 index 00000000..1248e756 --- /dev/null +++ b/packages/bbob-html/src/index.ts @@ -0,0 +1,61 @@ +import core, { BBobCoreOptions, BBobPlugins } from '@bbob/core'; +import { attrsToString, isTagNode, TagNode, TagNodeTree } from '@bbob/plugin-helper'; + +const SELFCLOSE_END_TAG = '/>'; +const CLOSE_START_TAG = ''; + +export type BBobHTMLOptions = { + stripTags?: boolean +} & BBobCoreOptions + +function renderNode(node?: TagNodeTree, options?: BBobHTMLOptions): string { + const { stripTags = false } = options || {} + + if (typeof node === 'undefined' || node === null) { + return '' + } + + if (typeof node === 'string' || typeof node === 'number') { + return String(node); + } + + if (Array.isArray(node)) { + return render(node, options); + } + + if (isTagNode(node)) { + if (stripTags) { + return render(node.content, options); + } + + const attrs = attrsToString(node.attrs) + + if (node.content === null) { + return START_TAG + node.tag + attrs + SELFCLOSE_END_TAG + } + + return START_TAG + node.tag + attrs + END_TAG + render(node.content, options) + CLOSE_START_TAG + node.tag + END_TAG; + } + + return ''; +} + +export function render(nodes: TagNodeTree, options?: BBobHTMLOptions): string { + if (Array.isArray(nodes)) { + return nodes.reduce((r, node) => r + renderNode(node, options), '') + } + + if (nodes) { + return renderNode(nodes, options) + } + + return '' +} + +export function html(source: InputValue, plugins: BBobPlugins, options?: BBobHTMLOptions) { + return core(plugins).process(source, { ...options, render: render }).html +} + +export default html; diff --git a/packages/bbob-html/test/index.test.js b/packages/bbob-html/test/index.test.ts similarity index 89% rename from packages/bbob-html/test/index.test.js rename to packages/bbob-html/test/index.test.ts index 453912c7..ec098180 100644 --- a/packages/bbob-html/test/index.test.js +++ b/packages/bbob-html/test/index.test.ts @@ -1,6 +1,6 @@ -import toHTML, {render} from '../src'; +import toHTML, { BBobHTMLOptions, render } from '../src'; -const process = (input, params) => toHTML(input, [], params); +const process = (input: string, params?: BBobHTMLOptions) => toHTML(input, [], params); describe('@bbob/html', () => { test('render bbcode tag with single param as html tag', () => { diff --git a/packages/bbob-html/tsconfig.json b/packages/bbob-html/tsconfig.json new file mode 100644 index 00000000..385f1a81 --- /dev/null +++ b/packages/bbob-html/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "baseUrl": ".", + "outDir": "./types" + }, + "include": [ + "./src/**/*" + ] +} diff --git a/packages/bbob-parser/.gitignore b/packages/bbob-parser/.gitignore index 22f5164e..3f22f0b7 100644 --- a/packages/bbob-parser/.gitignore +++ b/packages/bbob-parser/.gitignore @@ -2,3 +2,7 @@ coverage dist lib es +types +test/*.d.ts +test/*.map +tsconfig.tsbuildinfo diff --git a/packages/bbob-parser/.npmignore b/packages/bbob-parser/.npmignore index 65922b56..c1046191 100644 --- a/packages/bbob-parser/.npmignore +++ b/packages/bbob-parser/.npmignore @@ -1,4 +1,4 @@ -package-lock.json +pnpm-lock.yaml coverage src !dist diff --git a/packages/bbob-parser/package.json b/packages/bbob-parser/package.json index f73b207b..78660238 100644 --- a/packages/bbob-parser/package.json +++ b/packages/bbob-parser/package.json @@ -12,14 +12,59 @@ "array", "parse" ], + "files": [ + "dist", + "lib", + "src", + "es", + "types" + ], "dependencies": { - "@bbob/plugin-helper": "workspace:*" + "@bbob/plugin-helper": "*" }, "main": "lib/index.js", "module": "es/index.js", "jsnext:main": "es/index.js", "browser": "dist/index.js", "browserName": "BbobParser", + "types": "types/index.d.ts", + "exports": { + ".": { + "types": "./types/index.d.ts", + "import": "./es/index.js", + "require": "./lib/index.js", + "browser": "./dist/index.min.js", + "umd": "./dist/index.min.js" + }, + "./lexer": { + "types": "./types/lexer.d.ts", + "import": "./es/lexer.js", + "require": "./lib/lexer.js", + "browser": "./dist/index.min.js", + "umd": "./dist/index.min.js" + }, + "./parse": { + "types": "./types/parse.d.ts", + "import": "./es/parse.js", + "require": "./lib/parse.js", + "browser": "./dist/index.min.js", + "umd": "./dist/index.min.js" + }, + "./Token": { + "types": "./types/Token.d.ts", + "import": "./es/Token.js", + "require": "./lib/Token.js", + "browser": "./dist/index.min.js", + "umd": "./dist/index.min.js" + }, + "./utils": { + "types": "./types/utils.d.ts", + "import": "./es/utils.js", + "require": "./lib/utils.js", + "browser": "./dist/index.min.js", + "umd": "./dist/index.min.js" + } + }, "homepage": "https://github.com/JiLiZART/bbob", "author": "Nikolay Kostyurin ", "license": "MIT", @@ -31,20 +76,22 @@ "url": "git://github.com/JiLiZART/bbob.git" }, "scripts": { - "build:commonjs": "../../scripts/pkg-task build-commonjs", - "build:es": "../../scripts/pkg-task build-es", - "build:umd": "../../scripts/pkg-task build-umd", - "build": "npm run build:commonjs && npm run build:es && npm run build:umd", - "test": "../../scripts/pkg-task test", - "cover": "../../scripts/pkg-task cover", - "lint": "../../scripts/pkg-task lint", - "size": "../../scripts/pkg-task size", - "bundlesize": "../../scripts/pkg-task bundlesize", + "build:commonjs": "pkg-task", + "build:es": "pkg-task", + "build:umd": "pkg-task", + "build": "pkg-task", + "test": "pkg-task", + "cover": "pkg-task", + "lint": "pkg-task", + "size": "pkg-task", + "bundlesize": "pkg-task", + "types": "pkg-task", "prepublishOnly": "npm run build" }, "size-limit": [ { - "path": "lib/index.js" + "path": "./dist/index.min.js", + "size": "3 KB" } ], "bundlesize": [ @@ -55,11 +102,5 @@ ], "publishConfig": { "registry": "https://registry.npmjs.org/" - }, - "files": [ - "dist", - "lib", - "src", - "es" - ] + } } diff --git a/packages/bbob-parser/src/Token.js b/packages/bbob-parser/src/Token.ts similarity index 64% rename from packages/bbob-parser/src/Token.js rename to packages/bbob-parser/src/Token.ts index c9e2dbee..43f3b02c 100644 --- a/packages/bbob-parser/src/Token.js +++ b/packages/bbob-parser/src/Token.ts @@ -5,10 +5,11 @@ import { } from '@bbob/plugin-helper'; // type, value, line, row, -const TOKEN_TYPE_ID = 'type'; // 0; -const TOKEN_VALUE_ID = 'value'; // 1; -const TOKEN_COLUMN_ID = 'row'; // 2; -const TOKEN_LINE_ID = 'line'; // 3; + +const TOKEN_TYPE_ID = 't'; // 0; +const TOKEN_VALUE_ID = 'v'; // 1; +const TOKEN_COLUMN_ID = 'r'; // 2; +const TOKEN_LINE_ID = 'l'; // 3; const TOKEN_TYPE_WORD = 1; // 'word'; const TOKEN_TYPE_TAG = 2; // 'tag'; @@ -17,29 +18,19 @@ const TOKEN_TYPE_ATTR_VALUE = 4; // 'attr-value'; const TOKEN_TYPE_SPACE = 5; // 'space'; const TOKEN_TYPE_NEW_LINE = 6; // 'new-line'; -/** - * @param {Token} token - * @returns {string} - */ -const getTokenValue = (token) => { +const getTokenValue = (token: Token) => { if (token && typeof token[TOKEN_VALUE_ID] !== 'undefined') { return token[TOKEN_VALUE_ID]; } return ''; }; -/** - * @param {Token}token - * @returns {number} - */ -const getTokenLine = (token) => (token && token[TOKEN_LINE_ID]) || 0; -const getTokenColumn = (token) => (token && token[TOKEN_COLUMN_ID]) || 0; -/** - * @param {Token} token - * @returns {boolean} - */ -const isTextToken = (token) => { +const getTokenLine = (token: Token) => (token && token[TOKEN_LINE_ID]) || 0; + +const getTokenColumn = (token: Token) => (token && token[TOKEN_COLUMN_ID]) || 0; + +const isTextToken = (token: Token) => { if (token && typeof token[TOKEN_TYPE_ID] !== 'undefined') { return token[TOKEN_TYPE_ID] === TOKEN_TYPE_SPACE || token[TOKEN_TYPE_ID] === TOKEN_TYPE_NEW_LINE @@ -49,20 +40,19 @@ const isTextToken = (token) => { return false; }; -/** - * @param {Token} token - * @returns {boolean} - */ -const isTagToken = (token) => { +const isTagToken = (token: Token) => { if (token && typeof token[TOKEN_TYPE_ID] !== 'undefined') { return token[TOKEN_TYPE_ID] === TOKEN_TYPE_TAG; } return false; }; -const isTagEnd = (token) => getTokenValue(token).charCodeAt(0) === SLASH.charCodeAt(0); -const isTagStart = (token) => !isTagEnd(token); -const isAttrNameToken = (token) => { + +const isTagEnd = (token: Token) => getTokenValue(token).charCodeAt(0) === SLASH.charCodeAt(0); + +const isTagStart = (token: Token) => !isTagEnd(token); + +const isAttrNameToken = (token: Token) => { if (token && typeof token[TOKEN_TYPE_ID] !== 'undefined') { return token[TOKEN_TYPE_ID] === TOKEN_TYPE_ATTR_NAME; } @@ -70,11 +60,7 @@ const isAttrNameToken = (token) => { return false; }; -/** - * @param {Token} token - * @returns {boolean} - */ -const isAttrValueToken = (token) => { +const isAttrValueToken = (token: Token) => { if (token && typeof token[TOKEN_TYPE_ID] !== 'undefined') { return token[TOKEN_TYPE_ID] === TOKEN_TYPE_ATTR_VALUE; } @@ -82,13 +68,13 @@ const isAttrValueToken = (token) => { return false; }; -const getTagName = (token) => { +const getTagName = (token: Token) => { const value = getTokenValue(token); return isTagEnd(token) ? value.slice(1) : value; }; -const convertTagToText = (token) => { +const tokenToText = (token: Token) => { let text = OPEN_BRAKET; text += getTokenValue(token); @@ -97,23 +83,29 @@ const convertTagToText = (token) => { return text; }; -class Token { - /** - * @param {String} type - * @param {String} value - * @param line - * @param row - */ - constructor(type, value, line, row) { - this[TOKEN_TYPE_ID] = Number(type); +/** + * @export + * @class Token + */ +class Token { + private t: number // type + private v: string // value + private l: number // line + private r: number // row + + constructor(type?: number, value?: TokenValue, row: number = 0, col: number = 0) { + this[TOKEN_LINE_ID] = row; + this[TOKEN_COLUMN_ID] = col; + this[TOKEN_TYPE_ID] = type || 0; this[TOKEN_VALUE_ID] = String(value); - this[TOKEN_LINE_ID] = Number(line); - this[TOKEN_COLUMN_ID] = Number(row); + } + + get type() { + return this[TOKEN_TYPE_ID] } isEmpty() { - // eslint-disable-next-line no-restricted-globals - return isNaN(this[TOKEN_TYPE_ID]); + return this[TOKEN_TYPE_ID] === 0 || isNaN(this[TOKEN_TYPE_ID]); } isText() { @@ -157,7 +149,7 @@ class Token { } toString() { - return convertTagToText(this); + return tokenToText(this); } } diff --git a/packages/bbob-parser/src/index.js b/packages/bbob-parser/src/index.js deleted file mode 100644 index 4b92525c..00000000 --- a/packages/bbob-parser/src/index.js +++ /dev/null @@ -1,2 +0,0 @@ -export { TagNode } from '@bbob/plugin-helper'; -export { default, parse } from './parse'; diff --git a/packages/bbob-parser/src/index.ts b/packages/bbob-parser/src/index.ts new file mode 100644 index 00000000..82e60e86 --- /dev/null +++ b/packages/bbob-parser/src/index.ts @@ -0,0 +1,5 @@ +export { TagNode } from '@bbob/plugin-helper'; +export { default } from './parse'; +export * from './parse'; +export * from './lexer' +export * from './types' diff --git a/packages/bbob-parser/src/lexer.js b/packages/bbob-parser/src/lexer.ts similarity index 77% rename from packages/bbob-parser/src/lexer.js rename to packages/bbob-parser/src/lexer.ts index 0bab1fed..546555c5 100644 --- a/packages/bbob-parser/src/lexer.js +++ b/packages/bbob-parser/src/lexer.ts @@ -14,36 +14,17 @@ import { import { Token, TYPE_ATTR_NAME, TYPE_ATTR_VALUE, TYPE_NEW_LINE, TYPE_SPACE, TYPE_TAG, TYPE_WORD, } from './Token'; -import { createCharGrabber, trimChar, unquote } from './utils'; +import { CharGrabber, createCharGrabber, trimChar, unquote } from './utils'; +import type { LexerOptions, LexerTokenizer } from "./types"; // for cases const EM = '!'; -/** - * Creates a Token entity class - * @param {Number} type - * @param {String} value - * @param {Number} r line number - * @param {Number} cl char number in line - */ -const createToken = (type, value, r = 0, cl = 0) => new Token(type, value, r, cl); - -/** - * @typedef {Object} Lexer - * @property {Function} tokenize - * @property {Function} isTokenNested - */ - -/** - * @param {String} buffer - * @param {Object} options - * @param {Function} options.onToken - * @param {String} options.openTag - * @param {String} options.closeTag - * @param {Boolean} options.enableEscapeTags - * @return {Lexer} - */ -function createLexer(buffer, options = {}) { +export function createTokenOfType(type: number, value: string, r = 0, cl = 0) { + return new Token(type, value, r, cl) +} + +export function createLexer(buffer: string, options: LexerOptions = {}): LexerTokenizer { const STATE_WORD = 0; const STATE_TAG = 1; const STATE_TAG_ATTRS = 2; @@ -59,7 +40,7 @@ function createLexer(buffer, options = {}) { let stateMode = STATE_WORD; let tagMode = TAG_STATE_NAME; let contextFreeTag = ''; - const tokens = new Array(Math.floor(buffer.length)); + const tokens = new Array>(Math.floor(buffer.length)); const openTag = options.openTag || OPEN_BRAKET; const closeTag = options.closeTag || CLOSE_BRAKET; const escapeTags = !!options.enableEscapeTags; @@ -76,20 +57,20 @@ function createLexer(buffer, options = {}) { const WHITESPACES = [SPACE, TAB]; const SPECIAL_CHARS = [EQ, SPACE, TAB]; - const isCharReserved = (char) => (RESERVED_CHARS.indexOf(char) >= 0); - const isNewLine = (char) => char === N; - const isWhiteSpace = (char) => (WHITESPACES.indexOf(char) >= 0); - const isCharToken = (char) => (NOT_CHAR_TOKENS.indexOf(char) === -1); - const isSpecialChar = (char) => (SPECIAL_CHARS.indexOf(char) >= 0); - const isEscapableChar = (char) => (char === openTag || char === closeTag || char === BACKSLASH); - const isEscapeChar = (char) => char === BACKSLASH; + const isCharReserved = (char: string) => (RESERVED_CHARS.indexOf(char) >= 0); + const isNewLine = (char: string) => char === N; + const isWhiteSpace = (char: string) => (WHITESPACES.indexOf(char) >= 0); + const isCharToken = (char: string) => (NOT_CHAR_TOKENS.indexOf(char) === -1); + const isSpecialChar = (char: string) => (SPECIAL_CHARS.indexOf(char) >= 0); + const isEscapableChar = (char: string) => (char === openTag || char === closeTag || char === BACKSLASH); + const isEscapeChar = (char: string) => char === BACKSLASH; const onSkip = () => { col++; }; - const unq = (val) => unquote(trimChar(val, QUOTEMARK)); + const unq = (val: string) => unquote(trimChar(val, QUOTEMARK)); - const checkContextFreeMode = (name, isClosingTag) => { + const checkContextFreeMode = (name: string, isClosingTag?: boolean) => { if (contextFreeTag !== '' && isClosingTag) { contextFreeTag = ''; } @@ -106,8 +87,8 @@ function createLexer(buffer, options = {}) { * @param {Number} type * @param {String} value */ - function emitToken(type, value) { - const token = createToken(type, value, row, col); + function emitToken(type: number, value: string) { + const token = createTokenOfType(type, value, row, col); onToken(token); @@ -115,9 +96,9 @@ function createLexer(buffer, options = {}) { tokens[tokenIndex] = token; } - function nextTagState(tagChars, isSingleValueTag) { + function nextTagState(tagChars: CharGrabber, isSingleValueTag: boolean) { if (tagMode === TAG_STATE_ATTR) { - const validAttrName = (char) => !(char === EQ || isWhiteSpace(char)); + const validAttrName = (char: string) => !(char === EQ || isWhiteSpace(char)); const name = tagChars.grabWhile(validAttrName); const isEnd = tagChars.isLast(); const isValue = tagChars.getCurr() !== EQ; @@ -143,7 +124,7 @@ function createLexer(buffer, options = {}) { if (tagMode === TAG_STATE_VALUE) { let stateSpecial = false; - const validAttrValue = (char) => { + const validAttrValue = (char: string) => { // const isEQ = char === EQ; const isQM = char === QUOTEMARK; const prevChar = tagChars.getPrev(); @@ -152,7 +133,7 @@ function createLexer(buffer, options = {}) { const isNextEQ = nextChar === EQ; const isWS = isWhiteSpace(char); // const isPrevWS = isWhiteSpace(prevChar); - const isNextWS = isWhiteSpace(nextChar); + const isNextWS = nextChar && isWhiteSpace(nextChar); if (stateSpecial && isSpecialChar(char)) { return true; @@ -167,7 +148,7 @@ function createLexer(buffer, options = {}) { } if (!isSingleValueTag) { - return isWS === false; + return !isWS; // return (isEQ || isWS) === false; } @@ -186,7 +167,7 @@ function createLexer(buffer, options = {}) { return TAG_STATE_ATTR; } - const validName = (char) => !(char === EQ || isWhiteSpace(char) || tagChars.isLast()); + const validName = (char: string) => !(char === EQ || isWhiteSpace(char) || tagChars.isLast()); const name = tagChars.grabWhile(validName); emitToken(TYPE_TAG, name); @@ -214,7 +195,7 @@ function createLexer(buffer, options = {}) { const substr = chars.substrUntilChar(closeTag); const hasInvalidChars = substr.length === 0 || substr.indexOf(openTag) >= 0; - if (isCharReserved(nextChar) || hasInvalidChars || chars.isLast()) { + if ((nextChar && isCharReserved(nextChar)) || hasInvalidChars || chars.isLast()) { emitToken(TYPE_WORD, currChar); return STATE_WORD; @@ -304,7 +285,7 @@ function createLexer(buffer, options = {}) { chars.skip(); // skip the \ without emitting anything - if (isEscapableChar(nextChar)) { + if (nextChar && isEscapableChar(nextChar)) { chars.skip(); // skip past the [, ] or \ as well emitToken(TYPE_WORD, nextChar); @@ -317,7 +298,7 @@ function createLexer(buffer, options = {}) { return STATE_WORD; } - const isChar = (char) => isCharToken(char) && !isEscapeChar(char); + const isChar = (char: string) => isCharToken(char) && !isEscapeChar(char); const word = chars.grabWhile(isChar); @@ -356,7 +337,7 @@ function createLexer(buffer, options = {}) { return tokens; } - function isTokenNested(token) { + function isTokenNested(token: Token) { const value = openTag + SLASH + token.getValue(); // potential bottleneck return buffer.indexOf(value) > -1; @@ -365,8 +346,5 @@ function createLexer(buffer, options = {}) { return { tokenize, isTokenNested, - }; + } } - -export const createTokenOfType = createToken; -export { createLexer }; diff --git a/packages/bbob-parser/src/parse.js b/packages/bbob-parser/src/parse.js deleted file mode 100644 index 3d3eba10..00000000 --- a/packages/bbob-parser/src/parse.js +++ /dev/null @@ -1,303 +0,0 @@ -import { - TagNode, CLOSE_BRAKET, OPEN_BRAKET, isTagNode, -} from '@bbob/plugin-helper'; -import { createLexer } from './lexer'; -import { createList } from './utils'; - -/** - * @public - * @param {string} input - * @param {Object} opts - * @param {Function} opts.createTokenizer - * @param {Array} opts.onlyAllowTags - * @param {Array} opts.contextFreeTags - * @param {Boolean} opts.enableEscapeTags - * @param {string} opts.openTag - * @param {string} opts.closeTag - * @return {Array} - */ -const parse = (input, opts = {}) => { - const options = opts; - const openTag = options.openTag || OPEN_BRAKET; - const closeTag = options.closeTag || CLOSE_BRAKET; - const onlyAllowTags = (options.onlyAllowTags || []) - .filter(Boolean) - .map((tag) => tag.toLowerCase()); - - let tokenizer = null; - - /** - * Result AST of nodes - * @private - * @type {NodeList} - */ - const nodes = createList(); - /** - * Temp buffer of nodes that's nested to another node - * @private - * @type {NodeList} - */ - const nestedNodes = createList(); - /** - * Temp buffer of nodes [tag..]...[/tag] - * @private - * @type {NodeList} - */ - const tagNodes = createList(); - /** - * Temp buffer of tag attributes - * @private - * @type {NodeList} - */ - const tagNodesAttrName = createList(); - - /** - * Cache for nested tags checks - * @type Set - */ - const nestedTagsMap = new Set(); - - /** - * @param {Token} token - * @returns {boolean} - */ - const isTokenNested = (token) => { - const value = token.getValue(); - - if (!nestedTagsMap.has(value) && tokenizer.isTokenNested && tokenizer.isTokenNested(token)) { - nestedTagsMap.add(value); - - return true; - } - - return nestedTagsMap.has(value); - }; - - /** - * @private - * @param {string} tagName - * @returns {boolean} - */ - const isTagNested = (tagName) => Boolean(nestedTagsMap.has(tagName)); - - /** - * @private - * @param {string} value - * @return {boolean} - */ - const isAllowedTag = (value) => { - if (onlyAllowTags.length) { - return onlyAllowTags.indexOf(value.toLowerCase()) >= 0; - } - - return true; - }; - - /** - * Flushes temp tag nodes and its attributes buffers - * @private - * @return {Array} - */ - const flushTagNodes = () => { - if (tagNodes.flushLast()) { - tagNodesAttrName.flushLast(); - } - }; - - /** - * @private - * @return {Array} - */ - const getNodes = () => { - const lastNestedNode = nestedNodes.getLast(); - - if (lastNestedNode && Array.isArray(lastNestedNode.content)) { - return lastNestedNode.content; - } - - return nodes.toArray(); - }; - - /** - * @private - * @param {string|TagNode} node - * @param {boolean} isNested - */ - const appendNodeAsString = (node, isNested = true) => { - const items = getNodes(); - - if (Array.isArray(items)) { - items.push(node.toTagStart({ openTag, closeTag })); - - if (node.content.length) { - node.content.forEach((item) => { - items.push(item); - }); - - if (isNested) { - items.push(node.toTagEnd({ openTag, closeTag })); - } - } - } - }; - - /** - * @private - * @param {string|TagNode} node - */ - const appendNodes = (node) => { - const items = getNodes(); - - if (Array.isArray(items)) { - if (isTagNode(node)) { - if (isAllowedTag(node.tag)) { - items.push(node.toTagNode()); - } else { - appendNodeAsString(node); - } - } else { - items.push(node); - } - } - }; - - /** - * @private - * @param {Token} token - */ - const handleTagStart = (token) => { - flushTagNodes(); - - const tagNode = TagNode.create(token.getValue()); - const isNested = isTokenNested(token); - - tagNodes.push(tagNode); - - if (isNested) { - nestedNodes.push(tagNode); - } else { - appendNodes(tagNode, token); - } - }; - - /** - * @private - * @param {Token} token - */ - const handleTagEnd = (token) => { - flushTagNodes(); - - const lastNestedNode = nestedNodes.flushLast(); - - if (lastNestedNode) { - appendNodes(lastNestedNode, token); - } else if (typeof options.onError === 'function') { - const tag = token.getValue(); - const line = token.getLine(); - const column = token.getColumn(); - - options.onError({ - message: `Inconsistent tag '${tag}' on line ${line} and column ${column}`, - tagName: tag, - lineNumber: line, - columnNumber: column, - }); - } - }; - - /** - * @private - * @param {Token} token - */ - const handleTag = (token) => { - // [tag] - if (token.isStart()) { - handleTagStart(token); - } - - // [/tag] - if (token.isEnd()) { - handleTagEnd(token); - } - }; - - /** - * @private - * @param {Token} token - */ - const handleNode = (token) => { - /** - * @type {TagNode} - */ - const lastTagNode = tagNodes.getLast(); - const tokenValue = token.getValue(); - const isNested = isTagNested(token); - - if (lastTagNode) { - if (token.isAttrName()) { - tagNodesAttrName.push(tokenValue); - lastTagNode.attr(tagNodesAttrName.getLast(), ''); - } else if (token.isAttrValue()) { - const attrName = tagNodesAttrName.getLast(); - - if (attrName) { - lastTagNode.attr(attrName, tokenValue); - tagNodesAttrName.flushLast(); - } else { - lastTagNode.attr(tokenValue, tokenValue); - } - } else if (token.isText()) { - if (isNested) { - lastTagNode.append(tokenValue); - } else { - appendNodes(tokenValue); - } - } else if (token.isTag()) { - // if tag is not allowed, just past it as is - appendNodes(token.toString()); - } - } else if (token.isText()) { - appendNodes(tokenValue); - } else if (token.isTag()) { - // if tag is not allowed, just past it as is - appendNodes(token.toString()); - } - }; - - /** - * @private - * @param {Token} token - */ - const onToken = (token) => { - if (token.isTag()) { - handleTag(token); - } else { - handleNode(token); - } - }; - - tokenizer = (opts.createTokenizer ? opts.createTokenizer : createLexer)(input, { - onToken, - openTag, - closeTag, - onlyAllowTags: options.onlyAllowTags, - contextFreeTags: options.contextFreeTags, - enableEscapeTags: options.enableEscapeTags, - }); - - // eslint-disable-next-line no-unused-vars - const tokens = tokenizer.tokenize(); - - // handles situations where we open tag, but forgot close them - // for ex [q]test[/q][u]some[/u][q]some [u]some[/u] // forgot to close [/q] - // so we need to flush nested content to nodes array - const lastNestedNode = nestedNodes.flushLast(); - if (lastNestedNode && isTagNested(lastNestedNode.tag)) { - appendNodeAsString(lastNestedNode, false); - } - - return nodes.toArray(); -}; - -export { parse }; -export default parse; diff --git a/packages/bbob-parser/src/parse.ts b/packages/bbob-parser/src/parse.ts new file mode 100644 index 00000000..3aecb6b3 --- /dev/null +++ b/packages/bbob-parser/src/parse.ts @@ -0,0 +1,349 @@ +import { + CLOSE_BRAKET, + OPEN_BRAKET, + TagNode, + isTagNode, +} from "@bbob/plugin-helper"; + +import { createLexer } from "./lexer"; + +import type { NodeContent, TagNodeTree } from "@bbob/plugin-helper"; +import type { LexerTokenizer, LexerOptions } from "./types"; +import type { Token } from "./Token"; + +type ParseError = { + tagName: string; + lineNumber: number; + columnNumber: number; +}; + +export interface ParseOptions { + createTokenizer?: (input: string, options?: LexerOptions) => LexerTokenizer; + openTag?: string; + closeTag?: string; + onlyAllowTags?: string[]; + contextFreeTags?: string[]; + enableEscapeTags?: boolean; + onError?: (error: ParseError) => void; +} + +class NodeList { + private n: Value[]; + + constructor() { + this.n = []; + } + + last() { + if ( + Array.isArray(this.n) && + this.n.length > 0 && + typeof this.n[this.n.length - 1] !== "undefined" + ) { + return this.n[this.n.length - 1]; + } + + return null; + } + + flush() { + return this.n.length ? this.n.pop() : false; + } + + push(value: Value) { + this.n.push(value); + } + + toArray() { + return this.n; + } +} + +const createList = () => new NodeList(); + +function parse(input: string, opts: ParseOptions = {}) { + const options = opts; + const openTag = options.openTag || OPEN_BRAKET; + const closeTag = options.closeTag || CLOSE_BRAKET; + const onlyAllowTags = (options.onlyAllowTags || []) + .filter(Boolean) + .map((tag) => tag.toLowerCase()); + + let tokenizer: LexerTokenizer | null = null; + + /** + * Result AST of nodes + * @private + * @type {NodeList} + */ + const nodes = createList(); + /** + * Temp buffer of nodes that's nested to another node + * @private + */ + const nestedNodes = createList(); + /** + * Temp buffer of nodes [tag..]...[/tag] + * @private + * @type {NodeList} + */ + const tagNodes = createList(); + /** + * Temp buffer of tag attributes + * @private + * @type {NodeList} + */ + const tagNodesAttrName = createList(); + + /** + * Cache for nested tags checks + */ + const nestedTagsMap = new Set(); + + function isTokenNested(token: Token) { + const value = token.getValue(); + const { isTokenNested } = tokenizer || {}; + + if (!nestedTagsMap.has(value) && isTokenNested && isTokenNested(token)) { + nestedTagsMap.add(value); + + return true; + } + + return nestedTagsMap.has(value); + } + + /** + * @private + */ + function isTagNested(tagName: string) { + return Boolean(nestedTagsMap.has(tagName)); + } + + /** + * @private + */ + function isAllowedTag(value: string) { + if (onlyAllowTags.length) { + return onlyAllowTags.indexOf(value.toLowerCase()) >= 0; + } + + return true; + } + + /** + * Flushes temp tag nodes and its attributes buffers + * @private + */ + function flushTagNodes() { + if (tagNodes.flush()) { + tagNodesAttrName.flush(); + } + } + + /** + * @private + */ + function getNodes() { + const lastNestedNode = nestedNodes.last(); + + if (lastNestedNode && isTagNode(lastNestedNode)) { + return lastNestedNode.content; + } + + return nodes.toArray(); + } + + /** + * @private + */ + function appendNodeAsString( + nodes?: TagNodeTree, + node?: TagNode, + isNested = true + ) { + if (Array.isArray(nodes) && typeof node !== "undefined") { + nodes.push(node.toTagStart({ openTag, closeTag })); + + if (Array.isArray(node.content) && node.content.length) { + node.content.forEach((item) => { + nodes.push(item); + }); + + if (isNested) { + nodes.push(node.toTagEnd({ openTag, closeTag })); + } + } + } + } + + /** + * @private + */ + function appendNodes(nodes?: TagNodeTree, node?: NodeContent) { + if (Array.isArray(nodes) && typeof node !== "undefined") { + if (isTagNode(node)) { + if (isAllowedTag(node.tag)) { + nodes.push(node.toTagNode()); + } else { + appendNodeAsString(nodes, node); + } + } else { + nodes.push(node); + } + } + } + + /** + * @private + * @param {Token} token + */ + function handleTagStart(token: Token) { + flushTagNodes(); + + const tagNode = TagNode.create(token.getValue()); + const isNested = isTokenNested(token); + + tagNodes.push(tagNode); + + if (isNested) { + nestedNodes.push(tagNode); + } else { + const nodes = getNodes(); + appendNodes(nodes, tagNode); + } + } + + /** + * @private + * @param {Token} token + */ + function handleTagEnd(token: Token) { + flushTagNodes(); + + const lastNestedNode = nestedNodes.flush(); + + if (lastNestedNode) { + const nodes = getNodes(); + appendNodes(nodes, lastNestedNode); + } else if (typeof options.onError === "function") { + const tag = token.getValue(); + const line = token.getLine(); + const column = token.getColumn(); + + options.onError({ + tagName: tag, + lineNumber: line, + columnNumber: column, + }); + } + } + + /** + * @private + * @param {Token} token + */ + function handleTag(token: Token) { + // [tag] + if (token.isStart()) { + handleTagStart(token); + } + + // [/tag] + if (token.isEnd()) { + handleTagEnd(token); + } + } + + /** + * @private + * @param {Token} token + */ + function handleNode(token: Token) { + /** + * @type {TagNode} + */ + const activeTagNode = tagNodes.last(); + const tokenValue = token.getValue(); + const isNested = isTagNested(token.toString()); + const nodes = getNodes(); + + if (activeTagNode !== null) { + if (token.isAttrName()) { + tagNodesAttrName.push(tokenValue); + const attrName = tagNodesAttrName.last(); + + if (attrName) { + activeTagNode.attr(attrName, ""); + } + } else if (token.isAttrValue()) { + const attrName = tagNodesAttrName.last(); + + if (attrName) { + activeTagNode.attr(attrName, tokenValue); + tagNodesAttrName.flush(); + } else { + activeTagNode.attr(tokenValue, tokenValue); + } + } else if (token.isText()) { + if (isNested) { + activeTagNode.append(tokenValue); + } else { + appendNodes(nodes, tokenValue); + } + } else if (token.isTag()) { + // if tag is not allowed, just pass it as is + appendNodes(nodes, token.toString()); + } + } else if (token.isText()) { + appendNodes(nodes, tokenValue); + } else if (token.isTag()) { + // if tag is not allowed, just pass it as is + appendNodes(nodes, token.toString()); + } + } + + /** + * @private + * @param {Token} token + */ + function onToken(token: Token) { + if (token.isTag()) { + handleTag(token); + } else { + handleNode(token); + } + } + + const lexer = opts.createTokenizer ? opts.createTokenizer : createLexer; + + tokenizer = lexer(input, { + onToken, + openTag, + closeTag, + onlyAllowTags: options.onlyAllowTags, + contextFreeTags: options.contextFreeTags, + enableEscapeTags: options.enableEscapeTags, + }); + + // eslint-disable-next-line no-unused-vars + const tokens = tokenizer.tokenize(); + + // handles situations where we open tag, but forgot close them + // for ex [q]test[/q][u]some[/u][q]some [u]some[/u] // forgot to close [/q] + // so we need to flush nested content to nodes array + const lastNestedNode = nestedNodes.flush(); + if ( + lastNestedNode !== null && + lastNestedNode && + isTagNode(lastNestedNode) && + isTagNested(lastNestedNode.tag) + ) { + appendNodeAsString(getNodes(), lastNestedNode, false); + } + + return nodes.toArray(); +} + +export { parse }; +export default parse; diff --git a/packages/bbob-parser/src/types.ts b/packages/bbob-parser/src/types.ts new file mode 100644 index 00000000..c2dd1b73 --- /dev/null +++ b/packages/bbob-parser/src/types.ts @@ -0,0 +1,15 @@ +import type Token from "./Token"; + +export interface LexerTokenizer { + tokenize: () => Token[]; + isTokenNested?: (token: Token) => boolean; +} + +export type LexerOptions = { + openTag?: string; + closeTag?: string; + onlyAllowTags?: string[]; + enableEscapeTags?: boolean; + contextFreeTags?: string[]; + onToken?: (token?: Token) => void; +}; diff --git a/packages/bbob-parser/src/utils.js b/packages/bbob-parser/src/utils.js deleted file mode 100644 index c3b68f60..00000000 --- a/packages/bbob-parser/src/utils.js +++ /dev/null @@ -1,165 +0,0 @@ -import { - QUOTEMARK, - BACKSLASH, -} from '@bbob/plugin-helper'; - -function CharGrabber(source, options) { - const cursor = { - pos: 0, - len: source.length, - }; - - const substrUntilChar = (char) => { - const { pos } = cursor; - const idx = source.indexOf(char, pos); - - return idx >= 0 ? source.substring(pos, idx) : ''; - }; - const includes = (val) => source.indexOf(val, cursor.pos) >= 0; - const hasNext = () => cursor.len > cursor.pos; - const isLast = () => cursor.pos === cursor.len; - const skip = (num = 1, silent) => { - cursor.pos += num; - - if (options && options.onSkip && !silent) { - options.onSkip(); - } - }; - const rest = () => source.substring(cursor.pos); - const grabN = (num = 0) => source.substring(cursor.pos, cursor.pos + num); - const curr = () => source[cursor.pos]; - const prev = () => { - const prevPos = cursor.pos - 1; - - return typeof source[prevPos] !== 'undefined' ? source[prevPos] : null; - }; - const next = () => { - const nextPos = cursor.pos + 1; - - return nextPos <= (source.length - 1) ? source[nextPos] : null; - }; - const grabWhile = (cond, silent) => { - let start = 0; - - if (hasNext()) { - start = cursor.pos; - - while (hasNext() && cond(curr())) { - skip(1, silent); - } - } - - return source.substring(start, cursor.pos); - }; - /** - * @type {skip} - */ - this.skip = skip; - /** - * @returns {Boolean} - */ - this.hasNext = hasNext; - /** - * @returns {String} - */ - this.getCurr = curr; - /** - * @returns {String} - */ - this.getRest = rest; - /** - * @returns {String} - */ - this.getNext = next; - /** - * @returns {String} - */ - this.getPrev = prev; - /** - * @returns {Boolean} - */ - this.isLast = isLast; - /** - * @returns {Boolean} - */ - this.includes = includes; - /** - * @param {Function} cond - * @param {Boolean} silent - * @return {String} - */ - this.grabWhile = grabWhile; - /** - * @param {Number} num - * @return {String} - */ - this.grabN = grabN; - /** - * Grabs rest of string until it find a char - * @param {String} char - * @return {String} - */ - this.substrUntilChar = substrUntilChar; -} - -/** - * Creates a grabber wrapper for source string, that helps to iterate over string char by char - * @param {String} source - * @param {Object} options - * @param {Function} options.onSkip - * @return CharGrabber - */ -export const createCharGrabber = (source, options) => new CharGrabber(source, options); - -/** - * Trims string from start and end by char - * @example - * trimChar('*hello*', '*') ==> 'hello' - * @param {String} str - * @param {String} charToRemove - * @returns {String} - */ -export const trimChar = (str, charToRemove) => { - while (str.charAt(0) === charToRemove) { - // eslint-disable-next-line no-param-reassign - str = str.substring(1); - } - - while (str.charAt(str.length - 1) === charToRemove) { - // eslint-disable-next-line no-param-reassign - str = str.substring(0, str.length - 1); - } - - return str; -}; - -/** - * Unquotes \" to " - * @param str - * @return {String} - */ -export const unquote = (str) => str.replace(BACKSLASH + QUOTEMARK, QUOTEMARK); - -function NodeList(values = []) { - const nodes = values; - - const getLast = () => ( - Array.isArray(nodes) && nodes.length > 0 && typeof nodes[nodes.length - 1] !== 'undefined' - ? nodes[nodes.length - 1] - : null); - const flushLast = () => (nodes.length ? nodes.pop() : false); - const push = (value) => nodes.push(value); - const toArray = () => nodes; - - this.push = push; - this.toArray = toArray; - this.getLast = getLast; - this.flushLast = flushLast; -} - -/** - * - * @param values - * @return {NodeList} - */ -export const createList = (values = []) => new NodeList(values); diff --git a/packages/bbob-parser/src/utils.ts b/packages/bbob-parser/src/utils.ts new file mode 100644 index 00000000..4df33621 --- /dev/null +++ b/packages/bbob-parser/src/utils.ts @@ -0,0 +1,121 @@ +import { + QUOTEMARK, + BACKSLASH, +} from '@bbob/plugin-helper'; + +export type CharGrabberOptions = { + onSkip?: () => void +} + +export class CharGrabber { + private s: string; + private c: { len: number; pos: number }; + private o: CharGrabberOptions; + + constructor(source: string, options: CharGrabberOptions = {}) { + this.s = source + this.c = { + pos: 0, + len: source.length, + }; + + this.o = options + } + + skip(num = 1, silent?: boolean) { + this.c.pos += num; + + if (this.o && this.o.onSkip && !silent) { + this.o.onSkip(); + } + } + + hasNext() { + return this.c.len > this.c.pos + } + + getCurr() { + return this.s[this.c.pos] + } + + getRest() { + return this.s.substring(this.c.pos) + } + + getNext() { + const nextPos = this.c.pos + 1; + + return nextPos <= (this.s.length - 1) ? this.s[nextPos] : null; + } + + getPrev() { + const prevPos = this.c.pos - 1; + + return typeof this.s[prevPos] !== 'undefined' ? this.s[prevPos] : null; + } + + isLast() { + return this.c.pos === this.c.len + } + + includes(val: string) { + return this.s.indexOf(val, this.c.pos) >= 0 + } + + grabWhile(condition: (curr: string) => boolean, silent?: boolean) { + let start = 0; + + if (this.hasNext()) { + start = this.c.pos; + + while (this.hasNext() && condition(this.getCurr())) { + this.skip(1, silent); + } + } + + return this.s.substring(start, this.c.pos); + } + + grabN(num: number = 0) { + return this.s.substring(this.c.pos, this.c.pos + num) + } + + /** + * Grabs rest of string until it find a char + */ + substrUntilChar(char: string) { + const { pos } = this.c; + const idx = this.s.indexOf(char, pos); + + return idx >= 0 ? this.s.substring(pos, idx) : ''; + } +} + +/** + * Creates a grabber wrapper for source string, that helps to iterate over string char by char + */ +export const createCharGrabber = (source: string, options?: CharGrabberOptions) => new CharGrabber(source, options); + +/** + * Trims string from start and end by char + * @example + * trimChar('*hello*', '*') ==> 'hello' + */ +export const trimChar = (str: string, charToRemove: string) => { + while (str.charAt(0) === charToRemove) { + // eslint-disable-next-line no-param-reassign + str = str.substring(1); + } + + while (str.charAt(str.length - 1) === charToRemove) { + // eslint-disable-next-line no-param-reassign + str = str.substring(0, str.length - 1); + } + + return str; +}; + +/** + * Unquotes \" to " + */ +export const unquote = (str: string) => str.replace(BACKSLASH + QUOTEMARK, QUOTEMARK); diff --git a/packages/bbob-parser/test/Token.test.js b/packages/bbob-parser/test/Token.test.ts similarity index 100% rename from packages/bbob-parser/test/Token.test.js rename to packages/bbob-parser/test/Token.test.ts diff --git a/packages/bbob-parser/test/index.test.js b/packages/bbob-parser/test/index.test.ts similarity index 67% rename from packages/bbob-parser/test/index.test.js rename to packages/bbob-parser/test/index.test.ts index cbc20189..8aa1e84a 100644 --- a/packages/bbob-parser/test/index.test.js +++ b/packages/bbob-parser/test/index.test.ts @@ -2,7 +2,8 @@ import { TagNode } from "../src/index"; describe('index', () => { test('tag with content and params', () => { - const tagNode = TagNode.create('test', {test: 1}, ['Hello']); + const attrs = {test: 1} + const tagNode = TagNode.create('test', attrs, ['Hello']); expect(String(tagNode)).toBe('[test test="1"]Hello[/test]'); }); diff --git a/packages/bbob-parser/test/lexer.test.js b/packages/bbob-parser/test/lexer.test.ts similarity index 95% rename from packages/bbob-parser/test/lexer.test.js rename to packages/bbob-parser/test/lexer.test.ts index e534ab96..0b6b16ba 100644 --- a/packages/bbob-parser/test/lexer.test.js +++ b/packages/bbob-parser/test/lexer.test.ts @@ -1,6 +1,14 @@ import { TYPE_ID, VALUE_ID, TYPE_WORD, TYPE_TAG, TYPE_ATTR_NAME, TYPE_ATTR_VALUE, TYPE_SPACE, TYPE_NEW_LINE} from '../src/Token' import { createLexer } from '../src/lexer' +declare global { + namespace jest { + interface Matchers { + toBeMantchOutput(expected: Array): CustomMatcherResult; + } + } +} + const TYPE = { WORD: TYPE_WORD, TAG: TYPE_TAG, @@ -10,13 +18,15 @@ const TYPE = { NEW_LINE: TYPE_NEW_LINE, }; -const TYPE_NAMES = Object.fromEntries(Object.keys(TYPE).map(key => [TYPE[key], key])); +const TYPE_NAMES = Object.fromEntries(Object.keys(TYPE).map((key: keyof typeof TYPE) => [TYPE[key], key])); -const tokenize = input => (createLexer(input).tokenize()); -const tokenizeEscape = input => (createLexer(input, { enableEscapeTags: true }).tokenize()); -const tokenizeContextFreeTags = (input, tags = []) => (createLexer(input, { contextFreeTags: tags }).tokenize()); +const tokenize = (input: string) => (createLexer(input).tokenize()); +const tokenizeEscape = (input: string) => (createLexer(input, { enableEscapeTags: true }).tokenize()); +const tokenizeContextFreeTags = (input: string, tags: string[] = []) => (createLexer(input, { contextFreeTags: tags }).tokenize()); describe('lexer', () => { + + expect.extend({ toBeMantchOutput(tokens, output) { if (tokens.length !== output.length) { @@ -515,7 +525,7 @@ describe('lexer', () => { }); describe('html', () => { - const tokenizeHTML = input => createLexer(input, { openTag: '<', closeTag: '>' }).tokenize(); + const tokenizeHTML = (input: string) => createLexer(input, { openTag: '<', closeTag: '>' }).tokenize(); test('normal attributes', () => { const content = ``; @@ -593,9 +603,7 @@ input.buttonred{cursor:hand;font-family:verdana;background:#d12124;color:#fff;he --> ` const tokens = tokenizeHTML(content); - const output = []; - - expect(tokens).toBeMantchOutput(output); + expect(tokens).toBeMantchOutput([]); }); test.skip('script tag', () => { @@ -606,9 +614,7 @@ input.buttonred{cursor:hand;font-family:verdana;background:#d12124;color:#fff;he //--> `; const tokens = tokenizeHTML(content); - const output = []; - - expect(tokens).toBeMantchOutput(output); + expect(tokens).toBeMantchOutput([]); }) }) }); diff --git a/packages/bbob-parser/test/parse.test.js b/packages/bbob-parser/test/parse.test.ts similarity index 98% rename from packages/bbob-parser/test/parse.test.js rename to packages/bbob-parser/test/parse.test.ts index 96c5c170..69c67422 100644 --- a/packages/bbob-parser/test/parse.test.js +++ b/packages/bbob-parser/test/parse.test.ts @@ -1,7 +1,8 @@ import { parse } from '../src' +import type { TagNodeTree } from "@bbob/plugin-helper"; describe('Parser', () => { - const expectOutput = (ast, output) => { + const expectOutput = (ast: TagNodeTree, output: Partial) => { expect(ast).toBeInstanceOf(Array); expect(ast).toEqual(output); }; @@ -440,7 +441,7 @@ sdfasdfasdf }) describe('html', () => { - const parseHTML = input => parse(input, { openTag: '<', closeTag: '>' }); + const parseHTML = (input: string) => parse(input, { openTag: '<', closeTag: '>' }); test('normal attributes', () => { const content = ``; diff --git a/packages/bbob-parser/test/posthtml.test.js b/packages/bbob-parser/test/posthtml.test.ts similarity index 100% rename from packages/bbob-parser/test/posthtml.test.js rename to packages/bbob-parser/test/posthtml.test.ts diff --git a/packages/bbob-parser/test/utils.test.js b/packages/bbob-parser/test/utils.test.ts similarity index 100% rename from packages/bbob-parser/test/utils.test.js rename to packages/bbob-parser/test/utils.test.ts diff --git a/packages/bbob-parser/tsconfig.json b/packages/bbob-parser/tsconfig.json new file mode 100644 index 00000000..385f1a81 --- /dev/null +++ b/packages/bbob-parser/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "baseUrl": ".", + "outDir": "./types" + }, + "include": [ + "./src/**/*" + ] +} diff --git a/packages/bbob-plugin-helper/.gitignore b/packages/bbob-plugin-helper/.gitignore index 22f5164e..3f22f0b7 100644 --- a/packages/bbob-plugin-helper/.gitignore +++ b/packages/bbob-plugin-helper/.gitignore @@ -2,3 +2,7 @@ coverage dist lib es +types +test/*.d.ts +test/*.map +tsconfig.tsbuildinfo diff --git a/packages/bbob-plugin-helper/.npmignore b/packages/bbob-plugin-helper/.npmignore index 65922b56..c1046191 100644 --- a/packages/bbob-plugin-helper/.npmignore +++ b/packages/bbob-plugin-helper/.npmignore @@ -1,4 +1,4 @@ -package-lock.json +pnpm-lock.yaml coverage src !dist diff --git a/packages/bbob-plugin-helper/package.json b/packages/bbob-plugin-helper/package.json index e29b6ebe..f4d9464a 100644 --- a/packages/bbob-plugin-helper/package.json +++ b/packages/bbob-plugin-helper/package.json @@ -7,11 +7,49 @@ "plugin", "helper" ], + "files": [ + "dist", + "lib", + "src", + "es", + "types" + ], "main": "lib/index.js", "module": "es/index.js", "jsnext:main": "es/index.js", "browser": "dist/index.js", "browserName": "BbobPluginHelper", + "types": "types/index.d.ts", + "exports": { + ".": { + "types": "./types/index.d.ts", + "import": "./es/index.js", + "require": "./lib/index.js", + "browser": "./dist/index.min.js", + "umd": "./dist/index.min.js" + }, + "./char": { + "types": "./types/char.d.ts", + "import": "./es/char.js", + "require": "./lib/char.js", + "browser": "./dist/index.min.js", + "umd": "./dist/index.min.js" + }, + "./helpers": { + "types": "./types/helpers.d.ts", + "import": "./es/helpers.js", + "require": "./lib/helpers.js", + "browser": "./dist/index.min.js", + "umd": "./dist/index.min.js" + }, + "./TagNode": { + "types": "./types/TagNode.d.ts", + "import": "./es/TagNode.js", + "require": "./lib/TagNode.js", + "browser": "./dist/index.min.js", + "umd": "./dist/index.min.js" + } + }, "homepage": "https://github.com/JiLiZART/bbob", "author": "Nikolay Kostyurin ", "license": "MIT", @@ -23,35 +61,31 @@ "url": "git://github.com/JiLiZART/bbob.git" }, "scripts": { - "build:commonjs": "../../scripts/pkg-task build-commonjs", - "build:es": "../../scripts/pkg-task build-es", - "build:umd": "../../scripts/pkg-task build-umd", - "build": "npm run build:commonjs && npm run build:es && npm run build:umd", - "test": "../../scripts/pkg-task test", - "cover": "../../scripts/pkg-task cover", - "lint": "../../scripts/pkg-task lint", - "size": "../../scripts/pkg-task size", - "bundlesize": "../../scripts/pkg-task bundlesize", + "build:commonjs": "pkg-task", + "build:es": "pkg-task", + "build:umd": "pkg-task", + "build": "pkg-task", + "test": "pkg-task", + "cover": "pkg-task", + "lint": "pkg-task", + "size": "pkg-task", + "bundlesize": "pkg-task", + "types": "pkg-task", "prepublishOnly": "npm run build" }, "size-limit": [ { - "path": "lib/index.js" + "path": "./dist/index.min.js", + "size": "1 KB" } ], "bundlesize": [ { "path": "./dist/index.min.js", - "maxSize": "1024 B" + "maxSize": "1 KB" } ], "publishConfig": { "registry": "https://registry.npmjs.org/" - }, - "files": [ - "dist", - "lib", - "src", - "es" - ] + } } diff --git a/packages/bbob-plugin-helper/src/TagNode.js b/packages/bbob-plugin-helper/src/TagNode.js deleted file mode 100644 index 810fded5..00000000 --- a/packages/bbob-plugin-helper/src/TagNode.js +++ /dev/null @@ -1,77 +0,0 @@ -import { OPEN_BRAKET, CLOSE_BRAKET, SLASH } from './char'; -import { - getNodeLength, appendToNode, attrsToString, attrValue, getUniqAttr, -} from './helpers'; - -const getTagAttrs = (tag, params) => { - const uniqAattr = getUniqAttr(params); - - if (uniqAattr) { - const tagAttr = attrValue(tag, uniqAattr); - const attrs = { ...params }; - - delete attrs[uniqAattr]; - - const attrsStr = attrsToString(attrs); - - return `${tagAttr}${attrsStr}`; - } - - return `${tag}${attrsToString(params)}`; -}; - -class TagNode { - constructor(tag, attrs, content) { - this.tag = tag; - this.attrs = attrs; - this.content = Array.isArray(content) ? content : [content]; - } - - attr(name, value) { - if (typeof value !== 'undefined') { - this.attrs[name] = value; - } - - return this.attrs[name]; - } - - append(value) { - return appendToNode(this, value); - } - - get length() { - return getNodeLength(this); - } - - toTagStart({ openTag = OPEN_BRAKET, closeTag = CLOSE_BRAKET } = {}) { - const tagAttrs = getTagAttrs(this.tag, this.attrs); - - return `${openTag}${tagAttrs}${closeTag}`; - } - - toTagEnd({ openTag = OPEN_BRAKET, closeTag = CLOSE_BRAKET } = {}) { - return `${openTag}${SLASH}${this.tag}${closeTag}`; - } - - toTagNode() { - return new TagNode(this.tag.toLowerCase(), this.attrs, this.content); - } - - toString({ openTag = OPEN_BRAKET, closeTag = CLOSE_BRAKET } = {}) { - const isEmpty = this.content.length === 0; - const content = this.content.reduce((r, node) => r + node.toString({ openTag, closeTag }), ''); - const tagStart = this.toTagStart({ openTag, closeTag }); - - if (isEmpty) { - return tagStart; - } - - return `${tagStart}${content}${this.toTagEnd({ openTag, closeTag })}`; - } -} - -TagNode.create = (tag, attrs = {}, content = []) => new TagNode(tag, attrs, content); -TagNode.isOf = (node, type) => (node.tag === type); - -export { TagNode }; -export default TagNode; diff --git a/packages/bbob-plugin-helper/src/TagNode.ts b/packages/bbob-plugin-helper/src/TagNode.ts new file mode 100644 index 00000000..40c1eec1 --- /dev/null +++ b/packages/bbob-plugin-helper/src/TagNode.ts @@ -0,0 +1,115 @@ +import { OPEN_BRAKET, CLOSE_BRAKET, SLASH } from './char'; +import { + getUniqAttr, + getNodeLength, + appendToNode, + attrsToString, + attrValue, + isTagNode, +} from './helpers'; + +import type { NodeContent, TagNodeObject, TagNodeTree } from "./types"; + +const getTagAttrs = (tag: string, params: Record) => { + const uniqAttr = getUniqAttr(params); + + if (uniqAttr) { + const tagAttr = attrValue(tag, uniqAttr); + const attrs = { ...params }; + + delete attrs[String(uniqAttr)]; + + const attrsStr = attrsToString(attrs); + + return `${tagAttr}${attrsStr}`; + } + + return `${tag}${attrsToString(params)}`; +}; + +const renderContent = (content: TagNodeTree, openTag: string, closeTag: string) => { + const toString = (node: NodeContent) => { + if (isTagNode(node)) { + return node.toString({ openTag, closeTag }) + } + + return String(node) + } + + if (Array.isArray(content)) { + return content.reduce((r, node) => { + if (node !== null) { + return r + toString(node) + } + + return r + }, '') + } + + if (content) { + return toString(content) + } + + return null +} + +export class TagNode implements TagNodeObject { + public readonly tag: string + public attrs: Record + public content: TagNodeTree + + constructor(tag: string, attrs: Record, content: TagNodeTree) { + this.tag = tag; + this.attrs = attrs; + this.content = content + } + + attr(name: string, value?: unknown) { + if (typeof value !== 'undefined') { + this.attrs[name] = value; + } + + return this.attrs[name]; + } + + append(value: string) { + return appendToNode(this, value); + } + + get length(): number { + return getNodeLength(this); + } + + toTagStart({ openTag = OPEN_BRAKET, closeTag = CLOSE_BRAKET } = {}) { + const tagAttrs = getTagAttrs(this.tag, this.attrs); + + return `${openTag}${tagAttrs}${closeTag}`; + } + + toTagEnd({ openTag = OPEN_BRAKET, closeTag = CLOSE_BRAKET } = {}) { + return `${openTag}${SLASH}${this.tag}${closeTag}`; + } + + toTagNode() { + return new TagNode(this.tag.toLowerCase(), this.attrs, this.content); + } + + toString({ openTag = OPEN_BRAKET, closeTag = CLOSE_BRAKET } = {}): string { + const content = this.content ? renderContent(this.content, openTag, closeTag) : '' + const tagStart = this.toTagStart({ openTag, closeTag }); + + if (this.content === null || Array.isArray(this.content) && this.content.length === 0) { + return tagStart; + } + + return `${tagStart}${content}${this.toTagEnd({ openTag, closeTag })}`; + } + + static create(tag: string, attrs: Record = {}, content: TagNodeTree = []) { + return new TagNode(tag, attrs, content) + } + + static isOf(node: TagNode, type: string) { + return (node.tag === type) + } +} diff --git a/packages/bbob-plugin-helper/src/char.js b/packages/bbob-plugin-helper/src/char.ts similarity index 100% rename from packages/bbob-plugin-helper/src/char.js rename to packages/bbob-plugin-helper/src/char.ts diff --git a/packages/bbob-plugin-helper/src/helpers.js b/packages/bbob-plugin-helper/src/helpers.js deleted file mode 100644 index 9a78821e..00000000 --- a/packages/bbob-plugin-helper/src/helpers.js +++ /dev/null @@ -1,100 +0,0 @@ -import { N } from './char'; - -const isTagNode = (el) => typeof el === 'object' && !!el.tag; -const isStringNode = (el) => typeof el === 'string'; -const isEOL = (el) => el === N; - -const keysReduce = (obj, reduce, def) => Object.keys(obj).reduce(reduce, def); - -const getNodeLength = (node) => { - if (isTagNode(node)) { - return node.content.reduce((count, contentNode) => count + getNodeLength(contentNode), 0); - } if (isStringNode(node)) { - return node.length; - } - - return 0; -}; - -/** - * Appends value to Tag Node - * @param {TagNode} node - * @param value - */ -const appendToNode = (node, value) => { - node.content.push(value); -}; - -/** - * Replaces " to &qquot; - * @param {String} value - */ -const escapeHTML = (value) => value - .replace(/&/g, '&') - .replace(//g, '>') - .replace(/"/g, '"') - .replace(/'/g, ''') -// eslint-disable-next-line no-script-url - .replace(/(javascript|data|vbscript):/gi, '$1%3A'); - -/** - * Acept name and value and return valid html5 attribute string - * @param {String} name - * @param {String} value - * @return {string} - */ -const attrValue = (name, value) => { - const type = typeof value; - - const types = { - boolean: () => (value ? `${name}` : ''), - number: () => `${name}="${value}"`, - string: () => `${name}="${escapeHTML(value)}"`, - object: () => `${name}="${escapeHTML(JSON.stringify(value))}"`, - }; - - return types[type] ? types[type]() : ''; -}; - -/** - * Transforms attrs to html params string - * @param values - */ -const attrsToString = (values) => { - // To avoid some malformed attributes - if (values == null) { - return ''; - } - - return keysReduce( - values, - (arr, key) => [...arr, attrValue(key, values[key])], - [''], - ).join(' '); -}; - -/** - * Gets value from - * @example - * getUniqAttr({ 'foo': true, 'bar': bar' }) => 'bar' - * @param attrs - * @returns {string} - */ -const getUniqAttr = (attrs) => keysReduce( - attrs, - (res, key) => (attrs[key] === key ? attrs[key] : null), - null, -); - -export { - attrsToString, - attrValue, - appendToNode, - escapeHTML, - getNodeLength, - getUniqAttr, - isTagNode, - isStringNode, - isEOL, -}; diff --git a/packages/bbob-plugin-helper/src/helpers.ts b/packages/bbob-plugin-helper/src/helpers.ts new file mode 100644 index 00000000..4f3859b0 --- /dev/null +++ b/packages/bbob-plugin-helper/src/helpers.ts @@ -0,0 +1,125 @@ +import { N } from './char'; +import type { TagNode } from "./TagNode"; +import type { NodeContent, StringNode } from "./types"; + +function isTagNode(el: unknown): el is TagNode { + return typeof el === 'object' && el !== null && 'tag' in el; +} + +function isStringNode(el: unknown): el is StringNode { + return typeof el === 'string'; +} + +// check string is end of line +function isEOL(el: string) { + return el === N +} + +function keysReduce>(obj: T, reduce: (acc: Def, key: keyof T) => Res, def: Def): Res { + const keys = Object.keys(obj) + + return keys.reduce((acc, key) => reduce(acc, key), def) +} + +function getNodeLength(node: NodeContent): number { + if (isTagNode(node) && Array.isArray(node.content)) { + return node.content.reduce((count, contentNode) => { + return count + getNodeLength(contentNode) + }, 0); + } + + if (isStringNode(node)) { + return String(node).length; + } + + return 0; +} + +function appendToNode(node: TagNode, value: NodeContent) { + if (Array.isArray(node.content)) { + node.content.push(value); + } +} + +/** + * Replaces " to &qquot; + * @param {string} value + */ +function escapeAttrValue(value: string) { + return value + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"') + .replace(/'/g, ''') + // eslint-disable-next-line no-script-url + .replace(/(javascript|data|vbscript):/gi, '$1%3A'); +} + +/** + * @deprecated use escapeAttrValue + */ +const escapeHTML = escapeAttrValue + +/** + * Accept name and value and return valid html5 attribute string + */ +function attrValue(name: string, value: AttrValue) { + // in case of performance + switch (typeof value) { + case 'boolean': + return value ? `${name}` : '' + case 'number': + return `${name}="${value}"` + case 'string': + return `${name}="${escapeAttrValue(value as string)}"` + case 'object': + return `${name}="${escapeAttrValue(JSON.stringify(value))}"` + default: + return '' + } +} + +/** + * Transforms attrs to html params string + * @example + * attrsToString({ 'foo': true, 'bar': bar' }) => 'foo="true" bar="bar"' + */ +function attrsToString(values: Record | null) { + // To avoid some malformed attributes + if (values == null) { + return ''; + } + + return keysReduce( + values, + (arr, key) => [...arr, attrValue(key, values[key])], + [''], + ).join(' '); +} + +/** + * Gets value from + * @example + * getUniqAttr({ 'foo': true, 'bar': bar' }) => 'bar' + */ +function getUniqAttr(attrs: Record) { + return keysReduce( + attrs, + (res, key) => (attrs[key] === key ? attrs[key] : null), + null, + ) +} + +export { + attrsToString, + attrValue, + appendToNode, + escapeHTML, + escapeAttrValue, + getNodeLength, + getUniqAttr, + isTagNode, + isStringNode, + isEOL, +}; diff --git a/packages/bbob-plugin-helper/src/index.js b/packages/bbob-plugin-helper/src/index.js deleted file mode 100644 index a138236e..00000000 --- a/packages/bbob-plugin-helper/src/index.js +++ /dev/null @@ -1,3 +0,0 @@ -export * from './helpers'; -export * from './char'; -export { TagNode } from './TagNode'; diff --git a/packages/bbob-plugin-helper/src/index.ts b/packages/bbob-plugin-helper/src/index.ts new file mode 100644 index 00000000..3c93b97e --- /dev/null +++ b/packages/bbob-plugin-helper/src/index.ts @@ -0,0 +1,4 @@ +export * from "./helpers"; +export * from "./char"; +export * from "./TagNode"; +export * from "./types"; diff --git a/packages/bbob-plugin-helper/src/types.ts b/packages/bbob-plugin-helper/src/types.ts new file mode 100644 index 00000000..2ec75735 --- /dev/null +++ b/packages/bbob-plugin-helper/src/types.ts @@ -0,0 +1,13 @@ +export type StringNode = string | number + +export interface TagNodeObject { + readonly tag: string + attrs: Record + content: TagNodeTree +} + +export type NodeContent = TagNodeObject | StringNode | null + +export type PartialNodeContent = Partial | StringNode | null + +export type TagNodeTree = NodeContent | NodeContent[] | null diff --git a/packages/bbob-plugin-helper/test/TagNode.test.js b/packages/bbob-plugin-helper/test/TagNode.test.ts similarity index 60% rename from packages/bbob-plugin-helper/test/TagNode.test.js rename to packages/bbob-plugin-helper/test/TagNode.test.ts index a07b9838..9a0977aa 100644 --- a/packages/bbob-plugin-helper/test/TagNode.test.js +++ b/packages/bbob-plugin-helper/test/TagNode.test.ts @@ -13,6 +13,37 @@ describe('@bbob/plugin-helper/TagNode', () => { expect(TagNode.isOf(tagNode, 'test')).toBe(true); }); + test('attr', () => { + const tagNode = TagNode.create('test', {test: 1}, ['Hello']); + + tagNode.attr('foo', 'bar') + + expect(tagNode.attrs.foo).toBe('bar'); + }); + + test('append', () => { + const tagNode = TagNode.create('test', {test: 1}, ['Hello']); + + tagNode.append('World') + + expect(tagNode.content).toEqual(['Hello', 'World']); + }); + + test('length', () => { + const tagNode = TagNode.create('test', {test: 1}, ['Hello', 'World']); + + expect(tagNode.length).toEqual('HelloWorld'.length); + }); + + test('toTagNode', () => { + const tagNode = TagNode.create('test', {test: 1}, ['Hello']); + const newTagNode = tagNode.toTagNode() + + expect(newTagNode !== tagNode).toBe(true); + expect(newTagNode.tag).toEqual(tagNode.tag); + expect(newTagNode.content).toEqual(tagNode.content); + }); + describe('toString', () => { test('tag with content and params', () => { const tagNode = TagNode.create('test', {test: 1}, ['Hello']); diff --git a/packages/bbob-plugin-helper/test/helpers.test.js b/packages/bbob-plugin-helper/test/helpers.test.js deleted file mode 100644 index c8a7d48e..00000000 --- a/packages/bbob-plugin-helper/test/helpers.test.js +++ /dev/null @@ -1,116 +0,0 @@ -import { - attrsToString, - attrValue, - appendToNode, - getNodeLength, - getUniqAttr, - isTagNode, - isStringNode, - isEOL, -} from '../src'; - -describe('@bbob/plugin-helper/helpers', () => { - test('appendToNode', () => { - const value = 'test'; - const node = { content: [] }; - - appendToNode(node, value); - expect(node.content.pop()).toBe(value); - }); - - test('getNodeLength', () => { - const node = { - tag: 'test', - content: [ - '123', - { - tag: 'test2', - content: ['123'] - } - ] - }; - - expect(getNodeLength(node)).toBe(6) - }); - - test('isTagNode', () => { - const node = { - tag: 'test', - content: [] - }; - - expect(isTagNode(node)).toBe(true) - }); - - test('isStringNode', () => { - const node = { - tag: 'test', - content: ['123'] - }; - - expect(isStringNode(node.content[0])).toBe(true); - }); - - test('attrValue boolean', () => { - expect(attrValue('test', true)).toBe('test'); - }); - - test('attrValue number', () => { - expect(attrValue('test', 123)).toBe('test="123"'); - }); - - test('attrValue string', () => { - expect(attrValue('test', 'hello')).toBe('test="hello"'); - }); - - test('attrValue object', () => { - const attrs = { tag: 'test' }; - - expect(attrValue('test', attrs)).toBe('test="{"tag":"test"}"'); - }); - - test('isEOL', () => { - expect(isEOL('\n')).toBe(true) - }); - - test('attrsToString', () => { - expect(attrsToString({ - tag: 'test', - foo: 'bar', - disabled: true - })).toBe(` tag="test" foo="bar" disabled`) - }); - - test('attrsToString undefined', () => { - expect(attrsToString(undefined)).toBe('') - }); - - describe('attrsToString escape', () => { - test(`javascript:alert("hello")`, () => { - expect(attrsToString({ - onclick: `javascript:alert('hello')`, - href: `javascript:alert('hello')`, - })).toBe(` onclick="javascript%3Aalert('hello')" href="javascript%3Aalert('hello')"`) - }); - test(`JAVASCRIPT:alert("hello")`, () => { - expect(attrsToString({ - onclick: `JAVASCRIPT:alert('hello')`, - href: `JAVASCRIPT:alert('hello')`, - })).toBe(` onclick="JAVASCRIPT%3Aalert('hello')" href="JAVASCRIPT%3Aalert('hello')"`) - }); - test(``, () => { - expect(attrsToString({ - onclick: ``, - href: ``, - })).toBe(` onclick="<tag>" href="<tag>"`) - }); - }); - - test('getUniqAttr with unq attr', () => { - expect(getUniqAttr({foo: true, 'http://bar.com': 'http://bar.com'})).toBe('http://bar.com') - }); - - test('getUniqAttr without unq attr', () => { - expect(getUniqAttr({foo: true})).toBe(null) - }) -}); diff --git a/packages/bbob-plugin-helper/test/helpers.test.ts b/packages/bbob-plugin-helper/test/helpers.test.ts new file mode 100644 index 00000000..7df74e74 --- /dev/null +++ b/packages/bbob-plugin-helper/test/helpers.test.ts @@ -0,0 +1,117 @@ +import { + attrsToString, + attrValue, + appendToNode, + getNodeLength, + getUniqAttr, + isTagNode, + isStringNode, + isEOL, + TagNode, +} from '../src'; + +describe('@bbob/plugin-helper/helpers', () => { + test('appendToNode', () => { + const value = 'test'; + const node = {content: []} as TagNode; + + appendToNode(node, value); + expect(node.content.pop()).toBe(value); + }); + + test('getNodeLength', () => { + const node = { + tag: 'test', + content: [ + '123', + { + tag: 'test2', + content: ['123'] + } + ] + } as TagNode; + + expect(getNodeLength(node)).toBe(6) + }); + + test('isTagNode', () => { + const node = { + tag: 'test', + content: [] + } as TagNode; + + expect(isTagNode(node)).toBe(true) + }); + + test('isStringNode', () => { + const node = { + tag: 'test', + content: ['123'] + }; + + expect(isStringNode(node.content[0])).toBe(true); + }); + + test('attrValue boolean', () => { + expect(attrValue('test', true)).toBe('test'); + }); + + test('attrValue number', () => { + expect(attrValue('test', 123)).toBe('test="123"'); + }); + + test('attrValue string', () => { + expect(attrValue('test', 'hello')).toBe('test="hello"'); + }); + + test('attrValue object', () => { + const attrs = {tag: 'test'}; + + expect(attrValue('test', attrs)).toBe('test="{"tag":"test"}"'); + }); + + test('isEOL', () => { + expect(isEOL('\n')).toBe(true) + }); + + test('attrsToString', () => { + expect(attrsToString({ + tag: 'test', + foo: 'bar', + disabled: true + })).toBe(` tag="test" foo="bar" disabled`) + }); + + test('attrsToString undefined', () => { + expect(attrsToString(undefined)).toBe('') + }); + + describe('attrsToString escape', () => { + test(`javascript:alert("hello")`, () => { + expect(attrsToString({ + onclick: `javascript:alert('hello')`, + href: `javascript:alert('hello')`, + })).toBe(` onclick="javascript%3Aalert('hello')" href="javascript%3Aalert('hello')"`) + }); + test(`JAVASCRIPT:alert("hello")`, () => { + expect(attrsToString({ + onclick: `JAVASCRIPT:alert('hello')`, + href: `JAVASCRIPT:alert('hello')`, + })).toBe(` onclick="JAVASCRIPT%3Aalert('hello')" href="JAVASCRIPT%3Aalert('hello')"`) + }); + test(``, () => { + expect(attrsToString({ + onclick: ``, + href: ``, + })).toBe(` onclick="<tag>" href="<tag>"`) + }); + }); + + test('getUniqAttr with unq attr', () => { + expect(getUniqAttr({foo: true, 'http://bar.com': 'http://bar.com'})).toBe('http://bar.com') + }); + + test('getUniqAttr without unq attr', () => { + expect(getUniqAttr({foo: true})).toBe(null) + }) +}); diff --git a/packages/bbob-plugin-helper/tsconfig.json b/packages/bbob-plugin-helper/tsconfig.json new file mode 100644 index 00000000..385f1a81 --- /dev/null +++ b/packages/bbob-plugin-helper/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "baseUrl": ".", + "outDir": "./types" + }, + "include": [ + "./src/**/*" + ] +} diff --git a/packages/bbob-preset-html5/.gitignore b/packages/bbob-preset-html5/.gitignore index 22f5164e..62307a2c 100644 --- a/packages/bbob-preset-html5/.gitignore +++ b/packages/bbob-preset-html5/.gitignore @@ -2,3 +2,6 @@ coverage dist lib es +types +test/*.d.ts +test/*.map diff --git a/packages/bbob-preset-html5/.npmignore b/packages/bbob-preset-html5/.npmignore index 65922b56..c1046191 100644 --- a/packages/bbob-preset-html5/.npmignore +++ b/packages/bbob-preset-html5/.npmignore @@ -1,4 +1,4 @@ -package-lock.json +pnpm-lock.yaml coverage src !dist diff --git a/packages/bbob-preset-html5/package.json b/packages/bbob-preset-html5/package.json index 36d455cc..58a29380 100644 --- a/packages/bbob-preset-html5/package.json +++ b/packages/bbob-preset-html5/package.json @@ -8,17 +8,28 @@ "bbob" ], "dependencies": { - "@bbob/plugin-helper": "workspace:*", - "@bbob/preset": "workspace:*" + "@bbob/plugin-helper": "*", + "@bbob/preset": "*" }, "devDependencies": { - "@bbob/html": "workspace:*" + "@bbob/core": "*", + "@bbob/html": "*" }, "main": "lib/index.js", "module": "es/index.js", "jsnext:main": "es/index.js", "browser": "dist/index.js", "browserName": "BbobPresetHTML5", + "types": "types/index.d.ts", + "exports": { + ".": { + "types": "./types/index.d.ts", + "import": "./es/index.js", + "require": "./lib/index.js", + "browser": "./dist/index.min.js", + "umd": "./dist/index.min.js" + } + }, "homepage": "https://github.com/JiLiZART/bbob", "author": "Nikolay Kostyurin ", "license": "MIT", @@ -30,19 +41,22 @@ "url": "git://github.com/JiLiZART/bbob.git" }, "scripts": { - "build:commonjs": "../../scripts/pkg-task build-commonjs", - "build:es": "../../scripts/pkg-task build-es", - "build:umd": "../../scripts/pkg-task build-umd", - "build": "npm run build:commonjs && npm run build:es && npm run build:umd", - "test": "../../scripts/pkg-task test", - "cover": "../../scripts/pkg-task cover", - "lint": "../../scripts/pkg-task lint", - "size": "../../scripts/pkg-task size", - "bundlesize": "../../scripts/pkg-task bundlesize" + "build:commonjs": "pkg-task", + "build:es": "pkg-task", + "build:umd": "pkg-task", + "build": "pkg-task", + "test": "pkg-task", + "cover": "pkg-task", + "lint": "pkg-task", + "size": "pkg-task", + "bundlesize": "pkg-task", + "types": "pkg-task", + "prepublishOnly": "npm run build" }, "size-limit": [ { - "path": "lib/index.js" + "path": "./dist/index.min.js", + "size": "2.6 KB" } ], "bundlesize": [ diff --git a/packages/bbob-preset-html5/pnpm-lock.yaml b/packages/bbob-preset-html5/pnpm-lock.yaml index e1f27fda..8457b021 100644 --- a/packages/bbob-preset-html5/pnpm-lock.yaml +++ b/packages/bbob-preset-html5/pnpm-lock.yaml @@ -13,6 +13,9 @@ dependencies: version: link:../bbob-preset devDependencies: + '@bbob/core': + specifier: workspace:* + version: link:../bbob-core '@bbob/html': specifier: workspace:* version: link:../bbob-html diff --git a/packages/bbob-preset-html5/src/defaultTags.js b/packages/bbob-preset-html5/src/defaultTags.js deleted file mode 100644 index 9931f87a..00000000 --- a/packages/bbob-preset-html5/src/defaultTags.js +++ /dev/null @@ -1,91 +0,0 @@ -/* eslint-disable no-plusplus,no-lonely-if */ -import { - getUniqAttr, isStringNode, isTagNode, TagNode, -} from '@bbob/plugin-helper'; - -const isStartsWith = (node, type) => (node[0] === type); - -const styleMap = { - color: (val) => `color:${val};`, - size: (val) => `font-size:${val};`, -}; - -const getStyleFromAttrs = (attrs) => Object - .keys(attrs) - .reduce((acc, key) => (styleMap[key] ? acc.concat(styleMap[key](attrs[key])) : acc), []) - .join(' '); - -const asListItems = (content) => { - let listIdx = 0; - const listItems = []; - - const createItemNode = () => TagNode.create('li'); - const ensureListItem = (val) => { - listItems[listIdx] = listItems[listIdx] || val; - }; - const addItem = (val) => { - if (listItems[listIdx] && listItems[listIdx].content) { - listItems[listIdx].content = listItems[listIdx].content.concat(val); - } else { - listItems[listIdx] = listItems[listIdx].concat(val); - } - }; - - content.forEach((el) => { - if (isStringNode(el) && isStartsWith(el, '*')) { - if (listItems[listIdx]) { - listIdx++; - } - ensureListItem(createItemNode()); - addItem(el.substr(1)); - } else if (isTagNode(el) && TagNode.isOf(el, '*')) { - if (listItems[listIdx]) { - listIdx++; - } - ensureListItem(createItemNode()); - } else if (!isTagNode(listItems[listIdx])) { - listIdx++; - ensureListItem(el); - } else if (listItems[listIdx]) { - addItem(el); - } else { - ensureListItem(el); - } - }); - - return [].concat(listItems); -}; - -const renderUrl = (node, render) => (getUniqAttr(node.attrs) - ? getUniqAttr(node.attrs) - : render(node.content)); - -const toNode = (tag, attrs, content) => ({ - tag, - attrs, - content, -}); - -const toStyle = (style) => ({ style }); - -export default { - b: (node) => toNode('span', toStyle('font-weight: bold;'), node.content), - i: (node) => toNode('span', toStyle('font-style: italic;'), node.content), - u: (node) => toNode('span', toStyle('text-decoration: underline;'), node.content), - s: (node) => toNode('span', toStyle('text-decoration: line-through;'), node.content), - url: (node, { render }, options) => toNode('a', { - href: renderUrl(node, render, options), - }, node.content), - img: (node, { render }) => toNode('img', { - src: render(node.content), - }, null), - quote: (node) => toNode('blockquote', {}, [toNode('p', {}, node.content)]), - code: (node) => toNode('pre', {}, node.content), - style: (node) => toNode('span', toStyle(getStyleFromAttrs(node.attrs)), node.content), - list: (node) => { - const type = getUniqAttr(node.attrs); - - return toNode(type ? 'ol' : 'ul', type ? { type } : {}, asListItems(node.content)); - }, - color: (node) => toNode('span', toStyle(`color: ${getUniqAttr(node.attrs)};`), node.content), -}; diff --git a/packages/bbob-preset-html5/src/defaultTags.ts b/packages/bbob-preset-html5/src/defaultTags.ts new file mode 100644 index 00000000..b5e4b679 --- /dev/null +++ b/packages/bbob-preset-html5/src/defaultTags.ts @@ -0,0 +1,146 @@ +/* eslint-disable no-plusplus,no-lonely-if */ +import { + getUniqAttr, + isStringNode, + isTagNode, + TagNode, + TagNodeTree, +} from "@bbob/plugin-helper"; +import type { NodeContent, TagNodeObject } from "@bbob/plugin-helper"; +import type { PresetTagsDefinition } from "@bbob/preset"; +import type { BbobPluginOptions } from "@bbob/core"; + +const isStartsWith = (node: string, type: string) => node[0] === type; + +const getStyleFromAttrs = (attrs: Record) => { + return Object.keys(attrs) + .reduce((acc, key: "color" | "size") => { + const value = attrs[key]; + + if (typeof value === "string") { + if (key === "color") { + return acc.concat(`color:${value};`); + } + + if (key === "size") { + return acc.concat(`font-size:${value};`); + } + } + + return acc; + }, []) + .join(" "); +}; + +const asListItems = (content: TagNodeTree): NodeContent[] => { + let listIdx = 0; + const listItems = [] as Array; + + const createItemNode = () => TagNode.create("li"); + const ensureListItem = (val: NodeContent) => { + listItems[listIdx] = listItems[listIdx] || val; + }; + const addItem = (val: NodeContent) => { + const listItem = listItems[listIdx]; + + if (listItem && isTagNode(listItem) && Array.isArray(listItem.content)) { + listItem.content = listItem.content.concat(val); + } + // else if (Array.isArray(listItem) && Array.isArray(listItems[listIdx])) { + // listItems[listIdx] = listItems[listIdx].concat(val); + // } + }; + + if (Array.isArray(content)) { + content.forEach((el) => { + if (isStringNode(el) && isStartsWith(String(el), "*")) { + if (listItems[listIdx]) { + listIdx++; + } + ensureListItem(createItemNode()); + addItem(String(el).substr(1)); + } else if (isTagNode(el) && TagNode.isOf(el, "*")) { + if (listItems[listIdx]) { + listIdx++; + } + ensureListItem(createItemNode()); + } else if (!isTagNode(listItems[listIdx])) { + listIdx++; + ensureListItem(el); + } else if (listItems[listIdx]) { + addItem(el); + } else { + ensureListItem(el); + } + }); + } + + return listItems; +}; + +const renderUrl = (node: TagNodeObject, render: BbobPluginOptions["render"]) => + getUniqAttr(node.attrs) + ? getUniqAttr(node.attrs) + : render(node.content || []); + +const toNode = ( + tag: string, + attrs: Record, + content: TagNodeTree +) => TagNode.create(tag, attrs, content); + +const toStyle = (style: string) => ({ style }); + +const defaultTags: PresetTagsDefinition< + | "b" + | "i" + | "u" + | "s" + | "url" + | "img" + | "quote" + | "code" + | "style" + | "list" + | "color" +> = { + b: (node) => toNode("span", toStyle("font-weight: bold;"), node.content), + i: (node) => toNode("span", toStyle("font-style: italic;"), node.content), + u: (node) => + toNode("span", toStyle("text-decoration: underline;"), node.content), + s: (node) => + toNode("span", toStyle("text-decoration: line-through;"), node.content), + url: (node, { render }) => + toNode( + "a", + { + href: renderUrl(node, render), + }, + node.content + ), + img: (node, { render }) => + toNode( + "img", + { + src: render(node.content), + }, + null + ), + quote: (node) => toNode("blockquote", {}, [toNode("p", {}, node.content)]), + code: (node) => toNode("pre", {}, node.content), + style: (node) => + toNode("span", toStyle(getStyleFromAttrs(node.attrs)), node.content), + list: (node) => { + const type = getUniqAttr(node.attrs); + + return toNode( + type ? "ol" : "ul", + type ? { type } : {}, + asListItems(node.content) + ); + }, + color: (node) => + toNode("span", toStyle(`color: ${getUniqAttr(node.attrs)};`), node.content), +}; + +export default defaultTags; diff --git a/packages/bbob-preset-html5/src/index.js b/packages/bbob-preset-html5/src/index.js deleted file mode 100644 index ce2c53c6..00000000 --- a/packages/bbob-preset-html5/src/index.js +++ /dev/null @@ -1,5 +0,0 @@ -/* eslint-disable indent */ -import { createPreset } from '@bbob/preset'; -import defaultTags from './defaultTags'; - -export default createPreset(defaultTags); diff --git a/packages/bbob-preset-html5/src/index.ts b/packages/bbob-preset-html5/src/index.ts new file mode 100644 index 00000000..4f919266 --- /dev/null +++ b/packages/bbob-preset-html5/src/index.ts @@ -0,0 +1,6 @@ +/* eslint-disable indent */ +import { createPreset } from "@bbob/preset"; +import defaultTags from "./defaultTags"; +export type * from "@bbob/preset"; + +export default createPreset(defaultTags); diff --git a/packages/bbob-preset-html5/test/index.test.js b/packages/bbob-preset-html5/test/index.test.ts similarity index 95% rename from packages/bbob-preset-html5/test/index.test.js rename to packages/bbob-preset-html5/test/index.test.ts index 3a30f492..3eab8b26 100644 --- a/packages/bbob-preset-html5/test/index.test.js +++ b/packages/bbob-preset-html5/test/index.test.ts @@ -1,7 +1,13 @@ -import html from '@bbob/html' +import html, { render } from '@bbob/html' +import core from '@bbob/core' + import preset from '../src' -const parse = input => html(input, preset()); +const parse = (input: string) => { + const tree = core(preset()).process(input, { render }) + + return html(input, preset()) +}; describe('@bbob/preset-html5', () => { test('[b]bolded text[/b]', () => { diff --git a/packages/bbob-preset-html5/tsconfig.json b/packages/bbob-preset-html5/tsconfig.json new file mode 100644 index 00000000..385f1a81 --- /dev/null +++ b/packages/bbob-preset-html5/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "baseUrl": ".", + "outDir": "./types" + }, + "include": [ + "./src/**/*" + ] +} diff --git a/packages/bbob-preset-react/.gitignore b/packages/bbob-preset-react/.gitignore index 22f5164e..62307a2c 100644 --- a/packages/bbob-preset-react/.gitignore +++ b/packages/bbob-preset-react/.gitignore @@ -2,3 +2,6 @@ coverage dist lib es +types +test/*.d.ts +test/*.map diff --git a/packages/bbob-preset-react/.npmignore b/packages/bbob-preset-react/.npmignore index 65922b56..c1046191 100644 --- a/packages/bbob-preset-react/.npmignore +++ b/packages/bbob-preset-react/.npmignore @@ -1,4 +1,4 @@ -package-lock.json +pnpm-lock.yaml coverage src !dist diff --git a/packages/bbob-preset-react/package.json b/packages/bbob-preset-react/package.json index e5747fb7..8e9415a8 100644 --- a/packages/bbob-preset-react/package.json +++ b/packages/bbob-preset-react/package.json @@ -8,16 +8,27 @@ "react" ], "dependencies": { - "@bbob/preset-html5": "workspace:*" + "@bbob/preset-html5": "*", + "@bbob/preset": "*" }, "devDependencies": { - "@bbob/core": "workspace:*" + "@bbob/core": "*" }, "main": "lib/index.js", "module": "es/index.js", "jsnext:main": "es/index.js", "browser": "dist/index.js", "browserName": "BbobPresetReact", + "types": "types/index.d.ts", + "exports": { + ".": { + "types": "./types/index.d.ts", + "import": "./es/index.js", + "require": "./lib/index.js", + "browser": "./dist/index.min.js", + "umd": "./dist/index.min.js" + } + }, "homepage": "https://github.com/JiLiZART/bbob", "author": "Nikolay Kostyurin ", "license": "MIT", @@ -29,19 +40,22 @@ "url": "git://github.com/JiLiZART/bbob.git" }, "scripts": { - "build:commonjs": "../../scripts/pkg-task build-commonjs", - "build:es": "../../scripts/pkg-task build-es", - "build:umd": "../../scripts/pkg-task build-umd", - "build": "npm run build:commonjs && npm run build:es && npm run build:umd", - "test": "../../scripts/pkg-task test", - "cover": "../../scripts/pkg-task cover", - "lint": "../../scripts/pkg-task lint", - "size": "../../scripts/pkg-task size", - "bundlesize": "../../scripts/pkg-task bundlesize" + "build:commonjs": "pkg-task", + "build:es": "pkg-task", + "build:umd": "pkg-task", + "build": "pkg-task", + "test": "pkg-task", + "cover": "pkg-task", + "lint": "pkg-task", + "size": "pkg-task", + "bundlesize": "pkg-task", + "types": "pkg-task", + "prepublishOnly": "npm run build" }, "size-limit": [ { - "path": "lib/index.js" + "path": "./dist/index.min.js", + "size": "2.5 KB" } ], "bundlesize": [ diff --git a/packages/bbob-preset-react/src/index.js b/packages/bbob-preset-react/src/index.ts similarity index 70% rename from packages/bbob-preset-react/src/index.js rename to packages/bbob-preset-react/src/index.ts index 8c7d7d2a..cb8a4dbc 100644 --- a/packages/bbob-preset-react/src/index.js +++ b/packages/bbob-preset-react/src/index.ts @@ -1,12 +1,13 @@ import presetHTML5 from '@bbob/preset-html5'; +import type { PresetTagsDefinition } from '@bbob/preset'; -const tagAttr = (style) => ({ +const tagAttr = (style: Record) => ({ attrs: { style, }, }); -export default presetHTML5.extend((tags) => ({ +export default presetHTML5.extend((tags: PresetTagsDefinition<'b' | 'i' | 'u' | 's'>) => ({ ...tags, b: (...args) => ({ diff --git a/packages/bbob-preset-react/test/index.test.js b/packages/bbob-preset-react/test/index.test.ts similarity index 100% rename from packages/bbob-preset-react/test/index.test.js rename to packages/bbob-preset-react/test/index.test.ts diff --git a/packages/bbob-preset-react/tsconfig.json b/packages/bbob-preset-react/tsconfig.json new file mode 100644 index 00000000..385f1a81 --- /dev/null +++ b/packages/bbob-preset-react/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "baseUrl": ".", + "outDir": "./types" + }, + "include": [ + "./src/**/*" + ] +} diff --git a/packages/bbob-preset-vue/.gitignore b/packages/bbob-preset-vue/.gitignore index 22f5164e..62307a2c 100644 --- a/packages/bbob-preset-vue/.gitignore +++ b/packages/bbob-preset-vue/.gitignore @@ -2,3 +2,6 @@ coverage dist lib es +types +test/*.d.ts +test/*.map diff --git a/packages/bbob-preset-vue/.npmignore b/packages/bbob-preset-vue/.npmignore index 65922b56..c1046191 100644 --- a/packages/bbob-preset-vue/.npmignore +++ b/packages/bbob-preset-vue/.npmignore @@ -1,4 +1,4 @@ -package-lock.json +pnpm-lock.yaml coverage src !dist diff --git a/packages/bbob-preset-vue/package.json b/packages/bbob-preset-vue/package.json index 0a7b2cbb..df5b8ec4 100644 --- a/packages/bbob-preset-vue/package.json +++ b/packages/bbob-preset-vue/package.json @@ -8,16 +8,27 @@ "vue" ], "dependencies": { - "@bbob/preset-html5": "workspace:*" + "@bbob/preset-html5": "*", + "@bbob/preset": "*" }, "devDependencies": { - "@bbob/core": "workspace:*" + "@bbob/core": "*" }, "main": "lib/index.js", "module": "es/index.js", "jsnext:main": "es/index.js", "browser": "dist/index.js", "browserName": "BbobPresetVue", + "types": "types/index.d.ts", + "exports": { + ".": { + "types": "./types/index.d.ts", + "import": "./es/index.js", + "require": "./lib/index.js", + "browser": "./dist/index.min.js", + "umd": "./dist/index.min.js" + } + }, "homepage": "https://github.com/JiLiZART/bbob", "author": "Nikolay Kostyurin ", "license": "MIT", @@ -29,19 +40,22 @@ "url": "git://github.com/JiLiZART/bbob.git" }, "scripts": { - "build:commonjs": "../../scripts/pkg-task build-commonjs", - "build:es": "../../scripts/pkg-task build-es", - "build:umd": "../../scripts/pkg-task build-umd", - "build": "npm run build:commonjs && npm run build:es && npm run build:umd", - "test": "../../scripts/pkg-task test", - "cover": "../../scripts/pkg-task cover", - "lint": "../../scripts/pkg-task lint", - "size": "../../scripts/pkg-task size", - "bundlesize": "../../scripts/pkg-task bundlesize" + "build:commonjs": "pkg-task", + "build:es": "pkg-task", + "build:umd": "pkg-task", + "build": "pkg-task", + "test": "pkg-task", + "cover": "pkg-task", + "lint": "pkg-task", + "size": "pkg-task", + "bundlesize": "pkg-task", + "types": "pkg-task", + "prepublishOnly": "npm run build" }, "size-limit": [ { - "path": "lib/index.js" + "path": "./dist/index.min.js", + "size": "2.5 KB" } ], "bundlesize": [ diff --git a/packages/bbob-preset-vue/src/index.js b/packages/bbob-preset-vue/src/index.ts similarity index 70% rename from packages/bbob-preset-vue/src/index.js rename to packages/bbob-preset-vue/src/index.ts index 6f621980..7b02777a 100644 --- a/packages/bbob-preset-vue/src/index.js +++ b/packages/bbob-preset-vue/src/index.ts @@ -1,12 +1,13 @@ import presetHTML5 from '@bbob/preset-html5'; +import type { PresetTagsDefinition } from '@bbob/preset'; -export const tagAttr = (style) => ({ +export const tagAttr = (style: Record) => ({ attrs: { style, }, }); -export const createTags = (tags) => ({ +export const createTags = (tags: PresetTagsDefinition<'b' | 'i' | 'u' | 's'>) => ({ b: (...args) => ({ ...tags.b(...args), ...tagAttr({ fontWeight: 'bold' }), @@ -26,7 +27,7 @@ export const createTags = (tags) => ({ ...tags.s(...args), ...tagAttr({ textDecoration: 'line-through' }), }), -}); +} as PresetTagsDefinition); export default presetHTML5.extend((tags) => ({ ...tags, diff --git a/packages/bbob-preset-vue/test/index.test.js b/packages/bbob-preset-vue/test/index.test.ts similarity index 100% rename from packages/bbob-preset-vue/test/index.test.js rename to packages/bbob-preset-vue/test/index.test.ts diff --git a/packages/bbob-preset-vue/tsconfig.json b/packages/bbob-preset-vue/tsconfig.json new file mode 100644 index 00000000..385f1a81 --- /dev/null +++ b/packages/bbob-preset-vue/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "baseUrl": ".", + "outDir": "./types" + }, + "include": [ + "./src/**/*" + ] +} diff --git a/packages/bbob-preset/.gitignore b/packages/bbob-preset/.gitignore index 22f5164e..62307a2c 100644 --- a/packages/bbob-preset/.gitignore +++ b/packages/bbob-preset/.gitignore @@ -2,3 +2,6 @@ coverage dist lib es +types +test/*.d.ts +test/*.map diff --git a/packages/bbob-preset/.npmignore b/packages/bbob-preset/.npmignore index 65922b56..c1046191 100644 --- a/packages/bbob-preset/.npmignore +++ b/packages/bbob-preset/.npmignore @@ -1,4 +1,4 @@ -package-lock.json +pnpm-lock.yaml coverage src !dist diff --git a/packages/bbob-preset/package.json b/packages/bbob-preset/package.json index b0935576..7b6fc0c4 100644 --- a/packages/bbob-preset/package.json +++ b/packages/bbob-preset/package.json @@ -7,11 +7,32 @@ "base", "bbob" ], + "files": [ + "dist", + "lib", + "src", + "es", + "types" + ], + "dependencies": { + "@bbob/plugin-helper": "*", + "@bbob/core": "*" + }, "main": "lib/index.js", "module": "es/index.js", "jsnext:main": "es/index.js", "browser": "dist/index.js", "browserName": "BbobPreset", + "types": "types/index.d.ts", + "exports": { + ".": { + "types": "./types/index.d.ts", + "import": "./es/index.js", + "require": "./lib/index.js", + "browser": "./dist/index.min.js", + "umd": "./dist/index.min.js" + } + }, "homepage": "https://github.com/JiLiZART/bbob", "author": "Nikolay Kostyurin ", "license": "MIT", @@ -23,19 +44,22 @@ "url": "git://github.com/JiLiZART/bbob.git" }, "scripts": { - "build:commonjs": "../../scripts/pkg-task build-commonjs", - "build:es": "../../scripts/pkg-task build-es", - "build:umd": "../../scripts/pkg-task build-umd", - "build": "npm run build:commonjs && npm run build:es && npm run build:umd", - "test": "../../scripts/pkg-task test", - "cover": "../../scripts/pkg-task cover", - "lint": "../../scripts/pkg-task lint", - "size": "../../scripts/pkg-task size", - "bundlesize": "../../scripts/pkg-task bundlesize" + "build:commonjs": "pkg-task", + "build:es": "pkg-task", + "build:umd": "pkg-task", + "build": "pkg-task", + "test": "pkg-task", + "cover": "pkg-task", + "lint": "pkg-task", + "size": "pkg-task", + "bundlesize": "pkg-task", + "types": "pkg-task", + "prepublishOnly": "npm run build" }, "size-limit": [ { - "path": "lib/index.js" + "path": "./dist/index.min.js", + "size": "1 KB" } ], "bundlesize": [ @@ -46,11 +70,5 @@ ], "publishConfig": { "registry": "https://registry.npmjs.org/" - }, - "files": [ - "dist", - "lib", - "src", - "es" - ] + } } diff --git a/packages/bbob-preset/pnpm-lock.yaml b/packages/bbob-preset/pnpm-lock.yaml index 2b9f1883..9665d7c8 100644 --- a/packages/bbob-preset/pnpm-lock.yaml +++ b/packages/bbob-preset/pnpm-lock.yaml @@ -3,3 +3,11 @@ lockfileVersion: '6.0' settings: autoInstallPeers: true excludeLinksFromLockfile: false + +dependencies: + '@bbob/core': + specifier: workspace:* + version: link:../bbob-core + '@bbob/plugin-helper': + specifier: workspace:* + version: link:../bbob-plugin-helper diff --git a/packages/bbob-preset/src/index.js b/packages/bbob-preset/src/index.js deleted file mode 100644 index 822b5046..00000000 --- a/packages/bbob-preset/src/index.js +++ /dev/null @@ -1,37 +0,0 @@ -/* eslint-disable indent */ - -const isTagNode = (el) => typeof el === 'object' && !!el.tag; - -function process(tags, tree, core, options) { - tree.walk((node) => (isTagNode(node) && tags[node.tag] - ? tags[node.tag](node, core, options) - : node)); -} - -/** - * Creates preset for @bbob/core - * @param defTags {Object} - * @param processor {Function} a processor function of tree - * @returns {function(*=): function(*=, *=): void} - */ -function createPreset(defTags, processor = process) { - const presetFactory = (opts = {}) => { - presetFactory.options = Object.assign(presetFactory.options || {}, opts); - - const presetExecutor = (tree, core) => processor(defTags, tree, core, presetFactory.options); - - presetExecutor.options = presetFactory.options; - - return presetExecutor; - }; - - presetFactory.extend = (callback) => createPreset( - callback(defTags, presetFactory.options), - processor, - ); - - return presetFactory; -} - -export { createPreset }; -export default createPreset; diff --git a/packages/bbob-preset/src/index.ts b/packages/bbob-preset/src/index.ts new file mode 100644 index 00000000..a47d5c41 --- /dev/null +++ b/packages/bbob-preset/src/index.ts @@ -0,0 +1,3 @@ +export { default } from "./preset"; +export * from "./preset"; +export * from "./types"; diff --git a/packages/bbob-preset/src/preset.ts b/packages/bbob-preset/src/preset.ts new file mode 100644 index 00000000..7e9d3dbe --- /dev/null +++ b/packages/bbob-preset/src/preset.ts @@ -0,0 +1,91 @@ +import type { + BBobCoreTagNodeTree, + BbobPluginOptions, + BBobPluginFunction, +} from "@bbob/core"; +import { isTagNode } from "@bbob/plugin-helper"; +import type { + PresetExtendCallback, + PresetFactoryOptions, + PresetOptions, + PresetTagsDefinition, +} from "./types"; + +function process( + tags: PresetTagsDefinition, + tree: BBobCoreTagNodeTree, + core: BbobPluginOptions, + options: PresetFactoryOptions = {} +) { + return tree.walk((node) => { + if (isTagNode(node) && typeof tags[node.tag] === "function") { + const tag = node.tag; + const tagCallback = tags[tag]; + + return tagCallback(node, core, options); + } + + return node; + }); +} + +export type ProcessorFunction = typeof process; + +export type ProcessorReturnType = ReturnType; + +export interface PresetExecutor< + TagName extends string = string, + AttrValue = unknown +> extends BBobPluginFunction { + (tree: BBobCoreTagNodeTree, core?: BbobPluginOptions): ProcessorReturnType; + options: PresetOptions; +} + +export interface PresetFactory< + TagName extends string = string, + AttrValue = unknown, + Names extends string = string +> { + (opts?: PresetOptions): PresetExecutor; + options?: PresetOptions; + extend: ( + cb: PresetExtendCallback + ) => PresetFactory; +} + +/** + * Create a preset plugin for @bbob/core + */ +function createPreset( + defTags: PresetTagsDefinition, + processor: ProcessorFunction = process +) { + const presetFactory: PresetFactory = (opts: PresetOptions = {}) => { + presetFactory.options = Object.assign(presetFactory.options || {}, opts); + + function presetExecutor( + tree: BBobCoreTagNodeTree, + core: BbobPluginOptions + ) { + return processor(defTags, tree, core, presetFactory.options); + } + + presetExecutor.options = presetFactory.options; + + return presetExecutor; + }; + + presetFactory.extend = function presetExtend( + callback: PresetExtendCallback + ) { + return createPreset( + callback(defTags, presetFactory.options || {}), + processor + ); + }; + + return presetFactory; +} + +export { createPreset }; +export default createPreset; diff --git a/packages/bbob-preset/src/types.ts b/packages/bbob-preset/src/types.ts new file mode 100644 index 00000000..50e93a3b --- /dev/null +++ b/packages/bbob-preset/src/types.ts @@ -0,0 +1,15 @@ +import type { TagNodeObject } from "@bbob/plugin-helper"; +import type { BbobPluginOptions } from "@bbob/core"; + +export type PresetFactoryOptions = Record + +export type PresetTagFunction = ( + node: Node, + core: BbobPluginOptions, + options: PresetFactoryOptions +) => Node + +export type PresetTagsDefinition = Record + +export type PresetOptions = Record +export type PresetExtendCallback = (defTags: PresetTagsDefinition, options: PresetOptions) => PresetTagsDefinition diff --git a/packages/bbob-preset/test/index.test.js b/packages/bbob-preset/test/index.test.js deleted file mode 100644 index 1615b5ff..00000000 --- a/packages/bbob-preset/test/index.test.js +++ /dev/null @@ -1,54 +0,0 @@ -import { createPreset } from '../src/index'; - -describe('@bbob/preset', () => { - const presetFactory = (defTags) => { - const processor = jest.fn((tags, tree, core, options) => tags) - - return [createPreset(defTags, processor), processor]; - } - - test('create', () => { - const defTags = { test: true } - const options = { foo: 'bar' } - const tree = [] - const [preset, processor] = presetFactory(defTags); - - expect(preset.extend) - .toBeDefined(); - expect(preset) - .toBeInstanceOf(Function); - - expect(preset(options)(tree)).toEqual(defTags); - - expect(processor.mock.calls.length).toBe(1); - }); - test('extend', () => { - const defTags = { foo: true } - const extendedTags = { bar: true } - const options = { foo: 'bar' } - const tree = [] - const [preset, processor] = presetFactory(defTags); - const newPreset = preset.extend(tags => ({ ...tags, ...extendedTags })); - - expect(preset) - .toBeInstanceOf(Function); - expect(newPreset) - .toBeInstanceOf(Function); - - expect(newPreset(options)(tree)).toEqual({...defTags, ...extendedTags}); - - expect(processor.mock.calls.length).toBe(1); - }); - test('pass options', () => { - const [preset, processor] = presetFactory({ test: true }); - const newPreset = preset.extend((tags, options) => ({ bar: true })); - - const instance = preset({ foo: 'bar' }); - const instance2 = newPreset({ some: true }); - - expect(instance.options) - .toEqual({ foo: 'bar' }); - expect(instance2.options) - .toEqual({ some: true }); - }); -}); diff --git a/packages/bbob-preset/test/index.test.ts b/packages/bbob-preset/test/index.test.ts new file mode 100644 index 00000000..6c724086 --- /dev/null +++ b/packages/bbob-preset/test/index.test.ts @@ -0,0 +1,61 @@ +import { createPreset, PresetTagsDefinition } from '../src'; +import { BBobCoreOptions, createTree } from '@bbob/core' + +describe('@bbob/preset', () => { + const presetFactory = (defTags: PresetTagsDefinition) => { + const processor = jest.fn((tags, tree, core, options) => tags) + + return { + preset: createPreset(defTags, processor), + processor, + core: {} as BBobCoreOptions + } + } + + test('create', () => { + const defTags = { test: () => 'test' } + const options = { foo: 'bar' } + const tree = createTree([], {}) + const { preset, processor, core } = presetFactory(defTags); + + expect(preset.extend) + .toBeDefined(); + expect(preset) + .toBeInstanceOf(Function); + + expect(preset(options)(tree)).toEqual(defTags); + + expect(processor.mock.calls.length).toBe(1); + }); + test('extend', () => { + const defTags = { foo: () => 'foo' } + const extendedTags = { bar: () => 'bar' } + const options = { foo: 'bar' } + const tree = createTree([], {}) + const { preset, processor, core } = presetFactory(defTags); + const newPreset = preset.extend(tags => ({ ...tags, ...extendedTags })); + + expect(preset) + .toBeInstanceOf(Function); + expect(newPreset) + .toBeInstanceOf(Function); + + const newPresetRes = newPreset(options) + + expect(newPresetRes(tree)).toEqual({...defTags, ...extendedTags}); + + expect(processor.mock.calls.length).toBe(1); + }); + test('pass options', () => { + const { preset, processor } = presetFactory({ test: () => 'test' }); + const newPreset = preset.extend((tags, options) => ({ bar: () => 'bar' })); + + const instance = preset({ foo: 'bar' }); + const instance2 = newPreset({ some: 'some' }); + + expect(instance.options) + .toEqual({ foo: 'bar' }); + expect(instance2.options) + .toEqual({ some: 'some' }) + }); +}); diff --git a/packages/bbob-preset/tsconfig.json b/packages/bbob-preset/tsconfig.json new file mode 100644 index 00000000..385f1a81 --- /dev/null +++ b/packages/bbob-preset/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "baseUrl": ".", + "outDir": "./types" + }, + "include": [ + "./src/**/*" + ] +} diff --git a/packages/bbob-react/.eslintignore b/packages/bbob-react/.eslintignore index dc879671..d64aeb74 100644 --- a/packages/bbob-react/.eslintignore +++ b/packages/bbob-react/.eslintignore @@ -2,3 +2,6 @@ dist es lib test +types +test/*.d.ts +test/*.map diff --git a/packages/bbob-react/.gitignore b/packages/bbob-react/.gitignore index 22f5164e..62307a2c 100644 --- a/packages/bbob-react/.gitignore +++ b/packages/bbob-react/.gitignore @@ -2,3 +2,6 @@ coverage dist lib es +types +test/*.d.ts +test/*.map diff --git a/packages/bbob-react/.npmignore b/packages/bbob-react/.npmignore index 65922b56..c1046191 100644 --- a/packages/bbob-react/.npmignore +++ b/packages/bbob-react/.npmignore @@ -1,4 +1,4 @@ -package-lock.json +pnpm-lock.yaml coverage src !dist diff --git a/packages/bbob-react/package.json b/packages/bbob-react/package.json index 79d464ab..cba801d5 100644 --- a/packages/bbob-react/package.json +++ b/packages/bbob-react/package.json @@ -9,12 +9,11 @@ "bbob" ], "dependencies": { - "@bbob/core": "workspace:*", - "@bbob/html": "workspace:*", - "@bbob/plugin-helper": "workspace:*" + "@bbob/core": "*", + "@bbob/html": "*", + "@bbob/plugin-helper": "*" }, "peerDependencies": { - "prop-types": "> 15.0", "react": "> 15.0" }, "devDependencies": { @@ -22,13 +21,24 @@ "@testing-library/jest-dom": "^5.16.4", "@testing-library/react": "13.x", "react": "18.x", - "react-dom": "18.x" + "react-dom": "18.x", + "@types/react": "18.x" }, "main": "lib/index.js", "module": "es/index.js", "jsnext:main": "es/index.js", "browser": "dist/index.js", "browserName": "BbobReact", + "types": "types/index.d.ts", + "exports": { + ".": { + "types": "./types/index.d.ts", + "import": "./es/index.js", + "require": "./lib/index.js", + "browser": "./dist/index.min.js", + "umd": "./dist/index.min.js" + } + }, "homepage": "https://github.com/JiLiZART/bbob", "author": "Nikolay Kostyurin ", "license": "MIT", @@ -40,19 +50,22 @@ "url": "git://github.com/JiLiZART/bbob.git" }, "scripts": { - "build:commonjs": "../../scripts/pkg-task build-commonjs", - "build:es": "../../scripts/pkg-task build-es", - "build:umd": "../../scripts/pkg-task build-umd", - "build": "npm run build:commonjs && npm run build:es && npm run build:umd", - "test": "../../scripts/pkg-task test", - "cover": "../../scripts/pkg-task cover", - "lint": "../../scripts/pkg-task lint", - "size": "../../scripts/pkg-task size", - "bundlesize": "../../scripts/pkg-task bundlesize" + "build:commonjs": "pkg-task", + "build:es": "pkg-task", + "build:umd": "pkg-task", + "build": "pkg-task", + "test": "pkg-task", + "cover": "pkg-task", + "lint": "pkg-task", + "size": "pkg-task", + "bundlesize": "pkg-task", + "types": "pkg-task", + "prepublishOnly": "npm run build" }, "size-limit": [ { - "path": "lib/index.js" + "path": "./dist/index.min.js", + "size": "8 KB" } ], "bundlesize": [ diff --git a/packages/bbob-react/src/Component.js b/packages/bbob-react/src/Component.js deleted file mode 100644 index abc953c7..00000000 --- a/packages/bbob-react/src/Component.js +++ /dev/null @@ -1,48 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import { render } from './render'; - -const content = (children, plugins, options) => React.Children.map(children, (child) => (typeof child === 'string' ? render(child, plugins, options) : child)); - -const Component = ({ - container, - componentProps, - children, - plugins, - options, -}) => React.createElement( - container, - componentProps, - content(children, plugins, options), -); - -if (process.env.NODE_ENV !== 'production') { - Component.propTypes = { - container: PropTypes.oneOfType([ - PropTypes.node, - PropTypes.element, - PropTypes.elementType, - ]), - children: PropTypes.node.isRequired, - plugins: PropTypes.arrayOf(PropTypes.func), - componentProps: PropTypes.shape({ - className: PropTypes.string, - }), - options: PropTypes.shape({ - parser: PropTypes.func, - skipParse: PropTypes.bool, - onlyAllowTags: PropTypes.arrayOf(PropTypes.string), - openTag: PropTypes.string, - closeTag: PropTypes.string, - }), - }; -} - -Component.defaultProps = { - container: 'span', - plugins: [], - options: {}, - componentProps: {}, -}; - -export default Component; diff --git a/packages/bbob-react/src/Component.ts b/packages/bbob-react/src/Component.ts new file mode 100644 index 00000000..0b504f19 --- /dev/null +++ b/packages/bbob-react/src/Component.ts @@ -0,0 +1,34 @@ +import React, { ReactNode } from 'react'; +import type { BBobPlugins, BBobCoreOptions } from '@bbob/core'; +import { render } from './render'; + +const content = (children: ReactNode, plugins?: BBobPlugins, options?: BBobCoreOptions) => React.Children.map(children, (child) => (typeof child === 'string' ? render(child, plugins, options) : child)); + +export type BBobReactComponentProps = { + children: ReactNode + container: string + componentProps: Record + plugins?: BBobPlugins + options?: BBobCoreOptions +} + +const Component = ({ + container = 'span', + componentProps = {}, + children, + plugins = [], + options = {}, +}: BBobReactComponentProps) => React.createElement( + container, + componentProps, + content(children, plugins, options), +); + +Component.defaultProps = { + container: 'span', + plugins: [], + options: {}, + componentProps: {}, +}; + +export default Component; diff --git a/packages/bbob-react/src/index.js b/packages/bbob-react/src/index.ts similarity index 100% rename from packages/bbob-react/src/index.js rename to packages/bbob-react/src/index.ts diff --git a/packages/bbob-react/src/render.js b/packages/bbob-react/src/render.js deleted file mode 100644 index 3a0bd228..00000000 --- a/packages/bbob-react/src/render.js +++ /dev/null @@ -1,57 +0,0 @@ -/* eslint-disable no-use-before-define */ -import React from 'react'; -import core from '@bbob/core'; -import * as html from '@bbob/html'; - -import { isTagNode, isEOL } from '@bbob/plugin-helper'; - -const toAST = (source, plugins, options) => core(plugins) - .process(source, { - ...options, - render: (input) => html.render(input, { stripTags: true }), - }).tree; - -const isContentEmpty = (content) => (!content || content.length === 0); - -function tagToReactElement(node, index) { - return React.createElement( - node.tag, - { ...node.attrs, key: index }, - isContentEmpty(node.content) ? null : renderToReactNodes(node.content), - ); -} - -function renderToReactNodes(nodes) { - const els = [].concat(nodes).reduce((arr, node, index) => { - if (isTagNode(node)) { - arr.push(tagToReactElement(node, index)); - return arr; - } - - if (isEOL(node)) { - arr.push(node); - return arr; - } - - const lastIdx = arr.length - 1; - const prevNode = lastIdx >= 0 ? arr[lastIdx] : null; - - if (prevNode !== null && !isTagNode(prevNode) && !isEOL(prevNode)) { - const prevArr = arr; // stupid eslint - prevArr[lastIdx] += node; - return prevArr; - } - - arr.push(node); - - return arr; - }, []); - return els; -} - -function render(source, plugins, options) { - return renderToReactNodes(toAST(source, plugins, options)); -} - -export { render }; -export default render; diff --git a/packages/bbob-react/src/render.ts b/packages/bbob-react/src/render.ts new file mode 100644 index 00000000..c6691b51 --- /dev/null +++ b/packages/bbob-react/src/render.ts @@ -0,0 +1,90 @@ +/* eslint-disable no-use-before-define */ +import React, { ReactNode } from "react"; +import { render as htmlrender } from "@bbob/html"; +import core, { + BBobCoreOptions, + BBobCoreTagNodeTree, + BBobPlugins, +} from "@bbob/core"; + +import { + isTagNode, + isStringNode, + isEOL, + TagNode, + TagNodeTree, +} from "@bbob/plugin-helper"; + +const toAST = ( + source: string, + plugins?: BBobPlugins, + options?: BBobCoreOptions +) => + core(plugins).process(source, { + ...options, + render: (input) => htmlrender(input, { stripTags: true }), + }).tree; + +const isContentEmpty = (content: TagNodeTree) => { + if (!content) { + return true; + } + + if (typeof content === "number") { + return String(content).length === 0; + } + + return Array.isArray(content) ? content.length === 0 : !content; +}; + +function tagToReactElement(node: TagNode, index: number) { + return React.createElement( + node.tag, + { ...node.attrs, key: index }, + isContentEmpty(node.content) ? null : renderToReactNodes(node.content) + ); +} + +function renderToReactNodes(nodes: BBobCoreTagNodeTree | TagNodeTree) { + if (Array.isArray(nodes) && nodes.length) { + return nodes.reduce((arr, node, index) => { + if (isTagNode(node)) { + arr.push(tagToReactElement(node, index)); + return arr; + } + + if (isStringNode(node)) { + if (isEOL(String(node))) { + arr.push(node); + return arr; + } + + const lastIdx = arr.length - 1; + const prevArr = arr; // stupid eslint + const prevNode = lastIdx >= 0 ? prevArr[lastIdx] : null; + + if (prevArr[lastIdx] && prevNode !== null && !isEOL(String(prevNode))) { + prevArr[lastIdx] += String(node); + + return prevArr; + } + + arr.push(node); + } + + return arr; + }, []); + } + return []; +} + +function render( + source: string, + plugins?: BBobPlugins, + options?: BBobCoreOptions +) { + return renderToReactNodes(toAST(source, plugins, options)); +} + +export { render }; +export default render; diff --git a/packages/bbob-react/test/index.test.js b/packages/bbob-react/test/index.test.tsx similarity index 100% rename from packages/bbob-react/test/index.test.js rename to packages/bbob-react/test/index.test.tsx diff --git a/packages/bbob-react/test/render.test.js b/packages/bbob-react/test/render.test.tsx similarity index 100% rename from packages/bbob-react/test/render.test.js rename to packages/bbob-react/test/render.test.tsx diff --git a/packages/bbob-react/tsconfig.json b/packages/bbob-react/tsconfig.json new file mode 100644 index 00000000..385f1a81 --- /dev/null +++ b/packages/bbob-react/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "baseUrl": ".", + "outDir": "./types" + }, + "include": [ + "./src/**/*" + ] +} diff --git a/packages/bbob-vue2/.gitignore b/packages/bbob-vue2/.gitignore index 22f5164e..62307a2c 100644 --- a/packages/bbob-vue2/.gitignore +++ b/packages/bbob-vue2/.gitignore @@ -2,3 +2,6 @@ coverage dist lib es +types +test/*.d.ts +test/*.map diff --git a/packages/bbob-vue2/.npmignore b/packages/bbob-vue2/.npmignore index 65922b56..c1046191 100644 --- a/packages/bbob-vue2/.npmignore +++ b/packages/bbob-vue2/.npmignore @@ -1,4 +1,4 @@ -package-lock.json +pnpm-lock.yaml coverage src !dist diff --git a/packages/bbob-vue2/package.json b/packages/bbob-vue2/package.json index 82715237..b1b16431 100644 --- a/packages/bbob-vue2/package.json +++ b/packages/bbob-vue2/package.json @@ -9,15 +9,15 @@ "bbob" ], "dependencies": { - "@bbob/core": "workspace:*", - "@bbob/html": "workspace:*", - "@bbob/plugin-helper": "workspace:*" + "@bbob/core": "*", + "@bbob/html": "*", + "@bbob/plugin-helper": "*" }, "peerDependencies": { "vue": "2.x" }, "devDependencies": { - "@bbob/preset-vue": "workspace:*", + "@bbob/preset-vue": "*", "@testing-library/vue": "5.9.0", "vue": "2.7.16", "vue-template-compiler": "2.7.16" @@ -27,6 +27,16 @@ "jsnext:main": "es/index.js", "browser": "dist/index.js", "browserName": "BbobVue", + "types": "types/index.d.ts", + "exports": { + ".": { + "types": "./types/index.d.ts", + "import": "./es/index.js", + "require": "./lib/index.js", + "browser": "./dist/index.min.js", + "umd": "./dist/index.min.js" + } + }, "homepage": "https://github.com/JiLiZART/bbob", "author": "Nikolay Kostyurin ", "license": "MIT", @@ -38,19 +48,22 @@ "url": "git://github.com/JiLiZART/bbob.git" }, "scripts": { - "build:commonjs": "../../scripts/pkg-task build-commonjs", - "build:es": "../../scripts/pkg-task build-es", - "build:umd": "../../scripts/pkg-task build-umd", - "build": "npm run build:commonjs && npm run build:es && npm run build:umd", - "test": "../../scripts/pkg-task test", - "cover": "../../scripts/pkg-task cover", - "lint": "../../scripts/pkg-task lint", - "size": "../../scripts/pkg-task size", - "bundlesize": "../../scripts/pkg-task bundlesize" + "build:commonjs": "pkg-task", + "build:es": "pkg-task", + "build:umd": "pkg-task", + "build": "pkg-task", + "test": "pkg-task", + "cover": "pkg-task", + "lint": "pkg-task", + "size": "pkg-task", + "bundlesize": "pkg-task", + "types": "pkg-task", + "prepublishOnly": "npm run build" }, "size-limit": [ { - "path": "lib/index.js" + "path": "./dist/index.min.js", + "size": "8 KB" } ], "bundlesize": [ diff --git a/packages/bbob-vue2/src/Component.js b/packages/bbob-vue2/src/Component.ts similarity index 70% rename from packages/bbob-vue2/src/Component.js rename to packages/bbob-vue2/src/Component.ts index d797e553..6dfb8df4 100644 --- a/packages/bbob-vue2/src/Component.js +++ b/packages/bbob-vue2/src/Component.ts @@ -1,8 +1,15 @@ import { defineComponent } from 'vue'; import { render } from './render'; +import type { BBobCoreOptions, BBobPlugins } from '@bbob/core'; -const Component = defineComponent({ +export type BBobVueComponentProps = { + container: string + plugins?: BBobPlugins + options?: BBobCoreOptions +} + +const Component = defineComponent({ props: { container: { type: String, diff --git a/packages/bbob-vue2/src/index.js b/packages/bbob-vue2/src/index.js deleted file mode 100644 index f92d2be3..00000000 --- a/packages/bbob-vue2/src/index.js +++ /dev/null @@ -1,10 +0,0 @@ -import Component from './Component'; - -export { render } from './render'; -export { Component }; - -function install(Vue) { - Vue.component('bbob-bbcode', Component); -} - -export default install; diff --git a/packages/bbob-vue2/src/index.ts b/packages/bbob-vue2/src/index.ts new file mode 100644 index 00000000..20e01c3b --- /dev/null +++ b/packages/bbob-vue2/src/index.ts @@ -0,0 +1,11 @@ +import type{ VueConstructor } from 'vue'; +import Component from './Component'; + +export { render } from './render'; +export { Component }; + +function install(vue: VueConstructor) { + vue.component('bbob-bbcode', Component); +} + +export default install; diff --git a/packages/bbob-vue2/src/render.js b/packages/bbob-vue2/src/render.js deleted file mode 100644 index 7f1b9c1c..00000000 --- a/packages/bbob-vue2/src/render.js +++ /dev/null @@ -1,52 +0,0 @@ -/* eslint-disable no-use-before-define,import/prefer-default-export */ -import core from '@bbob/core'; -import * as html from '@bbob/html'; - -import { isStringNode, isTagNode } from '@bbob/plugin-helper'; - -const toAST = (source, plugins = [], options = {}) => core(plugins) - .process(source, { - ...options, - render: (input) => html.render(input, { stripTags: true }), - }).tree; - -const isContentEmpty = (content) => (!content || content.length === 0); - -function tagToVueNode(createElement, node, index) { - const { class: className, style, ...domProps } = node.attrs || {}; - - return createElement( - node.tag, - { - key: index, - class: className, - style, - domProps, - }, - isContentEmpty(node.content) ? null : renderToVueNodes(createElement, node.content), - ); -} - -function renderToVueNodes(createElement, nodes) { - return [].concat(nodes).reduce((arr, node, index) => { - if (isTagNode(node)) { - arr.push(tagToVueNode(createElement, node, index)); - } else if (isStringNode(node)) { - arr.push(node); - } - - return arr; - }, []); -} - -/** - * Converts string to Vue 2 VNodes - * @param createElement {CreateElement} - * @param source {String} - * @param plugins {Array} - * @param options {Object} - * @returns {Array} - */ -export function render(createElement, source, plugins, options) { - return renderToVueNodes(createElement, toAST(source, plugins, options)); -} diff --git a/packages/bbob-vue2/src/render.ts b/packages/bbob-vue2/src/render.ts new file mode 100644 index 00000000..7a8b386e --- /dev/null +++ b/packages/bbob-vue2/src/render.ts @@ -0,0 +1,57 @@ +/* eslint-disable no-use-before-define,import/prefer-default-export */ +import core, { BBobPlugins, BBobCoreOptions } from '@bbob/core'; +import * as html from '@bbob/html'; + +import { isStringNode, isTagNode } from '@bbob/plugin-helper'; +import type { TagNodeTree, TagNode } from "@bbob/plugin-helper"; +import type { CreateElement, VNodeChildrenArrayContents } from 'vue'; +import type { StyleValue } from 'vue/types/jsx'; + +const toAST = (source: string, plugins: BBobPlugins = [], options: BBobCoreOptions = {}) => core(plugins) + .process(source, { + ...options, + render: (input) => html.render(input, { stripTags: true }), + }).tree; + +const isContentEmpty = (content: TagNodeTree) => (!content || Array.isArray(content) && content?.length === 0); + +function tagToVueNode(createElement: CreateElement, node: TagNode, index: number) { + const { class: className, style, ...domProps } = node.attrs || {}; + + return createElement( + node.tag, + { + key: index, + class: className, + style: style as StyleValue, + domProps, + }, + isContentEmpty(node.content) ? null : renderToVueNodes(createElement, node.content), + ); +} + +function renderToVueNodes(createElement: CreateElement, nodes: TagNodeTree) { + if (Array.isArray(nodes)) { + return nodes.reduce((arr, node, index) => { + if (isTagNode(node)) { + arr.push(tagToVueNode(createElement, node, index)); + } else if (isStringNode(node)) { + arr.push(String(node)); + } + + return arr; + }, [] as VNodeChildrenArrayContents); + } +} + +/** + * Converts string to Vue 2 VNodes + * @param createElement {CreateElement} + * @param source {String} + * @param plugins {Array} + * @param options {Object} + * @returns {Array} + */ +export function render(createElement: CreateElement, source: string, plugins?: BBobPlugins, options?: BBobCoreOptions) { + return renderToVueNodes(createElement, toAST(source, plugins, options)); +} diff --git a/packages/bbob-vue2/tsconfig.json b/packages/bbob-vue2/tsconfig.json new file mode 100644 index 00000000..385f1a81 --- /dev/null +++ b/packages/bbob-vue2/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "baseUrl": ".", + "outDir": "./types" + }, + "include": [ + "./src/**/*" + ] +} diff --git a/packages/bbob-vue3/.gitignore b/packages/bbob-vue3/.gitignore index 22f5164e..62307a2c 100644 --- a/packages/bbob-vue3/.gitignore +++ b/packages/bbob-vue3/.gitignore @@ -2,3 +2,6 @@ coverage dist lib es +types +test/*.d.ts +test/*.map diff --git a/packages/bbob-vue3/.npmignore b/packages/bbob-vue3/.npmignore index 65922b56..c1046191 100644 --- a/packages/bbob-vue3/.npmignore +++ b/packages/bbob-vue3/.npmignore @@ -1,4 +1,4 @@ -package-lock.json +pnpm-lock.yaml coverage src !dist diff --git a/packages/bbob-vue3/package.json b/packages/bbob-vue3/package.json index f5b7d82b..6297e86a 100644 --- a/packages/bbob-vue3/package.json +++ b/packages/bbob-vue3/package.json @@ -9,17 +9,20 @@ "bbob" ], "dependencies": { - "@bbob/core": "workspace:*", - "@bbob/html": "workspace:*", - "@bbob/plugin-helper": "workspace:*" + "@bbob/core": "*", + "@bbob/html": "*", + "@bbob/plugin-helper": "*" }, "peerDependencies": { "vue": "3.x" }, "devDependencies": { - "@bbob/preset-vue": "workspace:*", + "@bbob/preset-vue": "*", "@testing-library/vue": "7.0.0", "@vue/compiler-sfc": "3.4.21", + "@vue/runtime-dom": "3.4.21", + "@vue/runtime-core": "3.4.21", + "@vue/compiler-dom": "3.4.21", "@vue/test-utils": "2.4.5", "vue": "3.4.21" }, @@ -28,6 +31,16 @@ "jsnext:main": "es/index.js", "browser": "dist/index.js", "browserName": "BbobVue3", + "types": "types/index.d.ts", + "exports": { + ".": { + "types": "./types/index.d.ts", + "import": "./es/index.js", + "require": "./lib/index.js", + "browser": "./dist/index.min.js", + "umd": "./dist/index.min.js" + } + }, "homepage": "https://github.com/JiLiZART/bbob", "author": "Nikolay Kostyurin ", "license": "MIT", @@ -39,19 +52,22 @@ "url": "git://github.com/JiLiZART/bbob.git" }, "scripts": { - "build:commonjs": "../../scripts/pkg-task build-commonjs", - "build:es": "../../scripts/pkg-task build-es", - "build:umd": "../../scripts/pkg-task build-umd", - "build": "npm run build:commonjs && npm run build:es && npm run build:umd", - "test": "../../scripts/pkg-task test", - "cover": "../../scripts/pkg-task cover", - "lint": "../../scripts/pkg-task lint", - "size": "../../scripts/pkg-task size", - "bundlesize": "../../scripts/pkg-task bundlesize" + "build:commonjs": "pkg-task", + "build:es": "pkg-task", + "build:umd": "pkg-task", + "build": "pkg-task", + "test": "pkg-task", + "cover": "pkg-task", + "lint": "pkg-task", + "size": "pkg-task", + "bundlesize": "pkg-task", + "types": "pkg-task", + "prepublishOnly": "npm run build" }, "size-limit": [ { - "path": "lib/index.js" + "path": "./dist/index.min.js", + "size": "8 KB" } ], "bundlesize": [ diff --git a/packages/bbob-vue3/src/Component.js b/packages/bbob-vue3/src/Component.js deleted file mode 100644 index 4b0fbc35..00000000 --- a/packages/bbob-vue3/src/Component.js +++ /dev/null @@ -1,33 +0,0 @@ -import { defineComponent, h } from 'vue'; - -import { render } from './render'; - -const Component = defineComponent({ - props: { - container: { - type: String, - default: 'span', - }, - plugins: { - type: Array, - }, - options: { - type: Object, - }, - }, - - render(props) { - if (this.$slots.default) { - const source = this.$slots.default().reduce((acc, vnode) => acc + vnode.children, ''); - - return h( - props.container, - render(h, source, props.plugins, props.options), - ); - } - - return null; - }, -}); - -export default Component; diff --git a/packages/bbob-vue3/src/Component.ts b/packages/bbob-vue3/src/Component.ts new file mode 100644 index 00000000..bbff78b4 --- /dev/null +++ b/packages/bbob-vue3/src/Component.ts @@ -0,0 +1,47 @@ +import { defineComponent, h, VNode } from "vue"; +import { render } from "./render"; + +import type { BBobPlugins, BBobCoreOptions } from "@bbob/core"; + +type VueComponentProps = { + container: string; + componentProps: Record; + plugins?: BBobPlugins; + options?: BBobCoreOptions; +}; + +const Component = defineComponent({ + props: { + container: { + type: String, + default: "span", + }, + plugins: { + type: Array, + }, + options: { + type: Object, + }, + }, + + render(props: VueComponentProps) { + if (this.$slots.default) { + const source = this.$slots + .default() + .reduce((acc: VNode, vnode: VNode) => { + if (typeof acc === "string") { + return acc + vnode.children; + } + }, ""); + + return h( + props.container, + render(h, source, props.plugins, props.options) + ); + } + + return null; + }, +}); + +export default Component; diff --git a/packages/bbob-vue3/src/index.js b/packages/bbob-vue3/src/index.js deleted file mode 100644 index f92d2be3..00000000 --- a/packages/bbob-vue3/src/index.js +++ /dev/null @@ -1,10 +0,0 @@ -import Component from './Component'; - -export { render } from './render'; -export { Component }; - -function install(Vue) { - Vue.component('bbob-bbcode', Component); -} - -export default install; diff --git a/packages/bbob-vue3/src/index.ts b/packages/bbob-vue3/src/index.ts new file mode 100644 index 00000000..b5572e83 --- /dev/null +++ b/packages/bbob-vue3/src/index.ts @@ -0,0 +1,11 @@ +import type { App } from "vue"; +import Component from "./Component"; + +export { render } from "./render"; +export { Component }; + +function install(Vue: App) { + Vue.component("bbob-bbcode", Component); +} + +export default install; diff --git a/packages/bbob-vue3/src/render.js b/packages/bbob-vue3/src/render.js deleted file mode 100644 index e71be642..00000000 --- a/packages/bbob-vue3/src/render.js +++ /dev/null @@ -1,52 +0,0 @@ -/* eslint-disable no-use-before-define,import/prefer-default-export */ -import core from '@bbob/core'; -import * as html from '@bbob/html'; - -import { isStringNode, isTagNode } from '@bbob/plugin-helper'; - -const toAST = (source, plugins = [], options = {}) => core(plugins) - .process(source, { - ...options, - render: (input) => html.render(input, { stripTags: true }), - }).tree; - -const isContentEmpty = (content) => (!content || content.length === 0); - -function tagToVueNode(createElement, node, index) { - const { class: className, style, ...domProps } = node.attrs || {}; - - return createElement( - node.tag, - { - key: index, - class: className, - style, - ...domProps, - }, - isContentEmpty(node.content) ? null : renderToVueNodes(createElement, node.content), - ); -} - -function renderToVueNodes(createElement, nodes) { - return [].concat(nodes).reduce((arr, node, index) => { - if (isTagNode(node)) { - arr.push(tagToVueNode(createElement, node, index)); - } else if (isStringNode(node)) { - arr.push(node); - } - - return arr; - }, []); -} - -/** - * Converts string to Vue 3 VNodes - * @param createElement {CreateElement} - * @param source {String} - * @param plugins {Array} - * @param options {Object} - * @returns {Array} - */ -export function render(createElement, source, plugins, options) { - return renderToVueNodes(createElement, toAST(source, plugins, options)); -} diff --git a/packages/bbob-vue3/src/render.ts b/packages/bbob-vue3/src/render.ts new file mode 100644 index 00000000..90517a80 --- /dev/null +++ b/packages/bbob-vue3/src/render.ts @@ -0,0 +1,90 @@ +/* eslint-disable no-use-before-define,import/prefer-default-export */ +import core, { BBobCoreOptions, BBobPlugins } from "@bbob/core"; +import * as html from "@bbob/html"; +import { h, VNodeArrayChildren } from "vue"; + +import { + TagNode, + TagNodeTree, + isStringNode, + isTagNode, +} from "@bbob/plugin-helper"; + +type CreateElement = typeof h; + +const toAST = ( + source: string, + plugins?: BBobPlugins, + options?: BBobCoreOptions +) => + core(plugins).process(source, { + ...options, + render: (input) => html.render(input, { stripTags: true }), + }).tree; + +const isContentEmpty = (content: TagNodeTree) => { + if (!content) { + return true; + } + + if (typeof content === "number") { + return String(content).length === 0; + } + + return Array.isArray(content) ? content.length === 0 : !content; +}; + +function tagToVueNode( + createElement: CreateElement, + node: TagNode, + index: number +) { + const { class: className, style, ...domProps } = node.attrs; + + return createElement( + node.tag, + { + key: index, + class: className, + style, + ...domProps, + }, + isContentEmpty(node.content) ? undefined : renderToVueNodes(createElement, node.content), + ); +} + +function renderToVueNodes( + createElement: CreateElement, + nodes: TagNodeTree +): VNodeArrayChildren { + if (Array.isArray(nodes) && nodes.length) { + return nodes.reduce((arr, node, index) => { + if (isTagNode(node)) { + arr.push(tagToVueNode(createElement, node, index)); + } else if (isStringNode(node)) { + arr.push(String(node)); + } + + return arr; + }, [] as VNodeArrayChildren); + } + + return []; +} + +/** + * Converts string to Vue 3 VNodes + * @param createElement {CreateElement} + * @param source {String} + * @param plugins {Array} + * @param options {Object} + * @returns {Array} + */ +export function render( + createElement: CreateElement, + source: string, + plugins?: BBobPlugins, + options?: BBobCoreOptions +) { + return renderToVueNodes(createElement, toAST(source, plugins, options)); +} diff --git a/packages/bbob-vue3/test/render.test.js b/packages/bbob-vue3/test/render.test.js index 6cfc10cf..32deffda 100644 --- a/packages/bbob-vue3/test/render.test.js +++ b/packages/bbob-vue3/test/render.test.js @@ -22,7 +22,7 @@ describe('@bbob/vue3 render', () => { expect(html).toStrictEqual([ { - "children": null, + "children": undefined, "props": { "class": undefined, "key": 0, "style": undefined }, "tagName": "b" } diff --git a/packages/bbob-vue3/tsconfig.json b/packages/bbob-vue3/tsconfig.json new file mode 100644 index 00000000..385f1a81 --- /dev/null +++ b/packages/bbob-vue3/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "baseUrl": ".", + "outDir": "./types" + }, + "include": [ + "./src/**/*" + ] +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6220555e..91a79d52 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -19,6 +19,9 @@ importers: .: devDependencies: + '@bbob/scripts': + specifier: '*' + version: link:scripts '@changesets/changelog-github': specifier: 0.4.8 version: 0.4.8 @@ -31,36 +34,51 @@ importers: '@commitlint/config-conventional': specifier: 13.2.0 version: 13.2.0 - '@nrwl/cli': - specifier: 15.3.3 - version: 15.3.3(@swc/core@1.3.16) + '@nx/eslint': + specifier: 18.3.3 + version: 18.3.3(@swc/core@1.3.107)(@types/node@20.4.5)(nx@18.3.3) + '@nx/jest': + specifier: 18.3.3 + version: 18.3.3(@swc/core@1.3.107)(@types/node@20.4.5)(nx@18.3.3)(typescript@5.1.6) + '@nx/rollup': + specifier: 18.3.3 + version: 18.3.3(@babel/core@7.23.2)(@swc/core@1.3.107)(@types/node@20.4.5)(nx@18.3.3)(typescript@5.1.6) '@rollup/plugin-commonjs': - specifier: 23.0.2 - version: 23.0.2(rollup@3.3.0) + specifier: 25.0.7 + version: 25.0.7(rollup@4.1.5) '@rollup/plugin-node-resolve': - specifier: 15.0.1 - version: 15.0.1(rollup@3.3.0) + specifier: 15.2.3 + version: 15.2.3(rollup@4.1.5) '@rollup/plugin-replace': - specifier: 5.0.1 - version: 5.0.1(rollup@3.3.0) + specifier: 5.0.5 + version: 5.0.5(rollup@4.1.5) '@size-limit/preset-small-lib': - specifier: 6.0.1 - version: 6.0.1(@swc/core@1.3.16)(size-limit@6.0.1) + specifier: 11.0.1 + version: 11.0.1(size-limit@11.0.1) '@swc/cli': - specifier: 0.1.57 - version: 0.1.57(@swc/core@1.3.16) + specifier: 0.3.10 + version: 0.3.10(@swc/core@1.3.107) '@swc/core': - specifier: 1.3.16 - version: 1.3.16 + specifier: 1.3.107 + version: 1.3.107 '@swc/jest': - specifier: 0.2.23 - version: 0.2.23(@swc/core@1.3.16) + specifier: 0.2.36 + version: 0.2.36(@swc/core@1.3.107) '@testing-library/dom': specifier: 9.3.1 version: 9.3.1 '@testing-library/jest-dom': specifier: 6.1.2 - version: 6.1.2(jest@29.5.0) + version: 6.1.2(@types/jest@29.5.3)(jest@29.7.0) + '@types/jest': + specifier: 29.5.3 + version: 29.5.3 + '@types/node': + specifier: 20.4.5 + version: 20.4.5 + '@types/react': + specifier: 18.2.18 + version: 18.2.18 bundlesize2: specifier: 0.0.31 version: 0.0.31 @@ -78,7 +96,7 @@ importers: version: 2.24.2(eslint@7.32.0) eslint-plugin-jest: specifier: 25.0.1 - version: 25.0.1(eslint@7.32.0)(typescript@4.9.5) + version: 25.0.1(eslint@7.32.0)(typescript@5.1.6) eslint-plugin-jsx-a11y: specifier: 6.4.1 version: 6.4.1(eslint@7.32.0) @@ -92,14 +110,14 @@ importers: specifier: 7.0.2 version: 7.0.2 jest: - specifier: 29.5.0 - version: 29.5.0 + specifier: 29.7.0 + version: 29.7.0(@types/node@20.4.5) jest-environment-jsdom: - specifier: 29.6.4 - version: 29.6.4 + specifier: 29.7.0 + version: 29.7.0 lerna: - specifier: 6.0.3 - version: 6.0.3(@swc/core@1.3.16) + specifier: 7.4.1 + version: 7.4.1(@swc/core@1.3.107) lint-staged: specifier: 11.2.3 version: 11.2.3 @@ -107,32 +125,38 @@ importers: specifier: 3.0.0 version: 3.0.0 nx: - specifier: 15.3.3 - version: 15.3.3(@swc/core@1.3.16) + specifier: 18.3.3 + version: 18.3.3(@swc/core@1.3.107) posthtml-render: - specifier: ^3.0.0 + specifier: 3.0.0 version: 3.0.0 rimraf: - specifier: ^3.0.2 - version: 3.0.2 + specifier: 5.0.5 + version: 5.0.5 rollup: - specifier: 3.3.0 - version: 3.3.0 + specifier: 4.1.5 + version: 4.1.5 rollup-plugin-gzip: specifier: 3.1.0 - version: 3.1.0(rollup@3.3.0) + version: 3.1.0(rollup@4.1.5) rollup-plugin-swc3: - specifier: 0.7.0 - version: 0.7.0(@swc/core@1.3.16)(rollup@3.3.0) + specifier: 0.11.0 + version: 0.11.0(@swc/core@1.3.107)(rollup@4.1.5) size-limit: - specifier: 6.0.1 - version: 6.0.1 + specifier: 11.0.1 + version: 11.0.1 + typescript: + specifier: 5.1.6 + version: 5.1.6 benchmark: dependencies: '@bbob/parser': - specifier: workspace:* + specifier: '*' version: link:../packages/bbob-parser + '@bbob/plugin-helper': + specifier: '*' + version: link:../packages/bbob-plugin-helper benchmark: specifier: 2.1.4 version: 2.1.4 @@ -163,10 +187,10 @@ importers: devDependencies: '@vue/cli-plugin-babel': specifier: 5.0.8 - version: 5.0.8(@swc/core@1.3.16)(@vue/cli-service@5.0.8)(core-js@3.26.1)(vue@2.7.16) + version: 5.0.8(@swc/core@1.3.107)(@vue/cli-service@5.0.8)(core-js@3.26.1)(vue@2.7.16) '@vue/cli-service': specifier: 5.0.8 - version: 5.0.8(@swc/core@1.3.16)(vue-template-compiler@2.7.14)(vue@2.7.16) + version: 5.0.8(@swc/core@1.3.107)(vue-template-compiler@2.7.14)(vue@2.7.16) vue-template-compiler: specifier: 2.7.14 version: 2.7.14 @@ -174,87 +198,104 @@ importers: packages/bbob-cli: dependencies: '@bbob/html': - specifier: workspace:* + specifier: '*' version: link:../bbob-html '@bbob/preset-html5': - specifier: workspace:* + specifier: '*' version: link:../bbob-preset-html5 - commander: - specifier: ^2.15.1 - version: 2.20.3 + devDependencies: + '@types/node': + specifier: 20.11.30 + version: 20.11.30 packages/bbob-core: dependencies: '@bbob/parser': - specifier: workspace:* + specifier: '*' version: link:../bbob-parser + '@bbob/plugin-helper': + specifier: '*' + version: link:../bbob-plugin-helper packages/bbob-html: dependencies: '@bbob/core': - specifier: workspace:* + specifier: '*' version: link:../bbob-core '@bbob/plugin-helper': - specifier: workspace:* + specifier: '*' version: link:../bbob-plugin-helper packages/bbob-parser: dependencies: '@bbob/plugin-helper': - specifier: workspace:* + specifier: '*' version: link:../bbob-plugin-helper packages/bbob-plugin-helper: {} - packages/bbob-preset: {} + packages/bbob-preset: + dependencies: + '@bbob/core': + specifier: '*' + version: link:../bbob-core + '@bbob/plugin-helper': + specifier: '*' + version: link:../bbob-plugin-helper packages/bbob-preset-html5: dependencies: '@bbob/plugin-helper': - specifier: workspace:* + specifier: '*' version: link:../bbob-plugin-helper '@bbob/preset': - specifier: workspace:* + specifier: '*' version: link:../bbob-preset devDependencies: + '@bbob/core': + specifier: '*' + version: link:../bbob-core '@bbob/html': - specifier: workspace:* + specifier: '*' version: link:../bbob-html packages/bbob-preset-react: dependencies: + '@bbob/preset': + specifier: '*' + version: link:../bbob-preset '@bbob/preset-html5': - specifier: workspace:* + specifier: '*' version: link:../bbob-preset-html5 devDependencies: '@bbob/core': - specifier: workspace:* + specifier: '*' version: link:../bbob-core packages/bbob-preset-vue: dependencies: + '@bbob/preset': + specifier: '*' + version: link:../bbob-preset '@bbob/preset-html5': - specifier: workspace:* + specifier: '*' version: link:../bbob-preset-html5 devDependencies: '@bbob/core': - specifier: workspace:* + specifier: '*' version: link:../bbob-core packages/bbob-react: dependencies: '@bbob/core': - specifier: workspace:* + specifier: '*' version: link:../bbob-core '@bbob/html': - specifier: workspace:* + specifier: '*' version: link:../bbob-html '@bbob/plugin-helper': - specifier: workspace:* + specifier: '*' version: link:../bbob-plugin-helper - prop-types: - specifier: '> 15.0' - version: 15.8.1 devDependencies: '@bbob/preset-react': specifier: ^3.0.2 @@ -265,6 +306,9 @@ importers: '@testing-library/react': specifier: 13.x version: 13.4.0(react-dom@18.2.0)(react@18.2.0) + '@types/react': + specifier: 18.x + version: 18.2.18 react: specifier: 18.x version: 18.2.0 @@ -275,17 +319,17 @@ importers: packages/bbob-vue2: dependencies: '@bbob/core': - specifier: workspace:* + specifier: '*' version: link:../bbob-core '@bbob/html': - specifier: workspace:* + specifier: '*' version: link:../bbob-html '@bbob/plugin-helper': - specifier: workspace:* + specifier: '*' version: link:../bbob-plugin-helper devDependencies: '@bbob/preset-vue': - specifier: workspace:* + specifier: '*' version: link:../bbob-preset-vue '@testing-library/vue': specifier: 5.9.0 @@ -300,36 +344,41 @@ importers: packages/bbob-vue3: dependencies: '@bbob/core': - specifier: workspace:* + specifier: '*' version: link:../bbob-core '@bbob/html': - specifier: workspace:* + specifier: '*' version: link:../bbob-html '@bbob/plugin-helper': - specifier: workspace:* + specifier: '*' version: link:../bbob-plugin-helper devDependencies: '@bbob/preset-vue': - specifier: workspace:* + specifier: '*' version: link:../bbob-preset-vue '@testing-library/vue': specifier: 7.0.0 - version: 7.0.0(@vue/compiler-sfc@3.4.21)(typescript@4.9.5)(vue@3.4.21) + version: 7.0.0(@vue/compiler-sfc@3.4.21)(typescript@5.1.6)(vue@3.4.21) + '@vue/compiler-dom': + specifier: 3.4.21 + version: 3.4.21 '@vue/compiler-sfc': specifier: 3.4.21 version: 3.4.21 + '@vue/runtime-core': + specifier: 3.4.21 + version: 3.4.21 + '@vue/runtime-dom': + specifier: 3.4.21 + version: 3.4.21 '@vue/test-utils': specifier: 2.4.5 - version: 2.4.5(typescript@4.9.5) + version: 2.4.5(typescript@5.1.6) vue: specifier: 3.4.21 - version: 3.4.21(typescript@4.9.5) + version: 3.4.21(typescript@5.1.6) - scripts: - dependencies: - commander: - specifier: 8.2.0 - version: 8.2.0 + scripts: {} packages: @@ -804,7 +853,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 dev: true /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.2): @@ -993,7 +1042,17 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.23.2): + resolution: {integrity: sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.24.0 dev: true /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.23.2): @@ -1512,6 +1571,19 @@ packages: '@babel/helper-plugin-utils': 7.24.0 dev: true + /@babel/plugin-transform-typescript@7.24.1(@babel/core@7.23.2): + resolution: {integrity: sha512-liYSESjX2fZ7JyBFkYG78nfvHlMKE6IpNdTVnxmlYUR+j5ZLsitFbaAE+eJSK2zPPkNWNw4mXL51rQ8WrvdK0w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.23.2) + dev: true + /@babel/plugin-transform-unicode-escapes@7.24.1(@babel/core@7.23.2): resolution: {integrity: sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==} engines: {node: '>=6.9.0'} @@ -1657,6 +1729,20 @@ packages: esutils: 2.0.3 dev: true + /@babel/preset-typescript@7.24.1(@babel/core@7.23.2): + resolution: {integrity: sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.23.2) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.23.2) + '@babel/plugin-transform-typescript': 7.24.1(@babel/core@7.23.2) + dev: true + /@babel/regjsgen@0.8.0: resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} dev: true @@ -2095,16 +2181,18 @@ packages: chalk: 4.1.2 dev: true + /@cspotcode/source-map-support@0.8.1: + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + dev: true + /@discoveryjs/json-ext@0.5.7: resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} engines: {node: '>=10.0.0'} dev: true - /@discoveryjs/natural-compare@1.1.0: - resolution: {integrity: sha512-yuctPJs5lRXoI8LkpVZGAV6n+DKOuEsfpfcIDQ8ZjWHwazqk1QjBc4jMlof0UlZHyUqv4dwsOTooMiAmtzvwXA==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} - dev: true - /@endemolshinegroup/cosmiconfig-typescript-loader@3.0.2(cosmiconfig@7.1.0)(typescript@4.9.5): resolution: {integrity: sha512-QRVtqJuS1mcT56oHpVegkKBlgtWjXw/gHNWO3eL9oyB5Sc7HBoc2OLG/nYpVfT/Jejvo3NUrD0Udk7XgoyDKkA==} engines: {node: '>=10.0.0'} @@ -2120,140 +2208,396 @@ packages: - typescript dev: true - /@eslint/eslintrc@0.4.3: - resolution: {integrity: sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==} - engines: {node: ^10.12.0 || >=12.0.0} - dependencies: - ajv: 6.12.6 - debug: 4.3.4(supports-color@8.1.1) - espree: 7.3.1 - globals: 13.23.0 - ignore: 4.0.6 - import-fresh: 3.3.0 - js-yaml: 3.14.1 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color + /@esbuild/aix-ppc64@0.19.12: + resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + requiresBuild: true dev: true + optional: true - /@fastify/deepmerge@1.3.0: - resolution: {integrity: sha512-J8TOSBq3SoZbDhM9+R/u77hP93gz/rajSA+K2kGyijPpORPWUXHUpTaleoj+92As0S9uPRP7Oi8IqMf0u+ro6A==} + /@esbuild/android-arm64@0.19.12: + resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true dev: true + optional: true - /@gar/promisify@1.1.3: - resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} + /@esbuild/android-arm@0.19.12: + resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true dev: true + optional: true - /@hapi/hoek@9.3.0: - resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} + /@esbuild/android-x64@0.19.12: + resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true dev: true + optional: true - /@hapi/topo@5.1.0: - resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} - dependencies: - '@hapi/hoek': 9.3.0 + /@esbuild/darwin-arm64@0.19.12: + resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true dev: true + optional: true - /@humanwhocodes/config-array@0.5.0: - resolution: {integrity: sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==} - engines: {node: '>=10.10.0'} - dependencies: - '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.4(supports-color@8.1.1) - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color + /@esbuild/darwin-x64@0.19.12: + resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true dev: true + optional: true - /@humanwhocodes/object-schema@1.2.1: - resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + /@esbuild/freebsd-arm64@0.19.12: + resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true dev: true + optional: true - /@hutson/parse-repository-url@3.0.2: - resolution: {integrity: sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==} - engines: {node: '>=6.9.0'} + /@esbuild/freebsd-x64@0.19.12: + resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true dev: true + optional: true - /@isaacs/cliui@8.0.2: - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + /@esbuild/linux-arm64@0.19.12: + resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} engines: {node: '>=12'} - dependencies: - string-width: 5.1.2 - string-width-cjs: /string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: /strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: /wrap-ansi@7.0.0 + cpu: [arm64] + os: [linux] + requiresBuild: true dev: true + optional: true - /@isaacs/string-locale-compare@1.1.0: - resolution: {integrity: sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==} + /@esbuild/linux-arm@0.19.12: + resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true dev: true + optional: true - /@istanbuljs/load-nyc-config@1.1.0: - resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} - engines: {node: '>=8'} - dependencies: - camelcase: 5.3.1 - find-up: 4.1.0 - get-package-type: 0.1.0 - js-yaml: 3.14.1 - resolve-from: 5.0.0 + /@esbuild/linux-ia32@0.19.12: + resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true dev: true + optional: true - /@istanbuljs/schema@0.1.3: - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} - engines: {node: '>=8'} + /@esbuild/linux-loong64@0.19.12: + resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true dev: true + optional: true - /@jest/console@29.7.0: - resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.6.3 - '@types/node': 20.8.7 - chalk: 4.1.2 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - slash: 3.0.0 + /@esbuild/linux-mips64el@0.19.12: + resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true dev: true + optional: true - /@jest/core@29.7.0: - resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/console': 29.7.0 - '@jest/reporters': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.8.7 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - ci-info: 3.9.0 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.8.7) - jest-haste-map: 29.7.0 - jest-message-util: 29.7.0 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-resolve-dependencies: 29.7.0 - jest-runner: 29.7.0 - jest-runtime: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - jest-watcher: 29.7.0 - micromatch: 4.0.5 - pretty-format: 29.7.0 + /@esbuild/linux-ppc64@0.19.12: + resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64@0.19.12: + resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x@0.19.12: + resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64@0.19.12: + resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64@0.19.12: + resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64@0.19.12: + resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64@0.19.12: + resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64@0.19.12: + resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.19.12: + resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64@0.19.12: + resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.57.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@eslint-community/regexpp@4.10.0: + resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true + + /@eslint/eslintrc@0.4.3: + resolution: {integrity: sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4(supports-color@8.1.1) + espree: 7.3.1 + globals: 13.23.0 + ignore: 4.0.6 + import-fresh: 3.3.0 + js-yaml: 3.14.1 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@eslint/eslintrc@2.1.4: + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4(supports-color@8.1.1) + espree: 9.6.1 + globals: 13.23.0 + ignore: 5.2.4 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@eslint/js@8.57.0: + resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@fastify/deepmerge@1.3.0: + resolution: {integrity: sha512-J8TOSBq3SoZbDhM9+R/u77hP93gz/rajSA+K2kGyijPpORPWUXHUpTaleoj+92As0S9uPRP7Oi8IqMf0u+ro6A==} + dev: true + + /@hapi/hoek@9.3.0: + resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} + dev: true + + /@hapi/topo@5.1.0: + resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} + dependencies: + '@hapi/hoek': 9.3.0 + dev: true + + /@humanwhocodes/config-array@0.11.14: + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 2.0.2 + debug: 4.3.4(supports-color@8.1.1) + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/config-array@0.5.0: + resolution: {integrity: sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4(supports-color@8.1.1) + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + dev: true + + /@humanwhocodes/object-schema@1.2.1: + resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + dev: true + + /@humanwhocodes/object-schema@2.0.2: + resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} + dev: true + + /@hutson/parse-repository-url@3.0.2: + resolution: {integrity: sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==} + engines: {node: '>=6.9.0'} + dev: true + + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + string-width-cjs: /string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: /strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 + dev: true + + /@istanbuljs/load-nyc-config@1.1.0: + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 + dev: true + + /@istanbuljs/schema@0.1.3: + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + dev: true + + /@jest/console@29.7.0: + resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/node': 20.11.30 + chalk: 4.1.2 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + dev: true + + /@jest/core@29.7.0: + resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/console': 29.7.0 + '@jest/reporters': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.11.30 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.9.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 29.7.0 + jest-config: 29.7.0(@types/node@20.11.30) + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-resolve-dependencies: 29.7.0 + jest-runner: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + jest-watcher: 29.7.0 + micromatch: 4.0.5 + pretty-format: 29.7.0 slash: 3.0.0 strip-ansi: 6.0.1 transitivePeerDependencies: @@ -2262,11 +2606,11 @@ packages: - ts-node dev: true - /@jest/create-cache-key-function@27.5.1: - resolution: {integrity: sha512-dmH1yW+makpTSURTy8VzdUwFnfQh1G8R+DxO2Ho2FFmBbKFEVm+3jWdvFhE2VqB/LATCTokkP0dotjyQyw5/AQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /@jest/create-cache-key-function@29.7.0: + resolution: {integrity: sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 27.5.1 + '@jest/types': 29.6.3 dev: true /@jest/environment@29.7.0: @@ -2275,7 +2619,7 @@ packages: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.8.7 + '@types/node': 20.11.30 jest-mock: 29.7.0 dev: true @@ -2302,7 +2646,7 @@ packages: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.8.7 + '@types/node': 20.11.30 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -2334,8 +2678,8 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.20 - '@types/node': 20.8.7 + '@jridgewell/trace-mapping': 0.3.25 + '@types/node': 20.11.30 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 @@ -2368,7 +2712,7 @@ packages: resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jridgewell/trace-mapping': 0.3.20 + '@jridgewell/trace-mapping': 0.3.25 callsites: 3.1.0 graceful-fs: 4.2.11 dev: true @@ -2399,7 +2743,7 @@ packages: dependencies: '@babel/core': 7.23.2 '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.20 + '@jridgewell/trace-mapping': 0.3.25 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 convert-source-map: 2.0.0 @@ -2416,17 +2760,6 @@ packages: - supports-color dev: true - /@jest/types@27.5.1: - resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@types/istanbul-lib-coverage': 2.0.5 - '@types/istanbul-reports': 3.0.3 - '@types/node': 20.8.7 - '@types/yargs': 16.0.7 - chalk: 4.1.2 - dev: true - /@jest/types@29.6.3: resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -2434,7 +2767,7 @@ packages: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.5 '@types/istanbul-reports': 3.0.3 - '@types/node': 20.8.7 + '@types/node': 20.11.30 '@types/yargs': 17.0.29 chalk: 4.1.2 dev: true @@ -2497,954 +2830,783 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true + /@jridgewell/trace-mapping@0.3.9: + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + /@leichtgewicht/ip-codec@2.0.4: resolution: {integrity: sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==} dev: true - /@lerna/add@6.0.3: - resolution: {integrity: sha512-EM9hJExG6bV4Hg+XpHTg5nGCuZl3pUEdbYLtyXfMUj/7fpCrUkxB0oESIVhFINVbxHm2pdnUfOxPDHwFSyWBig==} - engines: {node: ^14.15.0 || >=16.0.0} + /@lerna/child-process@7.4.1: + resolution: {integrity: sha512-Bx1cRCZcVcWoz+atDQc4CSVzGuEgGJPOpIAXjQbBEA2cX5nqIBWdbye8eHu31En/F03aH9BhpNEJghs6wy4iTg==} + engines: {node: '>=16.0.0'} dependencies: - '@lerna/bootstrap': 6.0.3 - '@lerna/command': 6.0.3 - '@lerna/filter-options': 6.0.3 - '@lerna/npm-conf': 6.0.3 - '@lerna/validation-error': 6.0.3 - dedent: 0.7.0 - npm-package-arg: 8.1.1 - p-map: 4.0.0 - pacote: 13.6.2 - semver: 7.5.4 - transitivePeerDependencies: - - bluebird - - supports-color + chalk: 4.1.2 + execa: 5.1.1 + strong-log-transformer: 2.1.0 dev: true - /@lerna/bootstrap@6.0.3: - resolution: {integrity: sha512-51eT07tAiH1oca9dNrrLXXH6PJZFY4zKEYDqLkx+zMCG/LsIUnzEfy4JBe1GXbFasXfM24pG8wLKoj1sj1CR3A==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/command': 6.0.3 - '@lerna/filter-options': 6.0.3 - '@lerna/has-npm-version': 6.0.3 - '@lerna/npm-install': 6.0.3 - '@lerna/package-graph': 6.0.3 - '@lerna/pulse-till-done': 6.0.3 - '@lerna/rimraf-dir': 6.0.3 - '@lerna/run-lifecycle': 6.0.3 - '@lerna/run-topologically': 6.0.3 - '@lerna/symlink-binary': 6.0.3 - '@lerna/symlink-dependencies': 6.0.3 - '@lerna/validation-error': 6.0.3 - '@npmcli/arborist': 5.3.0 - dedent: 0.7.0 - get-port: 5.1.1 - multimatch: 5.0.0 - npm-package-arg: 8.1.1 + /@lerna/create@7.4.1(@swc/core@1.3.107)(typescript@5.1.6): + resolution: {integrity: sha512-zPO9GyWceRimtMD+j+aQ8xJgNPYn/Q/SzHf4wYN+4Rj5nrFKMyX+Et7FbWgUNpj0dRgyCCKBDYmTB7xQVVq4gQ==} + engines: {node: '>=16.0.0'} + dependencies: + '@lerna/child-process': 7.4.1 + '@npmcli/run-script': 6.0.2 + '@nx/devkit': 16.10.0(nx@16.10.0) + '@octokit/plugin-enterprise-rest': 6.0.1 + '@octokit/rest': 19.0.11 + byte-size: 8.1.1 + chalk: 4.1.0 + clone-deep: 4.0.1 + cmd-shim: 6.0.1 + columnify: 1.6.0 + conventional-changelog-core: 5.0.1 + conventional-recommended-bump: 7.0.1 + cosmiconfig: 8.3.6(typescript@5.1.6) + dedent: 0.7.0 + execa: 5.0.0 + fs-extra: 11.2.0 + get-stream: 6.0.0 + git-url-parse: 13.1.0 + glob-parent: 5.1.2 + globby: 11.1.0 + graceful-fs: 4.2.11 + has-unicode: 2.0.1 + ini: 1.3.8 + init-package-json: 5.0.0 + inquirer: 8.2.6 + is-ci: 3.0.1 + is-stream: 2.0.0 + js-yaml: 4.1.0 + libnpmpublish: 7.3.0 + load-json-file: 6.2.0 + lodash: 4.17.21 + make-dir: 4.0.0 + minimatch: 3.0.5 + multimatch: 5.0.0 + node-fetch: 2.6.7 + npm-package-arg: 8.1.1 + npm-packlist: 5.1.1 + npm-registry-fetch: 14.0.5 npmlog: 6.0.2 + nx: 16.10.0(@swc/core@1.3.107) p-map: 4.0.0 p-map-series: 2.1.0 - p-waterfall: 2.1.1 + p-queue: 6.6.2 + p-reduce: 2.1.0 + pacote: 15.2.0 + pify: 5.0.0 + read-cmd-shim: 4.0.0 + read-package-json: 6.0.4 + resolve-from: 5.0.0 + rimraf: 4.4.1 semver: 7.5.4 + signal-exit: 3.0.7 + slash: 3.0.0 + ssri: 9.0.1 + strong-log-transformer: 2.1.0 + tar: 6.1.11 + temp-dir: 1.0.0 + upath: 2.0.1 + uuid: 9.0.1 + validate-npm-package-license: 3.0.4 + validate-npm-package-name: 5.0.0 + write-file-atomic: 5.0.1 + write-pkg: 4.0.0 + yargs: 16.2.0 + yargs-parser: 20.2.4 transitivePeerDependencies: + - '@swc-node/register' + - '@swc/core' - bluebird + - debug + - encoding - supports-color + - typescript dev: true - /@lerna/changed@6.0.3: - resolution: {integrity: sha512-VhKl/vVnrY12z2q1it2FkPkRwC3kyZh++kWMNDbMuUqH1kDHuw7KWJjPw6H4LDpoFWj4Q0hPcNRXxJpNiRWD1g==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/collect-updates': 6.0.3 - '@lerna/command': 6.0.3 - '@lerna/listable': 6.0.3 - '@lerna/output': 6.0.3 - dev: true - - /@lerna/check-working-tree@6.0.3: - resolution: {integrity: sha512-ulAilI5AHvSVluH4QdcRPBbGH6lKU6OARfJFIgFYm8KoPyMESygYIBKBKuTUuyzfp5DOsASq2NiumBW4rpC7hg==} - engines: {node: ^14.15.0 || >=16.0.0} + /@manypkg/find-root@1.1.0: + resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} dependencies: - '@lerna/collect-uncommitted': 6.0.3 - '@lerna/describe-ref': 6.0.3 - '@lerna/validation-error': 6.0.3 + '@babel/runtime': 7.23.2 + '@types/node': 12.20.55 + find-up: 4.1.0 + fs-extra: 8.1.0 dev: true - /@lerna/child-process@6.0.3: - resolution: {integrity: sha512-WfFwWdtGA0wvbyq7FB78Gvkd5mVjCGhRoLQY0FIGPQrmZBv3uy7kz5KbRKJlEmoIhVUnFbbV1xURxdqLzNrxoA==} - engines: {node: ^14.15.0 || >=16.0.0} + /@manypkg/get-packages@1.1.3: + resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} dependencies: - chalk: 4.1.2 - execa: 5.1.1 - strong-log-transformer: 2.1.0 + '@babel/runtime': 7.23.2 + '@changesets/types': 4.1.0 + '@manypkg/find-root': 1.1.0 + fs-extra: 8.1.0 + globby: 11.1.0 + read-yaml-file: 1.1.0 dev: true - /@lerna/clean@6.0.3: - resolution: {integrity: sha512-4H+leVVVhwnc/GBOkFBIrLBia+MRm2ETZyXdCNckCJZ/e5tm6XHJLprGMSP2QwhJ0H20r+ciiQGzo3TGjQAEwQ==} - engines: {node: ^14.15.0 || >=16.0.0} + /@mole-inc/bin-wrapper@8.0.1: + resolution: {integrity: sha512-sTGoeZnjI8N4KS+sW2AN95gDBErhAguvkw/tWdCjeM8bvxpz5lqrnd0vOJABA1A+Ic3zED7PYoLP/RANLgVotA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: - '@lerna/command': 6.0.3 - '@lerna/filter-options': 6.0.3 - '@lerna/prompt': 6.0.3 - '@lerna/pulse-till-done': 6.0.3 - '@lerna/rimraf-dir': 6.0.3 - p-map: 4.0.0 - p-map-series: 2.1.0 - p-waterfall: 2.1.1 + bin-check: 4.1.0 + bin-version-check: 5.1.0 + content-disposition: 0.5.4 + ext-name: 5.0.0 + file-type: 17.1.6 + filenamify: 5.1.1 + got: 11.8.6 + os-filter-obj: 2.0.0 dev: true - /@lerna/cli@6.0.3: - resolution: {integrity: sha512-4J3dOmDGxl32FJJryE65wXR//FOMFRM0osURnr+sylzStpaEwYO24GN1oVl0YIlnGVBuPIBDpr7n0uyjvfn+2A==} - engines: {node: ^14.15.0 || >=16.0.0} + /@node-ipc/js-queue@2.0.3: + resolution: {integrity: sha512-fL1wpr8hhD5gT2dA1qifeVaoDFlQR5es8tFuKqjHX+kdOtdNHnxkVZbtIrR2rxnMFvehkjaZRNV2H/gPXlb0hw==} + engines: {node: '>=1.0.0'} dependencies: - '@lerna/global-options': 6.0.3 - dedent: 0.7.0 - npmlog: 6.0.2 - yargs: 16.2.0 + easy-stack: 1.0.1 dev: true - /@lerna/collect-uncommitted@6.0.3: - resolution: {integrity: sha512-kMKL+U6fIMIHMENez6HrZEYZum+YObhmPzRr/5kkuaYqKPw2up/z1dHYQ/+w+tvzavGP15VKAWy/tZ0WsMuTWw==} - engines: {node: ^14.15.0 || >=16.0.0} + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} dependencies: - '@lerna/child-process': 6.0.3 - chalk: 4.1.2 - npmlog: 6.0.2 + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 dev: true - /@lerna/collect-updates@6.0.3: - resolution: {integrity: sha512-qLuCHaHlVHu/tkdnncG6bQZHz9IFfZ6i7lexWfFnQnZ/aLEY7dVnFUde1jbsTFNMhJesKEbXJshXRcTcplDH6Q==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/child-process': 6.0.3 - '@lerna/describe-ref': 6.0.3 - minimatch: 3.1.2 - npmlog: 6.0.2 - slash: 3.0.0 + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} dev: true - /@lerna/command@6.0.3: - resolution: {integrity: sha512-iFkIQKLy+Ef2Kf20wOKBdkCA5J64Wjgr3XC62ZdrlDkx6wydfcfJMiXx2bhRqNKMe1cHxlBKGoRKzy8J+tBrHw==} - engines: {node: ^14.15.0 || >=16.0.0} + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} dependencies: - '@lerna/child-process': 6.0.3 - '@lerna/package-graph': 6.0.3 - '@lerna/project': 6.0.3 - '@lerna/validation-error': 6.0.3 - '@lerna/write-log-file': 6.0.3 - clone-deep: 4.0.1 - dedent: 0.7.0 - execa: 5.1.1 - is-ci: 2.0.0 - npmlog: 6.0.2 + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.15.0 dev: true - /@lerna/conventional-commits@6.0.3: - resolution: {integrity: sha512-TZof9i0u9TK/Q7LEErjMQAMLf++MjO9NYG81sAuUaNKHMchUOmlFKtJmbT4/JjmgnBX5W0pCUF6DBxr/Bdjj9g==} - engines: {node: ^14.15.0 || >=16.0.0} + /@npmcli/fs@3.1.0: + resolution: {integrity: sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - '@lerna/validation-error': 6.0.3 - conventional-changelog-angular: 5.0.13 - conventional-changelog-core: 4.2.4 - conventional-recommended-bump: 6.1.0 - fs-extra: 9.1.0 - get-stream: 6.0.1 - npm-package-arg: 8.1.1 - npmlog: 6.0.2 - pify: 5.0.0 semver: 7.5.4 dev: true - /@lerna/create-symlink@6.0.3: - resolution: {integrity: sha512-myCpuQZ4yYJ5sD+xZiyQHfONBIWlQnM3crIlAvObRYs1U+HwniO9YWk0HcW9dyzplwaYo+Vn55mdi67pTdsdDg==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - cmd-shim: 5.0.0 - fs-extra: 9.1.0 - npmlog: 6.0.2 - dev: true - - /@lerna/create@6.0.3: - resolution: {integrity: sha512-mq3D5laUMe6DWhCoWS0mYJw9PZez/8up81860lk5m7Zojk1Ataa08ZWtGhBgP+p77piNRvmjN89hhjkWiXG6ng==} - engines: {node: ^14.15.0 || >=16.0.0} + /@npmcli/git@4.1.0: + resolution: {integrity: sha512-9hwoB3gStVfa0N31ymBmrX+GuDGdVA/QWShZVqE0HK2Af+7QGGrCTbZia/SW0ImUTjTne7SP91qxDmtXvDHRPQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - '@lerna/child-process': 6.0.3 - '@lerna/command': 6.0.3 - '@lerna/npm-conf': 6.0.3 - '@lerna/validation-error': 6.0.3 - dedent: 0.7.0 - fs-extra: 9.1.0 - init-package-json: 3.0.2 - npm-package-arg: 8.1.1 - p-reduce: 2.1.0 - pacote: 13.6.2 - pify: 5.0.0 + '@npmcli/promise-spawn': 6.0.2 + lru-cache: 7.18.3 + npm-pick-manifest: 8.0.2 + proc-log: 3.0.0 + promise-inflight: 1.0.1 + promise-retry: 2.0.1 semver: 7.5.4 - slash: 3.0.0 - validate-npm-package-license: 3.0.4 - validate-npm-package-name: 4.0.0 - yargs-parser: 20.2.4 + which: 3.0.1 transitivePeerDependencies: - bluebird - - supports-color dev: true - /@lerna/describe-ref@6.0.3: - resolution: {integrity: sha512-3gj6r9PK+c5SfHQr2j8MQ3qb6xQTrX8KvvGhe3YDW8h3jxx9SAGao8zuvzjI3tVpLx7ZSbxmHqMpyUmnLh5kuw==} - engines: {node: ^14.15.0 || >=16.0.0} + /@npmcli/installed-package-contents@2.0.2: + resolution: {integrity: sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true dependencies: - '@lerna/child-process': 6.0.3 - npmlog: 6.0.2 + npm-bundled: 3.0.0 + npm-normalize-package-bin: 3.0.1 dev: true - /@lerna/diff@6.0.3: - resolution: {integrity: sha512-9syquyKF2oxg0fF736RWT2cf3Oyk4eRXRUNzT0hF0DL/8frQ98H+gF3ftIFVzz1bfPbXtubzBbLDi29bGEG3bQ==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/child-process': 6.0.3 - '@lerna/command': 6.0.3 - '@lerna/validation-error': 6.0.3 - npmlog: 6.0.2 + /@npmcli/node-gyp@3.0.0: + resolution: {integrity: sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dev: true - /@lerna/exec@6.0.3: - resolution: {integrity: sha512-4xKTXPQe3/0hrwCao7evcQfaacfROhVkR2zfnQEA+rkKRiV6ILWdvu9jCxI7DMkzoh4DgABVuGAv84CeraunMg==} - engines: {node: ^14.15.0 || >=16.0.0} + /@npmcli/promise-spawn@6.0.2: + resolution: {integrity: sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - '@lerna/child-process': 6.0.3 - '@lerna/command': 6.0.3 - '@lerna/filter-options': 6.0.3 - '@lerna/profiler': 6.0.3 - '@lerna/run-topologically': 6.0.3 - '@lerna/validation-error': 6.0.3 - p-map: 4.0.0 + which: 3.0.1 dev: true - /@lerna/filter-options@6.0.3: - resolution: {integrity: sha512-6WjtXo1nNfOIYxjysGgjnCUqAbIqvoIIyQznLQYPsKN/6NN4U7sXr0P3nbaEgBZ2NHeV+seLWA/wraJ1zDaD4Q==} - engines: {node: ^14.15.0 || >=16.0.0} + /@npmcli/run-script@6.0.2: + resolution: {integrity: sha512-NCcr1uQo1k5U+SYlnIrbAh3cxy+OQT1VtqiAbxdymSlptbzBb62AjH2xXgjNCoP073hoa1CfCAcwoZ8k96C4nA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - '@lerna/collect-updates': 6.0.3 - '@lerna/filter-packages': 6.0.3 - dedent: 0.7.0 - npmlog: 6.0.2 + '@npmcli/node-gyp': 3.0.0 + '@npmcli/promise-spawn': 6.0.2 + node-gyp: 9.4.0 + read-package-json-fast: 3.0.2 + which: 3.0.1 + transitivePeerDependencies: + - supports-color dev: true - /@lerna/filter-packages@6.0.3: - resolution: {integrity: sha512-UlLgondhCpy7mzZWpOoUy8OlLux8YIqw07Obba0TvVLzrVIGIPIeXhqleRchUGVRV1vfQJ2d3vCTx31s1e/V4g==} - engines: {node: ^14.15.0 || >=16.0.0} + /@nrwl/devkit@16.10.0(nx@16.10.0): + resolution: {integrity: sha512-fRloARtsDQoQgQ7HKEy0RJiusg/HSygnmg4gX/0n/Z+SUS+4KoZzvHjXc6T5ZdEiSjvLypJ+HBM8dQzIcVACPQ==} dependencies: - '@lerna/validation-error': 6.0.3 - multimatch: 5.0.0 - npmlog: 6.0.2 + '@nx/devkit': 16.10.0(nx@16.10.0) + transitivePeerDependencies: + - nx dev: true - /@lerna/get-npm-exec-opts@6.0.3: - resolution: {integrity: sha512-zmKmHkXzmFQIBh2k9rCwzSkearKD+Pz1GypdJ0hAehemnabtW5QQKoGFsGh+7i5mOP0JBUl5kXTYTnwRGOWmYQ==} - engines: {node: ^14.15.0 || >=16.0.0} + /@nrwl/devkit@18.3.3(nx@18.3.3): + resolution: {integrity: sha512-3zZLE1vfwsNie7qjVUt9lqaM1slU0RTr/dW+Yt/2lxe8Peu6f8bnCM1Pf3kSlzoxQroctfocRtVHFXJsAuAt4g==} dependencies: - npmlog: 6.0.2 + '@nx/devkit': 18.3.3(nx@18.3.3) + transitivePeerDependencies: + - nx dev: true - /@lerna/get-packed@6.0.3: - resolution: {integrity: sha512-NX/Ifi/A7iTXasfBioyv/nQ8+IC4gE1SEAuE39/ExGviOM3Jkk5EmeCqwAbhZyhYkxoDBQDJJvagQ5DobpfS7g==} - engines: {node: ^14.15.0 || >=16.0.0} + /@nrwl/jest@18.3.3(@swc/core@1.3.107)(@types/node@20.4.5)(nx@18.3.3)(typescript@5.1.6): + resolution: {integrity: sha512-BPI0mIbmjTHFb0/qtMND59ECld7gorV+SEVLwf4BLl7SWumVB2gLAA2+yx71cvF1jO4R5Ndi2FrBwBC9E2Va5Q==} dependencies: - fs-extra: 9.1.0 - ssri: 9.0.1 - tar: 6.2.0 + '@nx/jest': 18.3.3(@swc/core@1.3.107)(@types/node@20.4.5)(nx@18.3.3)(typescript@5.1.6) + transitivePeerDependencies: + - '@babel/traverse' + - '@swc-node/register' + - '@swc/core' + - '@swc/wasm' + - '@types/node' + - babel-plugin-macros + - debug + - node-notifier + - nx + - supports-color + - ts-node + - typescript + - verdaccio dev: true - /@lerna/github-client@6.0.3: - resolution: {integrity: sha512-wMOKH3FIDdE5T8UF88gvhUEBEFD9IUseFHqYt19hgzQyZxAx/hQQE2lqAEosYThPXqtKntIPKQGAfl0gquAMFQ==} - engines: {node: ^14.15.0 || >=16.0.0} + /@nrwl/js@18.3.3(@swc/core@1.3.107)(@types/node@20.4.5)(nx@18.3.3)(typescript@5.1.6): + resolution: {integrity: sha512-7Wtv5kpeMWUDBUFu5go49HM/S8vDrtMOvZf9xnUcnjsFDReWe8XIEkTWudZDbzID3X4T6WQAftzj2Ov6k566lQ==} dependencies: - '@lerna/child-process': 6.0.3 - '@octokit/plugin-enterprise-rest': 6.0.1 - '@octokit/rest': 19.0.13 - git-url-parse: 13.1.1 - npmlog: 6.0.2 + '@nx/js': 18.3.3(@swc/core@1.3.107)(@types/node@20.4.5)(nx@18.3.3)(typescript@5.1.6) transitivePeerDependencies: - - encoding + - '@babel/traverse' + - '@swc-node/register' + - '@swc/core' + - '@swc/wasm' + - '@types/node' + - debug + - nx + - supports-color + - typescript + - verdaccio dev: true - /@lerna/gitlab-client@6.0.3: - resolution: {integrity: sha512-dBZiTsiHJ1j3tkW9JKSqCCZCk6aBiYaU9R/dSnpoPb6ZRthgoMGxtnfdk/1CKZlDargAu12XLJmcXLi7+UbyPg==} - engines: {node: ^14.15.0 || >=16.0.0} + /@nrwl/js@18.3.3(@swc/core@1.3.107)(@types/node@20.4.5)(nx@18.3.3)(typescript@5.4.5): + resolution: {integrity: sha512-7Wtv5kpeMWUDBUFu5go49HM/S8vDrtMOvZf9xnUcnjsFDReWe8XIEkTWudZDbzID3X4T6WQAftzj2Ov6k566lQ==} dependencies: - node-fetch: 2.7.0 - npmlog: 6.0.2 + '@nx/js': 18.3.3(@swc/core@1.3.107)(@types/node@20.4.5)(nx@18.3.3)(typescript@5.4.5) transitivePeerDependencies: - - encoding + - '@babel/traverse' + - '@swc-node/register' + - '@swc/core' + - '@swc/wasm' + - '@types/node' + - debug + - nx + - supports-color + - typescript + - verdaccio dev: true - /@lerna/global-options@6.0.3: - resolution: {integrity: sha512-XE22Mogzjh8w1rr07hALq40kmPuCr25cQ+K0OwYEiPsyH1dpOM7PSkP4qdT1l2UlWNM64LjgJtnjZ9hsx282VQ==} - engines: {node: ^14.15.0 || >=16.0.0} + /@nrwl/rollup@18.3.3(@babel/core@7.23.2)(@swc/core@1.3.107)(@types/node@20.4.5)(nx@18.3.3)(typescript@5.1.6): + resolution: {integrity: sha512-JBx16bKWURXWkWf1fAezArz0eXHoxHiLhpz3VkWiZSLBBRKGEId3fiN1yzaP22cdBNsmDVzd4vYrVX38jsUfpA==} + dependencies: + '@nx/rollup': 18.3.3(@babel/core@7.23.2)(@swc/core@1.3.107)(@types/node@20.4.5)(nx@18.3.3)(typescript@5.1.6) + transitivePeerDependencies: + - '@babel/core' + - '@babel/traverse' + - '@swc-node/register' + - '@swc/core' + - '@swc/wasm' + - '@types/babel__core' + - '@types/node' + - debug + - nx + - supports-color + - ts-node + - typescript + - verdaccio dev: true - /@lerna/has-npm-version@6.0.3: - resolution: {integrity: sha512-azZJkKPUWmfZf4AR40t9L6+utZaaCcZcXHOw/vHhmpn9GpZuc8Ck5cM5+8w9bgMglz0YwvTTWvutY2/mCnN5jA==} - engines: {node: ^14.15.0 || >=16.0.0} + /@nrwl/tao@16.10.0(@swc/core@1.3.107): + resolution: {integrity: sha512-QNAanpINbr+Pod6e1xNgFbzK1x5wmZl+jMocgiEFXZ67KHvmbD6MAQQr0MMz+GPhIu7EE4QCTLTyCEMlAG+K5Q==} + hasBin: true dependencies: - '@lerna/child-process': 6.0.3 - semver: 7.5.4 + nx: 16.10.0(@swc/core@1.3.107) + tslib: 2.6.2 + transitivePeerDependencies: + - '@swc-node/register' + - '@swc/core' + - debug dev: true - /@lerna/import@6.0.3: - resolution: {integrity: sha512-AWSwoS9e5udSrJ7E15rR+8V7Hnhli4+3IHh658bpvcGvsIntL7hBZucqWiKRMOmrsafncaBpLkfFgdiyGwy1Pw==} - engines: {node: ^14.15.0 || >=16.0.0} + /@nrwl/tao@18.3.3(@swc/core@1.3.107): + resolution: {integrity: sha512-f/PUDLpSMEObiLQ5sIDySJM+5DxSCNunkxxbY1R9rmQ1cFcgrHaXIHQqbSj91mMa3mmtbKACk8u1LbI+oQV0Tg==} + hasBin: true dependencies: - '@lerna/child-process': 6.0.3 - '@lerna/command': 6.0.3 - '@lerna/prompt': 6.0.3 - '@lerna/pulse-till-done': 6.0.3 - '@lerna/validation-error': 6.0.3 - dedent: 0.7.0 - fs-extra: 9.1.0 - p-map-series: 2.1.0 + nx: 18.3.3(@swc/core@1.3.107) + tslib: 2.6.2 + transitivePeerDependencies: + - '@swc-node/register' + - '@swc/core' + - debug dev: true - /@lerna/info@6.0.3: - resolution: {integrity: sha512-fqFGejIjjHN9obKUiWgmkknDJliyyRDbv/g6TMvQptxwiGfFBjR55TSPdKyUi9XslIQL5HWMYU7NWzZPiilk/A==} - engines: {node: ^14.15.0 || >=16.0.0} + /@nrwl/workspace@18.3.3(@swc/core@1.3.107): + resolution: {integrity: sha512-9Giuec9l3PpS8mekD00W9kBIKmWRpQSkp+/RvYmc+7kKtVC+Uj/kc68exBOanVgq6zKzYrn+FqHWHGWnHxp+ww==} dependencies: - '@lerna/command': 6.0.3 - '@lerna/output': 6.0.3 - envinfo: 7.10.0 + '@nx/workspace': 18.3.3(@swc/core@1.3.107) + transitivePeerDependencies: + - '@swc-node/register' + - '@swc/core' + - debug dev: true - /@lerna/init@6.0.3: - resolution: {integrity: sha512-PmEmIJNNpXkGtEINBO5wfFrOlipAwY/4k674mbBWAfVJX+Affyx8yMcnMM28oDnFwe8gi12w5oRI0JcxcjpCFg==} - engines: {node: ^14.15.0 || >=16.0.0} + /@nx/devkit@16.10.0(nx@16.10.0): + resolution: {integrity: sha512-IvKQqRJFDDiaj33SPfGd3ckNHhHi6ceEoqCbAP4UuMXOPPVOX6H0KVk+9tknkPb48B7jWIw6/AgOeWkBxPRO5w==} + peerDependencies: + nx: '>= 15 <= 17' dependencies: - '@lerna/child-process': 6.0.3 - '@lerna/command': 6.0.3 - '@lerna/project': 6.0.3 - fs-extra: 9.1.0 - p-map: 4.0.0 - write-json-file: 4.3.0 + '@nrwl/devkit': 16.10.0(nx@16.10.0) + ejs: 3.1.9 + enquirer: 2.3.6 + ignore: 5.2.4 + nx: 16.10.0(@swc/core@1.3.107) + semver: 7.5.3 + tmp: 0.2.1 + tslib: 2.6.2 dev: true - /@lerna/link@6.0.3: - resolution: {integrity: sha512-jVTk8QWoVb+gPSkLm6XLtEKdOyqH4WwpOatSZ5zMgiRfjGDiwxCc3dB994JFPJ5FEnr9qCwqXFKjIqef7POIyQ==} - engines: {node: ^14.15.0 || >=16.0.0} + /@nx/devkit@18.3.3(nx@18.3.3): + resolution: {integrity: sha512-FtkZ6mA5//vEA5lcbT80m080ROVacHYV5F1peztTRA+IY2JZGJoqx425kn5ylDO8aCSAIAwcn2qIdhI8BnpG3Q==} + peerDependencies: + nx: '>= 16 <= 19' dependencies: - '@lerna/command': 6.0.3 - '@lerna/package-graph': 6.0.3 - '@lerna/symlink-dependencies': 6.0.3 - '@lerna/validation-error': 6.0.3 - p-map: 4.0.0 - slash: 3.0.0 + '@nrwl/devkit': 18.3.3(nx@18.3.3) + ejs: 3.1.9 + enquirer: 2.3.6 + ignore: 5.2.4 + nx: 18.3.3(@swc/core@1.3.107) + semver: 7.5.4 + tmp: 0.2.1 + tslib: 2.6.2 + yargs-parser: 21.1.1 dev: true - /@lerna/list@6.0.3: - resolution: {integrity: sha512-5cQHJ2GAeN2/GV6uMJ4CVIQa3YOcmuNGqzr0DWwatR+5tire6dxFu5uY9Kjn2PYjmFUlwFwVgZzqRrSKPPPiVw==} - engines: {node: ^14.15.0 || >=16.0.0} + /@nx/eslint@18.3.3(@swc/core@1.3.107)(@types/node@20.4.5)(nx@18.3.3): + resolution: {integrity: sha512-cvJjyykTEtQN08b5wQFelD/cbye7Nl5zFVESs+mn9/ezCukjAgP9seOk39nchKykRBAm7zzA1xZOB9thNqw9aA==} + peerDependencies: + js-yaml: 4.1.0 + peerDependenciesMeta: + js-yaml: + optional: true dependencies: - '@lerna/command': 6.0.3 - '@lerna/filter-options': 6.0.3 - '@lerna/listable': 6.0.3 - '@lerna/output': 6.0.3 + '@nx/devkit': 18.3.3(nx@18.3.3) + '@nx/js': 18.3.3(@swc/core@1.3.107)(@types/node@20.4.5)(nx@18.3.3)(typescript@5.4.5) + '@nx/linter': 18.3.3(@swc/core@1.3.107)(@types/node@20.4.5)(nx@18.3.3) + eslint: 8.57.0 + tslib: 2.6.2 + typescript: 5.4.5 + transitivePeerDependencies: + - '@babel/traverse' + - '@swc-node/register' + - '@swc/core' + - '@swc/wasm' + - '@types/node' + - debug + - nx + - supports-color + - verdaccio dev: true - /@lerna/listable@6.0.3: - resolution: {integrity: sha512-7EDzDMc22A/U4O1tCfLzb7MoFQVwwfv6E4F8JSilRupd7mp+2tMi7kvrwS5Dk5imNlHia4e5T0fVWXDUnIO2Sg==} - engines: {node: ^14.15.0 || >=16.0.0} + /@nx/jest@18.3.3(@swc/core@1.3.107)(@types/node@20.4.5)(nx@18.3.3)(typescript@5.1.6): + resolution: {integrity: sha512-AwkwYSJqu0vrDFMxKAc3lb0yHZFhsD8rX6rMMwe/fZMlAYml9FvGCp/ixWpcRWIo/1t3pxiF3Vejk9+oq/Avfw==} dependencies: - '@lerna/query-graph': 6.0.3 + '@jest/reporters': 29.7.0 + '@jest/test-result': 29.7.0 + '@nrwl/jest': 18.3.3(@swc/core@1.3.107)(@types/node@20.4.5)(nx@18.3.3)(typescript@5.1.6) + '@nx/devkit': 18.3.3(nx@18.3.3) + '@nx/js': 18.3.3(@swc/core@1.3.107)(@types/node@20.4.5)(nx@18.3.3)(typescript@5.1.6) + '@phenomnomnominal/tsquery': 5.0.1(typescript@5.1.6) chalk: 4.1.2 - columnify: 1.6.0 + identity-obj-proxy: 3.0.0 + jest-config: 29.7.0(@types/node@20.4.5) + jest-resolve: 29.7.0 + jest-util: 29.7.0 + minimatch: 9.0.3 + resolve.exports: 1.1.0 + tslib: 2.6.2 + yargs-parser: 21.1.1 + transitivePeerDependencies: + - '@babel/traverse' + - '@swc-node/register' + - '@swc/core' + - '@swc/wasm' + - '@types/node' + - babel-plugin-macros + - debug + - node-notifier + - nx + - supports-color + - ts-node + - typescript + - verdaccio dev: true - /@lerna/log-packed@6.0.3: - resolution: {integrity: sha512-MCGAaaywfs8Z0eeG4mhP1u1ma+ORO8c9gGgtpX0LkjJ9HlE23BkCznC8VrJSVTqChtU4tkVp/38hhwEzZmcPFA==} - engines: {node: ^14.15.0 || >=16.0.0} + /@nx/js@18.3.3(@swc/core@1.3.107)(@types/node@20.4.5)(nx@18.3.3)(typescript@5.1.6): + resolution: {integrity: sha512-e8u56oG0mlTVz48EeH0C7txX0GeLYN0o4mK1LDAMIHQa4tKefNfwrdqHaZBiVqFOPopeFtqi8s0kqce5prwCaw==} + peerDependencies: + verdaccio: ^5.0.4 + peerDependenciesMeta: + verdaccio: + optional: true dependencies: - byte-size: 7.0.1 + '@babel/core': 7.23.2 + '@babel/plugin-proposal-decorators': 7.24.1(@babel/core@7.23.2) + '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.23.2) + '@babel/plugin-transform-runtime': 7.24.3(@babel/core@7.23.2) + '@babel/preset-env': 7.24.3(@babel/core@7.23.2) + '@babel/preset-typescript': 7.24.1(@babel/core@7.23.2) + '@babel/runtime': 7.23.2 + '@nrwl/js': 18.3.3(@swc/core@1.3.107)(@types/node@20.4.5)(nx@18.3.3)(typescript@5.1.6) + '@nx/devkit': 18.3.3(nx@18.3.3) + '@nx/workspace': 18.3.3(@swc/core@1.3.107) + '@phenomnomnominal/tsquery': 5.0.1(typescript@5.1.6) + babel-plugin-const-enum: 1.2.0(@babel/core@7.23.2) + babel-plugin-macros: 2.8.0 + babel-plugin-transform-typescript-metadata: 0.3.2(@babel/core@7.23.2) + chalk: 4.1.2 columnify: 1.6.0 - has-unicode: 2.0.1 - npmlog: 6.0.2 - dev: true - - /@lerna/npm-conf@6.0.3: - resolution: {integrity: sha512-lX4nAJgScfDmmdPVM9rOO6AzwCY9UPjuNpY6ZpMYkg/FIr1dch5+MFjexpan4VL2KRBNMWUYpDk3U/e2V+7k/A==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - config-chain: 1.1.13 - pify: 5.0.0 - dev: true - - /@lerna/npm-dist-tag@6.0.3: - resolution: {integrity: sha512-wjbVPZQq1bdfikldEJ6TICikKhVh8gOWPsqR0iTj5iCDRUAiQM5HscrCApTIrB/hASyKV2xG60ruCpMG2Qo6AQ==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/otplease': 6.0.3 - npm-package-arg: 8.1.1 - npm-registry-fetch: 13.3.1 - npmlog: 6.0.2 - transitivePeerDependencies: - - bluebird - - supports-color - dev: true - - /@lerna/npm-install@6.0.3: - resolution: {integrity: sha512-mBypvdtt1feL7L6f8++/tChn/5bM+KbYX06WXjW3yUT81o9geg6p7aaZoxfP6A8ff5XVsTFFL7j86MwPxTsTQQ==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/child-process': 6.0.3 - '@lerna/get-npm-exec-opts': 6.0.3 - fs-extra: 9.1.0 - npm-package-arg: 8.1.1 - npmlog: 6.0.2 - signal-exit: 3.0.7 - write-pkg: 4.0.0 - dev: true - - /@lerna/npm-publish@6.0.3: - resolution: {integrity: sha512-RpjnUy7wWIWu7DJB2NQJ8rNgKz+yPoIXpzYOktIjb7gUrL+Ks4KjfbrgGuYk2nWFUEAzJlsOSJ8ggAQUoNIL9Q==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/otplease': 6.0.3 - '@lerna/run-lifecycle': 6.0.3 - fs-extra: 9.1.0 - libnpmpublish: 6.0.5 - npm-package-arg: 8.1.1 - npmlog: 6.0.2 - pify: 5.0.0 - read-package-json: 5.0.2 - transitivePeerDependencies: - - bluebird - - supports-color - dev: true - - /@lerna/npm-run-script@6.0.3: - resolution: {integrity: sha512-+IEo8BYBdyEzgdqHCw3sr4ZxAM9g7SoSdo+oskXyrwD8zScH+OadAZz+DukCad8kXlaSPWSNEc42biP2o611Ew==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/child-process': 6.0.3 - '@lerna/get-npm-exec-opts': 6.0.3 - npmlog: 6.0.2 - dev: true - - /@lerna/otplease@6.0.3: - resolution: {integrity: sha512-bNQn6IRrMJ8D6yF9v52KHiWD/XDB7ZkN2ziQjPwwOBcbzoVrDRCar91HQK7ygudPgmyjQNQZOrZqGlSTrh/wqA==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/prompt': 6.0.3 - dev: true - - /@lerna/output@6.0.3: - resolution: {integrity: sha512-/x7Bv4MVRwBJM6UVbfUYE1wjTGNUEnpFCHNc15MCUU3VY9O/Y1ZYq7iZHkYGMT9BmNeMS64fHBkDEwoqoJn/vA==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - npmlog: 6.0.2 - dev: true - - /@lerna/pack-directory@6.0.3: - resolution: {integrity: sha512-LVs/q6Dn1kXIxHA80e/Jo9AmAsesPs7TbBAxZ40lHXhJFvvFgx0r2bY+r3eV+77sziGmyKVBorgcbkEfFehfZw==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/get-packed': 6.0.3 - '@lerna/package': 6.0.3 - '@lerna/run-lifecycle': 6.0.3 - '@lerna/temp-write': 6.0.3 - npm-packlist: 5.1.3 - npmlog: 6.0.2 - tar: 6.2.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@lerna/package-graph@6.0.3: - resolution: {integrity: sha512-Xf4FxCpCFB2vSI+D/LR3k+ueSmam5Tx7LRbGiZnzdfXPvPqukZfcAXHLZbSzuJiv5NKVyG/VJjZk4SCogjrFTQ==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/prerelease-id-from-version': 6.0.3 - '@lerna/validation-error': 6.0.3 - npm-package-arg: 8.1.1 - npmlog: 6.0.2 - semver: 7.5.4 - dev: true - - /@lerna/package@6.0.3: - resolution: {integrity: sha512-UbaZSRT3lTmncmPCws0V6XcZhc0GLRm8LtspxyLeDjhyP0EabKAbaB3HVCelPn69CM81UtP8CLkTh+NpUNH2Aw==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - load-json-file: 6.2.0 - npm-package-arg: 8.1.1 - write-pkg: 4.0.0 - dev: true - - /@lerna/prerelease-id-from-version@6.0.3: - resolution: {integrity: sha512-mgDo6L93mlcg7GDgWZfRGxHmR5xFPQSMQJZeyU/5VY6sCbTnwTDSpYOoce6m71E4v15iJ/G5EKIchq8yVUIBBw==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - semver: 7.5.4 - dev: true - - /@lerna/profiler@6.0.3: - resolution: {integrity: sha512-tkFZEAALPtPOzcEZlH554SHH4rMORmpWH45mF3Py3mpy+HpQXLZmYlxot+wr3jPXkXQzwaIgDe0DMYJhhC8T9A==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - fs-extra: 9.1.0 - npmlog: 6.0.2 - upath: 2.0.1 - dev: true - - /@lerna/project@6.0.3: - resolution: {integrity: sha512-YBSWZRnRlwAwDuLKx7M7f1HyiqDY/dH+eMadHgasWgFJ5yHhtkwMCZTNgHvMAXTdN6iGb/A6mkPAN5zWhcDYBw==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/package': 6.0.3 - '@lerna/validation-error': 6.0.3 - cosmiconfig: 7.1.0 - dedent: 0.7.0 - dot-prop: 6.0.1 - glob-parent: 5.1.2 - globby: 11.1.0 - js-yaml: 4.1.0 - load-json-file: 6.2.0 - npmlog: 6.0.2 - p-map: 4.0.0 - resolve-from: 5.0.0 - write-json-file: 4.3.0 - dev: true - - /@lerna/prompt@6.0.3: - resolution: {integrity: sha512-M/3poJp9Nqr2xJ2nB9gE6qsCwxJqvVyEnM5mMPUzRpfCvAtVa6Rhx/x60I20GSogb8/J9Zapav3MNoX2rdv2UQ==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - inquirer: 8.2.6 - npmlog: 6.0.2 - dev: true - - /@lerna/publish@6.0.3(nx@15.3.3): - resolution: {integrity: sha512-Vv9aDQEQv+5NRfaIpZpBqXcgfXkb18kpIUqBI4bAnqC/t168Gn/UzOxxjVkl5wuAKJ2sj8tDoZTEIb/DVoV53Q==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/check-working-tree': 6.0.3 - '@lerna/child-process': 6.0.3 - '@lerna/collect-updates': 6.0.3 - '@lerna/command': 6.0.3 - '@lerna/describe-ref': 6.0.3 - '@lerna/log-packed': 6.0.3 - '@lerna/npm-conf': 6.0.3 - '@lerna/npm-dist-tag': 6.0.3 - '@lerna/npm-publish': 6.0.3 - '@lerna/otplease': 6.0.3 - '@lerna/output': 6.0.3 - '@lerna/pack-directory': 6.0.3 - '@lerna/prerelease-id-from-version': 6.0.3 - '@lerna/prompt': 6.0.3 - '@lerna/pulse-till-done': 6.0.3 - '@lerna/run-lifecycle': 6.0.3 - '@lerna/run-topologically': 6.0.3 - '@lerna/validation-error': 6.0.3 - '@lerna/version': 6.0.3(nx@15.3.3) - fs-extra: 9.1.0 - libnpmaccess: 6.0.4 - npm-package-arg: 8.1.1 - npm-registry-fetch: 13.3.1 - npmlog: 6.0.2 - p-map: 4.0.0 - p-pipe: 3.1.0 - pacote: 13.6.2 + detect-port: 1.5.1 + fast-glob: 3.2.7 + fs-extra: 11.2.0 + ignore: 5.2.4 + js-tokens: 4.0.0 + minimatch: 9.0.3 + npm-package-arg: 11.0.1 + npm-run-path: 4.0.1 + ora: 5.3.0 semver: 7.5.4 + source-map-support: 0.5.19 + ts-node: 10.9.1(@swc/core@1.3.107)(@types/node@20.4.5)(typescript@5.1.6) + tsconfig-paths: 4.2.0 + tslib: 2.6.2 transitivePeerDependencies: - - bluebird - - encoding + - '@babel/traverse' + - '@swc-node/register' + - '@swc/core' + - '@swc/wasm' + - '@types/node' + - debug - nx - supports-color + - typescript dev: true - /@lerna/pulse-till-done@6.0.3: - resolution: {integrity: sha512-/HjvHtaDCr0qJuhJT6PuwoHFvPsZMB7f/GnEYGIzS0+ovwOTrbULD6ESo2lWcsFnxJ3tWv2OPIKEiHkJ0y1PCg==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - npmlog: 6.0.2 - dev: true - - /@lerna/query-graph@6.0.3: - resolution: {integrity: sha512-Se3G4ZIckjleki/BWUEInITfLTuNIYkqeStq50KEz74xhQ9jQs7ZLAOWc/Qxn3EPngCTLe8WqhLVeHFOfxgjvw==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/package-graph': 6.0.3 - dev: true - - /@lerna/resolve-symlink@6.0.3: - resolution: {integrity: sha512-9HkEl7kMQ4sZ3/+FEOhBt2rYoQP2cXQlhV7TNIej6SGaR0VtKe98ciM9bQAdkc/rOZtyZLc2cFBoUd10NEjzoA==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - fs-extra: 9.1.0 - npmlog: 6.0.2 - read-cmd-shim: 3.0.1 - dev: true - - /@lerna/rimraf-dir@6.0.3: - resolution: {integrity: sha512-jyC/PVL3rqC83l5Wphog8pSOmDbe5CIAHn9TeHvV8f/zdJnNE3zKXWTNjvyLgB1aPneQ4i2V+3BgdfpeDVAtHQ==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/child-process': 6.0.3 - npmlog: 6.0.2 - path-exists: 4.0.0 - rimraf: 3.0.2 - dev: true - - /@lerna/run-lifecycle@6.0.3: - resolution: {integrity: sha512-qnFOyp9de81FA2HSBuXtW7LSklF+T6WtFkYH9q3kOJY/EghZlgzFmQYFHgJ/xVYxNu75QDuv6fsfJu4EtrR7ag==} - engines: {node: ^14.15.0 || >=16.0.0} + /@nx/js@18.3.3(@swc/core@1.3.107)(@types/node@20.4.5)(nx@18.3.3)(typescript@5.4.5): + resolution: {integrity: sha512-e8u56oG0mlTVz48EeH0C7txX0GeLYN0o4mK1LDAMIHQa4tKefNfwrdqHaZBiVqFOPopeFtqi8s0kqce5prwCaw==} + peerDependencies: + verdaccio: ^5.0.4 + peerDependenciesMeta: + verdaccio: + optional: true dependencies: - '@lerna/npm-conf': 6.0.3 - '@npmcli/run-script': 4.2.1 - npmlog: 6.0.2 - p-queue: 6.6.2 + '@babel/core': 7.23.2 + '@babel/plugin-proposal-decorators': 7.24.1(@babel/core@7.23.2) + '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.23.2) + '@babel/plugin-transform-runtime': 7.24.3(@babel/core@7.23.2) + '@babel/preset-env': 7.24.3(@babel/core@7.23.2) + '@babel/preset-typescript': 7.24.1(@babel/core@7.23.2) + '@babel/runtime': 7.23.2 + '@nrwl/js': 18.3.3(@swc/core@1.3.107)(@types/node@20.4.5)(nx@18.3.3)(typescript@5.4.5) + '@nx/devkit': 18.3.3(nx@18.3.3) + '@nx/workspace': 18.3.3(@swc/core@1.3.107) + '@phenomnomnominal/tsquery': 5.0.1(typescript@5.4.5) + babel-plugin-const-enum: 1.2.0(@babel/core@7.23.2) + babel-plugin-macros: 2.8.0 + babel-plugin-transform-typescript-metadata: 0.3.2(@babel/core@7.23.2) + chalk: 4.1.2 + columnify: 1.6.0 + detect-port: 1.5.1 + fast-glob: 3.2.7 + fs-extra: 11.2.0 + ignore: 5.2.4 + js-tokens: 4.0.0 + minimatch: 9.0.3 + npm-package-arg: 11.0.1 + npm-run-path: 4.0.1 + ora: 5.3.0 + semver: 7.5.4 + source-map-support: 0.5.19 + ts-node: 10.9.1(@swc/core@1.3.107)(@types/node@20.4.5)(typescript@5.4.5) + tsconfig-paths: 4.2.0 + tslib: 2.6.2 transitivePeerDependencies: + - '@babel/traverse' + - '@swc-node/register' + - '@swc/core' + - '@swc/wasm' + - '@types/node' + - debug + - nx - supports-color + - typescript dev: true - /@lerna/run-topologically@6.0.3: - resolution: {integrity: sha512-nN0kcOO1TzWlxg5byM1V12tm4+lvchbawc1mNje1KsujdzE4gSwD84ub4SFRNkUUBmsPvTGysorhtXckQfqQWw==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/query-graph': 6.0.3 - p-queue: 6.6.2 - dev: true - - /@lerna/run@6.0.3: - resolution: {integrity: sha512-eiMF/Pfld/ngH+Emkwyxqf40WWEK6bQE2KhRtu0xyuSIFycFlZJursd72ylTnvZAX3Qx4P4drdHaFnfWyuglcw==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/command': 6.0.3 - '@lerna/filter-options': 6.0.3 - '@lerna/npm-run-script': 6.0.3 - '@lerna/output': 6.0.3 - '@lerna/profiler': 6.0.3 - '@lerna/run-topologically': 6.0.3 - '@lerna/timer': 6.0.3 - '@lerna/validation-error': 6.0.3 - fs-extra: 9.1.0 - p-map: 4.0.0 - dev: true - - /@lerna/symlink-binary@6.0.3: - resolution: {integrity: sha512-bRrPPuZoYvEDc8eTGwhTLQwRmtjYfD/hBVElqhfAlUTPcuA36VrQwBkmhGAUKcIDmEHTVk6IHNiFb/JwuiOSYA==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/create-symlink': 6.0.3 - '@lerna/package': 6.0.3 - fs-extra: 9.1.0 - p-map: 4.0.0 - dev: true - - /@lerna/symlink-dependencies@6.0.3: - resolution: {integrity: sha512-4DmKLZkJ9oyQ8DXdXCMT6fns6w6G/7h9D2pXGNOYa/IFtjb4mKDMBfJ61XhmvTlxrEzjEc9CnqMeO7BQBXWt8A==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/create-symlink': 6.0.3 - '@lerna/resolve-symlink': 6.0.3 - '@lerna/symlink-binary': 6.0.3 - fs-extra: 9.1.0 - p-map: 4.0.0 - p-map-series: 2.1.0 - dev: true - - /@lerna/temp-write@6.0.3: - resolution: {integrity: sha512-ws+EHk7Bp4hR6liusGk8K+ybnh9iOSkCnHD6d+avwa2lMYtX28v93kle/Y5JbTghjumgDUF9/C+EQg51zIVQmw==} - dependencies: - graceful-fs: 4.2.11 - is-stream: 2.0.1 - make-dir: 3.1.0 - temp-dir: 1.0.0 - uuid: 8.3.2 - dev: true - - /@lerna/timer@6.0.3: - resolution: {integrity: sha512-Ywfu3cGi0pV9vN4ki8oTu+qdJArMwrW3MiXL3/2fospKRdGL7sGCuXlS9Byd+aduMvmMwKbnX0EW+6R7Np+qSg==} - engines: {node: ^14.15.0 || >=16.0.0} - dev: true - - /@lerna/validation-error@6.0.3: - resolution: {integrity: sha512-cWYKMFne/euWnW4w7ry+RvDkj8iVNYMrbRF86Px/609GXFOoOwEROJyvTlRp1BgCmC2/3KzidyBletN/R3JHEA==} - engines: {node: ^14.15.0 || >=16.0.0} + /@nx/linter@18.3.3(@swc/core@1.3.107)(@types/node@20.4.5)(nx@18.3.3): + resolution: {integrity: sha512-5HmAN/8jZ2scrA0OiJSUdBPhIjwIHecK8AK7TxYX4fg1VJ3VcpknV8pWcETuNoBW8WlgF1RX2RW7Gog7vjf+Ww==} dependencies: - npmlog: 6.0.2 - dev: true - - /@lerna/version@6.0.3(nx@15.3.3): - resolution: {integrity: sha512-ssQhsK51IBMabB+RpQPIRn93iozwMRpvfh2vVIVdTs76j8r/1ljIs3gLXPDzLo9RbyLcou+VKi3c/7coCAwsdw==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/check-working-tree': 6.0.3 - '@lerna/child-process': 6.0.3 - '@lerna/collect-updates': 6.0.3 - '@lerna/command': 6.0.3 - '@lerna/conventional-commits': 6.0.3 - '@lerna/github-client': 6.0.3 - '@lerna/gitlab-client': 6.0.3 - '@lerna/output': 6.0.3 - '@lerna/prerelease-id-from-version': 6.0.3 - '@lerna/prompt': 6.0.3 - '@lerna/run-lifecycle': 6.0.3 - '@lerna/run-topologically': 6.0.3 - '@lerna/temp-write': 6.0.3 - '@lerna/validation-error': 6.0.3 - '@nrwl/devkit': 15.9.7(nx@15.3.3) - chalk: 4.1.2 - dedent: 0.7.0 - load-json-file: 6.2.0 - minimatch: 3.1.2 - npmlog: 6.0.2 - p-map: 4.0.0 - p-pipe: 3.1.0 - p-reduce: 2.1.0 - p-waterfall: 2.1.1 - semver: 7.5.4 - slash: 3.0.0 - write-json-file: 4.3.0 + '@nx/eslint': 18.3.3(@swc/core@1.3.107)(@types/node@20.4.5)(nx@18.3.3) transitivePeerDependencies: - - encoding + - '@babel/traverse' + - '@swc-node/register' + - '@swc/core' + - '@swc/wasm' + - '@types/node' + - debug + - js-yaml - nx - supports-color + - verdaccio dev: true - /@lerna/write-log-file@6.0.3: - resolution: {integrity: sha512-xZFC9IgGkvuv1MUIC7EKD5ltlljgLlz7isbfQ2QHAqOmGJG6jPqa0Yo38pGe8wEDtGSVgtlUGkx7iHK22MawEA==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - npmlog: 6.0.2 - write-file-atomic: 4.0.2 + /@nx/nx-darwin-arm64@16.10.0: + resolution: {integrity: sha512-YF+MIpeuwFkyvM5OwgY/rTNRpgVAI/YiR0yTYCZR+X3AAvP775IVlusNgQ3oedTBRUzyRnI4Tknj1WniENFsvQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true dev: true + optional: true - /@manypkg/find-root@1.1.0: - resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} - dependencies: - '@babel/runtime': 7.23.2 - '@types/node': 12.20.55 - find-up: 4.1.0 - fs-extra: 8.1.0 + /@nx/nx-darwin-arm64@18.3.3: + resolution: {integrity: sha512-NpA2/7o1uUuaocMYopX9muxKif9HlGfWaXo2UeiR918usF6xri4aUqweZbaXVc9iqCAEbVMWUsjaLYGKPXHAjw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true dev: true + optional: true - /@manypkg/get-packages@1.1.3: - resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} - dependencies: - '@babel/runtime': 7.23.2 - '@changesets/types': 4.1.0 - '@manypkg/find-root': 1.1.0 - fs-extra: 8.1.0 - globby: 11.1.0 - read-yaml-file: 1.1.0 + /@nx/nx-darwin-x64@16.10.0: + resolution: {integrity: sha512-ypi6YxwXgb0kg2ixKXE3pwf5myVNUgWf1CsV5OzVccCM8NzheMO51KDXTDmEpXdzUsfT0AkO1sk5GZeCjhVONg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + requiresBuild: true dev: true + optional: true - /@node-ipc/js-queue@2.0.3: - resolution: {integrity: sha512-fL1wpr8hhD5gT2dA1qifeVaoDFlQR5es8tFuKqjHX+kdOtdNHnxkVZbtIrR2rxnMFvehkjaZRNV2H/gPXlb0hw==} - engines: {node: '>=1.0.0'} - dependencies: - easy-stack: 1.0.1 + /@nx/nx-darwin-x64@18.3.3: + resolution: {integrity: sha512-aydPLbc7DeceJ6szRf6DLT4ERoPvwfWyFiGXdAlEZYWhjEuNZLeG8K6jA3yHeWltKfX/qJqhnyKbnubBNzBKlQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + requiresBuild: true dev: true + optional: true - /@nodelib/fs.scandir@2.1.5: - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 + /@nx/nx-freebsd-x64@16.10.0: + resolution: {integrity: sha512-UeEYFDmdbbDkTQamqvtU8ibgu5jQLgFF1ruNb/U4Ywvwutw2d4ruOMl2e0u9hiNja9NFFAnDbvzrDcMo7jYqYw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + requiresBuild: true dev: true + optional: true - /@nodelib/fs.stat@2.0.5: - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} + /@nx/nx-freebsd-x64@18.3.3: + resolution: {integrity: sha512-sEYEWsK/fwC1l7wzls7RNOjhmrooH0lK0mpgj1vDXesLBSZ7k+pddAqaHFECN4QXBSbHZI2PWOEhbnIH+Errsg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + requiresBuild: true dev: true + optional: true - /@nodelib/fs.walk@1.2.8: - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.15.0 + /@nx/nx-linux-arm-gnueabihf@16.10.0: + resolution: {integrity: sha512-WV3XUC2DB6/+bz1sx+d1Ai9q2Cdr+kTZRN50SOkfmZUQyEBaF6DRYpx/a4ahhxH3ktpNfyY8Maa9OEYxGCBkQA==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + requiresBuild: true dev: true + optional: true - /@npmcli/arborist@5.3.0: - resolution: {integrity: sha512-+rZ9zgL1lnbl8Xbb1NQdMjveOMwj4lIYfcDtyJHHi5x4X8jtR6m8SXooJMZy5vmFVZ8w7A2Bnd/oX9eTuU8w5A==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - hasBin: true - dependencies: - '@isaacs/string-locale-compare': 1.1.0 - '@npmcli/installed-package-contents': 1.0.7 - '@npmcli/map-workspaces': 2.0.4 - '@npmcli/metavuln-calculator': 3.1.1 - '@npmcli/move-file': 2.0.1 - '@npmcli/name-from-folder': 1.0.1 - '@npmcli/node-gyp': 2.0.0 - '@npmcli/package-json': 2.0.0 - '@npmcli/run-script': 4.2.1 - bin-links: 3.0.3 - cacache: 16.1.3 - common-ancestor-path: 1.0.1 - json-parse-even-better-errors: 2.3.1 - json-stringify-nice: 1.1.4 - mkdirp: 1.0.4 - mkdirp-infer-owner: 2.0.0 - nopt: 5.0.0 - npm-install-checks: 5.0.0 - npm-package-arg: 9.1.2 - npm-pick-manifest: 7.0.2 - npm-registry-fetch: 13.3.1 - npmlog: 6.0.2 - pacote: 13.6.2 - parse-conflict-json: 2.0.2 - proc-log: 2.0.1 - promise-all-reject-late: 1.0.1 - promise-call-limit: 1.0.2 - read-package-json-fast: 2.0.3 - readdir-scoped-modules: 1.1.0 - rimraf: 3.0.2 - semver: 7.5.4 - ssri: 9.0.1 - treeverse: 2.0.0 - walk-up-path: 1.0.0 - transitivePeerDependencies: - - bluebird - - supports-color + /@nx/nx-linux-arm-gnueabihf@18.3.3: + resolution: {integrity: sha512-B9GGMkrrzwiAfvew22x85ITO9TiNxbgRbKJQWQaoopNpXrnSWpY8WTNxpDT24fwV1qdQfsPKcY3F4O0NOUgPRA==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + requiresBuild: true dev: true + optional: true - /@npmcli/fs@2.1.2: - resolution: {integrity: sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - '@gar/promisify': 1.1.3 - semver: 7.5.4 + /@nx/nx-linux-arm64-gnu@16.10.0: + resolution: {integrity: sha512-aWIkOUw995V3ItfpAi5FuxQ+1e9EWLS1cjWM1jmeuo+5WtaKToJn5itgQOkvSlPz+HSLgM3VfXMvOFALNk125g==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true dev: true + optional: true - /@npmcli/fs@3.1.0: - resolution: {integrity: sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - semver: 7.5.4 + /@nx/nx-linux-arm64-gnu@18.3.3: + resolution: {integrity: sha512-1EucHf5/0JeqZmhritqkpEdOcdo9Dl32gpFvhNfS6kCAYmaDlEl4zqedz3VIoj4C7+C0pV3mcRO9qB9H7GM5bQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true dev: true + optional: true - /@npmcli/git@3.0.2: - resolution: {integrity: sha512-CAcd08y3DWBJqJDpfuVL0uijlq5oaXaOJEKHKc4wqrjd00gkvTZB+nFuLn+doOOKddaQS9JfqtNoFCO2LCvA3w==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - '@npmcli/promise-spawn': 3.0.0 - lru-cache: 7.18.3 - mkdirp: 1.0.4 - npm-pick-manifest: 7.0.2 - proc-log: 2.0.1 - promise-inflight: 1.0.1 - promise-retry: 2.0.1 - semver: 7.5.4 - which: 2.0.2 - transitivePeerDependencies: - - bluebird + /@nx/nx-linux-arm64-musl@16.10.0: + resolution: {integrity: sha512-uO6Gg+irqpVcCKMcEPIQcTFZ+tDI02AZkqkP7koQAjniLEappd8DnUBSQdcn53T086pHpdc264X/ZEpXFfrKWQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true dev: true + optional: true - /@npmcli/installed-package-contents@1.0.7: - resolution: {integrity: sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==} + /@nx/nx-linux-arm64-musl@18.3.3: + resolution: {integrity: sha512-HPgOgnYYLPVCBEaAkSEGPGzZqTDCiyCAF/qtvx5z0f1U/hZYb1ubgxw70ogY82Cafr7X4gQBz5k4/ZCnoCXlOQ==} engines: {node: '>= 10'} - hasBin: true - dependencies: - npm-bundled: 1.1.2 - npm-normalize-package-bin: 1.0.1 + cpu: [arm64] + os: [linux] + requiresBuild: true dev: true + optional: true - /@npmcli/map-workspaces@2.0.4: - resolution: {integrity: sha512-bMo0aAfwhVwqoVM5UzX1DJnlvVvzDCHae821jv48L1EsrYwfOZChlqWYXEtto/+BkBXetPbEWgau++/brh4oVg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - '@npmcli/name-from-folder': 1.0.1 - glob: 8.1.0 - minimatch: 5.1.6 - read-package-json-fast: 2.0.3 + /@nx/nx-linux-x64-gnu@16.10.0: + resolution: {integrity: sha512-134PW/u/arNFAQKpqMJniC7irbChMPz+W+qtyKPAUXE0XFKPa7c1GtlI/wK2dvP9qJDZ6bKf0KtA0U/m2HMUOA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true dev: true + optional: true - /@npmcli/metavuln-calculator@3.1.1: - resolution: {integrity: sha512-n69ygIaqAedecLeVH3KnO39M6ZHiJ2dEv5A7DGvcqCB8q17BGUgW8QaanIkbWUo2aYGZqJaOORTLAlIvKjNDKA==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - cacache: 16.1.3 - json-parse-even-better-errors: 2.3.1 - pacote: 13.6.2 - semver: 7.5.4 - transitivePeerDependencies: - - bluebird - - supports-color + /@nx/nx-linux-x64-gnu@18.3.3: + resolution: {integrity: sha512-FgYTQ3VEE6EUOGtJT9riRK8IBwPGFjKS+N2mudQJn2bB/9IumUvVRYQUIX08gqGLlqZPO6uUUhUjwZY8SnjRLQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true dev: true + optional: true - /@npmcli/move-file@2.0.1: - resolution: {integrity: sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - deprecated: This functionality has been moved to @npmcli/fs - dependencies: - mkdirp: 1.0.4 - rimraf: 3.0.2 + /@nx/nx-linux-x64-musl@16.10.0: + resolution: {integrity: sha512-q8sINYLdIJxK/iUx9vRk5jWAWb/2O0PAbOJFwv4qkxBv4rLoN7y+otgCZ5v0xfx/zztFgk/oNY4lg5xYjIso2Q==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true dev: true + optional: true - /@npmcli/name-from-folder@1.0.1: - resolution: {integrity: sha512-qq3oEfcLFwNfEYOQ8HLimRGKlD8WSeGEdtUa7hmzpR8Sa7haL1KVQrvgO6wqMjhWFFVjgtrh1gIxDz+P8sjUaA==} + /@nx/nx-linux-x64-musl@18.3.3: + resolution: {integrity: sha512-QnWjGViR1Wj9gJXa1RJ9mXyy2/JzQ7NF2C4ulTYSH5St1HoxhkfnLsV0+uNLFEV9PSZq+2BfxmQuT8Appefv1A==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true dev: true + optional: true - /@npmcli/node-gyp@2.0.0: - resolution: {integrity: sha512-doNI35wIe3bBaEgrlPfdJPaCpUR89pJWep4Hq3aRdh6gKazIVWfs0jHttvSSoq47ZXgC7h73kDsUl8AoIQUB+A==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + /@nx/nx-win32-arm64-msvc@16.10.0: + resolution: {integrity: sha512-moJkL9kcqxUdJSRpG7dET3UeLIciwrfP08mzBQ12ewo8K8FzxU8ZUsTIVVdNrwt01CXOdXoweGfdQLjJ4qTURA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + requiresBuild: true dev: true + optional: true - /@npmcli/package-json@2.0.0: - resolution: {integrity: sha512-42jnZ6yl16GzjWSH7vtrmWyJDGVa/LXPdpN2rcUWolFjc9ON2N3uz0qdBbQACfmhuJZ2lbKYtmK5qx68ZPLHMA==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - json-parse-even-better-errors: 2.3.1 + /@nx/nx-win32-arm64-msvc@18.3.3: + resolution: {integrity: sha512-Xn3LUaPsF8QkEYUVV3lc693NTCMWrfZBFXTy1cQpvLzQ+idsXQ/EGWoq93cIM3Nc2YWyblT2hHHelb8dHCZAlw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + requiresBuild: true dev: true + optional: true - /@npmcli/promise-spawn@3.0.0: - resolution: {integrity: sha512-s9SgS+p3a9Eohe68cSI3fi+hpcZUmXq5P7w0kMlAsWVtR7XbK3ptkZqKT2cK1zLDObJ3sR+8P59sJE0w/KTL1g==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - infer-owner: 1.0.4 + /@nx/nx-win32-x64-msvc@16.10.0: + resolution: {integrity: sha512-5iV2NKZnzxJwZZ4DM5JVbRG/nkhAbzEskKaLBB82PmYGKzaDHuMHP1lcPoD/rtYMlowZgNA/RQndfKvPBPwmXA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + requiresBuild: true dev: true + optional: true - /@npmcli/run-script@4.2.1: - resolution: {integrity: sha512-7dqywvVudPSrRCW5nTHpHgeWnbBtz8cFkOuKrecm6ih+oO9ciydhWt6OF7HlqupRRmB8Q/gECVdB9LMfToJbRg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - '@npmcli/node-gyp': 2.0.0 - '@npmcli/promise-spawn': 3.0.0 - node-gyp: 9.4.0 - read-package-json-fast: 2.0.3 - which: 2.0.2 - transitivePeerDependencies: - - supports-color + /@nx/nx-win32-x64-msvc@18.3.3: + resolution: {integrity: sha512-t8HvOnQEiaaoTFOOIrql30NPhIwDFO7jg0Jtz3Tbneulh7ceswJp71yFHsRGGrYZ23Tgg+Sna6M9qLRGzlRGkg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + requiresBuild: true dev: true + optional: true - /@nrwl/cli@15.3.3(@swc/core@1.3.16): - resolution: {integrity: sha512-ZWTmVP9H3ukppWWGaS/s3Nym2nOYgnt6eHtuUFNsroz8LesG5oFAJviOz9jDEM/b+pLIrvYfU5aAGZqrtM3Z2A==} - dependencies: - nx: 15.3.3(@swc/core@1.3.16) + /@nx/rollup@18.3.3(@babel/core@7.23.2)(@swc/core@1.3.107)(@types/node@20.4.5)(nx@18.3.3)(typescript@5.1.6): + resolution: {integrity: sha512-gE8w2K7Ck0yeUeZ+aQwA7xYSkPLMhJ5omooFCnZF22tXYsZC/r6IEyp40B116nmkBVho5JkrVt6dtBWD3+B5wA==} + dependencies: + '@nrwl/rollup': 18.3.3(@babel/core@7.23.2)(@swc/core@1.3.107)(@types/node@20.4.5)(nx@18.3.3)(typescript@5.1.6) + '@nx/devkit': 18.3.3(nx@18.3.3) + '@nx/js': 18.3.3(@swc/core@1.3.107)(@types/node@20.4.5)(nx@18.3.3)(typescript@5.1.6) + '@rollup/plugin-babel': 5.3.1(@babel/core@7.23.2)(rollup@2.79.1) + '@rollup/plugin-commonjs': 20.0.0(rollup@2.79.1) + '@rollup/plugin-image': 2.1.1(rollup@2.79.1) + '@rollup/plugin-json': 4.1.0(rollup@2.79.1) + '@rollup/plugin-node-resolve': 13.3.0(rollup@2.79.1) + autoprefixer: 10.4.19(postcss@8.4.38) + babel-plugin-transform-async-to-promises: 0.8.18 + chalk: 4.1.2 + postcss: 8.4.38 + rollup: 2.79.1 + rollup-plugin-copy: 3.5.0 + rollup-plugin-peer-deps-external: 2.2.4(rollup@2.79.1) + rollup-plugin-postcss: 4.0.2(postcss@8.4.38) + rollup-plugin-typescript2: 0.36.0(rollup@2.79.1)(typescript@5.1.6) + tslib: 2.6.2 transitivePeerDependencies: + - '@babel/core' + - '@babel/traverse' - '@swc-node/register' - '@swc/core' + - '@swc/wasm' + - '@types/babel__core' + - '@types/node' - debug + - nx + - supports-color + - ts-node + - typescript + - verdaccio dev: true - /@nrwl/devkit@15.9.7(nx@15.3.3): - resolution: {integrity: sha512-Sb7Am2TMT8AVq8e+vxOlk3AtOA2M0qCmhBzoM1OJbdHaPKc0g0UgSnWRml1kPGg5qfPk72tWclLoZJ5/ut0vTg==} - peerDependencies: - nx: '>= 14.1 <= 16' + /@nx/workspace@18.3.3(@swc/core@1.3.107): + resolution: {integrity: sha512-SUJJKzOUuNnclpHHde6f6nlF+pQwMjeF026jFpWDFaNzdsADhhRulkz0GLRXB9kKszvzz2JKde9WBWnKrFZ2IQ==} dependencies: - ejs: 3.1.9 - ignore: 5.2.4 - nx: 15.3.3(@swc/core@1.3.16) - semver: 7.5.4 - tmp: 0.2.1 + '@nrwl/workspace': 18.3.3(@swc/core@1.3.107) + '@nx/devkit': 18.3.3(nx@18.3.3) + chalk: 4.1.2 + enquirer: 2.3.6 + nx: 18.3.3(@swc/core@1.3.107) tslib: 2.6.2 - dev: true - - /@nrwl/tao@15.3.3(@swc/core@1.3.16): - resolution: {integrity: sha512-f9+VwhlJ/7TWpjHSgoUOAA067uP9DmzABMY9HC5OREEDaCx+rzYEvbLAPv6cXzWw+6IYM6cyKw0zWSQrdEVrWg==} - hasBin: true - dependencies: - nx: 15.3.3(@swc/core@1.3.16) + yargs-parser: 21.1.1 transitivePeerDependencies: - '@swc-node/register' - '@swc/core' @@ -3551,8 +3713,8 @@ packages: - encoding dev: true - /@octokit/rest@19.0.13: - resolution: {integrity: sha512-/EzVox5V9gYGdbAI+ovYj3nXQT1TtTHRT+0eZPcuC05UFSWO3mdO9UY1C0i2eLF9Un1ONJkAk+IEtYGAC+TahA==} + /@octokit/rest@19.0.11: + resolution: {integrity: sha512-m2a9VhaP5/tUw8FwfnW2ICXlXpLPIqxtg3XcAiGMLj/Xhw3RSBfZ8le/466ktO1Gcjr8oXudGnHhxV1TXJgFxw==} engines: {node: '>= 14'} dependencies: '@octokit/core': 4.2.4 @@ -3592,6 +3754,24 @@ packages: node-gyp-build: 4.6.1 dev: true + /@phenomnomnominal/tsquery@5.0.1(typescript@5.1.6): + resolution: {integrity: sha512-3nVv+e2FQwsW8Aw6qTU6f+1rfcJ3hrcnvH/mu9i8YhxO+9sqbOfpL8m6PbET5+xKOlz/VSbp0RoYWYCtIsnmuA==} + peerDependencies: + typescript: ^3 || ^4 || ^5 + dependencies: + esquery: 1.5.0 + typescript: 5.1.6 + dev: true + + /@phenomnomnominal/tsquery@5.0.1(typescript@5.4.5): + resolution: {integrity: sha512-3nVv+e2FQwsW8Aw6qTU6f+1rfcJ3hrcnvH/mu9i8YhxO+9sqbOfpL8m6PbET5+xKOlz/VSbp0RoYWYCtIsnmuA==} + peerDependencies: + typescript: ^3 || ^4 || ^5 + dependencies: + esquery: 1.5.0 + typescript: 5.4.5 + dev: true + /@pkgjs/parseargs@0.11.0: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} @@ -3603,54 +3783,134 @@ packages: resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} dev: true - /@rollup/plugin-commonjs@23.0.2(rollup@3.3.0): - resolution: {integrity: sha512-e9ThuiRf93YlVxc4qNIurvv+Hp9dnD+4PjOqQs5vAYfcZ3+AXSrcdzXnVjWxcGQOa6KGJFcRZyUI3ktWLavFjg==} + /@rollup/plugin-babel@5.3.1(@babel/core@7.23.2)(rollup@2.79.1): + resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==} + engines: {node: '>= 10.0.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@types/babel__core': ^7.1.9 + rollup: ^1.20.0||^2.0.0 + peerDependenciesMeta: + '@types/babel__core': + optional: true + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-module-imports': 7.24.3 + '@rollup/pluginutils': 3.1.0(rollup@2.79.1) + rollup: 2.79.1 + dev: true + + /@rollup/plugin-commonjs@20.0.0(rollup@2.79.1): + resolution: {integrity: sha512-5K0g5W2Ol8hAcTHqcTBHiA7M58tfmYi1o9KxeJuuRNpGaTa5iLjcyemBitCBcKXaHamOBBEH2dGom6v6Unmqjg==} + engines: {node: '>= 8.0.0'} + peerDependencies: + rollup: ^2.38.3 + dependencies: + '@rollup/pluginutils': 3.1.0(rollup@2.79.1) + commondir: 1.0.1 + estree-walker: 2.0.2 + glob: 7.2.3 + is-reference: 1.2.1 + magic-string: 0.25.9 + resolve: 1.22.8 + rollup: 2.79.1 + dev: true + + /@rollup/plugin-commonjs@25.0.7(rollup@4.1.5): + resolution: {integrity: sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: ^2.68.0||^3.0.0 + rollup: ^2.68.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@3.3.0) + '@rollup/pluginutils': 5.0.5(rollup@4.1.5) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 - magic-string: 0.26.7 - rollup: 3.3.0 + magic-string: 0.30.8 + rollup: 4.1.5 + dev: true + + /@rollup/plugin-image@2.1.1(rollup@2.79.1): + resolution: {integrity: sha512-AgP4U85zuQJdUopLUCM+hTf45RepgXeTb8EJsleExVy99dIoYpt3ZlDYJdKmAc2KLkNntCDg6BPJvgJU3uGF+g==} + engines: {node: '>= 8.0.0'} + peerDependencies: + rollup: ^1.20.0 || ^2.0.0 + dependencies: + '@rollup/pluginutils': 3.1.0(rollup@2.79.1) + mini-svg-data-uri: 1.4.4 + rollup: 2.79.1 dev: true - /@rollup/plugin-node-resolve@15.0.1(rollup@3.3.0): - resolution: {integrity: sha512-ReY88T7JhJjeRVbfCyNj+NXAG3IIsVMsX9b5/9jC98dRP8/yxlZdz7mHZbHk5zHr24wZZICS5AcXsFZAXYUQEg==} + /@rollup/plugin-json@4.1.0(rollup@2.79.1): + resolution: {integrity: sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==} + peerDependencies: + rollup: ^1.20.0 || ^2.0.0 + dependencies: + '@rollup/pluginutils': 3.1.0(rollup@2.79.1) + rollup: 2.79.1 + dev: true + + /@rollup/plugin-node-resolve@13.3.0(rollup@2.79.1): + resolution: {integrity: sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw==} + engines: {node: '>= 10.0.0'} + peerDependencies: + rollup: ^2.42.0 + dependencies: + '@rollup/pluginutils': 3.1.0(rollup@2.79.1) + '@types/resolve': 1.17.1 + deepmerge: 4.3.1 + is-builtin-module: 3.2.1 + is-module: 1.0.0 + resolve: 1.22.8 + rollup: 2.79.1 + dev: true + + /@rollup/plugin-node-resolve@15.2.3(rollup@4.1.5): + resolution: {integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: ^2.78.0||^3.0.0 + rollup: ^2.78.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@3.3.0) + '@rollup/pluginutils': 5.0.5(rollup@4.1.5) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.8 - rollup: 3.3.0 + rollup: 4.1.5 dev: true - /@rollup/plugin-replace@5.0.1(rollup@3.3.0): - resolution: {integrity: sha512-Z3MfsJ4CK17BfGrZgvrcp/l6WXoKb0kokULO+zt/7bmcyayokDaQ2K3eDJcRLCTAlp5FPI4/gz9MHAsosz4Rag==} + /@rollup/plugin-replace@5.0.5(rollup@4.1.5): + resolution: {integrity: sha512-rYO4fOi8lMaTg/z5Jb+hKnrHHVn8j2lwkqwyS4kTRhKyWOLf2wST2sWXr4WzWiTcoHTp2sTjqUbqIj2E39slKQ==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0 + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@3.3.0) - magic-string: 0.26.7 - rollup: 3.3.0 + '@rollup/pluginutils': 5.0.5(rollup@4.1.5) + magic-string: 0.30.8 + rollup: 4.1.5 + dev: true + + /@rollup/pluginutils@3.1.0(rollup@2.79.1): + resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} + engines: {node: '>= 8.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0 + dependencies: + '@types/estree': 0.0.39 + estree-walker: 1.0.1 + picomatch: 2.3.1 + rollup: 2.79.1 dev: true /@rollup/pluginutils@4.2.1: @@ -3661,7 +3921,7 @@ packages: picomatch: 2.3.1 dev: true - /@rollup/pluginutils@5.0.5(rollup@3.3.0): + /@rollup/pluginutils@5.0.5(rollup@4.1.5): resolution: {integrity: sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==} engines: {node: '>=14.0.0'} peerDependencies: @@ -3673,268 +3933,243 @@ packages: '@types/estree': 1.0.3 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 3.3.0 + rollup: 4.1.5 dev: true - /@sideway/address@4.1.5: - resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} + /@rollup/pluginutils@5.1.0(rollup@4.1.5): + resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true dependencies: - '@hapi/hoek': 9.3.0 + '@types/estree': 1.0.3 + estree-walker: 2.0.2 + picomatch: 2.3.1 + rollup: 4.1.5 dev: true - /@sideway/formula@3.0.1: - resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} + /@rollup/rollup-android-arm-eabi@4.1.5: + resolution: {integrity: sha512-/fwx6GS8cIbM2rTNyLMxjSCOegHywOdXO+kN9yFy018iCULcKZCyA3xvzw4bxyKbYfdSxQgdhbsl0egNcxerQw==} + cpu: [arm] + os: [android] + requiresBuild: true dev: true + optional: true - /@sideway/pinpoint@2.0.0: - resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} + /@rollup/rollup-android-arm64@4.1.5: + resolution: {integrity: sha512-tmXh7dyEt+JEz/NgDJlB1UeL/1gFV0v8qYzUAU42WZH4lmUJ5rp6/HkR2qUNC5jCgYEwd8/EfbHKtGIEfS4CUg==} + cpu: [arm64] + os: [android] + requiresBuild: true dev: true + optional: true - /@sinclair/typebox@0.27.8: - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + /@rollup/rollup-darwin-arm64@4.1.5: + resolution: {integrity: sha512-lTDmLxdEVhzI3KCesZUrNbl3icBvPrDv/85JasY5gh4P2eAuDFmM4uj9HC5DdH0anLC0fwJ+1Uzasr4qOXcjRQ==} + cpu: [arm64] + os: [darwin] + requiresBuild: true dev: true + optional: true - /@sinonjs/commons@3.0.0: - resolution: {integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==} - dependencies: - type-detect: 4.0.8 + /@rollup/rollup-darwin-x64@4.1.5: + resolution: {integrity: sha512-v6qEHZyjWnIgcc4oiy8AIeFsUJAx+Kg0sLj+RE7ICwv3u7YC/+bSClxAiBASRjMzqsq0Z+I/pfxj+OD8mjBYxg==} + cpu: [x64] + os: [darwin] + requiresBuild: true dev: true + optional: true - /@sinonjs/fake-timers@10.3.0: - resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} - dependencies: - '@sinonjs/commons': 3.0.0 + /@rollup/rollup-linux-arm-gnueabihf@4.1.5: + resolution: {integrity: sha512-WngCfwPEDUNbZR1FNO2TCROYUwJvRlbvPi3AS85bDUkkoRDBcjUIz42cuB1j4PKilmnZascL5xTMF/yU8YFayA==} + cpu: [arm] + os: [linux] + requiresBuild: true dev: true + optional: true - /@size-limit/file@6.0.1(size-limit@6.0.1): - resolution: {integrity: sha512-NurTGHCE2LByAZh1Rlqzjr9M1+0Hj49kpN1bNqDtH2RoTOHe02GUQbZadZcNmXEcMwoZr3/dxCaxb6txbiA9eA==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - peerDependencies: - size-limit: 6.0.1 - dependencies: - semver: 7.5.4 - size-limit: 6.0.1 + /@rollup/rollup-linux-arm64-gnu@4.1.5: + resolution: {integrity: sha512-Q2A/PEP/UTPTOBwgar3mmCaApahoezai/8e/7f4GCLV6XWCpnU4YwkQQtla7d7nUnc792Ps7g1G0WMovzIknrA==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-musl@4.1.5: + resolution: {integrity: sha512-84aBKNAVzTU/eG3tb2+kR4NGRAtm2YVW/KHwkGGDR4z1k4hyrDbuImsfs/6J74t6y0YLOe9HOSu7ejRjzUBGVQ==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-gnu@4.1.5: + resolution: {integrity: sha512-mldtP9UEBurIq2+GYMdNeiqCLW1fdgf4KdkMR/QegAeXk4jFHkKQl7p0NITrKFVyVqzISGXH5gR6GSTBH4wszw==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-musl@4.1.5: + resolution: {integrity: sha512-36p+nMcSxjAEzfU47+by102HolUtf/EfgBAidocTKAofJMTqG5QD50qzaFLk4QO+z7Qvg4qd0wr99jGAwnKOig==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-arm64-msvc@4.1.5: + resolution: {integrity: sha512-5oxhubo0A3J8aF/tG+6jHBg785HF8/88kl1YnfbDKmnqMxz/EFiAQDH9cq6lbnxofjn8tlq5KiTf0crJGOGThg==} + cpu: [arm64] + os: [win32] + requiresBuild: true dev: true + optional: true - /@size-limit/preset-small-lib@6.0.1(@swc/core@1.3.16)(size-limit@6.0.1): - resolution: {integrity: sha512-xopnY/JBBklZ/RVHH/z/w+/xgCo48pBo7SV2QbkJ0mT76cf+mS4puGttvB3gxu2nASoD98W0nBXVVhXlZ7Ndxg==} - peerDependencies: - size-limit: 6.0.1 - dependencies: - '@size-limit/file': 6.0.1(size-limit@6.0.1) - '@size-limit/webpack': 6.0.1(@swc/core@1.3.16)(size-limit@6.0.1) - size-limit: 6.0.1 - transitivePeerDependencies: - - '@parcel/css' - - '@swc/core' - - clean-css - - csso - - esbuild - - uglify-js - - webpack-cli + /@rollup/rollup-win32-ia32-msvc@4.1.5: + resolution: {integrity: sha512-uVQyBREKX9ErofL8KAZ4iVlqzSZOXSIG+BOLYuz5FD+Cg6jh1eLIeUa3Q4SgX0QaTRFeeAgSNqCC+8kZrZBpSw==} + cpu: [ia32] + os: [win32] + requiresBuild: true dev: true + optional: true - /@size-limit/webpack@6.0.1(@swc/core@1.3.16)(size-limit@6.0.1): - resolution: {integrity: sha512-fQFTb3bkldQllDdV9jQAXUgrVvrlrZXm0BzR024amUqStPflKLri2jL4Q2/H263DEvDOOmSbdNca6HT7x30qzg==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - peerDependencies: - size-limit: 6.0.1 - dependencies: - '@statoscope/webpack-plugin': 5.28.1(@swc/core@1.3.16)(webpack@5.89.0) - css-loader: 6.8.1(webpack@5.89.0) - css-minimizer-webpack-plugin: 3.4.1(webpack@5.89.0) - escape-string-regexp: 4.0.0 - mkdirp: 1.0.4 - nanoid: 3.3.6 - size-limit: 6.0.1 - style-loader: 3.3.3(webpack@5.89.0) - webpack: 5.89.0(@swc/core@1.3.16) - transitivePeerDependencies: - - '@parcel/css' - - '@swc/core' - - clean-css - - csso - - esbuild - - uglify-js - - webpack-cli + /@rollup/rollup-win32-x64-msvc@4.1.5: + resolution: {integrity: sha512-FQ5qYqRJ2vUBSom3Fos8o/6UvAMOvlus4+HGCAifH1TagbbwVnVVe0o01J1V52EWnQ8kmfpJDJ0FMrfM5yzcSA==} + cpu: [x64] + os: [win32] + requiresBuild: true dev: true + optional: true - /@soda/friendly-errors-webpack-plugin@1.8.1(webpack@5.89.0): - resolution: {integrity: sha512-h2ooWqP8XuFqTXT+NyAFbrArzfQA7R6HTezADrvD9Re8fxMLTPPniLdqVTdDaO0eIoLaAwKT+d6w+5GeTk7Vbg==} - engines: {node: '>=8.0.0'} - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 + /@sideway/address@4.1.5: + resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} dependencies: - chalk: 3.0.0 - error-stack-parser: 2.1.4 - string-width: 4.2.3 - strip-ansi: 6.0.1 - webpack: 5.89.0(@swc/core@1.3.16) + '@hapi/hoek': 9.3.0 dev: true - /@soda/get-current-script@1.0.2: - resolution: {integrity: sha512-T7VNNlYVM1SgQ+VsMYhnDkcGmWhQdL0bDyGm5TlQ3GBXnJscEClUUOKduWTmm2zCnvNLC1hc3JpuXjs/nFOc5w==} + /@sideway/formula@3.0.1: + resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} dev: true - /@statoscope/extensions@5.28.1: - resolution: {integrity: sha512-jxkHSNfr7KJOfxlueCtahv1LqscTALLkcGSrYCU71C4tR9GVYoVCUMOrhAFJr6ia+GlPhSaxOSk/j+Ay+ZN9vg==} + /@sideway/pinpoint@2.0.0: + resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} dev: true - /@statoscope/helpers@5.28.1: - resolution: {integrity: sha512-G+o+wCYsuc8+0OdY+kyrTOzm5A6X3yp8ArGTWjr9TCllqDk4LzBlHBmWo7z4SPigjNeY/i38sqi1PeWztW+rWA==} + /@sigstore/bundle@1.1.0: + resolution: {integrity: sha512-PFutXEy0SmQxYI4texPw3dd2KewuNqv7OuK1ZFtY2fM754yhvG2KdgwIhRnoEE2uHdtdGNQ8s0lb94dW9sELog==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - '@types/archy': 0.0.32 - '@types/semver': 7.5.4 - archy: 1.0.0 - jora: 1.0.0-beta.8 - semver: 7.5.4 + '@sigstore/protobuf-specs': 0.2.1 dev: true - /@statoscope/report-writer@5.28.1: - resolution: {integrity: sha512-BjZVdZa7XWkK+zUnFLFWp8yNgmis0DTaPiy/QyU56iWuW+DcF/un1wkvt8ha0jxlXRDbBOfezAztdLNx4U5mxw==} - dependencies: - '@discoveryjs/json-ext': 0.5.7 - '@types/node': 18.18.6 - '@types/pako': 2.0.2 - pako: 2.1.0 + /@sigstore/protobuf-specs@0.2.1: + resolution: {integrity: sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dev: true - /@statoscope/stats-extension-compressed@5.28.1: - resolution: {integrity: sha512-tmmKbQwibSaRpWv+p8Tb7BxhMNuSGS28NJeN1t2byzakz/FLCzvkT9tj/aBxfQqEIOGusmN+8znz6XSmJ0cbew==} + /@sigstore/sign@1.0.0: + resolution: {integrity: sha512-INxFVNQteLtcfGmcoldzV6Je0sbbfh9I16DM4yJPw3j5+TFP8X6uIiA18mvpEa9yyeycAKgPmOA3X9hVdVTPUA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - '@statoscope/extensions': 5.28.1 - '@statoscope/helpers': 5.28.1 - '@statoscope/stats': 5.28.1 - gzip-size: 6.0.0 + '@sigstore/bundle': 1.1.0 + '@sigstore/protobuf-specs': 0.2.1 + make-fetch-happen: 11.1.1 + transitivePeerDependencies: + - supports-color dev: true - /@statoscope/stats-extension-custom-reports@5.28.1: - resolution: {integrity: sha512-f527f6bjl+6iJow+zQFw+hZxGR2hY/FIuFTxhrcbrDXqXu7ApK0e0azJJxAQs0eO1WPMSduXt2k/5kSFecC/kA==} + /@sigstore/tuf@1.0.3: + resolution: {integrity: sha512-2bRovzs0nJZFlCN3rXirE4gwxCn97JNjMmwpecqlbgV9WcxX7WRuIrgzx/X7Ib7MYRbyUTpBYE0s2x6AmZXnlg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - '@statoscope/extensions': 5.28.1 - '@statoscope/helpers': 5.28.1 - '@statoscope/stats': 5.28.1 - '@statoscope/types': 5.28.1 + '@sigstore/protobuf-specs': 0.2.1 + tuf-js: 1.1.7 + transitivePeerDependencies: + - supports-color dev: true - /@statoscope/stats-extension-package-info@5.28.1: - resolution: {integrity: sha512-HvwlMfFVSx91KmwUmeIcJZS/0rVbNTRvMEBHzPsZ1Y5BIqZlH/bk/HK8nWYjptUaNkpmcxewp5xO9FtpMaSNVA==} - dependencies: - '@statoscope/extensions': 5.28.1 - '@statoscope/helpers': 5.28.1 - '@statoscope/stats': 5.28.1 + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: true - /@statoscope/stats-extension-stats-validation-result@5.28.1: - resolution: {integrity: sha512-vekMnWXVikWo2c4IzmjqKkHGxBTE9RNpTxnD5t5qGz2wx3IHuosV8kp4yaUlD/Atv8C+aLoF0Jg0Q4eB7IYWEA==} - dependencies: - '@statoscope/extensions': 5.28.1 - '@statoscope/helpers': 5.28.1 - '@statoscope/stats': 5.28.1 - '@statoscope/types': 5.28.1 + /@sindresorhus/is@4.6.0: + resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} + engines: {node: '>=10'} dev: true - /@statoscope/stats@5.28.1: - resolution: {integrity: sha512-BB9IZQcBo9I0FFL5sHttF5ubhfE3HkbDMPw5MqEBCee7m6NrlrRe8dxLpPsCUkeFytTWjRLKrY1JOgQq/iE4Fg==} + /@sindresorhus/merge-streams@2.3.0: + resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} + engines: {node: '>=18'} dev: true - /@statoscope/types@5.28.1: - resolution: {integrity: sha512-PLcSaRQvGkKhjVLU3YbjFDfZN6H2WF0vp0QqQOOh6qvxRhlOc14ckyou04bnvEqsSWXpvkMPJhOLue+YdIFI9A==} + /@sinonjs/commons@3.0.0: + resolution: {integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==} dependencies: - '@statoscope/stats': 5.28.1 + type-detect: 4.0.8 dev: true - /@statoscope/webpack-model@5.28.1(@swc/core@1.3.16): - resolution: {integrity: sha512-/WELQXP4Yisx3ATpIjuTd7/m7qDFRv52g4Y8mbKLr5ve1hHEwnI3w46qqRV+idJv+3ntO0HxPnv8jIoHJzgmIA==} + /@sinonjs/fake-timers@10.3.0: + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} dependencies: - '@statoscope/extensions': 5.28.1 - '@statoscope/helpers': 5.28.1 - '@statoscope/stats': 5.28.1 - '@statoscope/stats-extension-compressed': 5.28.1 - '@statoscope/stats-extension-custom-reports': 5.28.1 - '@statoscope/stats-extension-package-info': 5.28.1 - '@statoscope/stats-extension-stats-validation-result': 5.28.1 - '@statoscope/types': 5.28.1 - '@types/md5': 2.3.4 - '@types/webpack': 5.28.4(@swc/core@1.3.16) - md5: 2.3.0 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - webpack-cli + '@sinonjs/commons': 3.0.0 dev: true - /@statoscope/webpack-plugin@5.28.1(@swc/core@1.3.16)(webpack@5.89.0): - resolution: {integrity: sha512-prVwWkBoGiNmJmzjWhpIT/NAV1cqSGiTHjRVpRZYWSdkQBJ5upsXg++GXhFpZEE0p1fkTFgEsVFElYFclnAT6A==} + /@size-limit/esbuild@11.0.1(size-limit@11.0.1): + resolution: {integrity: sha512-JXxzmDW7Rch6yxd4u8g6uE21g34oT7fk7Ex2gfDwN4TtciOghI3By4fqxXOwGYkDueEcIw3LXNGjHnTS8Dz5nA==} + engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: - webpack: ^4.0.0 || ^5.0.0 + size-limit: 11.0.1 dependencies: - '@discoveryjs/json-ext': 0.5.7 - '@statoscope/report-writer': 5.28.1 - '@statoscope/stats': 5.28.1 - '@statoscope/stats-extension-compressed': 5.28.1 - '@statoscope/stats-extension-custom-reports': 5.28.1 - '@statoscope/types': 5.28.1 - '@statoscope/webpack-model': 5.28.1(@swc/core@1.3.16) - '@statoscope/webpack-stats-extension-compressed': 5.28.1(@swc/core@1.3.16)(webpack@5.89.0) - '@statoscope/webpack-stats-extension-package-info': 5.28.1(@swc/core@1.3.16)(webpack@5.89.0) - '@statoscope/webpack-ui': 5.28.1 - '@types/node': 18.18.6 - '@types/webpack': 5.28.4(@swc/core@1.3.16) - open: 8.4.2 - webpack: 5.89.0(@swc/core@1.3.16) - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - webpack-cli + esbuild: 0.19.12 + nanoid: 5.0.6 + size-limit: 11.0.1 dev: true - /@statoscope/webpack-stats-extension-compressed@5.28.1(@swc/core@1.3.16)(webpack@5.89.0): - resolution: {integrity: sha512-ynQUGOmn+11TnpoKhcSAdE2UztWmeIQhSnflIkAyum1qp8jSzoPgYMas3cgwsI4+Lt8n+HKMjpBI4hKzJoGEQg==} + /@size-limit/file@11.0.1(size-limit@11.0.1): + resolution: {integrity: sha512-ioSYJ1WY66kc9+3dgTHi5mT/gcaNNCJ22xU87cjzfKiNxmol+lGsNKbplmrJf+QezvPH9kRIFOWxBjGY+DOt3g==} + engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: - webpack: ^4.0.0 || ^5.0.0 + size-limit: 11.0.1 dependencies: - '@statoscope/stats': 5.28.1 - '@statoscope/stats-extension-compressed': 5.28.1 - '@statoscope/webpack-model': 5.28.1(@swc/core@1.3.16) - '@types/webpack': 5.28.4(@swc/core@1.3.16) - webpack: 5.89.0(@swc/core@1.3.16) - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - webpack-cli + size-limit: 11.0.1 dev: true - /@statoscope/webpack-stats-extension-package-info@5.28.1(@swc/core@1.3.16)(webpack@5.89.0): - resolution: {integrity: sha512-3tHHQrvEf7nE7LSII1+QYdKGN92s4r0wVjt9xrmitt8FfKrq4UnizIJbLKoeebmOndN5Vz0518QqL4em1Vmhlg==} + /@size-limit/preset-small-lib@11.0.1(size-limit@11.0.1): + resolution: {integrity: sha512-c1N5/wN5FRQ03aOpoCw9ed2TP/1cmjt8vKAeTxO40OSfj6ImkpkMarl7e7pCnBElMULc993aUP5UjFhDN6bU4w==} peerDependencies: - webpack: ^4.0.0 || ^5.0.0 + size-limit: 11.0.1 dependencies: - '@statoscope/stats': 5.28.1 - '@statoscope/stats-extension-package-info': 5.28.1 - '@statoscope/webpack-model': 5.28.1(@swc/core@1.3.16) - '@types/webpack': 5.28.4(@swc/core@1.3.16) - webpack: 5.89.0(@swc/core@1.3.16) - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - webpack-cli + '@size-limit/esbuild': 11.0.1(size-limit@11.0.1) + '@size-limit/file': 11.0.1(size-limit@11.0.1) + size-limit: 11.0.1 dev: true - /@statoscope/webpack-ui@5.28.1: - resolution: {integrity: sha512-mmBaLmpuqG244shyrIFt1ZLAZg6bCzJ9aIrqevTzbuXug869ieVS4moWDJPG7CB/G67yiztEzzPJ23LHJJelQw==} + /@soda/friendly-errors-webpack-plugin@1.8.1(webpack@5.89.0): + resolution: {integrity: sha512-h2ooWqP8XuFqTXT+NyAFbrArzfQA7R6HTezADrvD9Re8fxMLTPPniLdqVTdDaO0eIoLaAwKT+d6w+5GeTk7Vbg==} + engines: {node: '>=8.0.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 dependencies: - '@statoscope/types': 5.28.1 - '@types/md5': 2.3.4 + chalk: 3.0.0 + error-stack-parser: 2.1.4 + string-width: 4.2.3 + strip-ansi: 6.0.1 + webpack: 5.89.0(@swc/core@1.3.107) dev: true - /@swc/cli@0.1.57(@swc/core@1.3.16): - resolution: {integrity: sha512-HxM8TqYHhAg+zp7+RdTU69bnkl4MWdt1ygyp6BDIPjTiaJVH6Dizn2ezbgDS8mnFZI1FyhKvxU/bbaUs8XhzQg==} - engines: {node: '>= 12.13'} + /@soda/get-current-script@1.0.2: + resolution: {integrity: sha512-T7VNNlYVM1SgQ+VsMYhnDkcGmWhQdL0bDyGm5TlQ3GBXnJscEClUUOKduWTmm2zCnvNLC1hc3JpuXjs/nFOc5w==} + dev: true + + /@swc/cli@0.3.10(@swc/core@1.3.107): + resolution: {integrity: sha512-YWfYo9kXdbmIuGwIPth9geKgb0KssCMTdZa44zAN5KoqcuCP2rTW9s60heQDSRNpbtCmUr7BKF1VivsoHXrvrQ==} + engines: {node: '>= 16.14.0'} hasBin: true peerDependencies: '@swc/core': ^1.2.66 @@ -3943,15 +4178,20 @@ packages: chokidar: optional: true dependencies: - '@swc/core': 1.3.16 - commander: 7.2.0 + '@mole-inc/bin-wrapper': 8.0.1 + '@swc/core': 1.3.107 + '@swc/counter': 0.1.3 + commander: 8.3.0 fast-glob: 3.3.1 + minimatch: 9.0.3 + piscina: 4.4.0 + semver: 7.5.4 slash: 3.0.0 source-map: 0.7.4 dev: true - /@swc/core-darwin-arm64@1.3.16: - resolution: {integrity: sha512-tVhkffyl0UQELkz4tfIcBw4PahRTmeP72Yds1v2bvVpeH35i9SIYCsE9z6nH2uG5CwD+3OqvHZ47PNg3Shq+bw==} + /@swc/core-darwin-arm64@1.3.107: + resolution: {integrity: sha512-47tD/5vSXWxPd0j/ZllyQUg4bqalbQTsmqSw0J4dDdS82MWqCAwUErUrAZPRjBkjNQ6Kmrf5rpCWaGTtPw+ngw==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] @@ -3959,8 +4199,8 @@ packages: dev: true optional: true - /@swc/core-darwin-x64@1.3.16: - resolution: {integrity: sha512-5wFflU0G31TlTpgpGEmUxRvSVgRnMPGdbY/dCaGri8xIlE7jVm5lf9mGhdAAKtG+Y0gxmMtNzi2NLicOAfEKbw==} + /@swc/core-darwin-x64@1.3.107: + resolution: {integrity: sha512-hwiLJ2ulNkBGAh1m1eTfeY1417OAYbRGcb/iGsJ+LuVLvKAhU/itzsl535CvcwAlt2LayeCFfcI8gdeOLeZa9A==} engines: {node: '>=10'} cpu: [x64] os: [darwin] @@ -3968,8 +4208,8 @@ packages: dev: true optional: true - /@swc/core-linux-arm-gnueabihf@1.3.16: - resolution: {integrity: sha512-KxTs9/Qo45MazfVywsol+OQIUTutGSPY1GbmnfVAhYqrLDt0C21YnpV9+9tjvGNys77F2QdoZGOMJ+fBvr7AJw==} + /@swc/core-linux-arm-gnueabihf@1.3.107: + resolution: {integrity: sha512-I2wzcC0KXqh0OwymCmYwNRgZ9nxX7DWnOOStJXV3pS0uB83TXAkmqd7wvMBuIl9qu4Hfomi9aDM7IlEEn9tumQ==} engines: {node: '>=10'} cpu: [arm] os: [linux] @@ -3977,8 +4217,8 @@ packages: dev: true optional: true - /@swc/core-linux-arm64-gnu@1.3.16: - resolution: {integrity: sha512-K0F8KVZzHpPsiL3+x3XZBAlECnLn5+BsAa995KUmQ4ALMkOGfkXRVrqkPEpxOTMyjNMyQgIbo261gk7o13+ONg==} + /@swc/core-linux-arm64-gnu@1.3.107: + resolution: {integrity: sha512-HWgnn7JORYlOYnGsdunpSF8A+BCZKPLzLtEUA27/M/ZuANcMZabKL9Zurt7XQXq888uJFAt98Gy+59PU90aHKg==} engines: {node: '>=10'} cpu: [arm64] os: [linux] @@ -3986,8 +4226,8 @@ packages: dev: true optional: true - /@swc/core-linux-arm64-musl@1.3.16: - resolution: {integrity: sha512-tBZtiS2YmAgHNS6TxxUGc1Tn8HqL8XT3EbmyfewmJf8ALE5RcP12tMuXGJJr/9ac+QmwWaFMnXsmfu3hzdDdkQ==} + /@swc/core-linux-arm64-musl@1.3.107: + resolution: {integrity: sha512-vfPF74cWfAm8hyhS8yvYI94ucMHIo8xIYU+oFOW9uvDlGQRgnUf/6DEVbLyt/3yfX5723Ln57U8uiMALbX5Pyw==} engines: {node: '>=10'} cpu: [arm64] os: [linux] @@ -3995,8 +4235,8 @@ packages: dev: true optional: true - /@swc/core-linux-x64-gnu@1.3.16: - resolution: {integrity: sha512-G/opqijVDalDZ7XfQYFhMRK1o74y5ZMP0SAOAajZQUiYBjAYWphpIbPLGoM3g3sK0CA2khA/P+l9kjV7VSvgyA==} + /@swc/core-linux-x64-gnu@1.3.107: + resolution: {integrity: sha512-uBVNhIg0ip8rH9OnOsCARUFZ3Mq3tbPHxtmWk9uAa5u8jQwGWeBx5+nTHpDOVd3YxKb6+5xDEI/edeeLpha/9g==} engines: {node: '>=10'} cpu: [x64] os: [linux] @@ -4004,8 +4244,8 @@ packages: dev: true optional: true - /@swc/core-linux-x64-musl@1.3.16: - resolution: {integrity: sha512-eedKXdDV1SFMZ20lETf4Qz0zc+yYzsQ7pqQzT9qNQwh3fo1u/iPx55Aq9MO0CEN+w579WRwwANtSSsuT3yr0tA==} + /@swc/core-linux-x64-musl@1.3.107: + resolution: {integrity: sha512-mvACkUvzSIB12q1H5JtabWATbk3AG+pQgXEN95AmEX2ZA5gbP9+B+mijsg7Sd/3tboHr7ZHLz/q3SHTvdFJrEw==} engines: {node: '>=10'} cpu: [x64] os: [linux] @@ -4013,8 +4253,8 @@ packages: dev: true optional: true - /@swc/core-win32-arm64-msvc@1.3.16: - resolution: {integrity: sha512-7mBA6aCtBWKQJ5teL+v8wHB4ShNCLQslzu5lso7fUH7mNViMl013X6HPV1umQLIM3f2tC+jMhSmtosxrRNiGDQ==} + /@swc/core-win32-arm64-msvc@1.3.107: + resolution: {integrity: sha512-J3P14Ngy/1qtapzbguEH41kY109t6DFxfbK4Ntz9dOWNuVY3o9/RTB841ctnJk0ZHEG+BjfCJjsD2n8H5HcaOA==} engines: {node: '>=10'} cpu: [arm64] os: [win32] @@ -4022,8 +4262,8 @@ packages: dev: true optional: true - /@swc/core-win32-ia32-msvc@1.3.16: - resolution: {integrity: sha512-if3fwUYrwmskEM9QyYdg4edx1dIXrUYvolszAxfMyUq1GqezkK5PmIO5IAazSZOk8QHaUIA0wcTNKkf8sVyLAw==} + /@swc/core-win32-ia32-msvc@1.3.107: + resolution: {integrity: sha512-ZBUtgyjTHlz8TPJh7kfwwwFma+ktr6OccB1oXC8fMSopD0AxVnQasgun3l3099wIsAB9eEsJDQ/3lDkOLs1gBA==} engines: {node: '>=10'} cpu: [ia32] os: [win32] @@ -4031,8 +4271,8 @@ packages: dev: true optional: true - /@swc/core-win32-x64-msvc@1.3.16: - resolution: {integrity: sha512-EaXXW0M4EoodsH1ftEaPzixF5nZYKyXk5Qnzqq6hDSOfYzoUOiJ8nBXTHF6xqDHIPVRS1OUDzBujhHsGhQcuPw==} + /@swc/core-win32-x64-msvc@1.3.107: + resolution: {integrity: sha512-Eyzo2XRqWOxqhE1gk9h7LWmUf4Bp4Xn2Ttb0ayAXFp6YSTxQIThXcT9kipXZqcpxcmDwoq8iWbbf2P8XL743EA==} engines: {node: '>=10'} cpu: [x64] os: [win32] @@ -4040,35 +4280,60 @@ packages: dev: true optional: true - /@swc/core@1.3.16: - resolution: {integrity: sha512-y6xxxampiKWNMGWnEAJktDwk/u9j0SApgJyjgi3LQv+OTtm2LiPS3wtfYnWWXtsuKkL1HCf/H2/NLOwO0WLaPw==} + /@swc/core@1.3.107: + resolution: {integrity: sha512-zKhqDyFcTsyLIYK1iEmavljZnf4CCor5pF52UzLAz4B6Nu/4GLU+2LQVAf+oRHjusG39PTPjd2AlRT3f3QWfsQ==} engines: {node: '>=10'} - hasBin: true requiresBuild: true + peerDependencies: + '@swc/helpers': ^0.5.0 + peerDependenciesMeta: + '@swc/helpers': + optional: true + dependencies: + '@swc/counter': 0.1.3 + '@swc/types': 0.1.6 optionalDependencies: - '@swc/core-darwin-arm64': 1.3.16 - '@swc/core-darwin-x64': 1.3.16 - '@swc/core-linux-arm-gnueabihf': 1.3.16 - '@swc/core-linux-arm64-gnu': 1.3.16 - '@swc/core-linux-arm64-musl': 1.3.16 - '@swc/core-linux-x64-gnu': 1.3.16 - '@swc/core-linux-x64-musl': 1.3.16 - '@swc/core-win32-arm64-msvc': 1.3.16 - '@swc/core-win32-ia32-msvc': 1.3.16 - '@swc/core-win32-x64-msvc': 1.3.16 - dev: true - - /@swc/jest@0.2.23(@swc/core@1.3.16): - resolution: {integrity: sha512-ZLj17XjHbPtNsgqjm83qizENw05emLkKGu3WuPUttcy9hkngl0/kcc7fDbcSBpADS0GUtsO+iKPjZFWVAtJSlA==} + '@swc/core-darwin-arm64': 1.3.107 + '@swc/core-darwin-x64': 1.3.107 + '@swc/core-linux-arm-gnueabihf': 1.3.107 + '@swc/core-linux-arm64-gnu': 1.3.107 + '@swc/core-linux-arm64-musl': 1.3.107 + '@swc/core-linux-x64-gnu': 1.3.107 + '@swc/core-linux-x64-musl': 1.3.107 + '@swc/core-win32-arm64-msvc': 1.3.107 + '@swc/core-win32-ia32-msvc': 1.3.107 + '@swc/core-win32-x64-msvc': 1.3.107 + dev: true + + /@swc/counter@0.1.3: + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + dev: true + + /@swc/jest@0.2.36(@swc/core@1.3.107): + resolution: {integrity: sha512-8X80dp81ugxs4a11z1ka43FPhP+/e+mJNXJSxiNYk8gIX/jPBtY4gQTrKu/KIoco8bzKuPI5lUxjfLiGsfvnlw==} engines: {npm: '>= 7.0.0'} peerDependencies: '@swc/core': '*' dependencies: - '@jest/create-cache-key-function': 27.5.1 - '@swc/core': 1.3.16 + '@jest/create-cache-key-function': 29.7.0 + '@swc/core': 1.3.107 + '@swc/counter': 0.1.3 jsonc-parser: 3.2.0 dev: true + /@swc/types@0.1.6: + resolution: {integrity: sha512-/JLo/l2JsT/LRd80C3HfbmVpxOAJ11FO2RCEslFrgzLltoP9j8XIbsyDcfCt2WWyX+CM96rBoNM+IToAkFOugg==} + dependencies: + '@swc/counter': 0.1.3 + dev: true + + /@szmarczak/http-timer@4.0.6: + resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} + engines: {node: '>=10'} + dependencies: + defer-to-connect: 2.0.1 + dev: true + /@testing-library/dom@8.20.1: resolution: {integrity: sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g==} engines: {node: '>=12'} @@ -4112,7 +4377,7 @@ packages: redent: 3.0.0 dev: true - /@testing-library/jest-dom@6.1.2(jest@29.5.0): + /@testing-library/jest-dom@6.1.2(@types/jest@29.5.3)(jest@29.7.0): resolution: {integrity: sha512-NP9jl1Q2qDDtx+cqogowtQtmgD2OVs37iMSIsTv5eN5ETRkf26Kj6ugVwA93/gZzzFWQAsgkKkcftDe91BJCkQ==} engines: {node: '>=14', npm: '>=6', yarn: '>=1'} peerDependencies: @@ -4132,11 +4397,12 @@ packages: dependencies: '@adobe/css-tools': 4.3.2 '@babel/runtime': 7.23.2 + '@types/jest': 29.5.3 aria-query: 5.3.0 chalk: 3.0.0 css.escape: 1.5.1 dom-accessibility-api: 0.5.16 - jest: 29.5.0 + jest: 29.7.0(@types/node@20.4.5) lodash: 4.17.21 redent: 3.0.0 dev: true @@ -4169,7 +4435,7 @@ packages: vue-template-compiler: 2.7.16 dev: true - /@testing-library/vue@7.0.0(@vue/compiler-sfc@3.4.21)(typescript@4.9.5)(vue@3.4.21): + /@testing-library/vue@7.0.0(@vue/compiler-sfc@3.4.21)(typescript@5.1.6)(vue@3.4.21): resolution: {integrity: sha512-JU/q93HGo2qdm1dCgWymkeQlfpC0/0/DBZ2nAHgEAsVZxX11xVIxT7gbXdI7HACQpUbsUWt1zABGU075Fzt9XQ==} engines: {node: '>=14'} peerDependencies: @@ -4179,12 +4445,16 @@ packages: '@babel/runtime': 7.23.2 '@testing-library/dom': 9.3.1 '@vue/compiler-sfc': 3.4.21 - '@vue/test-utils': 2.4.5(typescript@4.9.5) - vue: 3.4.21(typescript@4.9.5) + '@vue/test-utils': 2.4.5(typescript@5.1.6) + vue: 3.4.21(typescript@5.1.6) transitivePeerDependencies: - typescript dev: true + /@tokenizer/token@0.3.0: + resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} + dev: true + /@tootallnate/once@2.0.0: resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} @@ -4195,8 +4465,33 @@ packages: engines: {node: '>=10.13.0'} dev: true - /@types/archy@0.0.32: - resolution: {integrity: sha512-5ZZ5+YGmUE01yejiXsKnTcvhakMZ2UllZlMsQni53Doc1JWhe21ia8VntRoRD6fAEWw08JBh/z9qQHJ+//MrIg==} + /@tsconfig/node10@1.0.10: + resolution: {integrity: sha512-PiaIWIoPvO6qm6t114ropMCagj6YAF24j9OkCA2mJDXFnlionEwhsBCJ8yek4aib575BI3OkART/90WsgHgLWw==} + dev: true + + /@tsconfig/node12@1.0.11: + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + dev: true + + /@tsconfig/node14@1.0.3: + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + dev: true + + /@tsconfig/node16@1.0.4: + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + dev: true + + /@tufjs/canonical-json@1.0.0: + resolution: {integrity: sha512-QTnf++uxunWvG2z3UFNzAoQPHxnSXOwtaI3iJ+AohhV+5vONuArPjJE7aPXPVXfXJsqrVbZBu9b81AJoSd09IQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /@tufjs/models@1.0.4: + resolution: {integrity: sha512-qaGV9ltJP0EO25YfFUPhxRVK0evXFIAGicsVXuRim4Ed9cjPxYhNnNJ49SFmbeLgtxpslIkX317IgpfcHPVj/A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + '@tufjs/canonical-json': 1.0.0 + minimatch: 9.0.3 dev: true /@types/aria-query@5.0.3: @@ -4236,26 +4531,35 @@ packages: resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} dependencies: '@types/connect': 3.4.38 - '@types/node': 20.8.7 + '@types/node': 20.11.30 dev: true /@types/bonjour@3.5.13: resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} dependencies: - '@types/node': 20.8.7 + '@types/node': 20.11.30 + dev: true + + /@types/cacheable-request@6.0.3: + resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} + dependencies: + '@types/http-cache-semantics': 4.0.4 + '@types/keyv': 3.1.4 + '@types/node': 20.11.30 + '@types/responselike': 1.0.3 dev: true /@types/connect-history-api-fallback@1.5.4: resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} dependencies: '@types/express-serve-static-core': 4.17.43 - '@types/node': 20.8.7 + '@types/node': 20.11.30 dev: true /@types/connect@3.4.38: resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: - '@types/node': 20.8.7 + '@types/node': 20.11.30 dev: true /@types/eslint-scope@3.7.6: @@ -4272,6 +4576,10 @@ packages: '@types/json-schema': 7.0.14 dev: true + /@types/estree@0.0.39: + resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} + dev: true + /@types/estree@1.0.3: resolution: {integrity: sha512-CS2rOaoQ/eAgAfcTfq6amKG7bsN+EMcgGY4FAFQdvSj2y1ixvOZTUA9mOtCai7E1SYu283XNw7urKK30nP3wkQ==} dev: true @@ -4279,7 +4587,7 @@ packages: /@types/express-serve-static-core@4.17.43: resolution: {integrity: sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==} dependencies: - '@types/node': 20.8.7 + '@types/node': 20.11.30 '@types/qs': 6.9.14 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -4294,16 +4602,33 @@ packages: '@types/serve-static': 1.15.5 dev: true + /@types/fs-extra@8.1.5: + resolution: {integrity: sha512-0dzKcwO+S8s2kuF5Z9oUWatQJj5Uq/iqphEtE3GQJVRRYm/tD1LglU2UnXi2A8jLq5umkGouOXOR9y0n613ZwQ==} + dependencies: + '@types/node': 20.11.30 + dev: true + + /@types/glob@7.2.0: + resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} + dependencies: + '@types/minimatch': 3.0.5 + '@types/node': 20.11.30 + dev: true + /@types/graceful-fs@4.1.8: resolution: {integrity: sha512-NhRH7YzWq8WiNKVavKPBmtLYZHxNY19Hh+az28O/phfp68CF45pMFud+ZzJ8ewnxnC5smIdF3dqFeiSUQ5I+pw==} dependencies: - '@types/node': 20.8.7 + '@types/node': 20.11.30 dev: true /@types/html-minifier-terser@6.1.0: resolution: {integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==} dev: true + /@types/http-cache-semantics@4.0.4: + resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} + dev: true + /@types/http-errors@2.0.4: resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} dev: true @@ -4311,7 +4636,7 @@ packages: /@types/http-proxy@1.17.14: resolution: {integrity: sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==} dependencies: - '@types/node': 20.8.7 + '@types/node': 20.11.30 dev: true /@types/is-ci@3.0.3: @@ -4336,8 +4661,8 @@ packages: '@types/istanbul-lib-report': 3.0.2 dev: true - /@types/jest@29.5.12: - resolution: {integrity: sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==} + /@types/jest@29.5.3: + resolution: {integrity: sha512-1Nq7YrO/vJE/FYnqYyw0FS8LdrjExSgIiHyKg7xPpn+yi8Q4huZryKnkJatN1ZRH89Kw2v33/8ZMB7DuZeSLlA==} dependencies: expect: 29.7.0 pretty-format: 29.7.0 @@ -4346,7 +4671,7 @@ packages: /@types/jsdom@20.0.1: resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} dependencies: - '@types/node': 20.8.7 + '@types/node': 20.11.30 '@types/tough-cookie': 4.0.4 parse5: 7.1.2 dev: true @@ -4359,8 +4684,10 @@ packages: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: true - /@types/md5@2.3.4: - resolution: {integrity: sha512-e/L4hvpCK8GavKXmP02QlNilZOj8lpmZGGA9QGMMPZjCUoKgi1B4BvhXcbruIi6r+PqzpcjLfda/tocpHFKqDA==} + /@types/keyv@3.1.4: + resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} + dependencies: + '@types/node': 20.11.30 dev: true /@types/mime@1.3.5: @@ -4382,31 +4709,27 @@ packages: /@types/node-forge@1.3.11: resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} dependencies: - '@types/node': 20.8.7 + '@types/node': 20.11.30 dev: true /@types/node@12.20.55: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} dev: true - /@types/node@18.18.6: - resolution: {integrity: sha512-wf3Vz+jCmOQ2HV1YUJuCWdL64adYxumkrxtc+H1VUQlnQI04+5HtH+qZCOE21lBE7gIrt+CwX2Wv8Acrw5Ak6w==} + /@types/node@20.11.30: + resolution: {integrity: sha512-dHM6ZxwlmuZaRmUPfv1p+KrdD1Dci04FbdEm/9wEMouFqxYoFl5aMkt0VMAUtYRQDyYvD41WJLukhq/ha3YuTw==} + dependencies: + undici-types: 5.26.5 dev: true - /@types/node@20.8.7: - resolution: {integrity: sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ==} - dependencies: - undici-types: 5.25.3 + /@types/node@20.4.5: + resolution: {integrity: sha512-rt40Nk13II9JwQBdeYqmbn2Q6IVTA5uPhvSO+JVqdXw/6/4glI6oR9ezty/A9Hg5u7JH4OmYmuQ+XvjKm0Datg==} dev: true /@types/normalize-package-data@2.4.3: resolution: {integrity: sha512-ehPtgRgaULsFG8x0NeYJvmyH1hmlfsNLujHe9dQEia/7MAJYdzMSi19JtchUHjmBA6XC/75dK55mzZH+RyieSg==} dev: true - /@types/pako@2.0.2: - resolution: {integrity: sha512-AtTbzIwhvLMTEUPudP3hxUwNK50DoX3amfVJmmL7WQH5iF3Kfqs8pG1tStsewHqmh75ULmjjldKn/B70D6DNcQ==} - dev: true - /@types/parse-json@4.0.1: resolution: {integrity: sha512-3YmXzzPAdOTVljVMkTMBdBEvlOLg2cDQaDhnnhT3nT9uDbnJzjWhKlzb+desT12Y7tGqaN6d+AbozcKzyL36Ng==} dev: true @@ -4426,21 +4749,33 @@ packages: /@types/react-dom@18.2.22: resolution: {integrity: sha512-fHkBXPeNtfvri6gdsMYyW+dW7RXFo6Ad09nLFK0VQWR7yGLai/Cyvyj696gbwYvBnhGtevUG9cET0pmUbMtoPQ==} dependencies: - '@types/react': 18.2.70 + '@types/react': 18.2.18 dev: true - /@types/react@18.2.70: - resolution: {integrity: sha512-hjlM2hho2vqklPhopNkXkdkeq6Lv8WSZTpr7956zY+3WS5cfYUewtCzsJLsbW5dEv3lfSeQ4W14ZFeKC437JRQ==} + /@types/react@18.2.18: + resolution: {integrity: sha512-da4NTSeBv/P34xoZPhtcLkmZuJ+oYaCxHmyHzwaDQo9RQPBeXV+06gEk2FpqEcsX9XrnNLvRpVh6bdavDSjtiQ==} dependencies: '@types/prop-types': 15.7.12 '@types/scheduler': 0.16.8 csstype: 3.1.3 dev: true + /@types/resolve@1.17.1: + resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} + dependencies: + '@types/node': 20.11.30 + dev: true + /@types/resolve@1.20.2: resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} dev: true + /@types/responselike@1.0.3: + resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} + dependencies: + '@types/node': 20.11.30 + dev: true + /@types/retry@0.12.0: resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} dev: true @@ -4457,7 +4792,7 @@ packages: resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} dependencies: '@types/mime': 1.3.5 - '@types/node': 20.8.7 + '@types/node': 20.11.30 dev: true /@types/serve-index@1.9.4: @@ -4471,13 +4806,13 @@ packages: dependencies: '@types/http-errors': 2.0.4 '@types/mime': 3.0.4 - '@types/node': 20.8.7 + '@types/node': 20.11.30 dev: true /@types/sockjs@0.3.36: resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} dependencies: - '@types/node': 20.8.7 + '@types/node': 20.11.30 dev: true /@types/stack-utils@2.0.2: @@ -4487,49 +4822,30 @@ packages: /@types/testing-library__jest-dom@5.14.9: resolution: {integrity: sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw==} dependencies: - '@types/jest': 29.5.12 + '@types/jest': 29.5.3 dev: true /@types/tough-cookie@4.0.4: resolution: {integrity: sha512-95Sfz4nvMAb0Nl9DTxN3j64adfwfbBPEYq14VN7zT5J5O2M9V6iZMIIQU1U+pJyl9agHYHNCqhCXgyEtIRRa5A==} dev: true - /@types/webpack@5.28.4(@swc/core@1.3.16): - resolution: {integrity: sha512-sVIGIQdg0bNruxwQvpiNXaIXndScf+qTfYULLo2DI8urXgxC7f8Rw8aNHjjckdI3QaV3cRHqoHdCuBMMyUtGiw==} - dependencies: - '@types/node': 18.18.6 - tapable: 2.2.1 - webpack: 5.89.0(@swc/core@1.3.16) - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - webpack-cli - dev: true - /@types/ws@8.5.10: resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} dependencies: - '@types/node': 20.8.7 + '@types/node': 20.11.30 dev: true /@types/yargs-parser@21.0.2: resolution: {integrity: sha512-5qcvofLPbfjmBfKaLfj/+f+Sbd6pN4zl7w7VSVI5uz7m9QZTuB2aZAa2uo1wHFBNN2x6g/SoTkXmd8mQnQF2Cw==} dev: true - /@types/yargs@16.0.7: - resolution: {integrity: sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==} - dependencies: - '@types/yargs-parser': 21.0.2 - dev: true - /@types/yargs@17.0.29: resolution: {integrity: sha512-nacjqA3ee9zRF/++a3FUY1suHTFKZeHba2n8WeDw9cCVdmzmHpIxyzOJBcpHvvEmS8E9KqWlSnWHUkOrkhWcvA==} dependencies: '@types/yargs-parser': 21.0.2 dev: true - /@typescript-eslint/experimental-utils@4.33.0(eslint@7.32.0)(typescript@4.9.5): + /@typescript-eslint/experimental-utils@4.33.0(eslint@7.32.0)(typescript@5.1.6): resolution: {integrity: sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==} engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: @@ -4538,7 +4854,7 @@ packages: '@types/json-schema': 7.0.14 '@typescript-eslint/scope-manager': 4.33.0 '@typescript-eslint/types': 4.33.0 - '@typescript-eslint/typescript-estree': 4.33.0(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 4.33.0(typescript@5.1.6) eslint: 7.32.0 eslint-scope: 5.1.1 eslint-utils: 3.0.0(eslint@7.32.0) @@ -4560,7 +4876,7 @@ packages: engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} dev: true - /@typescript-eslint/typescript-estree@4.33.0(typescript@4.9.5): + /@typescript-eslint/typescript-estree@4.33.0(typescript@5.1.6): resolution: {integrity: sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==} engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: @@ -4575,8 +4891,8 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 - tsutils: 3.21.0(typescript@4.9.5) - typescript: 4.9.5 + tsutils: 3.21.0(typescript@5.1.6) + typescript: 5.1.6 transitivePeerDependencies: - supports-color dev: true @@ -4589,6 +4905,10 @@ packages: eslint-visitor-keys: 2.1.0 dev: true + /@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + dev: true + /@vue/babel-helper-vue-jsx-merge-props@1.4.0: resolution: {integrity: sha512-JkqXfCkUDp4PIlFdDQ0TdXoIejMtTHP67/pvxlgeY+u5k3LEdKuWZ3LK6xkxo52uDoABIVyRwqVkfLQJhk7VBA==} dev: true @@ -4767,18 +5087,18 @@ packages: resolution: {integrity: sha512-KmtievE/B4kcXp6SuM2gzsnSd8WebkQpg3XaB6GmFh1BJGRqa1UiW9up7L/Q67uOdTigHxr5Ar2lZms4RcDjwQ==} dev: true - /@vue/cli-plugin-babel@5.0.8(@swc/core@1.3.16)(@vue/cli-service@5.0.8)(core-js@3.26.1)(vue@2.7.16): + /@vue/cli-plugin-babel@5.0.8(@swc/core@1.3.107)(@vue/cli-service@5.0.8)(core-js@3.26.1)(vue@2.7.16): resolution: {integrity: sha512-a4qqkml3FAJ3auqB2kN2EMPocb/iu0ykeELwed+9B1c1nQ1HKgslKMHMPavYx3Cd/QAx2mBD4hwKBqZXEI/CsQ==} peerDependencies: '@vue/cli-service': ^3.0.0 || ^4.0.0 || ^5.0.0-0 dependencies: '@babel/core': 7.23.2 '@vue/babel-preset-app': 5.0.8(@babel/core@7.23.2)(core-js@3.26.1)(vue@2.7.16) - '@vue/cli-service': 5.0.8(@swc/core@1.3.16)(vue-template-compiler@2.7.14)(vue@2.7.16) + '@vue/cli-service': 5.0.8(@swc/core@1.3.107)(vue-template-compiler@2.7.14)(vue@2.7.16) '@vue/cli-shared-utils': 5.0.8 babel-loader: 8.3.0(@babel/core@7.23.2)(webpack@5.89.0) thread-loader: 3.0.4(webpack@5.89.0) - webpack: 5.89.0(@swc/core@1.3.16) + webpack: 5.89.0(@swc/core@1.3.107) transitivePeerDependencies: - '@swc/core' - core-js @@ -4795,7 +5115,7 @@ packages: peerDependencies: '@vue/cli-service': ^3.0.0 || ^4.0.0 || ^5.0.0-0 dependencies: - '@vue/cli-service': 5.0.8(@swc/core@1.3.16)(vue-template-compiler@2.7.14)(vue@2.7.16) + '@vue/cli-service': 5.0.8(@swc/core@1.3.107)(vue-template-compiler@2.7.14)(vue@2.7.16) '@vue/cli-shared-utils': 5.0.8 transitivePeerDependencies: - encoding @@ -4806,10 +5126,10 @@ packages: peerDependencies: '@vue/cli-service': ^3.0.0 || ^4.0.0 || ^5.0.0-0 dependencies: - '@vue/cli-service': 5.0.8(@swc/core@1.3.16)(vue-template-compiler@2.7.14)(vue@2.7.16) + '@vue/cli-service': 5.0.8(@swc/core@1.3.107)(vue-template-compiler@2.7.14)(vue@2.7.16) dev: true - /@vue/cli-service@5.0.8(@swc/core@1.3.16)(vue-template-compiler@2.7.14)(vue@2.7.16): + /@vue/cli-service@5.0.8(@swc/core@1.3.107)(vue-template-compiler@2.7.14)(vue@2.7.16): resolution: {integrity: sha512-nV7tYQLe7YsTtzFrfOMIHc5N2hp5lHG2rpYr0aNja9rNljdgcPZLyQRb2YRivTHqTv7lI962UXFURcpStHgyFw==} engines: {node: ^12.0.0 || >= 14.0.0} hasBin: true @@ -4884,12 +5204,12 @@ packages: postcss-loader: 6.2.1(postcss@8.4.31)(webpack@5.89.0) progress-webpack-plugin: 1.0.16(webpack@5.89.0) ssri: 8.0.1 - terser-webpack-plugin: 5.3.9(@swc/core@1.3.16)(webpack@5.89.0) + terser-webpack-plugin: 5.3.9(@swc/core@1.3.107)(webpack@5.89.0) thread-loader: 3.0.4(webpack@5.89.0) vue-loader: 17.4.2(vue@2.7.16)(webpack@5.89.0) vue-style-loader: 4.1.3 vue-template-compiler: 2.7.14 - webpack: 5.89.0(@swc/core@1.3.16) + webpack: 5.89.0(@swc/core@1.3.107) webpack-bundle-analyzer: 4.10.1 webpack-chain: 6.5.1 webpack-dev-server: 4.15.2(debug@4.3.4)(webpack@5.89.0) @@ -5130,7 +5450,7 @@ packages: dependencies: '@vue/compiler-ssr': 3.4.21 '@vue/shared': 3.4.21 - vue: 3.4.21(typescript@4.9.5) + vue: 3.4.21(typescript@5.1.6) dev: true /@vue/shared@3.4.21: @@ -5150,11 +5470,11 @@ packages: vue-template-compiler: 2.7.16 dev: true - /@vue/test-utils@2.4.5(typescript@4.9.5): + /@vue/test-utils@2.4.5(typescript@5.1.6): resolution: {integrity: sha512-oo2u7vktOyKUked36R93NB7mg2B+N7Plr8lxp2JBGwr18ch6EggFjixSCdIVVLkT6Qr0z359Xvnafc9dcKyDUg==} dependencies: js-beautify: 1.15.1 - vue: 3.4.21(typescript@4.9.5) + vue: 3.4.21(typescript@5.1.6) vue-component-type-helpers: 2.0.7 transitivePeerDependencies: - typescript @@ -5282,9 +5602,9 @@ packages: resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==} dev: true - /@yarnpkg/parsers@3.0.0: - resolution: {integrity: sha512-jVZa3njBv6tcOUw34nlUdUM/40wwtm/gnVF8rtk0tA6vNcokqYI8CFU1BZjlpFwUSZaXxYkrtuPE/f2MMFlTxQ==} - engines: {node: '>=18.12.0'} + /@yarnpkg/parsers@3.0.0-rc.46: + resolution: {integrity: sha512-aiATs7pSutzda/rq8fnuPwTglyVwjM22bNnK2ZgjrpAjQHSSl3lztd2f9evst1W/qnC58DRz7T7QndUDumAR4Q==} + engines: {node: '>=14.15.0'} dependencies: js-yaml: 3.14.1 tslib: 2.6.2 @@ -5307,6 +5627,7 @@ packages: /abab@2.0.6: resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} + deprecated: Use your platform's native atob() and btoa() methods instead dev: true /abbrev@1.1.1: @@ -5349,6 +5670,14 @@ packages: acorn: 7.4.1 dev: true + /acorn-jsx@5.3.2(acorn@8.10.0): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.10.0 + dev: true + /acorn-walk@8.2.0: resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} @@ -5527,10 +5856,6 @@ packages: resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} dev: true - /archy@1.0.0: - resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} - dev: true - /are-we-there-yet@3.0.1: resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -5652,10 +5977,6 @@ packages: engines: {node: '>=8'} dev: true - /asap@2.0.6: - resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} - dev: true - /ast-types-flow@0.0.7: resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} dev: true @@ -5700,6 +6021,22 @@ packages: postcss-value-parser: 4.2.0 dev: true + /autoprefixer@10.4.19(postcss@8.4.38): + resolution: {integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: '>=8.4.31' + dependencies: + browserslist: 4.23.0 + caniuse-lite: 1.0.30001600 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.0.0 + postcss: 8.4.38 + postcss-value-parser: 4.2.0 + dev: true + /available-typed-arrays@1.0.5: resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} engines: {node: '>= 0.4'} @@ -5754,7 +6091,20 @@ packages: loader-utils: 2.0.4 make-dir: 3.1.0 schema-utils: 2.7.1 - webpack: 5.89.0(@swc/core@1.3.16) + webpack: 5.89.0(@swc/core@1.3.107) + dev: true + + /babel-plugin-const-enum@1.2.0(@babel/core@7.23.2): + resolution: {integrity: sha512-o1m/6iyyFnp9MRsK1dHF3bneqyf3AlM2q3A/YbgQr2pCat6B6XJVDv2TXqzfY2RYUi4mak6WAksSBPlyYGx9dg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.23.2) + '@babel/traverse': 7.24.1 + transitivePeerDependencies: + - supports-color dev: true /babel-plugin-dynamic-import-node@2.3.3: @@ -5767,7 +6117,7 @@ packages: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} dependencies: - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 '@istanbuljs/load-nyc-config': 1.1.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-instrument: 5.2.1 @@ -5780,12 +6130,20 @@ packages: resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/template': 7.22.15 + '@babel/template': 7.24.0 '@babel/types': 7.24.0 '@types/babel__core': 7.20.3 '@types/babel__traverse': 7.20.3 dev: true + /babel-plugin-macros@2.8.0: + resolution: {integrity: sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==} + dependencies: + '@babel/runtime': 7.23.2 + cosmiconfig: 6.0.0 + resolve: 1.22.8 + dev: true + /babel-plugin-polyfill-corejs2@0.4.10(@babel/core@7.23.2): resolution: {integrity: sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ==} peerDependencies: @@ -5822,6 +6180,23 @@ packages: - supports-color dev: true + /babel-plugin-transform-async-to-promises@0.8.18: + resolution: {integrity: sha512-WpOrF76nUHijnNn10eBGOHZmXQC8JYRME9rOLxStOga7Av2VO53ehVFvVNImMksVtQuL2/7ZNxEgxnx7oo/3Hw==} + dev: true + + /babel-plugin-transform-typescript-metadata@0.3.2(@babel/core@7.23.2): + resolution: {integrity: sha512-mWEvCQTgXQf48yDqgN7CH50waTyYBeP2Lpqx4nNWab9sxEpdXVeKgfj1qYI2/TgUPQtNFZ85i3PemRtnXVYYJg==} + peerDependencies: + '@babel/core': ^7 + '@babel/traverse': ^7 + peerDependenciesMeta: + '@babel/traverse': + optional: true + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.23.2): resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: @@ -5887,16 +6262,29 @@ packages: resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} dev: true - /bin-links@3.0.3: - resolution: {integrity: sha512-zKdnMPWEdh4F5INR07/eBrodC7QrF5JKvqskjz/ZZRXg5YSAZIbn8zGhbhUrElzHBZ2fvEQdOU59RHcTG3GiwA==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + /bin-check@4.1.0: + resolution: {integrity: sha512-b6weQyEUKsDGFlACWSIOfveEnImkJyK/FGW6FAG42loyoquvjdtOIqO6yBFzHyqyVVhNgNkQxxx09SFLK28YnA==} + engines: {node: '>=4'} + dependencies: + execa: 0.7.0 + executable: 4.1.1 + dev: true + + /bin-version-check@5.1.0: + resolution: {integrity: sha512-bYsvMqJ8yNGILLz1KP9zKLzQ6YpljV3ln1gqhuLkUtyfGi3qXKGuK2p+U4NAvjVFzDFiBBtOpCOSFNuYYEGZ5g==} + engines: {node: '>=12'} + dependencies: + bin-version: 6.0.0 + semver: 7.5.4 + semver-truncate: 3.0.0 + dev: true + + /bin-version@6.0.0: + resolution: {integrity: sha512-nk5wEsP4RiKjG+vF+uG8lFsEn4d7Y6FVDamzzftSunXOoOcOOkzcWdKVlGgFFwlUQCj63SgnUkLLGF8v7lufhw==} + engines: {node: '>=12'} dependencies: - cmd-shim: 5.0.0 - mkdirp-infer-owner: 2.0.0 - npm-normalize-package-bin: 2.0.0 - read-cmd-shim: 3.0.1 - rimraf: 3.0.2 - write-file-atomic: 4.0.2 + execa: 5.1.1 + find-versions: 5.1.0 dev: true /binary-extensions@2.2.0: @@ -6046,9 +6434,9 @@ packages: - encoding dev: true - /byte-size@7.0.1: - resolution: {integrity: sha512-crQdqyCwhokxwV1UyDzLZanhkugAgft7vt0qbbdt60C6Zf3CAiGmtUCylbtYwrU6loOUw3euGrNtW1J651ot1A==} - engines: {node: '>=10'} + /byte-size@8.1.1: + resolution: {integrity: sha512-tUkzZWK0M/qdoLEqikxBWe4kumyuwjl3HO6zHTr4yEI23EojPtLYXdG1+AQY7MN0cGyNDvEaJ8wiYQm6P2bPxg==} + engines: {node: '>=12.17'} dev: true /bytes-iec@3.1.1: @@ -6066,32 +6454,6 @@ packages: engines: {node: '>= 0.8'} dev: true - /cacache@16.1.3: - resolution: {integrity: sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - '@npmcli/fs': 2.1.2 - '@npmcli/move-file': 2.0.1 - chownr: 2.0.0 - fs-minipass: 2.1.0 - glob: 8.1.0 - infer-owner: 1.0.4 - lru-cache: 7.18.3 - minipass: 3.3.6 - minipass-collect: 1.0.2 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - mkdirp: 1.0.4 - p-map: 4.0.0 - promise-inflight: 1.0.1 - rimraf: 3.0.2 - ssri: 9.0.1 - tar: 6.2.0 - unique-filename: 2.0.1 - transitivePeerDependencies: - - bluebird - dev: true - /cacache@17.1.4: resolution: {integrity: sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -6110,6 +6472,24 @@ packages: unique-filename: 3.0.0 dev: true + /cacheable-lookup@5.0.4: + resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} + engines: {node: '>=10.6.0'} + dev: true + + /cacheable-request@7.0.4: + resolution: {integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==} + engines: {node: '>=8'} + dependencies: + clone-response: 1.0.3 + get-stream: 5.2.0 + http-cache-semantics: 4.1.1 + keyv: 4.5.4 + lowercase-keys: 2.0.0 + normalize-url: 6.1.0 + responselike: 2.0.1 + dev: true + /call-bind@1.0.5: resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} dependencies: @@ -6232,10 +6612,6 @@ packages: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} dev: true - /charenc@0.0.2: - resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} - dev: true - /chokidar@3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} @@ -6265,19 +6641,11 @@ packages: resolution: {integrity: sha512-NtTjhgSEqv4Aj90TUYHQLxHdnCPXnjdtuGG1X8lTfp/JqeXTdw0FTWl/vUAPuvbWZTF8QVpv6ASe/XacE+7R2A==} dev: true - /ci-info@2.0.0: - resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} - dev: true - /ci-info@3.9.0: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} dev: true - /ci-job-number@1.2.2: - resolution: {integrity: sha512-CLOGsVDrVamzv8sXJGaILUVI6dsuAkouJP/n6t+OxLPeeA4DDby7zn9SB6EUpa1H7oIKoE+rMmkW80zYsFfUjA==} - dev: true - /cjs-module-lexer@1.2.3: resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==} dev: true @@ -6387,16 +6755,20 @@ packages: shallow-clone: 3.0.1 dev: true + /clone-response@1.0.3: + resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} + dependencies: + mimic-response: 1.0.1 + dev: true + /clone@1.0.4: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} dev: true - /cmd-shim@5.0.0: - resolution: {integrity: sha512-qkCtZ59BidfEwHltnJwkyVZn+XQojdAySM1D1gSeh11Z4pW1Kpolkyo53L5noc0nrxmIvyFwTmJRo4xs7FFLPw==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - mkdirp-infer-owner: 2.0.0 + /cmd-shim@6.0.1: + resolution: {integrity: sha512-S9iI9y0nKR4hwEQsVWpyxld/6kRfGepGfzff83FcaiEBpmvlbA2nnGe7Cylgrx2f/p1P5S5wpRm9oL8z1PbS3Q==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dev: true /co@4.6.0: @@ -6468,6 +6840,7 @@ packages: /commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + dev: true /commander@5.1.0: resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} @@ -6482,16 +6855,13 @@ packages: /commander@8.2.0: resolution: {integrity: sha512-LLKxDvHeL91/8MIyTAD5BFMNtoIwztGPMiM/7Bl8rIPmHCZXRxmSWr91h57dpOpnQ6jIUqEWdXE/uBYMfiVZDA==} engines: {node: '>= 12'} + dev: true /commander@8.3.0: resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} engines: {node: '>= 12'} dev: true - /common-ancestor-path@1.0.1: - resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==} - dev: true - /commondir@1.0.1: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} dev: true @@ -6539,6 +6909,12 @@ packages: typedarray: 0.0.6 dev: true + /concat-with-sourcemaps@1.1.0: + resolution: {integrity: sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==} + dependencies: + source-map: 0.6.1 + dev: true + /condense-newlines@0.2.1: resolution: {integrity: sha512-P7X+QL9Hb9B/c8HI5BFFKmjgBu2XpQuF98WZ9XkO+dBGgk5XgwiQz7o1SmpglNWId3581UcS0SFAWfoIhMHPfg==} engines: {node: '>=0.10.0'} @@ -6757,6 +7133,13 @@ packages: q: 1.5.1 dev: true + /conventional-changelog-angular@6.0.0: + resolution: {integrity: sha512-6qLgrBF4gueoC7AFVHu51nHL9pF9FRjXrH+ceVf7WmAfH3gs+gEYOkvxhjMPjZu57I4AGUGoNTY8V7Hrgf1uqg==} + engines: {node: '>=14'} + dependencies: + compare-func: 2.0.0 + dev: true + /conventional-changelog-conventionalcommits@4.6.3: resolution: {integrity: sha512-LTTQV4fwOM4oLPad317V/QNQ1FY4Hju5qeBIM1uTHbrnCE+Eg4CdRZ3gO2pUeR+tzWdp80M2j3qFFEDWVqOV4g==} engines: {node: '>=10'} @@ -6766,50 +7149,45 @@ packages: q: 1.5.1 dev: true - /conventional-changelog-core@4.2.4: - resolution: {integrity: sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg==} - engines: {node: '>=10'} + /conventional-changelog-core@5.0.1: + resolution: {integrity: sha512-Rvi5pH+LvgsqGwZPZ3Cq/tz4ty7mjijhr3qR4m9IBXNbxGGYgTVVO+duXzz9aArmHxFtwZ+LRkrNIMDQzgoY4A==} + engines: {node: '>=14'} dependencies: add-stream: 1.0.0 - conventional-changelog-writer: 5.0.1 - conventional-commits-parser: 3.2.4 + conventional-changelog-writer: 6.0.1 + conventional-commits-parser: 4.0.0 dateformat: 3.0.3 get-pkg-repo: 4.2.1 - git-raw-commits: 2.0.11 + git-raw-commits: 3.0.0 git-remote-origin-url: 2.0.0 - git-semver-tags: 4.1.1 - lodash: 4.17.21 + git-semver-tags: 5.0.1 normalize-package-data: 3.0.3 - q: 1.5.1 read-pkg: 3.0.0 read-pkg-up: 3.0.0 - through2: 4.0.2 dev: true - /conventional-changelog-preset-loader@2.3.4: - resolution: {integrity: sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==} - engines: {node: '>=10'} + /conventional-changelog-preset-loader@3.0.0: + resolution: {integrity: sha512-qy9XbdSLmVnwnvzEisjxdDiLA4OmV3o8db+Zdg4WiFw14fP3B6XNz98X0swPPpkTd/pc1K7+adKgEDM1JCUMiA==} + engines: {node: '>=14'} dev: true - /conventional-changelog-writer@5.0.1: - resolution: {integrity: sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==} - engines: {node: '>=10'} + /conventional-changelog-writer@6.0.1: + resolution: {integrity: sha512-359t9aHorPw+U+nHzUXHS5ZnPBOizRxfQsWT5ZDHBfvfxQOAik+yfuhKXG66CN5LEWPpMNnIMHUTCKeYNprvHQ==} + engines: {node: '>=14'} hasBin: true dependencies: - conventional-commits-filter: 2.0.7 + conventional-commits-filter: 3.0.0 dateformat: 3.0.3 handlebars: 4.7.8 json-stringify-safe: 5.0.1 - lodash: 4.17.21 meow: 8.1.2 - semver: 6.3.1 + semver: 7.5.4 split: 1.0.1 - through2: 4.0.2 dev: true - /conventional-commits-filter@2.0.7: - resolution: {integrity: sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==} - engines: {node: '>=10'} + /conventional-commits-filter@3.0.0: + resolution: {integrity: sha512-1ymej8b5LouPx9Ox0Dw/qAO2dVdfpRFq28e5Y0jJEU8ZrLdy0vOSkkIInwmxErFGhg6SALro60ZrwYFVTUDo4Q==} + engines: {node: '>=14'} dependencies: lodash.ismatch: 4.4.0 modify-values: 1.0.1 @@ -6828,19 +7206,29 @@ packages: through2: 4.0.2 dev: true - /conventional-recommended-bump@6.1.0: - resolution: {integrity: sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw==} - engines: {node: '>=10'} + /conventional-commits-parser@4.0.0: + resolution: {integrity: sha512-WRv5j1FsVM5FISJkoYMR6tPk07fkKT0UodruX4je86V4owk451yjXAKzKAPOs9l7y59E2viHUS9eQ+dfUA9NSg==} + engines: {node: '>=14'} + hasBin: true + dependencies: + JSONStream: 1.3.5 + is-text-path: 1.0.1 + meow: 8.1.2 + split2: 3.2.2 + dev: true + + /conventional-recommended-bump@7.0.1: + resolution: {integrity: sha512-Ft79FF4SlOFvX4PkwFDRnaNiIVX7YbmqGU0RwccUaiGvgp3S0a8ipR2/Qxk31vclDNM+GSdJOVs2KrsUCjblVA==} + engines: {node: '>=14'} hasBin: true dependencies: concat-stream: 2.0.0 - conventional-changelog-preset-loader: 2.3.4 - conventional-commits-filter: 2.0.7 - conventional-commits-parser: 3.2.4 - git-raw-commits: 2.0.11 - git-semver-tags: 4.1.1 + conventional-changelog-preset-loader: 3.0.0 + conventional-commits-filter: 3.0.0 + conventional-commits-parser: 4.0.0 + git-raw-commits: 3.0.0 + git-semver-tags: 5.0.1 meow: 8.1.2 - q: 1.5.1 dev: true /convert-source-map@2.0.0: @@ -6868,7 +7256,7 @@ packages: normalize-path: 3.0.0 schema-utils: 3.3.0 serialize-javascript: 6.0.1 - webpack: 5.89.0(@swc/core@1.3.16) + webpack: 5.89.0(@swc/core@1.3.107) dev: true /core-js-compat@3.36.1: @@ -6900,6 +7288,17 @@ packages: parse-json: 4.0.0 dev: true + /cosmiconfig@6.0.0: + resolution: {integrity: sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==} + engines: {node: '>=8'} + dependencies: + '@types/parse-json': 4.0.1 + import-fresh: 3.3.0 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + dev: true + /cosmiconfig@7.1.0: resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} engines: {node: '>=10'} @@ -6911,7 +7310,23 @@ packages: yaml: 1.10.2 dev: true - /create-jest@29.7.0: + /cosmiconfig@8.3.6(typescript@5.1.6): + resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + typescript: 5.1.6 + dev: true + + /create-jest@29.7.0(@types/node@20.4.5): resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -6920,7 +7335,7 @@ packages: chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.8.7) + jest-config: 29.7.0(@types/node@20.4.5) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -6970,10 +7385,6 @@ packages: which: 2.0.2 dev: true - /crypt@0.0.2: - resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} - dev: true - /css-declaration-sorter@6.4.1(postcss@8.4.31): resolution: {integrity: sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==} engines: {node: ^10 || ^12 || >=14} @@ -7006,7 +7417,7 @@ packages: postcss-modules-values: 4.0.0(postcss@8.4.38) postcss-value-parser: 4.2.0 semver: 7.5.4 - webpack: 5.89.0(@swc/core@1.3.16) + webpack: 5.89.0(@swc/core@1.3.107) dev: true /css-minimizer-webpack-plugin@3.4.1(webpack@5.89.0): @@ -7034,7 +7445,7 @@ packages: schema-utils: 4.2.0 serialize-javascript: 6.0.1 source-map: 0.6.1 - webpack: 5.89.0(@swc/core@1.3.16) + webpack: 5.89.0(@swc/core@1.3.107) dev: true /css-select@4.3.0: @@ -7304,11 +7715,6 @@ packages: supports-color: 8.1.1 dev: true - /debuglog@1.0.1: - resolution: {integrity: sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - dev: true - /decamelize-keys@1.1.1: resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} engines: {node: '>=0.10.0'} @@ -7326,6 +7732,13 @@ packages: resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} dev: true + /decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + dependencies: + mimic-response: 3.1.0 + dev: true + /dedent@0.7.0: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} dev: true @@ -7389,6 +7802,11 @@ packages: clone: 1.0.4 dev: true + /defer-to-connect@2.0.1: + resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} + engines: {node: '>=10'} + dev: true + /define-data-property@1.1.1: resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} engines: {node: '>= 0.4'} @@ -7464,11 +7882,14 @@ packages: resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} dev: true - /dezalgo@1.0.4: - resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==} + /detect-port@1.5.1: + resolution: {integrity: sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==} + hasBin: true dependencies: - asap: 2.0.6 - wrappy: 1.0.2 + address: 1.2.2 + debug: 4.3.4(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color dev: true /diff-sequences@29.6.3: @@ -7538,6 +7959,7 @@ packages: /domexception@4.0.0: resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} engines: {node: '>=12'} + deprecated: Use your platform's native DOMException instead dependencies: webidl-conversions: 7.0.0 dev: true @@ -7571,11 +7993,9 @@ packages: is-obj: 2.0.0 dev: true - /dot-prop@6.0.1: - resolution: {integrity: sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==} - engines: {node: '>=10'} - dependencies: - is-obj: 2.0.0 + /dotenv-expand@10.0.0: + resolution: {integrity: sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==} + engines: {node: '>=12'} dev: true /dotenv-expand@5.1.0: @@ -7587,6 +8007,11 @@ packages: engines: {node: '>=10'} dev: true + /dotenv@16.3.2: + resolution: {integrity: sha512-HTlk5nmhkm8F6JcdXvHIzaorzCoziNQT9mGxLPVXW8wJF1TiGSL60ZGB4gHWabHOaMmWmhvk2/lPHfnBiT78AQ==} + engines: {node: '>=12'} + dev: true + /dotenv@8.6.0: resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==} engines: {node: '>=10'} @@ -7710,8 +8135,8 @@ packages: engines: {node: '>=6'} dev: true - /envinfo@7.10.0: - resolution: {integrity: sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw==} + /envinfo@7.8.1: + resolution: {integrity: sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==} engines: {node: '>=4'} hasBin: true dev: true @@ -7819,6 +8244,37 @@ packages: is-symbol: 1.0.4 dev: true + /esbuild@0.19.12: + resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/aix-ppc64': 0.19.12 + '@esbuild/android-arm': 0.19.12 + '@esbuild/android-arm64': 0.19.12 + '@esbuild/android-x64': 0.19.12 + '@esbuild/darwin-arm64': 0.19.12 + '@esbuild/darwin-x64': 0.19.12 + '@esbuild/freebsd-arm64': 0.19.12 + '@esbuild/freebsd-x64': 0.19.12 + '@esbuild/linux-arm': 0.19.12 + '@esbuild/linux-arm64': 0.19.12 + '@esbuild/linux-ia32': 0.19.12 + '@esbuild/linux-loong64': 0.19.12 + '@esbuild/linux-mips64el': 0.19.12 + '@esbuild/linux-ppc64': 0.19.12 + '@esbuild/linux-riscv64': 0.19.12 + '@esbuild/linux-s390x': 0.19.12 + '@esbuild/linux-x64': 0.19.12 + '@esbuild/netbsd-x64': 0.19.12 + '@esbuild/openbsd-x64': 0.19.12 + '@esbuild/sunos-x64': 0.19.12 + '@esbuild/win32-arm64': 0.19.12 + '@esbuild/win32-ia32': 0.19.12 + '@esbuild/win32-x64': 0.19.12 + dev: true + /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} @@ -7843,6 +8299,11 @@ packages: engines: {node: '>=10'} dev: true + /escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + dev: true + /escodegen@2.1.0: resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} engines: {node: '>=6.0'} @@ -7959,7 +8420,7 @@ packages: - supports-color dev: true - /eslint-plugin-jest@25.0.1(eslint@7.32.0)(typescript@4.9.5): + /eslint-plugin-jest@25.0.1(eslint@7.32.0)(typescript@5.1.6): resolution: {integrity: sha512-h54W6EOFGWHvKmGQul1Ahc8nLfzWR7jbynjeb4NT/acg6yOaRPQv6MXeSuQO3a7+21xaVtmULowYANuu4JIimQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -7969,7 +8430,7 @@ packages: '@typescript-eslint/eslint-plugin': optional: true dependencies: - '@typescript-eslint/experimental-utils': 4.33.0(eslint@7.32.0)(typescript@4.9.5) + '@typescript-eslint/experimental-utils': 4.33.0(eslint@7.32.0)(typescript@5.1.6) eslint: 7.32.0 transitivePeerDependencies: - supports-color @@ -8036,6 +8497,14 @@ packages: estraverse: 4.3.0 dev: true + /eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + /eslint-utils@2.1.0: resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} engines: {node: '>=6'} @@ -8063,6 +8532,11 @@ packages: engines: {node: '>=10'} dev: true + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + /eslint@7.32.0: resolution: {integrity: sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==} engines: {node: ^10.12.0 || >=12.0.0} @@ -8112,6 +8586,53 @@ packages: - supports-color dev: true + /eslint@8.57.0: + resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/regexpp': 4.10.0 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.0 + '@humanwhocodes/config-array': 0.11.14 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4(supports-color@8.1.1) + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.23.0 + graphemer: 1.4.0 + ignore: 5.2.4 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + 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.3 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: true + /espree@7.3.1: resolution: {integrity: sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==} engines: {node: ^10.12.0 || >=12.0.0} @@ -8121,6 +8642,15 @@ packages: eslint-visitor-keys: 1.3.0 dev: true + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.10.0 + acorn-jsx: 5.3.2(acorn@8.10.0) + eslint-visitor-keys: 3.4.3 + dev: true + /esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} @@ -8151,6 +8681,14 @@ packages: engines: {node: '>=4.0'} dev: true + /estree-walker@0.6.1: + resolution: {integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==} + dev: true + + /estree-walker@1.0.1: + resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} + dev: true + /estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} dev: true @@ -8179,6 +8717,19 @@ packages: engines: {node: '>=0.8.x'} dev: true + /execa@0.7.0: + resolution: {integrity: sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==} + engines: {node: '>=4'} + dependencies: + cross-spawn: 5.1.0 + get-stream: 3.0.0 + is-stream: 1.1.0 + npm-run-path: 2.0.2 + p-finally: 1.0.0 + signal-exit: 3.0.7 + strip-eof: 1.0.0 + dev: true + /execa@1.0.0: resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==} engines: {node: '>=6'} @@ -8192,6 +8743,21 @@ packages: strip-eof: 1.0.0 dev: true + /execa@5.0.0: + resolution: {integrity: sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: true + /execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} @@ -8207,6 +8773,13 @@ packages: strip-final-newline: 2.0.0 dev: true + /executable@4.1.1: + resolution: {integrity: sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==} + engines: {node: '>=4'} + dependencies: + pify: 2.3.0 + dev: true + /exit@0.1.2: resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} engines: {node: '>= 0.8.0'} @@ -8266,6 +8839,21 @@ packages: - supports-color dev: true + /ext-list@2.2.2: + resolution: {integrity: sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==} + engines: {node: '>=0.10.0'} + dependencies: + mime-db: 1.52.0 + dev: true + + /ext-name@5.0.0: + resolution: {integrity: sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==} + engines: {node: '>=4'} + dependencies: + ext-list: 2.2.2 + sort-keys-length: 1.0.1 + dev: true + /extend-shallow@2.0.1: resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} engines: {node: '>=0.10.0'} @@ -8312,6 +8900,17 @@ packages: micromatch: 4.0.5 dev: true + /fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: true + /fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} dev: true @@ -8360,12 +8959,35 @@ packages: flat-cache: 3.1.1 dev: true + /file-type@17.1.6: + resolution: {integrity: sha512-hlDw5Ev+9e883s0pwUsuuYNu4tD7GgpUnOvykjv1Gya0ZIjuKumthDRua90VUn6/nlRKAjcxLUnHNTIUWwWIiw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + readable-web-to-node-stream: 3.0.2 + strtok3: 7.0.0 + token-types: 5.0.1 + dev: true + /filelist@1.0.4: resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} dependencies: minimatch: 5.1.6 dev: true + /filename-reserved-regex@3.0.0: + resolution: {integrity: sha512-hn4cQfU6GOT/7cFHXBqeBg2TbrMBgdD0kcjLhvSQYYwm3s4B6cjvBfb7nBALJLAXqmU5xajSa7X2NnUud/VCdw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + /filenamify@5.1.1: + resolution: {integrity: sha512-M45CbrJLGACfrPOkrTp3j2EcO9OBkKUYME0eiqOCa7i2poaklU0jhlIaMlr8ijLorT0uLAzrn3qXOp5684CkfA==} + engines: {node: '>=12.20'} + dependencies: + filename-reserved-regex: 3.0.0 + strip-outer: 2.0.0 + trim-repeated: 2.0.0 + dev: true + /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} @@ -8420,6 +9042,13 @@ packages: path-exists: 4.0.0 dev: true + /find-versions@5.1.0: + resolution: {integrity: sha512-+iwzCJ7C5v5KgcBuueqVoNiHVoQpwiUK5XFLjf0affFTep+Wcw93tPvmb8tqujDNmzhBDPddnWV/qgWSXgq+Hg==} + engines: {node: '>=12'} + dependencies: + semver-regex: 4.0.5 + dev: true + /find-yarn-workspace-root2@1.2.16: resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} dependencies: @@ -8507,6 +9136,15 @@ packages: universalify: 2.0.0 dev: true + /fs-extra@11.2.0: + resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} + engines: {node: '>=14.14'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: true + /fs-extra@7.0.1: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} engines: {node: '>=6 <7 || >=8'} @@ -8601,6 +9239,12 @@ packages: wide-align: 1.1.5 dev: true + /generic-names@4.0.0: + resolution: {integrity: sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==} + dependencies: + loader-utils: 3.2.1 + dev: true + /gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -8645,6 +9289,11 @@ packages: engines: {node: '>=8'} dev: true + /get-stream@3.0.0: + resolution: {integrity: sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==} + engines: {node: '>=4'} + dev: true + /get-stream@4.1.0: resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} engines: {node: '>=6'} @@ -8652,6 +9301,18 @@ packages: pump: 3.0.0 dev: true + /get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + dependencies: + pump: 3.0.0 + dev: true + + /get-stream@6.0.0: + resolution: {integrity: sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==} + engines: {node: '>=10'} + dev: true + /get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} @@ -8683,6 +9344,16 @@ packages: through2: 4.0.2 dev: true + /git-raw-commits@3.0.0: + resolution: {integrity: sha512-b5OHmZ3vAgGrDn/X0kS+9qCfNKWe4K/jFnhwzVWWg0/k5eLa3060tZShrRg8Dja5kPc+YjS0Gc6y7cRr44Lpjw==} + engines: {node: '>=14'} + hasBin: true + dependencies: + dargs: 7.0.0 + meow: 8.1.2 + split2: 3.2.2 + dev: true + /git-remote-origin-url@2.0.0: resolution: {integrity: sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==} engines: {node: '>=4'} @@ -8691,13 +9362,13 @@ packages: pify: 2.3.0 dev: true - /git-semver-tags@4.1.1: - resolution: {integrity: sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==} - engines: {node: '>=10'} + /git-semver-tags@5.0.1: + resolution: {integrity: sha512-hIvOeZwRbQ+7YEUmCkHqo8FOLQZCEn18yevLHADlFPZY02KJGsu5FZt9YW/lybfK2uhWFI7Qg/07LekJiTv7iA==} + engines: {node: '>=14'} hasBin: true dependencies: meow: 8.1.2 - semver: 6.3.1 + semver: 7.5.4 dev: true /git-up@7.0.0: @@ -8707,8 +9378,8 @@ packages: parse-url: 8.1.0 dev: true - /git-url-parse@13.1.1: - resolution: {integrity: sha512-PCFJyeSSdtnbfhSNRw9Wk96dDCNx+sogTe4YNXeXSJxt7xz5hvXekuRn9JX7m+Mf4OscCu8h+mtAl3+h5Fo8lQ==} + /git-url-parse@13.1.0: + resolution: {integrity: sha512-5FvPJP/70WkIprlUZ33bm4UAaFdjcLkJLpWft1BeZKqwR0uhhNGoKwlUaPtVb4LxCSQ++erHapRak9kWGj+FCA==} dependencies: git-up: 7.0.0 dev: true @@ -8755,7 +9426,7 @@ packages: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 - minimatch: 3.0.5 + minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 dev: true @@ -8782,6 +9453,16 @@ packages: once: 1.4.0 dev: true + /glob@9.3.5: + resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + fs.realpath: 1.0.0 + minimatch: 8.0.4 + minipass: 4.2.8 + path-scurry: 1.10.1 + dev: true + /global-dirs@0.1.1: resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==} engines: {node: '>=4'} @@ -8808,6 +9489,20 @@ packages: define-properties: 1.2.1 dev: true + /globby@10.0.1: + resolution: {integrity: sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==} + engines: {node: '>=8'} + dependencies: + '@types/glob': 7.2.0 + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + glob: 7.2.3 + ignore: 5.2.4 + merge2: 1.4.1 + slash: 3.0.0 + dev: true + /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} @@ -8820,12 +9515,41 @@ packages: slash: 3.0.0 dev: true + /globby@14.0.1: + resolution: {integrity: sha512-jOMLD2Z7MAhyG8aJpNOpmziMOP4rPLcc95oQPKXBazW82z+CEgPFBQvEpRUa1KeIMUJo4Wsm+q6uzO/Q/4BksQ==} + engines: {node: '>=18'} + dependencies: + '@sindresorhus/merge-streams': 2.3.0 + fast-glob: 3.3.2 + ignore: 5.2.4 + path-type: 5.0.0 + slash: 5.1.0 + unicorn-magic: 0.1.0 + dev: true + /gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: get-intrinsic: 1.2.2 dev: true + /got@11.8.6: + resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==} + engines: {node: '>=10.19.0'} + dependencies: + '@sindresorhus/is': 4.6.0 + '@szmarczak/http-timer': 4.0.6 + '@types/cacheable-request': 6.0.3 + '@types/responselike': 1.0.3 + cacheable-lookup: 5.0.4 + cacheable-request: 7.0.4 + decompress-response: 6.0.0 + http2-wrapper: 1.0.3 + lowercase-keys: 2.0.0 + p-cancelable: 2.1.1 + responselike: 2.0.1 + dev: true + /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} dev: true @@ -8834,6 +9558,10 @@ packages: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} dev: true + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + dev: true + /gzip-size@5.1.1: resolution: {integrity: sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==} engines: {node: '>=6'} @@ -8871,6 +9599,10 @@ packages: engines: {node: '>=6'} dev: true + /harmony-reflect@1.6.2: + resolution: {integrity: sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==} + dev: true + /has-bigints@1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} dev: true @@ -8959,13 +9691,20 @@ packages: lru-cache: 6.0.0 dev: true - /hosted-git-info@5.2.1: - resolution: {integrity: sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + /hosted-git-info@6.1.1: + resolution: {integrity: sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: lru-cache: 7.18.3 dev: true + /hosted-git-info@7.0.1: + resolution: {integrity: sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + lru-cache: 10.0.1 + dev: true + /hpack.js@2.1.6: resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} dependencies: @@ -9031,7 +9770,7 @@ packages: lodash: 4.17.21 pretty-error: 4.0.0 tapable: 2.2.1 - webpack: 5.89.0(@swc/core@1.3.16) + webpack: 5.89.0(@swc/core@1.3.107) dev: true /htmlparser2@6.1.0: @@ -9117,6 +9856,14 @@ packages: - debug dev: true + /http2-wrapper@1.0.3: + resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==} + engines: {node: '>=10.19.0'} + dependencies: + quick-lru: 5.1.1 + resolve-alpn: 1.2.1 + dev: true + /https-proxy-agent@5.0.1: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} @@ -9162,6 +9909,10 @@ packages: safer-buffer: 2.1.2 dev: true + /icss-replace-symbols@1.1.0: + resolution: {integrity: sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==} + dev: true + /icss-utils@5.1.0(postcss@8.4.38): resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} engines: {node: ^10 || ^12 || >= 14} @@ -9171,6 +9922,13 @@ packages: postcss: 8.4.38 dev: true + /identity-obj-proxy@3.0.0: + resolution: {integrity: sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==} + engines: {node: '>=4'} + dependencies: + harmony-reflect: 1.6.2 + dev: true + /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} dev: true @@ -9182,6 +9940,13 @@ packages: minimatch: 5.1.6 dev: true + /ignore-walk@6.0.4: + resolution: {integrity: sha512-t7sv42WkwFkyKbivUCglsQW5YWMskWtbEf4MNKX5u/CCWHKSPzN4FtBQGsQZgCLbxOzpVlcbWVK5KB3auIOjSw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + minimatch: 9.0.3 + dev: true + /ignore@4.0.6: resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} engines: {node: '>= 4'} @@ -9192,6 +9957,13 @@ packages: engines: {node: '>= 4'} dev: true + /import-cwd@3.0.0: + resolution: {integrity: sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg==} + engines: {node: '>=8'} + dependencies: + import-from: 3.0.0 + dev: true + /import-fresh@2.0.0: resolution: {integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==} engines: {node: '>=4'} @@ -9208,6 +9980,13 @@ packages: resolve-from: 4.0.0 dev: true + /import-from@3.0.0: + resolution: {integrity: sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==} + engines: {node: '>=8'} + dependencies: + resolve-from: 5.0.0 + dev: true + /import-local@3.1.0: resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} engines: {node: '>=8'} @@ -9227,10 +10006,6 @@ packages: engines: {node: '>=8'} dev: true - /infer-owner@1.0.4: - resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==} - dev: true - /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: @@ -9250,17 +10025,17 @@ packages: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} dev: true - /init-package-json@3.0.2: - resolution: {integrity: sha512-YhlQPEjNFqlGdzrBfDNRLhvoSgX7iQRgSxgsNknRQ9ITXFT7UMfVMWhBTOh2Y+25lRnGrv5Xz8yZwQ3ACR6T3A==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + /init-package-json@5.0.0: + resolution: {integrity: sha512-kBhlSheBfYmq3e0L1ii+VKe3zBTLL5lDCDWR+f9dLmEGSB3MqLlMlsolubSsyI88Bg6EA+BIMlomAnQ1SwgQBw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - npm-package-arg: 9.1.2 - promzard: 0.3.0 - read: 1.0.7 - read-package-json: 5.0.2 + npm-package-arg: 10.1.0 + promzard: 1.0.0 + read: 2.1.0 + read-package-json: 6.0.4 semver: 7.5.4 validate-npm-package-license: 3.0.4 - validate-npm-package-name: 4.0.0 + validate-npm-package-name: 5.0.0 dev: true /inquirer@8.2.6: @@ -9369,13 +10144,6 @@ packages: engines: {node: '>= 0.4'} dev: true - /is-ci@2.0.0: - resolution: {integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==} - hasBin: true - dependencies: - ci-info: 2.0.0 - dev: true - /is-ci@3.0.1: resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} hasBin: true @@ -9493,16 +10261,16 @@ packages: engines: {node: '>=8'} dev: true + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + dev: true + /is-plain-obj@1.1.0: resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} engines: {node: '>=0.10.0'} dev: true - /is-plain-obj@2.1.0: - resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} - engines: {node: '>=8'} - dev: true - /is-plain-obj@3.0.0: resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} engines: {node: '>=10'} @@ -9515,6 +10283,11 @@ packages: isobject: 3.0.1 dev: true + /is-plain-object@3.0.1: + resolution: {integrity: sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==} + engines: {node: '>=0.10.0'} + dev: true + /is-plain-object@5.0.0: resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} engines: {node: '>=0.10.0'} @@ -9564,6 +10337,11 @@ packages: engines: {node: '>=0.10.0'} dev: true + /is-stream@2.0.0: + resolution: {integrity: sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==} + engines: {node: '>=8'} + dev: true + /is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} @@ -9604,10 +10382,6 @@ packages: which-typed-array: 1.1.13 dev: true - /is-typedarray@1.0.0: - resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} - dev: true - /is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} @@ -9764,7 +10538,7 @@ packages: '@jest/expect': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.8.7 + '@types/node': 20.11.30 chalk: 4.1.2 co: 4.6.0 dedent: 1.5.1 @@ -9785,7 +10559,7 @@ packages: - supports-color dev: true - /jest-cli@29.7.0: + /jest-cli@29.7.0(@types/node@20.4.5): resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -9799,10 +10573,10 @@ packages: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0 + create-jest: 29.7.0(@types/node@20.4.5) exit: 0.1.2 import-local: 3.1.0 - jest-config: 29.7.0(@types/node@20.8.7) + jest-config: 29.7.0(@types/node@20.4.5) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -9813,7 +10587,47 @@ packages: - ts-node dev: true - /jest-config@29.7.0(@types/node@20.8.7): + /jest-config@29.7.0(@types/node@20.11.30): + resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + dependencies: + '@babel/core': 7.23.2 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.11.30 + babel-jest: 29.7.0(@babel/core@7.23.2) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0 + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + dev: true + + /jest-config@29.7.0(@types/node@20.4.5): resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -9828,7 +10642,7 @@ packages: '@babel/core': 7.23.2 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.8.7 + '@types/node': 20.4.5 babel-jest: 29.7.0(@babel/core@7.23.2) chalk: 4.1.2 ci-info: 3.9.0 @@ -9881,8 +10695,8 @@ packages: pretty-format: 29.7.0 dev: true - /jest-environment-jsdom@29.6.4: - resolution: {integrity: sha512-K6wfgUJ16DoMs02JYFid9lOsqfpoVtyJxpRlnTxUHzvZWBnnh2VNGRB9EC1Cro96TQdq5TtSjb3qUjNaJP9IyA==} + /jest-environment-jsdom@29.7.0: + resolution: {integrity: sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: canvas: ^2.5.0 @@ -9894,7 +10708,7 @@ packages: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 '@types/jsdom': 20.0.1 - '@types/node': 20.8.7 + '@types/node': 20.11.30 jest-mock: 29.7.0 jest-util: 29.7.0 jsdom: 20.0.3 @@ -9911,7 +10725,7 @@ packages: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.8.7 + '@types/node': 20.11.30 jest-mock: 29.7.0 jest-util: 29.7.0 dev: true @@ -9927,7 +10741,7 @@ packages: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.8 - '@types/node': 20.8.7 + '@types/node': 20.11.30 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -9962,7 +10776,7 @@ packages: resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/code-frame': 7.22.13 + '@babel/code-frame': 7.24.2 '@jest/types': 29.6.3 '@types/stack-utils': 2.0.2 chalk: 4.1.2 @@ -9978,7 +10792,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.8.7 + '@types/node': 20.11.30 jest-util: 29.7.0 dev: true @@ -10033,7 +10847,7 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.8.7 + '@types/node': 20.11.30 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -10064,7 +10878,7 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.8.7 + '@types/node': 20.11.30 chalk: 4.1.2 cjs-module-lexer: 1.2.3 collect-v8-coverage: 1.0.2 @@ -10088,8 +10902,8 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/core': 7.23.2 - '@babel/generator': 7.23.0 - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.23.2) + '@babel/generator': 7.24.1 + '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.23.2) '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.23.2) '@babel/types': 7.24.0 '@jest/expect-utils': 29.7.0 @@ -10116,7 +10930,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.8.7 + '@types/node': 20.11.30 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -10141,7 +10955,7 @@ packages: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.8.7 + '@types/node': 20.11.30 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -10153,7 +10967,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 20.8.7 + '@types/node': 20.11.30 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true @@ -10162,14 +10976,14 @@ packages: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 20.8.7 + '@types/node': 20.11.30 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest@29.5.0: - resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} + /jest@29.7.0(@types/node@20.4.5): + resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true peerDependencies: @@ -10181,7 +10995,7 @@ packages: '@jest/core': 29.7.0 '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 29.7.0 + jest-cli: 29.7.0(@types/node@20.4.5) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -10199,13 +11013,6 @@ packages: '@sideway/pinpoint': 2.0.0 dev: true - /jora@1.0.0-beta.8: - resolution: {integrity: sha512-f3WpYwfDTlhfSdyCkAlAXSKRpwZYBgCDnyWmA9D0yyItCTFnFefKtvFpaczrj/FItkgDkHiewgFuHsgh4TmokA==} - engines: {node: ^10.12.0 || ^12.20.0 || ^14.13.0 || >=15.0.0} - dependencies: - '@discoveryjs/natural-compare': 1.1.0 - dev: true - /js-beautify@1.15.1: resolution: {integrity: sha512-ESjNzSlt/sWE8sciZH8kBF8BPlwXPwhR6pWKAw8bw4Bwj+iZcnKW6ONWUutJ7eObuBZQpiIb8S7OYspWrKt7rA==} engines: {node: '>=14'} @@ -10230,6 +11037,7 @@ packages: /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + dev: true /js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} @@ -10310,6 +11118,11 @@ packages: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} dev: true + /json-parse-even-better-errors@3.0.1: + resolution: {integrity: sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + /json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} dev: true @@ -10322,10 +11135,6 @@ packages: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: true - /json-stringify-nice@1.1.4: - resolution: {integrity: sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw==} - dev: true - /json-stringify-safe@5.0.1: resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} dev: true @@ -10376,14 +11185,6 @@ packages: object.values: 1.1.7 dev: true - /just-diff-apply@5.5.0: - resolution: {integrity: sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw==} - dev: true - - /just-diff@5.2.0: - resolution: {integrity: sha512-6ufhP9SHjb7jibNFrNxyFZ6od3g+An6Ai9mhGRvcYe8UJlH0prseN64M+6ZBBUoKYHZsitDP42gAJ8+eVWr3lw==} - dev: true - /keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} dependencies: @@ -10441,34 +11242,86 @@ packages: shell-quote: 1.8.1 dev: true - /lerna@6.0.3(@swc/core@1.3.16): - resolution: {integrity: sha512-DzRCTZGoDI502daViNK1Ha+HPAVvTp72xshDOQ6o6SWCDTvnxFI3hGF6CBqGWnOoPwEOlQowHEIcPw5PjoMz8A==} - engines: {node: ^14.15.0 || >=16.0.0} + /lerna@7.4.1(@swc/core@1.3.107): + resolution: {integrity: sha512-c6sOO0dlJU689vStIsko+zjRdn2fJOWH8aNjePLNv2AubAdABKqfrDCpE2H/Q7+O80Duo68ZQtWYkUUk7hRWDw==} + engines: {node: '>=16.0.0'} hasBin: true dependencies: - '@lerna/add': 6.0.3 - '@lerna/bootstrap': 6.0.3 - '@lerna/changed': 6.0.3 - '@lerna/clean': 6.0.3 - '@lerna/cli': 6.0.3 - '@lerna/command': 6.0.3 - '@lerna/create': 6.0.3 - '@lerna/diff': 6.0.3 - '@lerna/exec': 6.0.3 - '@lerna/import': 6.0.3 - '@lerna/info': 6.0.3 - '@lerna/init': 6.0.3 - '@lerna/link': 6.0.3 - '@lerna/list': 6.0.3 - '@lerna/publish': 6.0.3(nx@15.3.3) - '@lerna/run': 6.0.3 - '@lerna/version': 6.0.3(nx@15.3.3) - '@nrwl/devkit': 15.9.7(nx@15.3.3) + '@lerna/child-process': 7.4.1 + '@lerna/create': 7.4.1(@swc/core@1.3.107)(typescript@5.1.6) + '@npmcli/run-script': 6.0.2 + '@nx/devkit': 16.10.0(nx@16.10.0) + '@octokit/plugin-enterprise-rest': 6.0.1 + '@octokit/rest': 19.0.11 + byte-size: 8.1.1 + chalk: 4.1.0 + clone-deep: 4.0.1 + cmd-shim: 6.0.1 + columnify: 1.6.0 + conventional-changelog-angular: 6.0.0 + conventional-changelog-core: 5.0.1 + conventional-recommended-bump: 7.0.1 + cosmiconfig: 8.3.6(typescript@5.1.6) + dedent: 0.7.0 + envinfo: 7.8.1 + execa: 5.0.0 + fs-extra: 11.2.0 + get-port: 5.1.1 + get-stream: 6.0.0 + git-url-parse: 13.1.0 + glob-parent: 5.1.2 + globby: 11.1.0 + graceful-fs: 4.2.11 + has-unicode: 2.0.1 import-local: 3.1.0 + ini: 1.3.8 + init-package-json: 5.0.0 inquirer: 8.2.6 + is-ci: 3.0.1 + is-stream: 2.0.0 + jest-diff: 29.7.0 + js-yaml: 4.1.0 + libnpmaccess: 7.0.2 + libnpmpublish: 7.3.0 + load-json-file: 6.2.0 + lodash: 4.17.21 + make-dir: 4.0.0 + minimatch: 3.0.5 + multimatch: 5.0.0 + node-fetch: 2.6.7 + npm-package-arg: 8.1.1 + npm-packlist: 5.1.1 + npm-registry-fetch: 14.0.5 npmlog: 6.0.2 - nx: 15.3.3(@swc/core@1.3.16) - typescript: 4.9.5 + nx: 16.10.0(@swc/core@1.3.107) + p-map: 4.0.0 + p-map-series: 2.1.0 + p-pipe: 3.1.0 + p-queue: 6.6.2 + p-reduce: 2.1.0 + p-waterfall: 2.1.1 + pacote: 15.2.0 + pify: 5.0.0 + read-cmd-shim: 4.0.0 + read-package-json: 6.0.4 + resolve-from: 5.0.0 + rimraf: 4.4.1 + semver: 7.5.4 + signal-exit: 3.0.7 + slash: 3.0.0 + ssri: 9.0.1 + strong-log-transformer: 2.1.0 + tar: 6.1.11 + temp-dir: 1.0.0 + typescript: 5.1.6 + upath: 2.0.1 + uuid: 9.0.1 + validate-npm-package-license: 3.0.4 + validate-npm-package-name: 5.0.0 + write-file-atomic: 5.0.1 + write-pkg: 4.0.0 + yargs: 16.2.0 + yargs-parser: 20.2.4 transitivePeerDependencies: - '@swc-node/register' - '@swc/core' @@ -10491,30 +11344,29 @@ packages: type-check: 0.4.0 dev: true - /libnpmaccess@6.0.4: - resolution: {integrity: sha512-qZ3wcfIyUoW0+qSFkMBovcTrSGJ3ZeyvpR7d5N9pEYv/kXs8sHP2wiqEIXBKLFrZlmM0kR0RJD7mtfLngtlLag==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + /libnpmaccess@7.0.2: + resolution: {integrity: sha512-vHBVMw1JFMTgEk15zRsJuSAg7QtGGHpUSEfnbcRL1/gTBag9iEfJbyjpDmdJmwMhvpoLoNBtdAUCdGnaP32hhw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - aproba: 2.0.0 - minipass: 3.3.6 - npm-package-arg: 9.1.2 - npm-registry-fetch: 13.3.1 + npm-package-arg: 10.1.0 + npm-registry-fetch: 14.0.5 transitivePeerDependencies: - - bluebird - supports-color dev: true - /libnpmpublish@6.0.5: - resolution: {integrity: sha512-LUR08JKSviZiqrYTDfywvtnsnxr+tOvBU0BF8H+9frt7HMvc6Qn6F8Ubm72g5hDTHbq8qupKfDvDAln2TVPvFg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + /libnpmpublish@7.3.0: + resolution: {integrity: sha512-fHUxw5VJhZCNSls0KLNEG0mCD2PN1i14gH5elGOgiVnU3VgTcRahagYP2LKI1m0tFCJ+XrAm0zVYyF5RCbXzcg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - normalize-package-data: 4.0.1 - npm-package-arg: 9.1.2 - npm-registry-fetch: 13.3.1 + ci-info: 3.9.0 + normalize-package-data: 5.0.0 + npm-package-arg: 10.1.0 + npm-registry-fetch: 14.0.5 + proc-log: 3.0.0 semver: 7.5.4 - ssri: 9.0.1 + sigstore: 1.9.0 + ssri: 10.0.5 transitivePeerDependencies: - - bluebird - supports-color dev: true @@ -10523,10 +11375,20 @@ packages: engines: {node: '>=10'} dev: true + /lilconfig@3.1.1: + resolution: {integrity: sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==} + engines: {node: '>=14'} + dev: true + /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} dev: true + /lines-and-columns@2.0.4: + resolution: {integrity: sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + /lint-staged@11.2.3: resolution: {integrity: sha512-Tfmhk8O2XFMD25EswHPv+OYhUjsijy5D7liTdxeXvhG2rsadmOLFtyj8lmlfoFFXY8oXWAIOKpoI+lJe1DB1mw==} hasBin: true @@ -10620,6 +11482,11 @@ packages: json5: 2.2.3 dev: true + /loader-utils@3.2.1: + resolution: {integrity: sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==} + engines: {node: '>= 12.13.0'} + dev: true + /locate-path@2.0.0: resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} engines: {node: '>=4'} @@ -10642,6 +11509,10 @@ packages: p-locate: 5.0.0 dev: true + /lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + dev: true + /lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} dev: true @@ -10721,6 +11592,7 @@ packages: hasBin: true dependencies: js-tokens: 4.0.0 + dev: true /lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} @@ -10728,6 +11600,11 @@ packages: tslib: 2.6.2 dev: true + /lowercase-keys@2.0.0: + resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} + engines: {node: '>=8'} + dev: true + /lru-cache@10.0.1: resolution: {integrity: sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==} engines: {node: 14 || >=16.14} @@ -10763,9 +11640,8 @@ packages: hasBin: true dev: true - /magic-string@0.26.7: - resolution: {integrity: sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==} - engines: {node: '>=12'} + /magic-string@0.25.9: + resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} dependencies: sourcemap-codec: 1.4.8 dev: true @@ -10799,35 +11675,10 @@ packages: semver: 7.5.4 dev: true - /make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - dev: true - - /make-fetch-happen@10.2.1: - resolution: {integrity: sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - agentkeepalive: 4.5.0 - cacache: 16.1.3 - http-cache-semantics: 4.1.1 - http-proxy-agent: 5.0.0 - https-proxy-agent: 5.0.1 - is-lambda: 1.0.1 - lru-cache: 7.18.3 - minipass: 3.3.6 - minipass-collect: 1.0.2 - minipass-fetch: 2.1.2 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - negotiator: 0.6.3 - promise-retry: 2.0.1 - socks-proxy-agent: 7.0.0 - ssri: 9.0.1 - transitivePeerDependencies: - - bluebird - - supports-color - dev: true - + /make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + dev: true + /make-fetch-happen@11.1.1: resolution: {integrity: sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -10867,14 +11718,6 @@ packages: engines: {node: '>=8'} dev: true - /md5@2.3.0: - resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==} - dependencies: - charenc: 0.0.2 - crypt: 0.0.2 - is-buffer: 1.1.6 - dev: true - /mdn-data@2.0.14: resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} dev: true @@ -10994,6 +11837,16 @@ packages: engines: {node: '>=6'} dev: true + /mimic-response@1.0.1: + resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} + engines: {node: '>=4'} + dev: true + + /mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + dev: true + /min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} @@ -11007,7 +11860,12 @@ packages: dependencies: schema-utils: 4.2.0 tapable: 2.2.1 - webpack: 5.89.0(@swc/core@1.3.16) + webpack: 5.89.0(@swc/core@1.3.107) + dev: true + + /mini-svg-data-uri@1.4.4: + resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==} + hasBin: true dev: true /minimalistic-assert@1.0.1: @@ -11033,6 +11891,13 @@ packages: brace-expansion: 2.0.1 dev: true + /minimatch@8.0.4: + resolution: {integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + /minimatch@9.0.1: resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==} engines: {node: '>=16 || 14 >=14.17'} @@ -11067,17 +11932,6 @@ packages: minipass: 3.3.6 dev: true - /minipass-fetch@2.1.2: - resolution: {integrity: sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - minipass: 3.3.6 - minipass-sized: 1.0.3 - minizlib: 2.1.2 - optionalDependencies: - encoding: 0.1.13 - dev: true - /minipass-fetch@3.0.4: resolution: {integrity: sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -11124,6 +11978,11 @@ packages: yallist: 4.0.0 dev: true + /minipass@4.2.8: + resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} + engines: {node: '>=8'} + dev: true + /minipass@5.0.0: resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} engines: {node: '>=8'} @@ -11147,15 +12006,6 @@ packages: engines: {node: '>= 8.0.0'} dev: true - /mkdirp-infer-owner@2.0.0: - resolution: {integrity: sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw==} - engines: {node: '>=10'} - dependencies: - chownr: 2.0.0 - infer-owner: 1.0.4 - mkdirp: 1.0.4 - dev: true - /mkdirp@0.5.6: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true @@ -11218,6 +12068,11 @@ packages: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} dev: true + /mute-stream@1.0.0: + resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + /mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} dependencies: @@ -11237,10 +12092,16 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - /nanospinner@0.2.2: - resolution: {integrity: sha512-sy9s0FNv/N2XY78uUwrgSm4e93Oy/w43GqDTxVh7cH7LDcG4dtNJJkWRIFUmC3EDp/lYIbPWpVysofYca0Yv2Q==} + /nanoid@5.0.6: + resolution: {integrity: sha512-rRq0eMHoGZxlvaFOUdK1Ev83Bd1IgzzR+WJ3IbDJ7QOSdAxYjlurSPqFs9s4lJg29RT6nPwizFtJhQS6V5xgiA==} + engines: {node: ^18 || >=20} + hasBin: true + dev: true + + /nanospinner@1.1.0: + resolution: {integrity: sha512-yFvNYMig4AthKYfHFl1sLj7B2nkHL4lzdig4osvl9/LdGbXwrdFRoqBS98gsEsOakr0yH+r5NZ/1Y9gdVB8trA==} dependencies: - picocolors: 0.2.1 + picocolors: 1.0.0 dev: true /natural-compare@1.4.0: @@ -11256,6 +12117,16 @@ packages: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} dev: true + /nice-napi@1.0.2: + resolution: {integrity: sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==} + os: ['!win32'] + requiresBuild: true + dependencies: + node-addon-api: 3.2.1 + node-gyp-build: 4.6.1 + dev: true + optional: true + /nice-try@1.0.5: resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} dev: true @@ -11275,6 +12146,18 @@ packages: resolution: {integrity: sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==} dev: true + /node-fetch@2.6.7: + resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + whatwg-url: 5.0.0 + dev: true + /node-fetch@2.7.0: resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} engines: {node: 4.x || >=6.0.0} @@ -11326,6 +12209,10 @@ packages: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} dev: true + /node-machine-id@1.1.12: + resolution: {integrity: sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==} + dev: true + /node-releases@2.0.13: resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} dev: true @@ -11334,14 +12221,6 @@ packages: resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} dev: true - /nopt@5.0.0: - resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} - engines: {node: '>=6'} - hasBin: true - dependencies: - abbrev: 1.1.1 - dev: true - /nopt@6.0.0: resolution: {integrity: sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -11377,11 +12256,11 @@ packages: validate-npm-package-license: 3.0.4 dev: true - /normalize-package-data@4.0.1: - resolution: {integrity: sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + /normalize-package-data@5.0.0: + resolution: {integrity: sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - hosted-git-info: 5.2.1 + hosted-git-info: 6.1.1 is-core-module: 2.13.1 semver: 7.5.4 validate-npm-package-license: 3.0.4 @@ -11408,16 +12287,16 @@ packages: npm-normalize-package-bin: 1.0.1 dev: true - /npm-bundled@2.0.1: - resolution: {integrity: sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + /npm-bundled@3.0.0: + resolution: {integrity: sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - npm-normalize-package-bin: 2.0.0 + npm-normalize-package-bin: 3.0.1 dev: true - /npm-install-checks@5.0.0: - resolution: {integrity: sha512-65lUsMI8ztHCxFz5ckCEC44DRvEGdZX5usQFriauxHEwt7upv1FKaQEmAtU0YnOAdwuNWCmk64xYiQABNrEyLA==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + /npm-install-checks@6.3.0: + resolution: {integrity: sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: semver: 7.5.4 dev: true @@ -11426,9 +12305,29 @@ packages: resolution: {integrity: sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==} dev: true - /npm-normalize-package-bin@2.0.0: - resolution: {integrity: sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + /npm-normalize-package-bin@3.0.1: + resolution: {integrity: sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /npm-package-arg@10.1.0: + resolution: {integrity: sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + hosted-git-info: 6.1.1 + proc-log: 3.0.0 + semver: 7.5.4 + validate-npm-package-name: 5.0.0 + dev: true + + /npm-package-arg@11.0.1: + resolution: {integrity: sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + hosted-git-info: 7.0.1 + proc-log: 3.0.0 + semver: 7.5.4 + validate-npm-package-name: 5.0.0 dev: true /npm-package-arg@8.1.1: @@ -11440,50 +12339,46 @@ packages: validate-npm-package-name: 3.0.0 dev: true - /npm-package-arg@9.1.2: - resolution: {integrity: sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - hosted-git-info: 5.2.1 - proc-log: 2.0.1 - semver: 7.5.4 - validate-npm-package-name: 4.0.0 - dev: true - - /npm-packlist@5.1.3: - resolution: {integrity: sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==} + /npm-packlist@5.1.1: + resolution: {integrity: sha512-UfpSvQ5YKwctmodvPPkK6Fwk603aoVsf8AEbmVKAEECrfvL8SSe1A2YIwrJ6xmTHAITKPwwZsWo7WwEbNk0kxw==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} hasBin: true dependencies: glob: 8.1.0 ignore-walk: 5.0.1 - npm-bundled: 2.0.1 - npm-normalize-package-bin: 2.0.0 + npm-bundled: 1.1.2 + npm-normalize-package-bin: 1.0.1 dev: true - /npm-pick-manifest@7.0.2: - resolution: {integrity: sha512-gk37SyRmlIjvTfcYl6RzDbSmS9Y4TOBXfsPnoYqTHARNgWbyDiCSMLUpmALDj4jjcTZpURiEfsSHJj9k7EV4Rw==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + /npm-packlist@7.0.4: + resolution: {integrity: sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + ignore-walk: 6.0.4 + dev: true + + /npm-pick-manifest@8.0.2: + resolution: {integrity: sha512-1dKY+86/AIiq1tkKVD3l0WI+Gd3vkknVGAggsFeBkTvbhMQ1OND/LKkYv4JtXPKUJ8bOTCyLiqEg2P6QNdK+Gg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - npm-install-checks: 5.0.0 - npm-normalize-package-bin: 2.0.0 - npm-package-arg: 9.1.2 + npm-install-checks: 6.3.0 + npm-normalize-package-bin: 3.0.1 + npm-package-arg: 10.1.0 semver: 7.5.4 dev: true - /npm-registry-fetch@13.3.1: - resolution: {integrity: sha512-eukJPi++DKRTjSBRcDZSDDsGqRK3ehbxfFUcgaRd0Yp6kRwOwh2WVn0r+8rMB4nnuzvAk6rQVzl6K5CkYOmnvw==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + /npm-registry-fetch@14.0.5: + resolution: {integrity: sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - make-fetch-happen: 10.2.1 - minipass: 3.3.6 - minipass-fetch: 2.1.2 + make-fetch-happen: 11.1.1 + minipass: 5.0.0 + minipass-fetch: 3.0.4 minipass-json-stream: 1.0.1 minizlib: 2.1.2 - npm-package-arg: 9.1.2 - proc-log: 2.0.1 + npm-package-arg: 10.1.0 + proc-log: 3.0.0 transitivePeerDependencies: - - bluebird - supports-color dev: true @@ -11521,55 +12416,130 @@ packages: resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} dev: true - /nx@15.3.3(@swc/core@1.3.16): - resolution: {integrity: sha512-yR102AlVW5Sb7X1e9cyR+0h44RD6c3eLJbAZ0yVFKPCKw+zQTdGvAqITtB6ZeFnPkg6Qq6f1oWu6G0n6f2cTpw==} + /nx@16.10.0(@swc/core@1.3.107): + resolution: {integrity: sha512-gZl4iCC0Hx0Qe1VWmO4Bkeul2nttuXdPpfnlcDKSACGu3ZIo+uySqwOF8yBAxSTIf8xe2JRhgzJN1aFkuezEBg==} hasBin: true requiresBuild: true peerDependencies: - '@swc-node/register': ^1.4.2 - '@swc/core': ^1.2.173 + '@swc-node/register': ^1.6.7 + '@swc/core': ^1.3.85 peerDependenciesMeta: '@swc-node/register': optional: true '@swc/core': optional: true dependencies: - '@nrwl/cli': 15.3.3(@swc/core@1.3.16) - '@nrwl/tao': 15.3.3(@swc/core@1.3.16) + '@nrwl/tao': 16.10.0(@swc/core@1.3.107) '@parcel/watcher': 2.0.4 - '@swc/core': 1.3.16 + '@swc/core': 1.3.107 '@yarnpkg/lockfile': 1.1.0 - '@yarnpkg/parsers': 3.0.0 + '@yarnpkg/parsers': 3.0.0-rc.46 '@zkochan/js-yaml': 0.0.6 axios: 1.6.8 - chalk: 4.1.0 - chokidar: 3.5.3 + chalk: 4.1.2 cli-cursor: 3.1.0 cli-spinners: 2.6.1 - cliui: 7.0.4 - dotenv: 10.0.0 + cliui: 8.0.1 + dotenv: 16.3.2 + dotenv-expand: 10.0.0 enquirer: 2.3.6 - fast-glob: 3.2.7 figures: 3.2.0 flat: 5.0.2 - fs-extra: 10.1.0 + fs-extra: 11.2.0 glob: 7.1.4 ignore: 5.2.4 + jest-diff: 29.7.0 js-yaml: 4.1.0 jsonc-parser: 3.2.0 + lines-and-columns: 2.0.4 minimatch: 3.0.5 + node-machine-id: 1.1.12 npm-run-path: 4.0.1 open: 8.4.2 - semver: 7.5.4 + semver: 7.5.3 string-width: 4.2.3 strong-log-transformer: 2.1.0 tar-stream: 2.2.0 tmp: 0.2.1 - tsconfig-paths: 3.14.2 + tsconfig-paths: 4.2.0 tslib: 2.6.2 v8-compile-cache: 2.3.0 yargs: 17.7.2 yargs-parser: 21.1.1 + optionalDependencies: + '@nx/nx-darwin-arm64': 16.10.0 + '@nx/nx-darwin-x64': 16.10.0 + '@nx/nx-freebsd-x64': 16.10.0 + '@nx/nx-linux-arm-gnueabihf': 16.10.0 + '@nx/nx-linux-arm64-gnu': 16.10.0 + '@nx/nx-linux-arm64-musl': 16.10.0 + '@nx/nx-linux-x64-gnu': 16.10.0 + '@nx/nx-linux-x64-musl': 16.10.0 + '@nx/nx-win32-arm64-msvc': 16.10.0 + '@nx/nx-win32-x64-msvc': 16.10.0 + transitivePeerDependencies: + - debug + dev: true + + /nx@18.3.3(@swc/core@1.3.107): + resolution: {integrity: sha512-GqC5ANfTWV6SFbgquZwuRMI2Z2nO0c0Yx4JzM3x32aJOgXsmRml3WcV0a5648bIXSen34gylHYl2EHaxVWkzNQ==} + hasBin: true + requiresBuild: true + peerDependencies: + '@swc-node/register': ^1.8.0 + '@swc/core': ^1.3.85 + peerDependenciesMeta: + '@swc-node/register': + optional: true + '@swc/core': + optional: true + dependencies: + '@nrwl/tao': 18.3.3(@swc/core@1.3.107) + '@swc/core': 1.3.107 + '@yarnpkg/lockfile': 1.1.0 + '@yarnpkg/parsers': 3.0.0-rc.46 + '@zkochan/js-yaml': 0.0.6 + axios: 1.6.8 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.6.1 + cliui: 8.0.1 + dotenv: 16.3.2 + dotenv-expand: 10.0.0 + enquirer: 2.3.6 + figures: 3.2.0 + flat: 5.0.2 + fs-extra: 11.2.0 + ignore: 5.2.4 + jest-diff: 29.7.0 + js-yaml: 4.1.0 + jsonc-parser: 3.2.0 + lines-and-columns: 2.0.4 + minimatch: 9.0.3 + node-machine-id: 1.1.12 + npm-run-path: 4.0.1 + open: 8.4.2 + ora: 5.3.0 + semver: 7.5.4 + string-width: 4.2.3 + strong-log-transformer: 2.1.0 + tar-stream: 2.2.0 + tmp: 0.2.1 + tsconfig-paths: 4.2.0 + tslib: 2.6.2 + yargs: 17.7.2 + yargs-parser: 21.1.1 + optionalDependencies: + '@nx/nx-darwin-arm64': 18.3.3 + '@nx/nx-darwin-x64': 18.3.3 + '@nx/nx-freebsd-x64': 18.3.3 + '@nx/nx-linux-arm-gnueabihf': 18.3.3 + '@nx/nx-linux-arm64-gnu': 18.3.3 + '@nx/nx-linux-arm64-musl': 18.3.3 + '@nx/nx-linux-x64-gnu': 18.3.3 + '@nx/nx-linux-x64-musl': 18.3.3 + '@nx/nx-win32-arm64-msvc': 18.3.3 + '@nx/nx-win32-x64-msvc': 18.3.3 transitivePeerDependencies: - debug dev: true @@ -11577,6 +12547,7 @@ packages: /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} + dev: true /object-inspect@1.13.1: resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} @@ -11701,6 +12672,20 @@ packages: type-check: 0.4.0 dev: true + /ora@5.3.0: + resolution: {integrity: sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==} + engines: {node: '>=10'} + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.9.1 + is-interactive: 1.0.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + dev: true + /ora@5.4.1: resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} engines: {node: '>=10'} @@ -11716,6 +12701,13 @@ packages: wcwidth: 1.0.1 dev: true + /os-filter-obj@2.0.0: + resolution: {integrity: sha512-uksVLsqG3pVdzzPvmAHpBK0wKxYItuzZr7SziusRPoz67tGV8rL1szZ6IdeUrbqLjGDwApBtN29eEE3IqGHOjg==} + engines: {node: '>=4'} + dependencies: + arch: 2.2.0 + dev: true + /os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} @@ -11725,6 +12717,11 @@ packages: resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} dev: true + /p-cancelable@2.1.1: + resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} + engines: {node: '>=8'} + dev: true + /p-filter@2.1.0: resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} engines: {node: '>=8'} @@ -11846,41 +12843,34 @@ packages: p-reduce: 2.1.0 dev: true - /pacote@13.6.2: - resolution: {integrity: sha512-Gu8fU3GsvOPkak2CkbojR7vjs3k3P9cA6uazKTHdsdV0gpCEQq2opelnEv30KRQWgVzP5Vd/5umjcedma3MKtg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + /pacote@15.2.0: + resolution: {integrity: sha512-rJVZeIwHTUta23sIZgEIM62WYwbmGbThdbnkt81ravBplQv+HjyroqnLRNH2+sLJHcGZmLRmhPwACqhfTcOmnA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} hasBin: true dependencies: - '@npmcli/git': 3.0.2 - '@npmcli/installed-package-contents': 1.0.7 - '@npmcli/promise-spawn': 3.0.0 - '@npmcli/run-script': 4.2.1 - cacache: 16.1.3 - chownr: 2.0.0 - fs-minipass: 2.1.0 - infer-owner: 1.0.4 - minipass: 3.3.6 - mkdirp: 1.0.4 - npm-package-arg: 9.1.2 - npm-packlist: 5.1.3 - npm-pick-manifest: 7.0.2 - npm-registry-fetch: 13.3.1 - proc-log: 2.0.1 + '@npmcli/git': 4.1.0 + '@npmcli/installed-package-contents': 2.0.2 + '@npmcli/promise-spawn': 6.0.2 + '@npmcli/run-script': 6.0.2 + cacache: 17.1.4 + fs-minipass: 3.0.3 + minipass: 5.0.0 + npm-package-arg: 10.1.0 + npm-packlist: 7.0.4 + npm-pick-manifest: 8.0.2 + npm-registry-fetch: 14.0.5 + proc-log: 3.0.0 promise-retry: 2.0.1 - read-package-json: 5.0.2 - read-package-json-fast: 2.0.3 - rimraf: 3.0.2 - ssri: 9.0.1 + read-package-json: 6.0.4 + read-package-json-fast: 3.0.2 + sigstore: 1.9.0 + ssri: 10.0.5 tar: 6.2.0 transitivePeerDependencies: - bluebird - supports-color dev: true - /pako@2.1.0: - resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==} - dev: true - /param-case@3.0.4: resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} dependencies: @@ -11895,15 +12885,6 @@ packages: callsites: 3.1.0 dev: true - /parse-conflict-json@2.0.2: - resolution: {integrity: sha512-jDbRGb00TAPFsKWCpZZOT93SxVP9nONOSgES3AevqRq/CHvavEBvKAjxX9p5Y5F0RZLxH9Ufd9+RwtCsa+lFDA==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - json-parse-even-better-errors: 2.3.1 - just-diff: 5.2.0 - just-diff-apply: 5.5.0 - dev: true - /parse-json@4.0.0: resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} engines: {node: '>=4'} @@ -12019,8 +13000,14 @@ packages: engines: {node: '>=8'} dev: true - /picocolors@0.2.1: - resolution: {integrity: sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==} + /path-type@5.0.0: + resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} + engines: {node: '>=12'} + dev: true + + /peek-readable@5.0.0: + resolution: {integrity: sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==} + engines: {node: '>=14.16'} dev: true /picocolors@1.0.0: @@ -12056,6 +13043,12 @@ packages: engines: {node: '>= 6'} dev: true + /piscina@4.4.0: + resolution: {integrity: sha512-+AQduEJefrOApE4bV7KRmp3N2JnnyErlVqq4P/jmko4FPz9Z877BCccl/iB3FdrWSUkvbGV9Kan/KllJgat3Vg==} + optionalDependencies: + nice-napi: 1.0.2 + dev: true + /pkg-dir@4.2.0: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} @@ -12238,6 +13231,23 @@ packages: postcss: 8.4.38 dev: true + /postcss-load-config@3.1.4(postcss@8.4.38): + resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} + engines: {node: '>= 10'} + peerDependencies: + postcss: '>=8.4.31' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + dependencies: + lilconfig: 2.1.0 + postcss: 8.4.38 + yaml: 1.10.2 + dev: true + /postcss-loader@6.2.1(postcss@8.4.31)(webpack@5.89.0): resolution: {integrity: sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==} engines: {node: '>= 12.13.0'} @@ -12249,7 +13259,7 @@ packages: klona: 2.0.6 postcss: 8.4.31 semver: 7.5.4 - webpack: 5.89.0(@swc/core@1.3.16) + webpack: 5.89.0(@swc/core@1.3.107) dev: true /postcss-merge-longhand@5.1.7(postcss@8.4.31): @@ -12429,6 +13439,22 @@ packages: postcss: 8.4.38 dev: true + /postcss-modules@4.3.1(postcss@8.4.38): + resolution: {integrity: sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q==} + peerDependencies: + postcss: '>=8.4.31' + dependencies: + generic-names: 4.0.0 + icss-replace-symbols: 1.1.0 + lodash.camelcase: 4.3.0 + postcss: 8.4.38 + postcss-modules-extract-imports: 3.0.0(postcss@8.4.38) + postcss-modules-local-by-default: 4.0.3(postcss@8.4.38) + postcss-modules-scope: 3.0.0(postcss@8.4.38) + postcss-modules-values: 4.0.0(postcss@8.4.38) + string-hash: 1.1.3 + dev: true + /postcss-normalize-charset@5.1.0(postcss@8.4.31): resolution: {integrity: sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==} engines: {node: ^10 || ^12 || >=14.0} @@ -12807,9 +13833,9 @@ packages: js-beautify: 1.15.1 dev: true - /proc-log@2.0.1: - resolution: {integrity: sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + /proc-log@3.0.0: + resolution: {integrity: sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dev: true /process-nextick-args@2.0.1: @@ -12825,7 +13851,7 @@ packages: chalk: 2.4.2 figures: 2.0.0 log-update: 2.3.0 - webpack: 5.89.0(@swc/core@1.3.16) + webpack: 5.89.0(@swc/core@1.3.107) dev: true /progress@2.0.3: @@ -12833,14 +13859,6 @@ packages: engines: {node: '>=0.4.0'} dev: true - /promise-all-reject-late@1.0.1: - resolution: {integrity: sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw==} - dev: true - - /promise-call-limit@1.0.2: - resolution: {integrity: sha512-1vTUnfI2hzui8AEIixbdAJlFY4LFDXqQswy/2eOlThAscXCY4It8FdVuI0fMJGAB2aWGbdQf/gv0skKYXmdrHA==} - dev: true - /promise-inflight@1.0.1: resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} peerDependencies: @@ -12858,6 +13876,11 @@ packages: retry: 0.12.0 dev: true + /promise.series@0.2.0: + resolution: {integrity: sha512-VWQJyU2bcDTgZw8kpfBpB/ejZASlCrzwz5f2hjb/zlujOEB4oeiAhHygAWq8ubsX2GVkD4kCU5V2dwOTaCY5EQ==} + engines: {node: '>=0.12'} + dev: true + /prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} @@ -12866,10 +13889,11 @@ packages: sisteransi: 1.0.5 dev: true - /promzard@0.3.0: - resolution: {integrity: sha512-JZeYqd7UAcHCwI+sTOeUDYkvEU+1bQ7iE0UT1MgB/tERkAPkesW46MrpIySzODi+owTjZtiF8Ay5j9m60KmMBw==} + /promzard@1.0.0: + resolution: {integrity: sha512-KQVDEubSUHGSt5xLakaToDFrSoZhStB8dXLzk2xvwR67gJktrHFvpR63oZgHyK19WKbHFLXJqCPXdVR3aBP8Ig==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - read: 1.0.7 + read: 2.1.0 dev: true /prop-types@15.8.1: @@ -12878,6 +13902,7 @@ packages: loose-envify: 1.4.0 object-assign: 4.1.1 react-is: 16.13.1 + dev: true /proto-list@1.2.4: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} @@ -12948,6 +13973,11 @@ packages: engines: {node: '>=8'} dev: true + /quick-lru@5.1.1: + resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} + engines: {node: '>=10'} + dev: true + /randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} dependencies: @@ -12981,6 +14011,7 @@ packages: /react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + dev: true /react-is@17.0.2: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} @@ -12997,27 +14028,27 @@ packages: loose-envify: 1.4.0 dev: true - /read-cmd-shim@3.0.1: - resolution: {integrity: sha512-kEmDUoYf/CDy8yZbLTmhB1X9kkjf9Q80PCNsDMb7ufrGd6zZSQA1+UyjrO+pZm5K/S4OXCWJeiIt1JA8kAsa6g==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + /read-cmd-shim@4.0.0: + resolution: {integrity: sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dev: true - /read-package-json-fast@2.0.3: - resolution: {integrity: sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==} - engines: {node: '>=10'} + /read-package-json-fast@3.0.2: + resolution: {integrity: sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - json-parse-even-better-errors: 2.3.1 - npm-normalize-package-bin: 1.0.1 + json-parse-even-better-errors: 3.0.1 + npm-normalize-package-bin: 3.0.1 dev: true - /read-package-json@5.0.2: - resolution: {integrity: sha512-BSzugrt4kQ/Z0krro8zhTwV1Kd79ue25IhNN/VtHFy1mG/6Tluyi+msc0UpwaoQzxSHa28mntAjIZY6kEgfR9Q==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - glob: 8.1.0 - json-parse-even-better-errors: 2.3.1 - normalize-package-data: 4.0.1 - npm-normalize-package-bin: 2.0.0 + /read-package-json@6.0.4: + resolution: {integrity: sha512-AEtWXYfopBj2z5N5PbkAOeNHRPUg5q+Nen7QLxV8M2zJq1ym6/lCz3fYNTCXe19puu2d06jfHhrP7v/S2PtMMw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + glob: 10.3.10 + json-parse-even-better-errors: 3.0.1 + normalize-package-data: 5.0.0 + npm-normalize-package-bin: 3.0.1 dev: true /read-pkg-up@3.0.0: @@ -13066,11 +14097,11 @@ packages: strip-bom: 3.0.0 dev: true - /read@1.0.7: - resolution: {integrity: sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==} - engines: {node: '>=0.8'} + /read@2.1.0: + resolution: {integrity: sha512-bvxi1QLJHcaywCAEsAk4DG3nVoqiY2Csps3qzWalhj5hFqRn1d/OixkFXtLO1PrgHUcAP0FNaSY/5GYNfENFFQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - mute-stream: 0.0.8 + mute-stream: 1.0.0 dev: true /readable-stream@2.3.8: @@ -13094,14 +14125,11 @@ packages: util-deprecate: 1.0.2 dev: true - /readdir-scoped-modules@1.1.0: - resolution: {integrity: sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==} - deprecated: This functionality has been moved to @npmcli/fs + /readable-web-to-node-stream@3.0.2: + resolution: {integrity: sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==} + engines: {node: '>=8'} dependencies: - debuglog: 1.0.1 - dezalgo: 1.0.4 - graceful-fs: 4.2.11 - once: 1.4.0 + readable-stream: 3.6.2 dev: true /readdirp@3.6.0: @@ -13206,6 +14234,10 @@ packages: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} dev: true + /resolve-alpn@1.2.1: + resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} + dev: true + /resolve-cwd@3.0.0: resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} engines: {node: '>=8'} @@ -13239,6 +14271,11 @@ packages: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} dev: true + /resolve.exports@1.1.0: + resolution: {integrity: sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==} + engines: {node: '>=10'} + dev: true + /resolve.exports@2.0.2: resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} engines: {node: '>=10'} @@ -13262,6 +14299,12 @@ packages: supports-preserve-symlinks-flag: 1.0.0 dev: true + /responselike@2.0.1: + resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} + dependencies: + lowercase-keys: 2.0.0 + dev: true + /restore-cursor@2.0.0: resolution: {integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==} engines: {node: '>=4'} @@ -13309,34 +14352,144 @@ packages: glob: 7.2.3 dev: true - /rollup-plugin-gzip@3.1.0(rollup@3.3.0): + /rimraf@4.4.1: + resolution: {integrity: sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==} + engines: {node: '>=14'} + hasBin: true + dependencies: + glob: 9.3.5 + dev: true + + /rimraf@5.0.5: + resolution: {integrity: sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==} + engines: {node: '>=14'} + hasBin: true + dependencies: + glob: 10.3.10 + dev: true + + /rollup-plugin-copy@3.5.0: + resolution: {integrity: sha512-wI8D5dvYovRMx/YYKtUNt3Yxaw4ORC9xo6Gt9t22kveWz1enG9QrhVlagzwrxSC455xD1dHMKhIJkbsQ7d48BA==} + engines: {node: '>=8.3'} + dependencies: + '@types/fs-extra': 8.1.5 + colorette: 1.4.0 + fs-extra: 8.1.0 + globby: 10.0.1 + is-plain-object: 3.0.1 + dev: true + + /rollup-plugin-gzip@3.1.0(rollup@4.1.5): resolution: {integrity: sha512-PFS9s6/w6dCra6/Z8PGD+ug3aaaqKLDCbr5y1Ek71Wd4rQSmMnOqCIIMgwbYxZ9A/gjP3pCN6rA4pAG47jxF0w==} engines: {node: '>=10.0.0'} peerDependencies: rollup: '>=2.0.0' dependencies: - rollup: 3.3.0 + rollup: 4.1.5 + dev: true + + /rollup-plugin-peer-deps-external@2.2.4(rollup@2.79.1): + resolution: {integrity: sha512-AWdukIM1+k5JDdAqV/Cxd+nejvno2FVLVeZ74NKggm3Q5s9cbbcOgUPGdbxPi4BXu7xGaZ8HG12F+thImYu/0g==} + peerDependencies: + rollup: '*' + dependencies: + rollup: 2.79.1 + dev: true + + /rollup-plugin-postcss@4.0.2(postcss@8.4.38): + resolution: {integrity: sha512-05EaY6zvZdmvPUDi3uCcAQoESDcYnv8ogJJQRp6V5kZ6J6P7uAVJlrTZcaaA20wTH527YTnKfkAoPxWI/jPp4w==} + engines: {node: '>=10'} + peerDependencies: + postcss: '>=8.4.31' + dependencies: + chalk: 4.1.2 + concat-with-sourcemaps: 1.1.0 + cssnano: 5.1.15(postcss@8.4.38) + import-cwd: 3.0.0 + p-queue: 6.6.2 + pify: 5.0.0 + postcss: 8.4.38 + postcss-load-config: 3.1.4(postcss@8.4.38) + postcss-modules: 4.3.1(postcss@8.4.38) + promise.series: 0.2.0 + resolve: 1.22.8 + rollup-pluginutils: 2.8.2 + safe-identifier: 0.4.2 + style-inject: 0.3.0 + transitivePeerDependencies: + - ts-node dev: true - /rollup-plugin-swc3@0.7.0(@swc/core@1.3.16)(rollup@3.3.0): - resolution: {integrity: sha512-aWkbRGjmzSLs8BPQEuGo3PQsBAsYyL9Nk5xZ6ruEnBp+5RN9KavSQV1nM13gSmXZNBhz7Wh5mscyo5lCWQ1Bpg==} + /rollup-plugin-swc3@0.11.0(@swc/core@1.3.107)(rollup@4.1.5): + resolution: {integrity: sha512-luB9Ngb1YieWPpJttKvkmjN3lG5l28SmASLbf2CoScUB2+EImU0bE8wX4EYKEqv5clVulhWRQHQvE+H33X/03g==} engines: {node: '>=12'} peerDependencies: '@swc/core': '>=1.2.165' - rollup: ^2.0.0 || ^3.0.0 + rollup: ^2.0.0 || ^3.0.0 || ^4.0.0 dependencies: '@fastify/deepmerge': 1.3.0 - '@rollup/pluginutils': 4.2.1 - '@swc/core': 1.3.16 + '@rollup/pluginutils': 5.1.0(rollup@4.1.5) + '@swc/core': 1.3.107 get-tsconfig: 4.7.2 - rollup: 3.3.0 + rollup: 4.1.5 + rollup-preserve-directives: 1.1.1(rollup@4.1.5) + dev: true + + /rollup-plugin-typescript2@0.36.0(rollup@2.79.1)(typescript@5.1.6): + resolution: {integrity: sha512-NB2CSQDxSe9+Oe2ahZbf+B4bh7pHwjV5L+RSYpCu7Q5ROuN94F9b6ioWwKfz3ueL3KTtmX4o2MUH2cgHDIEUsw==} + peerDependencies: + rollup: '>=1.26.3' + typescript: '>=2.4.0' + dependencies: + '@rollup/pluginutils': 4.2.1 + find-cache-dir: 3.3.2 + fs-extra: 10.1.0 + rollup: 2.79.1 + semver: 7.5.4 + tslib: 2.6.2 + typescript: 5.1.6 + dev: true + + /rollup-pluginutils@2.8.2: + resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==} + dependencies: + estree-walker: 0.6.1 + dev: true + + /rollup-preserve-directives@1.1.1(rollup@4.1.5): + resolution: {integrity: sha512-+eQafbuEfDPfxQ9hQPlwaROfin4yiVRxap8hnrvvvcSGoukv1tTiYpAW9mvm3uR8J+fe4xd8FdVd5rz9q7jZ+Q==} + peerDependencies: + rollup: ^2.0.0 || ^3.0.0 || ^4.0.0 + dependencies: + magic-string: 0.30.8 + rollup: 4.1.5 + dev: true + + /rollup@2.79.1: + resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} + engines: {node: '>=10.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.2 dev: true - /rollup@3.3.0: - resolution: {integrity: sha512-wqOV/vUJCYEbWsXvwCkgGWvgaEnsbn4jxBQWKpN816CqsmCimDmCNJI83c6if7QVD4v/zlyRzxN7U2yDT5rfoA==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} + /rollup@4.1.5: + resolution: {integrity: sha512-AEw14/q4NHYQkQlngoSae2yi7hDBeT9w84aEzdgCr39+2RL+iTG84lGTkgC1Wp5igtquN64cNzuzZKVz+U6jOg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.1.5 + '@rollup/rollup-android-arm64': 4.1.5 + '@rollup/rollup-darwin-arm64': 4.1.5 + '@rollup/rollup-darwin-x64': 4.1.5 + '@rollup/rollup-linux-arm-gnueabihf': 4.1.5 + '@rollup/rollup-linux-arm64-gnu': 4.1.5 + '@rollup/rollup-linux-arm64-musl': 4.1.5 + '@rollup/rollup-linux-x64-gnu': 4.1.5 + '@rollup/rollup-linux-x64-musl': 4.1.5 + '@rollup/rollup-win32-arm64-msvc': 4.1.5 + '@rollup/rollup-win32-ia32-msvc': 4.1.5 + '@rollup/rollup-win32-x64-msvc': 4.1.5 fsevents: 2.3.2 dev: true @@ -13375,6 +14528,10 @@ packages: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: true + /safe-identifier@0.4.2: + resolution: {integrity: sha512-6pNbSMW6OhAi9j+N8V+U715yBQsaWJ7eyEUaOrawX+isg5ZxhUlV1NipNtgaKHmFGiABwt+ZF04Ii+3Xjkg+8w==} + dev: true + /safe-regex-test@1.0.0: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} dependencies: @@ -13444,6 +14601,18 @@ packages: resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} dev: true + /semver-regex@4.0.5: + resolution: {integrity: sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==} + engines: {node: '>=12'} + dev: true + + /semver-truncate@3.0.0: + resolution: {integrity: sha512-LJWA9kSvMolR51oDE6PN3kALBNaUdkxzAGcexw8gjMA8xr5zUqK0JiR3CgARSqanYF3Z1YHvsErb1KDgh+v7Rg==} + engines: {node: '>=12'} + dependencies: + semver: 7.5.4 + dev: true + /semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true @@ -13454,6 +14623,14 @@ packages: hasBin: true dev: true + /semver@7.5.3: + resolution: {integrity: sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + /semver@7.5.4: resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} engines: {node: '>=10'} @@ -13599,6 +14776,20 @@ packages: engines: {node: '>=14'} dev: true + /sigstore@1.9.0: + resolution: {integrity: sha512-0Zjz0oe37d08VeOtBIuB6cRriqXse2e8w+7yIy2XSXjshRKxbc2KkhXjL229jXSxEm7UbcjS76wcJDGQddVI9A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + dependencies: + '@sigstore/bundle': 1.1.0 + '@sigstore/protobuf-specs': 0.2.1 + '@sigstore/sign': 1.0.0 + '@sigstore/tuf': 1.0.3 + make-fetch-happen: 11.1.1 + transitivePeerDependencies: + - supports-color + dev: true + /sirv@2.0.4: resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} engines: {node: '>= 10'} @@ -13612,18 +14803,17 @@ packages: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} dev: true - /size-limit@6.0.1: - resolution: {integrity: sha512-AFMWULVTAH/VkI15+d4Hn3EXbhh3ZvPPdRs/x4Pu3ZlWs3IP5k9/F3nAl4wPIDEXmHJiA6pbrmWUumOpaidrow==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + /size-limit@11.0.1: + resolution: {integrity: sha512-6L80ocVspWPrhIRg8kPl41VypqTGH8/lu9e6TJiSJpkNLtOR2h/EEqdAO/wNJOv/sUVtjX+lVEWrzBpItGP+gQ==} + engines: {node: ^18.0.0 || >=20.0.0} hasBin: true dependencies: bytes-iec: 3.1.1 chokidar: 3.5.3 - ci-job-number: 1.2.2 - globby: 11.1.0 - lilconfig: 2.1.0 - nanospinner: 0.2.2 - picocolors: 0.2.1 + globby: 14.0.1 + lilconfig: 3.1.1 + nanospinner: 1.1.0 + picocolors: 1.0.0 dev: true /slash@3.0.0: @@ -13631,6 +14821,11 @@ packages: engines: {node: '>=8'} dev: true + /slash@5.1.0: + resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} + engines: {node: '>=14.16'} + dev: true + /slice-ansi@3.0.0: resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} engines: {node: '>=8'} @@ -13694,18 +14889,25 @@ packages: smart-buffer: 4.2.0 dev: true - /sort-keys@2.0.0: - resolution: {integrity: sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==} - engines: {node: '>=4'} + /sort-keys-length@1.0.1: + resolution: {integrity: sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==} + engines: {node: '>=0.10.0'} + dependencies: + sort-keys: 1.1.2 + dev: true + + /sort-keys@1.1.2: + resolution: {integrity: sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==} + engines: {node: '>=0.10.0'} dependencies: is-plain-obj: 1.1.0 dev: true - /sort-keys@4.2.0: - resolution: {integrity: sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg==} - engines: {node: '>=8'} + /sort-keys@2.0.0: + resolution: {integrity: sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==} + engines: {node: '>=4'} dependencies: - is-plain-obj: 2.1.0 + is-plain-obj: 1.1.0 dev: true /source-map-js@1.2.0: @@ -13719,6 +14921,13 @@ packages: source-map: 0.6.1 dev: true + /source-map-support@0.5.19: + resolution: {integrity: sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + /source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} dependencies: @@ -13876,6 +15085,10 @@ packages: engines: {node: '>=0.6.19'} dev: true + /string-hash@1.1.3: + resolution: {integrity: sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==} + dev: true + /string-length@4.0.2: resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} engines: {node: '>=10'} @@ -14023,6 +15236,11 @@ packages: engines: {node: '>=8'} dev: true + /strip-outer@2.0.0: + resolution: {integrity: sha512-A21Xsm1XzUkK0qK1ZrytDUvqsQWict2Cykhvi0fBQntGG5JSprESasEyV1EZ/4CiR5WB5KjzLTrP/bO37B0wPg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + /strong-log-transformer@2.1.0: resolution: {integrity: sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==} engines: {node: '>=4'} @@ -14033,13 +15251,16 @@ packages: through: 2.3.8 dev: true - /style-loader@3.3.3(webpack@5.89.0): - resolution: {integrity: sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw==} - engines: {node: '>= 12.13.0'} - peerDependencies: - webpack: ^5.0.0 + /strtok3@7.0.0: + resolution: {integrity: sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==} + engines: {node: '>=14.16'} dependencies: - webpack: 5.89.0(@swc/core@1.3.16) + '@tokenizer/token': 0.3.0 + peek-readable: 5.0.0 + dev: true + + /style-inject@0.3.0: + resolution: {integrity: sha512-IezA2qp+vcdlhJaVm5SOdPPTUu0FCEqfNSli2vRuSIBbu5Nq5UvygTk/VzeCqfLz2Atj3dVII5QBKGZRZ0edzw==} dev: true /stylehacks@5.1.1(postcss@8.4.31): @@ -14139,6 +15360,18 @@ packages: readable-stream: 3.6.2 dev: true + /tar@6.1.11: + resolution: {integrity: sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==} + engines: {node: '>= 10'} + dependencies: + chownr: 2.0.0 + fs-minipass: 2.1.0 + minipass: 3.3.6 + minizlib: 2.1.2 + mkdirp: 1.0.4 + yallist: 4.0.0 + dev: true + /tar@6.2.0: resolution: {integrity: sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==} engines: {node: '>=10'} @@ -14161,7 +15394,7 @@ packages: engines: {node: '>=8'} dev: true - /terser-webpack-plugin@5.3.9(@swc/core@1.3.16)(webpack@5.89.0): + /terser-webpack-plugin@5.3.9(@swc/core@1.3.107)(webpack@5.89.0): resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -14178,12 +15411,12 @@ packages: optional: true dependencies: '@jridgewell/trace-mapping': 0.3.20 - '@swc/core': 1.3.16 + '@swc/core': 1.3.107 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.1 terser: 5.22.0 - webpack: 5.89.0(@swc/core@1.3.16) + webpack: 5.89.0(@swc/core@1.3.107) dev: true /terser@5.22.0: @@ -14239,7 +15472,7 @@ packages: loader-utils: 2.0.4 neo-async: 2.6.2 schema-utils: 3.3.0 - webpack: 5.89.0(@swc/core@1.3.16) + webpack: 5.89.0(@swc/core@1.3.107) dev: true /through2@2.0.5: @@ -14297,6 +15530,14 @@ packages: engines: {node: '>=0.6'} dev: true + /token-types@5.0.1: + resolution: {integrity: sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==} + engines: {node: '>=14.16'} + dependencies: + '@tokenizer/token': 0.3.0 + ieee754: 1.2.1 + dev: true + /totalist@3.0.1: resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} engines: {node: '>=6'} @@ -14323,16 +15564,82 @@ packages: punycode: 2.3.0 dev: true - /treeverse@2.0.0: - resolution: {integrity: sha512-N5gJCkLu1aXccpOTtqV6ddSEi6ZmGkh3hjmbu1IjcavJK4qyOVQmi0myQKM7z5jVGmD68SJoliaVrMmVObhj6A==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dev: true - /trim-newlines@3.0.1: resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} engines: {node: '>=8'} dev: true + /trim-repeated@2.0.0: + resolution: {integrity: sha512-QUHBFTJGdOwmp0tbOG505xAgOp/YliZP/6UgafFXYZ26WT1bvQmSMJUvkeVSASuJJHbqsFbynTvkd5W8RBTipg==} + engines: {node: '>=12'} + dependencies: + escape-string-regexp: 5.0.0 + dev: true + + /ts-node@10.9.1(@swc/core@1.3.107)(@types/node@20.4.5)(typescript@5.1.6): + resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + hasBin: true + 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 + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@swc/core': 1.3.107 + '@tsconfig/node10': 1.0.10 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 20.4.5 + acorn: 8.10.0 + acorn-walk: 8.2.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.1.6 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + dev: true + + /ts-node@10.9.1(@swc/core@1.3.107)(@types/node@20.4.5)(typescript@5.4.5): + resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + hasBin: true + 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 + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@swc/core': 1.3.107 + '@tsconfig/node10': 1.0.10 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 20.4.5 + acorn: 8.10.0 + acorn-walk: 8.2.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.4.5 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + dev: true + /ts-node@9.1.1(typescript@4.9.5): resolution: {integrity: sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==} engines: {node: '>=10.0.0'} @@ -14358,6 +15665,15 @@ packages: strip-bom: 3.0.0 dev: true + /tsconfig-paths@4.2.0: + resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} + engines: {node: '>=6'} + dependencies: + json5: 2.2.3 + minimist: 1.2.8 + strip-bom: 3.0.0 + dev: true + /tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true @@ -14366,14 +15682,14 @@ packages: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} dev: true - /tsutils@3.21.0(typescript@4.9.5): + /tsutils@3.21.0(typescript@5.1.6): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} 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' dependencies: tslib: 1.14.1 - typescript: 4.9.5 + typescript: 5.1.6 dev: true /tty-table@4.2.2: @@ -14390,6 +15706,17 @@ packages: yargs: 17.7.2 dev: true + /tuf-js@1.1.7: + resolution: {integrity: sha512-i3P9Kgw3ytjELUfpuKVDNBJvk4u5bXL6gskv572mcevPbSKCV3zt3djhmlEQ65yERjIbOSncy7U4cQJaB1CBCg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + '@tufjs/models': 1.0.4 + debug: 4.3.4(supports-color@8.1.1) + make-fetch-happen: 11.1.1 + transitivePeerDependencies: + - supports-color + dev: true + /type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -14483,12 +15810,6 @@ packages: is-typed-array: 1.1.12 dev: true - /typedarray-to-buffer@3.1.5: - resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} - dependencies: - is-typedarray: 1.0.0 - dev: true - /typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} dev: true @@ -14499,6 +15820,18 @@ packages: hasBin: true dev: true + /typescript@5.1.6: + resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} + engines: {node: '>=14.17'} + hasBin: true + dev: true + + /typescript@5.4.5: + resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} + engines: {node: '>=14.17'} + hasBin: true + dev: true + /uglify-js@3.17.4: resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} engines: {node: '>=0.8.0'} @@ -14516,8 +15849,8 @@ packages: which-boxed-primitive: 1.0.2 dev: true - /undici-types@5.25.3: - resolution: {integrity: sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==} + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} dev: true /unicode-canonical-property-names-ecmascript@2.0.0: @@ -14543,11 +15876,9 @@ packages: engines: {node: '>=4'} dev: true - /unique-filename@2.0.1: - resolution: {integrity: sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - unique-slug: 3.0.0 + /unicorn-magic@0.1.0: + resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} + engines: {node: '>=18'} dev: true /unique-filename@3.0.0: @@ -14557,13 +15888,6 @@ packages: unique-slug: 4.0.0 dev: true - /unique-slug@3.0.0: - resolution: {integrity: sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - imurmurhash: 0.1.4 - dev: true - /unique-slug@4.0.0: resolution: {integrity: sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -14653,6 +15977,15 @@ packages: hasBin: true dev: true + /uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + dev: true + + /v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + dev: true + /v8-compile-cache@2.3.0: resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} dev: true @@ -14665,7 +15998,7 @@ packages: resolution: {integrity: sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg==} engines: {node: '>=10.12.0'} dependencies: - '@jridgewell/trace-mapping': 0.3.20 + '@jridgewell/trace-mapping': 0.3.25 '@types/istanbul-lib-coverage': 2.0.5 convert-source-map: 2.0.0 dev: true @@ -14683,9 +16016,9 @@ packages: builtins: 1.0.3 dev: true - /validate-npm-package-name@4.0.0: - resolution: {integrity: sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + /validate-npm-package-name@5.0.0: + resolution: {integrity: sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: builtins: 5.0.1 dev: true @@ -14729,7 +16062,7 @@ packages: vue-hot-reload-api: 2.3.4 vue-style-loader: 4.1.3 vue-template-compiler: 2.7.14 - webpack: 5.89.0(@swc/core@1.3.16) + webpack: 5.89.0(@swc/core@1.3.107) transitivePeerDependencies: - arc-templates - atpl @@ -14802,7 +16135,7 @@ packages: hash-sum: 2.0.0 vue: 2.7.16 watchpack: 2.4.0 - webpack: 5.89.0(@swc/core@1.3.16) + webpack: 5.89.0(@swc/core@1.3.107) dev: true /vue-style-loader@4.1.3: @@ -14837,7 +16170,7 @@ packages: '@vue/compiler-sfc': 2.7.16 csstype: 3.1.3 - /vue@3.4.21(typescript@4.9.5): + /vue@3.4.21(typescript@5.1.6): resolution: {integrity: sha512-5hjyV/jLEIKD/jYl4cavMcnzKwjMKohureP8ejn3hhEjwhWIhWeuzL2kJAjzl/WyVsgPY56Sy4Z40C3lVshxXA==} peerDependencies: typescript: '*' @@ -14850,7 +16183,7 @@ packages: '@vue/runtime-dom': 3.4.21 '@vue/server-renderer': 3.4.21(vue@3.4.21) '@vue/shared': 3.4.21 - typescript: 4.9.5 + typescript: 5.1.6 dev: true /w3c-xmlserializer@4.0.0: @@ -14860,10 +16193,6 @@ packages: xml-name-validator: 4.0.0 dev: true - /walk-up-path@1.0.0: - resolution: {integrity: sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg==} - dev: true - /walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} dependencies: @@ -14942,7 +16271,7 @@ packages: mime-types: 2.1.35 range-parser: 1.2.1 schema-utils: 4.2.0 - webpack: 5.89.0(@swc/core@1.3.16) + webpack: 5.89.0(@swc/core@1.3.107) dev: true /webpack-dev-server@4.15.2(debug@4.3.4)(webpack@5.89.0): @@ -14986,7 +16315,7 @@ packages: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack: 5.89.0(@swc/core@1.3.16) + webpack: 5.89.0(@swc/core@1.3.107) webpack-dev-middleware: 5.3.4(webpack@5.89.0) ws: 8.14.2 transitivePeerDependencies: @@ -15014,7 +16343,7 @@ packages: resolution: {integrity: sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA==} dev: true - /webpack@5.89.0(@swc/core@1.3.16): + /webpack@5.89.0(@swc/core@1.3.107): resolution: {integrity: sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==} engines: {node: '>=10.13.0'} hasBin: true @@ -15045,7 +16374,7 @@ packages: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.9(@swc/core@1.3.16)(webpack@5.89.0) + terser-webpack-plugin: 5.3.9(@swc/core@1.3.107)(webpack@5.89.0) watchpack: 2.4.0 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -15156,6 +16485,14 @@ packages: isexe: 2.0.0 dev: true + /which@3.0.1: + resolution: {integrity: sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + /wide-align@1.1.5: resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} dependencies: @@ -15217,21 +16554,20 @@ packages: signal-exit: 3.0.7 dev: true - /write-file-atomic@3.0.3: - resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} + /write-file-atomic@4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dependencies: imurmurhash: 0.1.4 - is-typedarray: 1.0.0 signal-exit: 3.0.7 - typedarray-to-buffer: 3.1.5 dev: true - /write-file-atomic@4.0.2: - resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + /write-file-atomic@5.0.1: + resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: imurmurhash: 0.1.4 - signal-exit: 3.0.7 + signal-exit: 4.1.0 dev: true /write-json-file@3.2.0: @@ -15246,18 +16582,6 @@ packages: write-file-atomic: 2.4.3 dev: true - /write-json-file@4.3.0: - resolution: {integrity: sha512-PxiShnxf0IlnQuMYOPPhPkhExoCQuTUNPOa/2JWCYTmBquU9njyyDuwRKN26IZBlp4yn1nt+Agh2HOOBl+55HQ==} - engines: {node: '>=8.3'} - dependencies: - detect-indent: 6.1.0 - graceful-fs: 4.2.11 - is-plain-obj: 2.1.0 - make-dir: 3.1.0 - sort-keys: 4.2.0 - write-file-atomic: 3.0.3 - dev: true - /write-pkg@4.0.0: resolution: {integrity: sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA==} engines: {node: '>=8'} diff --git a/scripts/cleanup b/scripts/cleanup new file mode 100755 index 00000000..9c2b15ac --- /dev/null +++ b/scripts/cleanup @@ -0,0 +1,40 @@ +#!/usr/bin/env node +'use strict'; +const fs = require('fs'); +const path = require('path'); + +// Define the base directory where packages are located +const packagesDir = 'packages'; +const dirs = ['dist', 'es', 'lib', 'coverage', 'types', 'node_modules'] + +// Function to recursively delete directories +function deleteFolderRecursive(folderPath) { + if (fs.existsSync(folderPath)) { + fs.readdirSync(folderPath).forEach((file) => { + const curPath = path.join(folderPath, file); + if (fs.lstatSync(curPath).isDirectory()) { // Recursively delete subdirectories + deleteFolderRecursive(curPath); + } else { // Delete file + fs.unlinkSync(curPath); + } + }); + fs.rmdirSync(folderPath); // Delete empty directory + } +} + +// Loop through each subfolder inside the packages directory +fs.readdirSync(packagesDir).forEach((packageFolder) => { + const packageFolderPath = path.join(packagesDir, packageFolder); + + if (fs.lstatSync(packageFolderPath).isDirectory()) { + dirs.forEach(dirname => { + // Delete the dist folder if it exists + const distFolderPath = path.join(packageFolderPath, dirname); + + if (fs.existsSync(distFolderPath)) { + deleteFolderRecursive(distFolderPath); + console.log(`${dirname} (${packageFolderPath}) deleted`); + } + }) + } +}); diff --git a/scripts/package.json b/scripts/package.json index 488157cf..3898c755 100644 --- a/scripts/package.json +++ b/scripts/package.json @@ -1,12 +1,11 @@ { - "name": "scripts", - "main": "index.js", + "name": "@bbob/scripts", "private": true, + "bin": { + "pkg-task": "pkg-task" + }, "author": { "name": "Nikolay Kostyurin ", "url": "https://artkost.ru/" - }, - "dependencies": { - "commander": "8.2.0" } } diff --git a/scripts/pkg-task b/scripts/pkg-task index d2f596fc..c3cf395b 100755 --- a/scripts/pkg-task +++ b/scripts/pkg-task @@ -28,6 +28,7 @@ function runCommand(command, args = '') { } function runCommandByKey(key, command) { + const event_name = process.env.npm_lifecycle_event const args = process.argv.slice(2); if (args.length >= 1) { @@ -37,6 +38,10 @@ function runCommandByKey(key, command) { return runCommand(command, argarr.join(' ')) } } + + if (args.length === 0 && event_name && event_name === key) { + return runCommand(command) + } } for (const [key, command] of Object.entries(pkg.pkgTasks)) { diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000..d98f215f --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,39 @@ +{ + "compilerOptions": { + "target": "esnext", + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], + "checkJs": false, + "skipLibCheck": true, + "strict": true, + "strictNullChecks": true, + "strictFunctionTypes": false, + "forceConsistentCasingInFileNames": true, + "emitDeclarationOnly": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "downlevelIteration": true, + "jsx": "preserve", + "incremental": true, + "allowJs": true, + "declaration": true, + "declarationMap": true, + "preserveSymlinks": true, + "paths": {} + }, + "exclude": [ + "node_modules" + ], + "ts-node": { + "compilerOptions": { + "module": "commonjs", + "resolveJsonModule": true, + "noImplicitAny": false + } + } +}