From 7ad720e72cc02476672e3b49b445af8d784d8c50 Mon Sep 17 00:00:00 2001 From: Rodolphe Stoclin Date: Fri, 2 Dec 2022 10:51:22 +0100 Subject: [PATCH] feat(typescript): init rewrite --- .eslintrc | 4 +- .github/dependabot.yml | 14 - .github/workflows/test.yml | 2 +- babel.config.js | 16 - constants.ts | 1 + package.json | 54 +- ...el-minify.test.js => babel-minify.test.ts} | 3 +- packages/babel-minify/package.json | 31 +- .../src/{babel-minify.js => index.ts} | 39 +- packages/babel-minify/tsconfig-cjs.json | 9 + packages/babel-minify/tsconfig.json | 9 + .../clean-css/__tests__/clean-css.test.js | 45 - .../clean-css/__tests__/clean-css.test.ts | 47 + packages/clean-css/package.json | 30 +- packages/clean-css/src/clean-css.js | 42 - packages/clean-css/src/index.ts | 68 + packages/clean-css/tsconfig-cjs.json | 9 + packages/clean-css/tsconfig.json | 9 + packages/cli/__tests__/cli.test.js | 47 - packages/cli/__tests__/cli.test.ts | 55 + packages/cli/package.json | 33 +- packages/cli/src/{compress.js => compress.ts} | 7 +- packages/cli/src/{cli.js => index.ts} | 43 +- packages/cli/src/{spinner.js => spinner.ts} | 7 +- packages/cli/tsconfig-cjs.json | 9 + packages/cli/tsconfig.json | 9 + packages/core/__tests__/core.test.js | 269 -- packages/core/__tests__/core.test.ts | 296 ++ packages/core/package.json | 30 +- .../core/src/{compress.js => compress.ts} | 29 +- ...ompressInMemory.js => compressInMemory.ts} | 3 +- packages/core/src/{core.js => index.ts} | 20 +- packages/core/src/{setup.js => setup.ts} | 31 +- packages/core/tsconfig-cjs.json | 9 + packages/core/tsconfig.json | 9 + .../{crass.test.js => crass.test.ts} | 3 +- packages/crass/package.json | 29 +- packages/crass/src/{crass.js => index.ts} | 25 +- packages/crass/tsconfig-cjs.json | 9 + packages/crass/tsconfig.json | 9 + .../{cssnano.test.js => cssnano.test.ts} | 5 +- packages/cssnano/package.json | 29 +- packages/cssnano/src/{cssnano.js => index.ts} | 29 +- packages/cssnano/tsconfig-cjs.json | 9 + packages/cssnano/tsconfig.json | 9 + .../__tests__/{csso.test.js => csso.test.ts} | 3 +- packages/csso/package.json | 30 +- packages/csso/src/csso.js | 34 - packages/csso/src/index.ts | 53 + packages/csso/tsconfig-cjs.json | 9 + packages/csso/tsconfig.json | 9 + .../__tests__/google-closure-compiler.test.js | 56 - .../__tests__/google-closure-compiler.test.ts | 61 + packages/google-closure-compiler/package.json | 31 +- .../{google-closure-compiler.js => index.ts} | 38 +- .../google-closure-compiler/tsconfig-cjs.json | 9 + .../google-closure-compiler/tsconfig.json | 9 + ...minifier.test.js => html-minifier.test.ts} | 3 +- packages/html-minifier/package.json | 30 +- .../src/{html-minifier.js => index.ts} | 29 +- packages/html-minifier/tsconfig-cjs.json | 9 + packages/html-minifier/tsconfig.json | 9 + ...{jsonminify.test.js => jsonminify.test.ts} | 3 +- packages/jsonminify/package.json | 30 +- .../src/{jsonminify.js => index.ts} | 27 +- packages/jsonminify/tsconfig-cjs.json | 9 + packages/jsonminify/tsconfig.json | 9 + ...o-compress.test.js => no-compress.test.ts} | 3 +- packages/no-compress/package.json | 29 +- packages/no-compress/src/index.ts | 51 + packages/no-compress/src/no-compress.js | 32 - packages/no-compress/tsconfig-cjs.json | 9 + packages/no-compress/tsconfig.json | 9 + packages/run/__tests__/run.test.js | 108 - packages/run/__tests__/run.test.ts | 121 + packages/run/package.json | 30 +- packages/run/src/{run.js => index.ts} | 34 +- packages/run/tsconfig-cjs.json | 9 + packages/run/tsconfig.json | 9 + .../{sqwish.test.js => sqwish.test.ts} | 13 +- packages/sqwish/package.json | 29 +- packages/sqwish/src/index.ts | 54 + packages/sqwish/src/sqwish.js | 34 - packages/sqwish/tsconfig-cjs.json | 9 + packages/sqwish/tsconfig.json | 9 + .../{terser.test.js => terser.test.ts} | 5 +- packages/terser/package.json | 29 +- packages/terser/src/index.ts | 78 + packages/terser/src/terser.js | 47 - packages/terser/tsconfig-cjs.json | 9 + packages/terser/tsconfig.json | 9 + packages/types/README.md | 25 + packages/types/package.json | 29 + packages/types/src/types.ts | 59 + .../{uglify-es.test.js => uglify-es.test.ts} | 5 +- packages/uglify-es/package.json | 30 +- packages/uglify-es/src/index.ts | 81 + packages/uglify-es/src/uglify-es.js | 45 - packages/uglify-es/tsconfig-cjs.json | 9 + packages/uglify-es/tsconfig.json | 9 + .../{uglify-js.test.js => uglify-js.test.ts} | 5 +- packages/uglify-js/package.json | 30 +- packages/uglify-js/src/index.ts | 74 + packages/uglify-js/src/uglify-js.js | 42 - packages/uglify-js/tsconfig-cjs.json | 9 + packages/uglify-js/tsconfig.json | 9 + .../{utils.test.js => utils.test.ts} | 22 +- packages/utils/index.d.ts | 1 + packages/utils/package.json | 30 +- packages/utils/src/{utils.js => index.ts} | 109 +- packages/utils/tsconfig-cjs.json | 9 + packages/utils/tsconfig.json | 9 + packages/yui/__tests__/yui.test.js | 121 - packages/yui/__tests__/yui.test.ts | 128 + packages/yui/package.json | 31 +- packages/yui/src/{yui.js => index.ts} | 34 +- packages/yui/tsconfig-cjs.json | 9 + packages/yui/tsconfig.json | 9 + pnpm-lock.yaml | 4040 ++++------------- tests/{files-path.js => files-path.ts} | 0 tests/{fixtures.js => fixtures.ts} | 3 +- tsconfig.json | 21 + types.ts | 53 + vitest.config.ts | 10 + 124 files changed, 3529 insertions(+), 4334 deletions(-) delete mode 100644 .github/dependabot.yml delete mode 100644 babel.config.js create mode 100644 constants.ts rename packages/babel-minify/__tests__/{babel-minify.test.js => babel-minify.test.ts} (91%) rename packages/babel-minify/src/{babel-minify.js => index.ts} (52%) create mode 100644 packages/babel-minify/tsconfig-cjs.json create mode 100644 packages/babel-minify/tsconfig.json delete mode 100644 packages/clean-css/__tests__/clean-css.test.js create mode 100644 packages/clean-css/__tests__/clean-css.test.ts delete mode 100644 packages/clean-css/src/clean-css.js create mode 100644 packages/clean-css/src/index.ts create mode 100644 packages/clean-css/tsconfig-cjs.json create mode 100644 packages/clean-css/tsconfig.json delete mode 100644 packages/cli/__tests__/cli.test.js create mode 100644 packages/cli/__tests__/cli.test.ts rename packages/cli/src/{compress.js => compress.ts} (84%) rename packages/cli/src/{cli.js => index.ts} (58%) rename packages/cli/src/{spinner.js => spinner.ts} (85%) create mode 100644 packages/cli/tsconfig-cjs.json create mode 100644 packages/cli/tsconfig.json delete mode 100644 packages/core/__tests__/core.test.js create mode 100644 packages/core/__tests__/core.test.ts rename packages/core/src/{compress.js => compress.ts} (64%) rename packages/core/src/{compressInMemory.js => compressInMemory.ts} (83%) rename packages/core/src/{core.js => index.ts} (68%) rename packages/core/src/{setup.js => setup.ts} (84%) create mode 100644 packages/core/tsconfig-cjs.json create mode 100644 packages/core/tsconfig.json rename packages/crass/__tests__/{crass.test.js => crass.test.ts} (88%) rename packages/crass/src/{crass.js => index.ts} (52%) create mode 100644 packages/crass/tsconfig-cjs.json create mode 100644 packages/crass/tsconfig.json rename packages/cssnano/__tests__/{cssnano.test.js => cssnano.test.ts} (89%) rename packages/cssnano/src/{cssnano.js => index.ts} (53%) create mode 100644 packages/cssnano/tsconfig-cjs.json create mode 100644 packages/cssnano/tsconfig.json rename packages/csso/__tests__/{csso.test.js => csso.test.ts} (88%) delete mode 100644 packages/csso/src/csso.js create mode 100644 packages/csso/src/index.ts create mode 100644 packages/csso/tsconfig-cjs.json create mode 100644 packages/csso/tsconfig.json delete mode 100644 packages/google-closure-compiler/__tests__/google-closure-compiler.test.js create mode 100644 packages/google-closure-compiler/__tests__/google-closure-compiler.test.ts rename packages/google-closure-compiler/src/{google-closure-compiler.js => index.ts} (69%) create mode 100644 packages/google-closure-compiler/tsconfig-cjs.json create mode 100644 packages/google-closure-compiler/tsconfig.json rename packages/html-minifier/__tests__/{html-minifier.test.js => html-minifier.test.ts} (87%) rename packages/html-minifier/src/{html-minifier.js => index.ts} (64%) create mode 100644 packages/html-minifier/tsconfig-cjs.json create mode 100644 packages/html-minifier/tsconfig.json rename packages/jsonminify/__tests__/{jsonminify.test.js => jsonminify.test.ts} (87%) rename packages/jsonminify/src/{jsonminify.js => index.ts} (53%) create mode 100644 packages/jsonminify/tsconfig-cjs.json create mode 100644 packages/jsonminify/tsconfig.json rename packages/no-compress/__tests__/{no-compress.test.js => no-compress.test.ts} (82%) create mode 100644 packages/no-compress/src/index.ts delete mode 100644 packages/no-compress/src/no-compress.js create mode 100644 packages/no-compress/tsconfig-cjs.json create mode 100644 packages/no-compress/tsconfig.json delete mode 100644 packages/run/__tests__/run.test.js create mode 100644 packages/run/__tests__/run.test.ts rename packages/run/src/{run.js => index.ts} (67%) create mode 100644 packages/run/tsconfig-cjs.json create mode 100644 packages/run/tsconfig.json rename packages/sqwish/__tests__/{sqwish.test.js => sqwish.test.ts} (58%) create mode 100644 packages/sqwish/src/index.ts delete mode 100644 packages/sqwish/src/sqwish.js create mode 100644 packages/sqwish/tsconfig-cjs.json create mode 100644 packages/sqwish/tsconfig.json rename packages/terser/__tests__/{terser.test.js => terser.test.ts} (88%) create mode 100644 packages/terser/src/index.ts delete mode 100644 packages/terser/src/terser.js create mode 100644 packages/terser/tsconfig-cjs.json create mode 100644 packages/terser/tsconfig.json create mode 100644 packages/types/README.md create mode 100644 packages/types/package.json create mode 100644 packages/types/src/types.ts rename packages/uglify-es/__tests__/{uglify-es.test.js => uglify-es.test.ts} (88%) create mode 100644 packages/uglify-es/src/index.ts delete mode 100644 packages/uglify-es/src/uglify-es.js create mode 100644 packages/uglify-es/tsconfig-cjs.json create mode 100644 packages/uglify-es/tsconfig.json rename packages/uglify-js/__tests__/{uglify-js.test.js => uglify-js.test.ts} (88%) create mode 100644 packages/uglify-js/src/index.ts delete mode 100644 packages/uglify-js/src/uglify-js.js create mode 100644 packages/uglify-js/tsconfig-cjs.json create mode 100644 packages/uglify-js/tsconfig.json rename packages/utils/__tests__/{utils.test.js => utils.test.ts} (79%) create mode 100644 packages/utils/index.d.ts rename packages/utils/src/{utils.js => index.ts} (62%) create mode 100644 packages/utils/tsconfig-cjs.json create mode 100644 packages/utils/tsconfig.json delete mode 100644 packages/yui/__tests__/yui.test.js create mode 100644 packages/yui/__tests__/yui.test.ts rename packages/yui/src/{yui.js => index.ts} (55%) create mode 100644 packages/yui/tsconfig-cjs.json create mode 100644 packages/yui/tsconfig.json rename tests/{files-path.js => files-path.ts} (100%) rename tests/{fixtures.js => fixtures.ts} (99%) create mode 100644 tsconfig.json create mode 100644 types.ts create mode 100644 vitest.config.ts diff --git a/.eslintrc b/.eslintrc index 9772a463f..add21fc3b 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,9 +1,7 @@ { "env": { "node": true, - "es6": true, - "jasmine": true, - "jest": true + "es6": true }, "plugins": ["prettier"], "extends": ["eslint:recommended", "prettier"], diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index b577eb16c..000000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,14 +0,0 @@ -version: 2 -updates: - - package-ecosystem: npm - directory: '/' - schedule: - interval: monthly - time: '04:00' - open-pull-requests-limit: 10 - ignore: - - dependency-name: 'chalk' - - dependency-name: 'globby' - - dependency-name: 'gzip-size' - - dependency-name: 'jest' - - dependency-name: 'ora' diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 2449224be..e53a72ebf 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -48,7 +48,7 @@ jobs: run: pnpm install --no-frozen-lockfile - name: Run tests - run: pnpm run setup && pnpm test + run: pnpm build && pnpm coverage env: CI: true diff --git a/babel.config.js b/babel.config.js deleted file mode 100644 index 2e540681a..000000000 --- a/babel.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = api => { - api.cache(true); - - return { - presets: [ - [ - '@babel/preset-env', - { - targets: { - node: '14' - } - } - ] - ] - }; -}; diff --git a/constants.ts b/constants.ts new file mode 100644 index 000000000..c88eed1d2 --- /dev/null +++ b/constants.ts @@ -0,0 +1 @@ +export const TESTS_TIMEOUT = 30000; diff --git a/package.json b/package.json index 026652994..e68f4663b 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": { "name": "Rodolphe Stoclin", "email": "rodolphe@2clics.net", - "url": "http://2clics.net" + "url": "https://www.2clics.net" }, "license": "MIT", "private": true, @@ -18,27 +18,24 @@ }, "packageManager": "pnpm@7.18.0", "scripts": { - "setup": "npm run clean:packages && npm run build", - "build": "npm run clean:build && npm run build-js", - "build-js": "pnpm lerna exec --parallel -- babel --root-mode upward src --out-dir lib --copy-files", + "build": "lerna run build", + "clean": "pnpm clean:build; pnpm clean:packages", + "clean:build": "pnpm dlx rimraf packages/*/dist", + "clean:packages": "pnpm lerna clean -y", + "clean:test": "pnpm dlx rimraf tests/tmp/*.{js,js.map,css,html}", + "coverage": "vitest run --coverage", "eslint": "eslint --ignore-path .gitignore packages", "lerna": "lerna", - "lint": "npm run eslint || true", - "pretest": "npm run build && npm run eslint", - "test": "jest", - "posttest": "npm run clean:coverage", - "clean:build": "pnpm dlx rimraf packages/*/lib", - "clean:coverage": "pnpm dlx rimraf tests/tmp/*.{js,js.map,css,html}", - "clean:packages": "pnpm lerna clean -y", - "showpack": "pnpm lerna pack --dry", + "lint": "pnpm eslint || true", + "postcoverage": "pnpm clean:test", + "pretest": "pnpm build; pnpm eslint", "publish-latest": "NPM_CONFIG_OTP=xxx pnpm lerna publish --tag-version-prefix ''", "publish-next": "NPM_CONFIG_OTP=xxx pnpm lerna publish --tag-version-prefix '' --preid beta --npm-tag next", - "prettier-project": "prettier --write './packages/**/{bin,src,__tests__}/**/*.js'" + "prettier-project": "prettier --write './packages/**/{bin,src,__tests__}/**/*.js'", + "showpack": "pnpm lerna pack --dry", + "test": "vitest" }, "devDependencies": { - "@babel/cli": "7.19.3", - "@babel/core": "7.20.5", - "@babel/preset-env": "7.20.2", "@node-minify/babel-minify": "workspace:*", "@node-minify/clean-css": "workspace:*", "@node-minify/cli": "workspace:*", @@ -57,22 +54,22 @@ "@node-minify/uglify-js": "workspace:*", "@node-minify/utils": "workspace:*", "@node-minify/yui": "workspace:*", - "babel-core": "6.26.3", - "babel-jest": "29.3.1", - "babel-preset-env": "1.7.0", + "@types/node": "18.11.10", + "@vitest/coverage-c8": "0.25.3", "eslint": "8.29.0", "eslint-config-prettier": "8.5.0", "eslint-plugin-prettier": "4.2.1", "husky": "8.0.2", - "jest": "27.5.1", "lerna": "6.1.0", "lint-staged": "13.1.0", "node-notifier": "10.0.1", "prettier": "2.8.0", - "rimraf": "3.0.2" + "rimraf": "3.0.2", + "typescript": "4.9.3", + "vitest": "0.25.3" }, "lint-staged": { - "*.js": [ + "*.ts": [ "prettier --write", "git add" ] @@ -87,18 +84,5 @@ "hooks": { "pre-commit": "lint-staged" } - }, - "jest": { - "collectCoverage": true, - "coverageDirectory": "/coverage/", - "notify": true, - "projects": [ - "/packages/*" - ], - "rootDir": "./", - "testPathIgnorePatterns": [ - "/node_modules/", - ".history" - ] } } diff --git a/packages/babel-minify/__tests__/babel-minify.test.js b/packages/babel-minify/__tests__/babel-minify.test.ts similarity index 91% rename from packages/babel-minify/__tests__/babel-minify.test.js rename to packages/babel-minify/__tests__/babel-minify.test.ts index b8587f071..3740487d8 100644 --- a/packages/babel-minify/__tests__/babel-minify.test.js +++ b/packages/babel-minify/__tests__/babel-minify.test.ts @@ -4,7 +4,8 @@ * MIT Licensed */ -import babelMinify from '../src/babel-minify'; +import { describe } from 'vitest'; +import babelMinify from '../src'; import { runOneTest, tests } from '../../../tests/fixtures'; const compressorLabel = 'babel-minify'; diff --git a/packages/babel-minify/package.json b/packages/babel-minify/package.json index 912f7014d..fa840cd3d 100644 --- a/packages/babel-minify/package.json +++ b/packages/babel-minify/package.json @@ -11,16 +11,29 @@ "author": "Rodolphe Stoclin ", "homepage": "https://github.com/srod/node-minify/tree/master/packages/babel-minify#readme", "license": "MIT", - "main": "lib/babel-minify.js", "engines": { "node": ">=14.0.0" }, "directories": { - "lib": "lib", + "lib": "dist", "test": "__tests__" }, + "exports": { + ".": { + "import": { + "types": "./dist/esm/types/index.d.ts", + "default": "./dist/esm/index.js" + }, + "require": { + "types": "./dist/cjs/types/index.d.ts", + "default": "./dist/cjs/index.js" + } + } + }, + "types": "./dist/cjs/types/index.d.ts", + "main": "./dist/cjs/index.js", "files": [ - "lib" + "dist/**/*" ], "publishConfig": { "access": "public" @@ -32,9 +45,19 @@ "bugs": { "url": "https://github.com/srod/node-minify/issues" }, + "scripts": { + "clean": "pnpm dlx rimraf dist", + "build": "npm run clean && tsc -p tsconfig.json && tsc -p tsconfig-cjs.json", + "prepack": "npm run build" + }, "dependencies": { - "@node-minify/utils": "^7.0.0", + "@node-minify/utils": "workspace:*", "babel-core": "6.26.3", "babel-preset-minify": "0.5.2" + }, + "devDependencies": { + "@node-minify/types": "workspace:*", + "@types/babel-core": "^6.25.7", + "babel-preset-env": "1.7.0" } } diff --git a/packages/babel-minify/src/babel-minify.js b/packages/babel-minify/src/index.ts similarity index 52% rename from packages/babel-minify/src/babel-minify.js rename to packages/babel-minify/src/index.ts index 7c3b66890..db793c71f 100644 --- a/packages/babel-minify/src/babel-minify.js +++ b/packages/babel-minify/src/index.ts @@ -10,6 +10,31 @@ import { transform } from 'babel-core'; import minify from 'babel-preset-minify'; import { utils } from '@node-minify/utils'; +import { MinifierOptions } from '@node-minify/types'; + +// interface Options { +// sourceMap?: boolean; +// _sourceMap?: { url: string } | boolean; +// babelrc?: {}; +// presets?: []; +// } + +// interface Settings { +// options: Options; +// content: string; +// output: string; +// } + +// interface MinifierOptions { +// settings: Settings; +// content: string; +// callback: Function; +// index: number; +// } + +interface BabelOptions { + presets: string[]; +} /** * Run babel-minify. @@ -18,16 +43,16 @@ import { utils } from '@node-minify/utils'; * @param {String} content * @param {Function} callback */ -const minifyBabel = ({ settings, content, callback, index }) => { - let babelOptions = { +const minifyBabel = ({ settings, content, callback, index }: MinifierOptions) => { + let babelOptions: BabelOptions = { presets: [] }; - if (settings.options.babelrc) { + if (settings && settings.options && settings.options.babelrc) { babelOptions = JSON.parse(utils.readFile(settings.options.babelrc)); } - if (settings.options.presets) { + if (settings && settings.options && settings.options.presets) { const babelrcPresets = babelOptions.presets || []; babelOptions.presets = babelrcPresets.concat(settings.options.presets); } @@ -36,8 +61,8 @@ const minifyBabel = ({ settings, content, callback, index }) => { babelOptions.presets = babelOptions.presets.concat([minify]); } - const contentMinified = transform(content, babelOptions); - if (!settings.content) { + const contentMinified = transform(content || '', babelOptions); + if (settings && !settings.content) { utils.writeFile({ file: settings.output, content: contentMinified.code, index }); } if (callback) { @@ -49,4 +74,4 @@ const minifyBabel = ({ settings, content, callback, index }) => { /** * Expose `minifyBabel()`. */ -module.exports = minifyBabel; +export default minifyBabel; diff --git a/packages/babel-minify/tsconfig-cjs.json b/packages/babel-minify/tsconfig-cjs.json new file mode 100644 index 000000000..33830cb8a --- /dev/null +++ b/packages/babel-minify/tsconfig-cjs.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "commonjs", + "outDir": "dist/cjs", + "target": "es2015" + }, + "include": ["./src"] +} diff --git a/packages/babel-minify/tsconfig.json b/packages/babel-minify/tsconfig.json new file mode 100644 index 000000000..876c1ae30 --- /dev/null +++ b/packages/babel-minify/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "esnext", + "outDir": "dist/esm", + "target": "esnext" + }, + "include": ["./src"] +} diff --git a/packages/clean-css/__tests__/clean-css.test.js b/packages/clean-css/__tests__/clean-css.test.js deleted file mode 100644 index 4c00b1261..000000000 --- a/packages/clean-css/__tests__/clean-css.test.js +++ /dev/null @@ -1,45 +0,0 @@ -/*! - * node-minify - * Copyright(c) 2011-2022 Rodolphe Stoclin - * MIT Licensed - */ - -import minify from '../../core/src/core'; -import cleanCss from '../src/clean-css'; -import { filesCSS } from '../../../tests/files-path'; -import { runOneTest, tests } from '../../../tests/fixtures'; - -const compressorLabel = 'clean-css'; -const compressor = cleanCss; - -describe('Package: clean-css', () => { - tests.commoncss.forEach(options => { - runOneTest({ options, compressorLabel, compressor }); - }); - tests.commoncss.forEach(options => { - runOneTest({ options, compressorLabel, compressor, sync: true }); - }); - test('should compress with some options', done => { - const options = {}; - options.minify = { - compressor, - input: filesCSS.fileCSS, - output: filesCSS.fileCSSOut, - options: { - sourceMap: { - filename: filesCSS.fileCSSSourceMaps, - url: filesCSS.fileCSSSourceMaps - } - } - }; - - options.minify.callback = (err, min) => { - expect(err).toBeNull(); - expect(min).not.toBeNull(); - - done(); - }; - - minify(options.minify); - }); -}); diff --git a/packages/clean-css/__tests__/clean-css.test.ts b/packages/clean-css/__tests__/clean-css.test.ts new file mode 100644 index 000000000..7c0d94435 --- /dev/null +++ b/packages/clean-css/__tests__/clean-css.test.ts @@ -0,0 +1,47 @@ +/*! + * node-minify + * Copyright(c) 2011-2022 Rodolphe Stoclin + * MIT Licensed + */ + +import { afterAll, beforeAll, describe, expect, test } from 'vitest'; +import minify from '../../core/src'; +import cleanCss from '../src'; +import { filesCSS } from '../../../tests/files-path'; +import { runOneTest, tests } from '../../../tests/fixtures'; + +const compressorLabel = 'clean-css'; +const compressor = cleanCss; + +describe('Package: clean-css', () => { + tests.commoncss.forEach(options => { + runOneTest({ options, compressorLabel, compressor }); + }); + tests.commoncss.forEach(options => { + runOneTest({ options, compressorLabel, compressor, sync: true }); + }); + test('should compress with some options', () => + new Promise(done => { + const options = {}; + options.minify = { + compressor, + input: filesCSS.fileCSS, + output: filesCSS.fileCSSOut, + options: { + sourceMap: { + filename: filesCSS.fileCSSSourceMaps, + url: filesCSS.fileCSSSourceMaps + } + } + }; + + options.minify.callback = (err, min) => { + expect(err).toBeNull(); + expect(min).not.toBeNull(); + + done(); + }; + + minify(options.minify); + })); +}); diff --git a/packages/clean-css/package.json b/packages/clean-css/package.json index fbf4d4dbb..2a92754f8 100644 --- a/packages/clean-css/package.json +++ b/packages/clean-css/package.json @@ -11,16 +11,29 @@ "author": "Rodolphe Stoclin ", "homepage": "https://github.com/srod/node-minify/tree/master/packages/clean-css#readme", "license": "MIT", - "main": "lib/clean-css.js", "engines": { "node": ">=14.0.0" }, "directories": { - "lib": "lib", + "lib": "dist", "test": "__tests__" }, + "exports": { + ".": { + "import": { + "types": "./dist/esm/types/index.d.ts", + "default": "./dist/esm/index.js" + }, + "require": { + "types": "./dist/cjs/types/index.d.ts", + "default": "./dist/cjs/index.js" + } + } + }, + "types": "./dist/cjs/types/index.d.ts", + "main": "./dist/cjs/index.js", "files": [ - "lib" + "dist/**/*" ], "publishConfig": { "access": "public" @@ -32,8 +45,17 @@ "bugs": { "url": "https://github.com/srod/node-minify/issues" }, + "scripts": { + "clean": "pnpm dlx rimraf dist", + "build": "npm run clean && tsc -p tsconfig.json && tsc -p tsconfig-cjs.json", + "prepack": "npm run build" + }, "dependencies": { - "@node-minify/utils": "^7.0.0", + "@node-minify/utils": "workspace:*", "clean-css": "5.3.1" + }, + "devDependencies": { + "@node-minify/types": "workspace:*", + "@types/clean-css": "^4.2.6" } } diff --git a/packages/clean-css/src/clean-css.js b/packages/clean-css/src/clean-css.js deleted file mode 100644 index 80f8aa74f..000000000 --- a/packages/clean-css/src/clean-css.js +++ /dev/null @@ -1,42 +0,0 @@ -/*! - * node-minify - * Copyright(c) 2011-2022 Rodolphe Stoclin - * MIT Licensed - */ - -/** - * Module dependencies. - */ -import CleanCSS from 'clean-css'; -import { utils } from '@node-minify/utils'; - -/** - * Run clean-css. - * - * @param {Object} settings - * @param {String} content - * @param {Function} callback - */ -const minifyCleanCSS = ({ settings, content, callback, index }) => { - if (settings.options.sourceMap) { - settings.options._sourceMap = settings.options.sourceMap; - settings.options.sourceMap = true; - } - const _cleanCSS = new CleanCSS(settings.options).minify(content); - const contentMinified = _cleanCSS.styles; - if (_cleanCSS.sourceMap && settings.options._sourceMap) { - utils.writeFile({ file: settings.options._sourceMap.url, content: _cleanCSS.sourceMap.toString(), index }); - } - if (!settings.content) { - utils.writeFile({ file: settings.output, content: contentMinified, index }); - } - if (callback) { - return callback(null, contentMinified); - } - return contentMinified; -}; - -/** - * Expose `minifyCleanCSS()`. - */ -module.exports = minifyCleanCSS; diff --git a/packages/clean-css/src/index.ts b/packages/clean-css/src/index.ts new file mode 100644 index 000000000..94a2f8134 --- /dev/null +++ b/packages/clean-css/src/index.ts @@ -0,0 +1,68 @@ +/*! + * node-minify + * Copyright(c) 2011-2022 Rodolphe Stoclin + * MIT Licensed + */ + +/** + * Module dependencies. + */ +import CleanCSS from 'clean-css'; +import { utils } from '@node-minify/utils'; +import { MinifierOptions } from '@node-minify/types'; + +// interface Options { +// sourceMap?: boolean; +// _sourceMap?: { url: string } | boolean; +// } + +// interface Settings { +// options: Options; +// content: string; +// output: string; +// } + +// interface MinifierOptions { +// settings: Settings; +// content: string; +// callback: Function; +// index: number; +// } + +/** + * Run clean-css. + * + * @param {Object} settings + * @param {String} content + * @param {Function} callback + */ +const minifyCleanCSS = ({ settings, content, callback, index }: MinifierOptions) => { + if (settings && settings.options && settings.options.sourceMap) { + settings.options._sourceMap = settings.options.sourceMap; + settings.options.sourceMap = true; + } + const _cleanCSS = new CleanCSS(settings && settings.options).minify(content || ''); + const contentMinified = _cleanCSS.styles; + if (_cleanCSS.sourceMap && settings && settings.options && settings.options._sourceMap) { + utils.writeFile({ + file: + settings.options._sourceMap !== true && settings.options._sourceMap.url + ? settings.options._sourceMap.url + : null, + content: _cleanCSS.sourceMap.toString(), + index + }); + } + if (settings && !settings.content) { + utils.writeFile({ file: settings.output, content: contentMinified, index }); + } + if (callback) { + return callback(null, contentMinified); + } + return contentMinified; +}; + +/** + * Expose `minifyCleanCSS()`. + */ +export default minifyCleanCSS; diff --git a/packages/clean-css/tsconfig-cjs.json b/packages/clean-css/tsconfig-cjs.json new file mode 100644 index 000000000..33830cb8a --- /dev/null +++ b/packages/clean-css/tsconfig-cjs.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "commonjs", + "outDir": "dist/cjs", + "target": "es2015" + }, + "include": ["./src"] +} diff --git a/packages/clean-css/tsconfig.json b/packages/clean-css/tsconfig.json new file mode 100644 index 000000000..876c1ae30 --- /dev/null +++ b/packages/clean-css/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "esnext", + "outDir": "dist/esm", + "target": "esnext" + }, + "include": ["./src"] +} diff --git a/packages/cli/__tests__/cli.test.js b/packages/cli/__tests__/cli.test.js deleted file mode 100644 index d796a4092..000000000 --- a/packages/cli/__tests__/cli.test.js +++ /dev/null @@ -1,47 +0,0 @@ -/*! - * node-minify - * Copyright(c) 2011-2022 Rodolphe Stoclin - * MIT Licensed - */ - -jest.setTimeout(30000); - -import childProcess from 'child_process'; -import * as cli from '../src/cli'; -import { filesJS } from '../../../tests/files-path'; - -describe('Package: cli', () => { - test('should minify to have been called with gcc', () => { - const spy = jest.spyOn(cli, 'run'); - return cli - .run({ - compressor: 'google-closure-compiler', - input: filesJS.oneFile, - output: filesJS.fileJSOut, - option: '{"createSourceMap": true}' - }) - .then(() => expect(spy).toHaveBeenCalled()); - }); -}); - -describe('cli error', () => { - beforeAll(() => { - let spy = jest.spyOn(childProcess, 'spawn'); - spy.mockImplementation(() => { - throw new Error(); - }); - }); - test('should minify to throw with yui error', () => { - const spy = jest.spyOn(cli, 'run'); - const options = { - compressor: 'yui', - input: filesJS.oneFile, - output: filesJS.fileJSOut - }; - expect(cli.run(options)).rejects.toThrow(); - return cli.run(options).catch(() => expect(spy).toHaveBeenCalled()); - }); - afterAll(() => { - jest.restoreAllMocks(); - }); -}); diff --git a/packages/cli/__tests__/cli.test.ts b/packages/cli/__tests__/cli.test.ts new file mode 100644 index 000000000..6d68afd2b --- /dev/null +++ b/packages/cli/__tests__/cli.test.ts @@ -0,0 +1,55 @@ +/*! + * node-minify + * Copyright(c) 2011-2022 Rodolphe Stoclin + * MIT Licensed + */ + +import { afterAll, beforeAll, describe, expect, test, vi } from 'vitest'; +import childProcess from 'child_process'; +import * as cli from '../src'; +import { filesJS } from '../../../tests/files-path'; +import { TESTS_TIMEOUT } from '../../../constants'; + +describe( + 'Package: cli', + () => { + test('should minify to have been called with gcc', () => { + const spy = vi.spyOn(cli, 'run'); + return cli + .run({ + compressor: 'google-closure-compiler', + input: filesJS.oneFile, + output: filesJS.fileJSOut, + option: '{"createSourceMap": true}' + }) + .then(() => expect(spy).toHaveBeenCalled()); + }); + }, + TESTS_TIMEOUT +); + +describe( + 'cli error', + () => { + beforeAll(() => { + let spy = vi.spyOn(childProcess, 'spawn'); + spy.mockImplementation(() => { + throw new Error(); + }); + }); + test('should minify to throw with yui error', () => { + const spy = vi.spyOn(cli, 'run'); + const options = { + compressor: 'yui', + input: filesJS.oneFile, + output: filesJS.fileJSOut + }; + expect(cli.run(options)).rejects.toThrow(); + return cli.run(options).catch(() => expect(spy).toHaveBeenCalled()); + }); + afterAll(() => { + vi.restoreAllMocks(); + }); + }, + TESTS_TIMEOUT +); diff --git a/packages/cli/package.json b/packages/cli/package.json index 7c11f6cdc..3af12f657 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -13,17 +13,30 @@ "bin": { "node-minify": "bin/cli.js" }, - "main": "lib/cli.js", "engines": { "node": ">=14.0.0" }, "directories": { - "lib": "lib", + "lib": "dist", "test": "__tests__" }, + "exports": { + ".": { + "import": { + "types": "./dist/esm/types/index.d.ts", + "default": "./dist/esm/index.js" + }, + "require": { + "types": "./dist/cjs/types/index.d.ts", + "default": "./dist/cjs/index.js" + } + } + }, + "types": "./dist/cjs/types/index.d.ts", + "main": "./dist/cjs/index.js", "files": [ "bin", - "lib" + "dist/**/*" ], "publishConfig": { "access": "public" @@ -35,12 +48,22 @@ "bugs": { "url": "https://github.com/srod/node-minify/issues" }, + "scripts": { + "clean": "pnpm dlx rimraf dist", + "build": "npm run clean && tsc -p tsconfig.json && tsc -p tsconfig-cjs.json", + "prepack": "npm run build" + }, "dependencies": { - "@node-minify/core": "^7.0.0", - "@node-minify/utils": "^7.0.0", + "@node-minify/core": "workspace:*", + "@node-minify/utils": "workspace:*", "chalk": "4.1.2", "commander": "9.4.1", "ora": "5.4.1", "update-notifier": "6.0.2" + }, + "devDependencies": { + "@node-minify/types": "workspace:*", + "@types/chalk": "^2.2.0", + "@types/ora": "^3.2.0" } } diff --git a/packages/cli/src/compress.js b/packages/cli/src/compress.ts similarity index 84% rename from packages/cli/src/compress.js rename to packages/cli/src/compress.ts index 8e7340b6c..e9116b321 100644 --- a/packages/cli/src/compress.js +++ b/packages/cli/src/compress.ts @@ -9,14 +9,15 @@ */ import minify from '@node-minify/core'; import { utils } from '@node-minify/utils'; +import { Settings, Result } from '@node-minify/types'; /** * Run compression. * * @param {Object} options */ -const compress = options => { - return new Promise((resolve, reject) => { +const compress = (options: Settings): Promise => { + return new Promise((resolve, reject) => { minify(options) .then(() => { if (options.output.includes('$1')) { @@ -31,7 +32,7 @@ const compress = options => { } utils .getFilesizeGzippedInBytes(options.output) - .then(sizeGzip => { + .then((sizeGzip: number) => { resolve({ compressorLabel: options.compressorLabel, compressor: options.compressor, diff --git a/packages/cli/src/cli.js b/packages/cli/src/index.ts similarity index 58% rename from packages/cli/src/cli.js rename to packages/cli/src/index.ts index dbbe1da13..557b04197 100644 --- a/packages/cli/src/cli.js +++ b/packages/cli/src/index.ts @@ -10,6 +10,33 @@ import chalk from 'chalk'; import { compress } from './compress'; import { spinnerStart, spinnerStop, spinnerError } from './spinner'; +import { Cli, Settings, Result } from '@node-minify/types'; + +// export interface Options { +// compressorLabel: string | Function; +// compressor: Function; +// input: string | string[]; +// output: string; +// options?: string; +// } + +// interface Option {} + +// interface Cli { +// compressor: string | Function; +// input: string; +// output: string; +// // option: Options; +// option: string; +// silence?: boolean; +// } + +// export interface Result { +// compressor?: string | Function; +// compressorLabel: string | Function; +// size: number; +// sizeGzip: number; +// } /** * Module variables. @@ -19,10 +46,12 @@ let silence = false; /** * Run one compressor. */ -const runOne = cli => { - return new Promise((resolve, reject) => { - const compressor = typeof cli.compressor === 'string' ? require(`@node-minify/${cli.compressor}`) : cli.compressor; - const options = { +const runOne = (cli: Cli): Promise => { + return new Promise((resolve, reject) => { + const compressor = + typeof cli.compressor === 'string' ? require(`@node-minify/${cli.compressor}`).default : cli.compressor; + + const options: Settings = { compressorLabel: cli.compressor, compressor, input: cli.input.split(','), @@ -38,13 +67,13 @@ const runOne = cli => { } return compress(options) - .then(result => { + .then((result: Result) => { if (!silence) { spinnerStop(result); } resolve(result); }) - .catch(err => { + .catch((err: Error) => { if (!silence) { spinnerError(options); } @@ -56,7 +85,7 @@ const runOne = cli => { /** * Run cli. */ -const run = cli => { +const run = (cli: Cli) => { silence = !!cli.silence; if (!silence) { diff --git a/packages/cli/src/spinner.js b/packages/cli/src/spinner.ts similarity index 85% rename from packages/cli/src/spinner.js rename to packages/cli/src/spinner.ts index 1d053e877..1e7618e83 100644 --- a/packages/cli/src/spinner.js +++ b/packages/cli/src/spinner.ts @@ -9,6 +9,7 @@ */ import chalk from 'chalk'; import ora from 'ora'; +import { Settings, Result } from '@node-minify/types'; const spinner = ora(); @@ -17,7 +18,7 @@ const spinner = ora(); * * @param {Object} options */ -const start = options => { +const start = (options: Settings) => { spinner.text = 'Compressing file(s) with ' + chalk.green(options.compressorLabel) + '...'; spinner.start(); }; @@ -27,7 +28,7 @@ const start = options => { * * @param {Object} result */ -const stop = result => { +const stop = (result: Result) => { spinner.text = 'File(s) compressed successfully with ' + chalk.green(result.compressorLabel) + @@ -44,7 +45,7 @@ const stop = result => { * * @param {Object} options */ -const error = options => { +const error = (options: Settings) => { spinner.text = 'Error - file(s) not compressed with ' + chalk.red(options.compressorLabel); spinner.fail(); }; diff --git a/packages/cli/tsconfig-cjs.json b/packages/cli/tsconfig-cjs.json new file mode 100644 index 000000000..33830cb8a --- /dev/null +++ b/packages/cli/tsconfig-cjs.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "commonjs", + "outDir": "dist/cjs", + "target": "es2015" + }, + "include": ["./src"] +} diff --git a/packages/cli/tsconfig.json b/packages/cli/tsconfig.json new file mode 100644 index 000000000..876c1ae30 --- /dev/null +++ b/packages/cli/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "esnext", + "outDir": "dist/esm", + "target": "esnext" + }, + "include": ["./src"] +} diff --git a/packages/core/__tests__/core.test.js b/packages/core/__tests__/core.test.js deleted file mode 100644 index e9b4a1b68..000000000 --- a/packages/core/__tests__/core.test.js +++ /dev/null @@ -1,269 +0,0 @@ -/*! - * node-minify - * Copyright(c) 2011-2022 Rodolphe Stoclin - * MIT Licensed - */ - -jest.setTimeout(30000); - -import childProcess from 'child_process'; -import minify from '../../core/src/core'; -import gcc from '../../google-closure-compiler/src/google-closure-compiler'; -import noCompress from '../../no-compress/src/no-compress'; -import yui from '../../yui/src/yui'; -import uglifyes from '../../uglify-es/src/uglify-es'; -import htmlMinifier from '../../html-minifier/src/html-minifier'; -import { filesJS } from '../../../tests/files-path'; -import { runOneTest, tests } from '../../../tests/fixtures'; - -const compressorLabel = 'uglify-es'; -const compressor = uglifyes; - -describe('Package: core', () => { - tests.commonjs.forEach(options => { - runOneTest({ options, compressorLabel, compressor }); - }); - tests.commonjs.forEach(options => { - runOneTest({ options, compressorLabel, compressor, sync: true }); - }); - describe('Fake binary', () => { - test('should throw an error if binary does not exist', () => { - const options = {}; - options.minify = { - compressor: 'fake', - input: filesJS.oneFileWithWildcards, - output: filesJS.fileJSOut - }; - - return minify(options.minify).catch(err => { - return expect(err.toString()).toEqual( - 'Error: compressor should be a function, maybe you forgot to install the compressor' - ); - }); - }); - }); - - describe('No mandatories', () => { - test('should throw an error if no compressor', () => { - const options = {}; - options.minify = { - input: filesJS.oneFileWithWildcards, - output: filesJS.fileJSOut - }; - - return minify(options.minify).catch(err => { - return expect(err.toString()).toEqual('Error: compressor is mandatory.'); - }); - }); - - test('should throw an error if no input', () => { - const options = {}; - options.minify = { - compressor: noCompress, - output: filesJS.fileJSOut - }; - - return minify(options.minify).catch(err => { - return expect(err.toString()).toEqual('Error: input is mandatory.'); - }); - }); - - test('should throw an error if no output', () => { - const options = {}; - options.minify = { - compressor: noCompress, - input: filesJS.oneFileWithWildcards - }; - - return minify(options.minify).catch(err => { - return expect(err.toString()).toEqual('Error: output is mandatory.'); - }); - }); - }); - - describe('Create errors', () => { - test('should catch an error if yui with bad options', () => { - const options = {}; - options.minify = { - compressor: yui, - type: 'js', - input: filesJS.oneFile, - output: filesJS.fileJSOut, - options: { - fake: true - } - }; - return minify(options.minify).catch(err => { - return expect(err.toString()).toMatch('Error'); - }); - }); - test('should catch an error if yui with bad options and sync', () => { - const options = {}; - options.minify = { - compressor: yui, - type: 'js', - input: filesJS.oneFile, - output: filesJS.fileJSOut, - sync: true, - options: { - fake: true - } - }; - return minify(options.minify).catch(err => { - return expect(err.toString()).toMatch('Error'); - }); - }); - }); - - describe('Create sync errors', () => { - beforeAll(() => { - let spy = jest.spyOn(childProcess, 'spawnSync'); - spy.mockImplementation(() => { - throw new Error(); - }); - }); - test('should callback an error on spawnSync', () => { - const options = {}; - options.minify = { - compressor: yui, - input: filesJS.oneFile, - output: filesJS.fileJSOut, - sync: true, - options: { - fake: true - } - }; - - return expect(minify(options.minify)).rejects.toThrow(); - }); - afterAll(() => { - jest.restoreAllMocks(); - }); - }); - - describe('Create async errors', () => { - beforeAll(() => { - let spy = jest.spyOn(childProcess, 'spawn'); - spy.mockImplementation(() => { - throw new Error(); - }); - }); - test('should callback an error on spawn', () => { - const options = {}; - options.minify = { - compressor: yui, - input: filesJS.oneFile, - output: filesJS.fileJSOut, - sync: false, - options: { - fake: true - }, - callback: () => {} - }; - const spy = jest.spyOn(options.minify, 'callback'); - expect(minify(options.minify)).rejects.toThrow(); - return minify(options.minify).catch(() => expect(spy).toHaveBeenCalled()); - }); - afterAll(() => { - jest.restoreAllMocks(); - }); - }); - - describe('Mandatory', () => { - test('should show throw on type option', () => { - const options = {}; - options.minify = { - type: 'uglifyjs', - input: filesJS.oneFileWithWildcards, - output: filesJS.fileJSOut, - callback: () => {} - }; - - return minify(options.minify).catch(err => { - return expect(err.toString()).toEqual('Error: compressor is mandatory.'); - }); - }); - }); - - describe('Should be OK', () => { - test('should be OK with GCC and async', () => { - const options = {}; - options.minify = { - compressor: gcc, - input: filesJS.oneFile, - output: filesJS.fileJSOut, - callback: () => {} - }; - const spy = jest.spyOn(options.minify, 'callback'); - - return minify(options.minify).then(min => { - expect(spy).toHaveBeenCalled(); - return expect(min).toBeDefined(); - }); - }); - - test('should be OK with GCC and sync', () => { - const options = {}; - options.minify = { - compressor: gcc, - input: filesJS.oneFile, - output: filesJS.fileJSOut, - sync: true, - callback: () => {} - }; - const spy = jest.spyOn(options.minify, 'callback'); - - return minify(options.minify).then(min => { - expect(spy).toHaveBeenCalled(); - return expect(min).toBeDefined(); - }); - }); - }); - - describe('In Memory', () => { - test('should be OK with html minifier and async', () => { - const options = {}; - options.minify = { - compressor: htmlMinifier, - content: '
content
', - callback: () => {} - }; - const spy = jest.spyOn(options.minify, 'callback'); - - return minify(options.minify).then(min => { - expect(spy).toHaveBeenCalled(); - return expect(min).toBeDefined(); - }); - }); - - test('should be OK with GCC and sync', () => { - const options = {}; - options.minify = { - compressor: htmlMinifier, - content: '
content
', - sync: true, - callback: () => {} - }; - const spy = jest.spyOn(options.minify, 'callback'); - - return minify(options.minify).then(min => { - expect(spy).toHaveBeenCalled(); - return expect(min).toBeDefined(); - }); - }); - - test('should throw an error if binary does not exist', () => { - const options = {}; - options.minify = { - compressor: 'fake', - content: '
content
' - }; - - return minify(options.minify).catch(err => { - return expect(err.toString()).toEqual( - 'Error: compressor should be a function, maybe you forgot to install the compressor' - ); - }); - }); - }); -}); diff --git a/packages/core/__tests__/core.test.ts b/packages/core/__tests__/core.test.ts new file mode 100644 index 000000000..9b600469e --- /dev/null +++ b/packages/core/__tests__/core.test.ts @@ -0,0 +1,296 @@ +/*! + * node-minify + * Copyright(c) 2011-2022 Rodolphe Stoclin + * MIT Licensed + */ + +import { afterAll, beforeAll, describe, expect, test, vi } from 'vitest'; +import childProcess from 'child_process'; +import minify from '../src'; +import gcc from '../../google-closure-compiler/src'; +import noCompress from '../../no-compress/src'; +import yui from '../../yui/src'; +import uglifyes from '../../uglify-es/src'; +import htmlMinifier from '../../html-minifier/src'; +import { filesJS } from '../../../tests/files-path'; +import { runOneTest, tests } from '../../../tests/fixtures'; +import { TESTS_TIMEOUT } from '../../../constants'; + +const compressorLabel = 'uglify-es'; +const compressor = uglifyes; + +describe('Package: core', () => { + tests.commonjs.forEach(options => { + runOneTest({ options, compressorLabel, compressor }); + }); + tests.commonjs.forEach(options => { + runOneTest({ options, compressorLabel, compressor, sync: true }); + }); + describe('Fake binary', () => { + test('should throw an error if binary does not exist', () => { + const options = {}; + options.minify = { + compressor: 'fake', + input: filesJS.oneFileWithWildcards, + output: filesJS.fileJSOut + }; + + return minify(options.minify).catch(err => { + return expect(err.toString()).toEqual( + 'Error: compressor should be a function, maybe you forgot to install the compressor' + ); + }); + }); + }); + + describe('No mandatories', () => { + test('should throw an error if no compressor', () => { + const options = {}; + options.minify = { + input: filesJS.oneFileWithWildcards, + output: filesJS.fileJSOut + }; + + return minify(options.minify).catch(err => { + return expect(err.toString()).toEqual('Error: compressor is mandatory.'); + }); + }); + + test('should throw an error if no input', () => { + const options = {}; + options.minify = { + compressor: noCompress, + output: filesJS.fileJSOut + }; + + return minify(options.minify).catch(err => { + return expect(err.toString()).toEqual('Error: input is mandatory.'); + }); + }); + + test('should throw an error if no output', () => { + const options = {}; + options.minify = { + compressor: noCompress, + input: filesJS.oneFileWithWildcards + }; + + return minify(options.minify).catch(err => { + return expect(err.toString()).toEqual('Error: output is mandatory.'); + }); + }); + }); + + describe( + 'Create errors', + () => { + test('should catch an error if yui with bad options', () => { + const options = {}; + options.minify = { + compressor: yui, + type: 'js', + input: filesJS.oneFile, + output: filesJS.fileJSOut, + options: { + fake: true + } + }; + return minify(options.minify).catch(err => { + return expect(err.toString()).toMatch('Error'); + }); + }); + test('should catch an error if yui with bad options and sync', () => { + const options = {}; + options.minify = { + compressor: yui, + type: 'js', + input: filesJS.oneFile, + output: filesJS.fileJSOut, + sync: true, + options: { + fake: true + } + }; + return minify(options.minify).catch(err => { + return expect(err.toString()).toMatch('Error'); + }); + }); + }, + TESTS_TIMEOUT + ); + + describe( + 'Create sync errors', + () => { + beforeAll(() => { + let spy = vi.spyOn(childProcess, 'spawnSync'); + spy.mockImplementation(() => { + throw new Error(); + }); + }); + test('should callback an error on spawnSync', () => { + const options = {}; + options.minify = { + compressor: yui, + input: filesJS.oneFile, + output: filesJS.fileJSOut, + sync: true, + options: { + fake: true + } + }; + return expect(minify(options.minify)).rejects.toThrow(); + }); + afterAll(() => { + vi.restoreAllMocks(); + }); + }, + TESTS_TIMEOUT + ); + + describe( + 'Create async errors', + () => { + beforeAll(() => { + let spy = vi.spyOn(childProcess, 'spawn'); + spy.mockImplementation(() => { + throw new Error(); + }); + }); + test('should callback an error on spawn', () => + new Promise(done => { + const options = {}; + options.minify = { + compressor: yui, + input: filesJS.oneFile, + output: filesJS.fileJSOut, + sync: false, + options: { + fake: true + }, + callback: () => {} + }; + const spy = vi.spyOn(options.minify, 'callback'); + expect(minify(options.minify)).rejects.toThrow(); + done(); + return minify(options.minify).catch(() => expect(spy).toHaveBeenCalled()); + })); + afterAll(() => { + vi.restoreAllMocks(); + }); + }, + TESTS_TIMEOUT + ); + + describe('Mandatory', () => { + test('should show throw on type option', () => { + const options = {}; + options.minify = { + type: 'uglifyjs', + input: filesJS.oneFileWithWildcards, + output: filesJS.fileJSOut, + callback: () => {} + }; + + return minify(options.minify).catch(err => { + return expect(err.toString()).toEqual('Error: compressor is mandatory.'); + }); + }); + }); + + describe( + 'Should be OK', + () => { + test('should be OK with GCC and async', () => + new Promise(done => { + const options = {}; + options.minify = { + compressor: gcc, + input: filesJS.oneFile, + output: filesJS.fileJSOut, + callback: () => {} + }; + const spy = vi.spyOn(options.minify, 'callback'); + return minify(options.minify).then(min => { + expect(spy).toHaveBeenCalled(); + done(); + return expect(min).toBeDefined(); + }); + })); + test('should be OK with GCC and sync', () => + new Promise(done => { + const options = {}; + options.minify = { + compressor: gcc, + input: filesJS.oneFile, + output: filesJS.fileJSOut, + sync: true, + callback: () => { + done(); + } + }; + const spy = vi.spyOn(options.minify, 'callback'); + return minify(options.minify).then(min => { + expect(spy).toHaveBeenCalled(); + return expect(min).toBeDefined(); + }); + })); + }, + TESTS_TIMEOUT + ); + + describe( + 'In Memory', + () => { + test('should be OK with html minifier and async', () => + new Promise(done => { + const options = {}; + options.minify = { + compressor: htmlMinifier, + content: '
content
', + callback: () => {} + }; + const spy = vi.spyOn(options.minify, 'callback'); + + return minify(options.minify).then(min => { + expect(spy).toHaveBeenCalled(); + done(); + return expect(min).toBeDefined(); + }); + })); + + test('should be OK with GCC and sync', () => + new Promise(done => { + const options = {}; + options.minify = { + compressor: htmlMinifier, + content: '
content
', + sync: true, + callback: () => {} + }; + const spy = vi.spyOn(options.minify, 'callback'); + + return minify(options.minify).then(min => { + done(); + expect(spy).toHaveBeenCalled(); + return expect(min).toBeDefined(); + }); + })); + + test('should throw an error if binary does not exist', () => { + const options = {}; + options.minify = { + compressor: 'fake', + content: '
content
' + }; + + return minify(options.minify).catch(err => { + return expect(err.toString()).toEqual( + 'Error: compressor should be a function, maybe you forgot to install the compressor' + ); + }); + }); + }, + TESTS_TIMEOUT + ); +}); diff --git a/packages/core/package.json b/packages/core/package.json index 10f83a684..6ba8c5005 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -10,16 +10,29 @@ "author": "Rodolphe Stoclin ", "homepage": "https://github.com/srod/node-minify/tree/master/packages/core#readme", "license": "MIT", - "main": "lib/core.js", "engines": { "node": ">=14.0.0" }, "directories": { - "lib": "lib", + "lib": "dist", "test": "__tests__" }, + "exports": { + ".": { + "import": { + "types": "./dist/esm/types/index.d.ts", + "default": "./dist/esm/index.js" + }, + "require": { + "types": "./dist/cjs/types/index.d.ts", + "default": "./dist/cjs/index.js" + } + } + }, + "types": "./dist/cjs/types/index.d.ts", + "main": "./dist/cjs/index.js", "files": [ - "lib" + "dist/**/*" ], "publishConfig": { "access": "public" @@ -31,9 +44,18 @@ "bugs": { "url": "https://github.com/srod/node-minify/issues" }, + "scripts": { + "clean": "pnpm dlx rimraf dist", + "build": "npm run clean && tsc -p tsconfig.json && tsc -p tsconfig-cjs.json", + "prepack": "npm run build" + }, "dependencies": { - "@node-minify/utils": "^7.0.0", + "@node-minify/utils": "workspace:*", "globby": "11.1.0", "mkdirp": "1.0.4" + }, + "devDependencies": { + "@node-minify/types": "workspace:*", + "@types/mkdirp": "^1.0.2" } } diff --git a/packages/core/src/compress.js b/packages/core/src/compress.ts similarity index 64% rename from packages/core/src/compress.js rename to packages/core/src/compress.ts index 272f60f79..5c7b7a3f1 100644 --- a/packages/core/src/compress.js +++ b/packages/core/src/compress.ts @@ -10,13 +10,14 @@ import fs from 'fs'; import mkdirp from 'mkdirp'; import { utils } from '@node-minify/utils'; +import { Settings } from '@node-minify/types'; /** * Run compressor. * * @param {Object} settings */ -const compress = settings => { +const compress = (settings: Settings) => { if (typeof settings.compressor !== 'function') { throw new Error(`compressor should be a function, maybe you forgot to install the compressor`); } @@ -35,11 +36,14 @@ const compress = settings => { * * @param {Object} settings */ -const compressArrayOfFilesSync = settings => { - return settings.input.forEach((input, index) => { - const content = utils.getContentFromFiles(input); - return utils.runSync({ settings, content, index }); - }); +const compressArrayOfFilesSync = (settings: Settings) => { + return ( + Array.isArray(settings.input) && + settings.input.forEach((input, index) => { + const content = utils.getContentFromFiles(input); + return utils.runSync({ settings, content, index }); + }) + ); }; /** @@ -47,12 +51,13 @@ const compressArrayOfFilesSync = settings => { * * @param {Object} settings */ -const compressArrayOfFilesAsync = settings => { +const compressArrayOfFilesAsync = (settings: Settings) => { let sequence = Promise.resolve(); - settings.input.forEach((input, index) => { - const content = utils.getContentFromFiles(input); - sequence = sequence.then(() => utils.runAsync({ settings, content, index })); - }); + Array.isArray(settings.input) && + settings.input.forEach((input, index) => { + const content = utils.getContentFromFiles(input); + sequence = sequence.then(() => utils.runAsync({ settings, content, index })); + }); return sequence; }; @@ -61,7 +66,7 @@ const compressArrayOfFilesAsync = settings => { * * @param {String} file - Full path of the file */ -const createDirectory = file => { +const createDirectory = (file: string) => { if (Array.isArray(file)) { file = file[0]; } diff --git a/packages/core/src/compressInMemory.js b/packages/core/src/compressInMemory.ts similarity index 83% rename from packages/core/src/compressInMemory.js rename to packages/core/src/compressInMemory.ts index 812083750..aff211f42 100644 --- a/packages/core/src/compressInMemory.js +++ b/packages/core/src/compressInMemory.ts @@ -8,13 +8,14 @@ * Module dependencies. */ import { utils } from '@node-minify/utils'; +import { Settings } from '@node-minify/types'; /** * Run compressor. * * @param {Object} settings */ -const compressInMemory = settings => { +const compressInMemory = (settings: Settings) => { if (typeof settings.compressor !== 'function') { throw new Error(`compressor should be a function, maybe you forgot to install the compressor`); } diff --git a/packages/core/src/core.js b/packages/core/src/index.ts similarity index 68% rename from packages/core/src/core.js rename to packages/core/src/index.ts index aa5136f98..7b005d905 100644 --- a/packages/core/src/core.js +++ b/packages/core/src/index.ts @@ -10,25 +10,37 @@ import { setup } from './setup'; import { compress } from './compress'; import { compressInMemory } from './compressInMemory'; +import { Settings } from '@node-minify/types'; + +// export interface Settings { +// compressorLabel: string | Function; +// compressor?: string | Function; +// sync?: boolean; +// callback?: Function; +// content?: string; +// input: string | string[]; +// output: string; +// options?: string; +// } /** * Run node-minify. * * @param {Object} settings - Settings from user input */ -const minify = settings => { +const minify = (settings: Settings) => { return new Promise((resolve, reject) => { const method = settings.content ? compressInMemory : compress; settings = setup(settings); if (!settings.sync) { method(settings) - .then(minified => { + .then((minified: string) => { if (settings.callback) { settings.callback(null, minified); } resolve(minified); }) - .catch(err => { + .catch((err: Error) => { if (settings.callback) { settings.callback(err); } @@ -47,4 +59,4 @@ const minify = settings => { /** * Expose `minify()`. */ -module.exports = minify; +export default minify; diff --git a/packages/core/src/setup.js b/packages/core/src/setup.ts similarity index 84% rename from packages/core/src/setup.js rename to packages/core/src/setup.ts index 52f9e6a3b..2693e8a6f 100644 --- a/packages/core/src/setup.js +++ b/packages/core/src/setup.ts @@ -27,7 +27,7 @@ const defaultSettings = { * @param {Object} inputSettings * @return {Object} */ -const setup = inputSettings => { +const setup = (inputSettings: {}) => { let settings = Object.assign(utils.clone(defaultSettings), inputSettings); // In memory @@ -58,7 +58,7 @@ const setup = inputSettings => { * @param {Boolean} replaceInPlace - True to replace file in same folder * @return {Object} */ -const checkOutput = (input, output, publicFolder, replaceInPlace) => { +const checkOutput = (input: string | string[], output: string, publicFolder: string, replaceInPlace: boolean) => { let reg = new RegExp('\\$1'); if (reg.test(output)) { if (Array.isArray(input)) { @@ -79,7 +79,7 @@ const checkOutput = (input, output, publicFolder, replaceInPlace) => { * @param {String} publicFolder - Path to the public folder * @return {Object} */ -const wildcards = (input, publicFolder) => { +const wildcards = (input: string | string[], publicFolder: string) => { // If it's a string if (!Array.isArray(input)) { return wildcardsString(input, publicFolder); @@ -95,8 +95,8 @@ const wildcards = (input, publicFolder) => { * @param {String} publicFolder - Path to the public folder * @return {Object} */ -const wildcardsString = (input, publicFolder) => { - const output = {}; +const wildcardsString = (input: string, publicFolder: string) => { + const output: { input?: string[] } = {}; if (input.indexOf('*') > -1) { output.input = getFilesFromWildcards(input, publicFolder); @@ -112,8 +112,8 @@ const wildcardsString = (input, publicFolder) => { * @param {String} publicFolder - Path to the public folder * @return {Object} */ -const wildcardsArray = (input, publicFolder) => { - let output = {}; +const wildcardsArray = (input: string[], publicFolder: string) => { + let output: { input?: string[] } = {}; let isWildcardsPresent = false; output.input = input; @@ -149,8 +149,8 @@ const wildcardsArray = (input, publicFolder) => { * @param {String} publicFolder - Path to the public folder * @return {Object} */ -const getFilesFromWildcards = (input, publicFolder) => { - let output = []; +const getFilesFromWildcards = (input: string, publicFolder: string) => { + let output: string[] = []; if (input.indexOf('*') > -1) { output = globby.sync((publicFolder || '') + input); @@ -166,8 +166,8 @@ const getFilesFromWildcards = (input, publicFolder) => { * @param {String} publicFolder - Path to the public folder * @return {Object} */ -const setPublicFolder = (input, publicFolder) => { - let output = {}; +const setPublicFolder = (input: string | string[], publicFolder: string) => { + let output: { input?: string | string[] } = {}; if (typeof publicFolder !== 'string') { return output; @@ -204,7 +204,7 @@ const setPublicFolder = (input, publicFolder) => { * * @param {Object} settings */ -const checkMandatories = settings => { +const checkMandatories = (settings: {}) => { ['compressor', 'input', 'output'].forEach(item => mandatory(item, settings)); }; @@ -213,7 +213,7 @@ const checkMandatories = settings => { * * @param {Object} settings */ -const checkMandatoriesMemoryContent = settings => { +const checkMandatoriesMemoryContent = (settings: {}) => { ['compressor', 'content'].forEach(item => mandatory(item, settings)); }; @@ -223,7 +223,10 @@ const checkMandatoriesMemoryContent = settings => { * @param {String} setting * @param {Object} settings */ -const mandatory = (setting, settings) => { +interface Dictionary { + [Key: string]: T; +} +const mandatory = (setting: string, settings: Dictionary) => { if (!settings[setting]) { throw new Error(setting + ' is mandatory.'); } diff --git a/packages/core/tsconfig-cjs.json b/packages/core/tsconfig-cjs.json new file mode 100644 index 000000000..33830cb8a --- /dev/null +++ b/packages/core/tsconfig-cjs.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "commonjs", + "outDir": "dist/cjs", + "target": "es2015" + }, + "include": ["./src"] +} diff --git a/packages/core/tsconfig.json b/packages/core/tsconfig.json new file mode 100644 index 000000000..876c1ae30 --- /dev/null +++ b/packages/core/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "esnext", + "outDir": "dist/esm", + "target": "esnext" + }, + "include": ["./src"] +} diff --git a/packages/crass/__tests__/crass.test.js b/packages/crass/__tests__/crass.test.ts similarity index 88% rename from packages/crass/__tests__/crass.test.js rename to packages/crass/__tests__/crass.test.ts index 07d9947cc..29517c9e4 100644 --- a/packages/crass/__tests__/crass.test.js +++ b/packages/crass/__tests__/crass.test.ts @@ -4,7 +4,8 @@ * MIT Licensed */ -import crass from '../../crass/src/crass'; +import { describe } from 'vitest'; +import crass from '../src'; import { runOneTest, tests } from '../../../tests/fixtures'; const compressorLabel = 'crass'; diff --git a/packages/crass/package.json b/packages/crass/package.json index 18863ca6c..f4b39fdef 100644 --- a/packages/crass/package.json +++ b/packages/crass/package.json @@ -11,16 +11,29 @@ "author": "Rodolphe Stoclin ", "homepage": "https://github.com/srod/node-minify/tree/master/packages/crass#readme", "license": "MIT", - "main": "lib/crass.js", "engines": { "node": ">=14.0.0" }, "directories": { - "lib": "lib", + "lib": "dist", "test": "__tests__" }, + "exports": { + ".": { + "import": { + "types": "./dist/esm/types/index.d.ts", + "default": "./dist/esm/index.js" + }, + "require": { + "types": "./dist/cjs/types/index.d.ts", + "default": "./dist/cjs/index.js" + } + } + }, + "types": "./dist/cjs/types/index.d.ts", + "main": "./dist/cjs/index.js", "files": [ - "lib" + "dist/**/*" ], "publishConfig": { "access": "public" @@ -32,8 +45,16 @@ "bugs": { "url": "https://github.com/srod/node-minify/issues" }, + "scripts": { + "clean": "pnpm dlx rimraf dist", + "build": "npm run clean && tsc -p tsconfig.json && tsc -p tsconfig-cjs.json", + "prepack": "npm run build" + }, "dependencies": { - "@node-minify/utils": "^7.0.0", + "@node-minify/utils": "workspace:*", "crass": "0.12.3" + }, + "devDependencies": { + "@node-minify/types": "workspace:*" } } diff --git a/packages/crass/src/crass.js b/packages/crass/src/index.ts similarity index 52% rename from packages/crass/src/crass.js rename to packages/crass/src/index.ts index a54a51808..8fddab217 100644 --- a/packages/crass/src/crass.js +++ b/packages/crass/src/index.ts @@ -9,6 +9,25 @@ */ import crass from 'crass'; import { utils } from '@node-minify/utils'; +import { MinifierOptions } from '@node-minify/types'; + +// interface Options { +// sourceMap?: boolean; +// _sourceMap?: { url: string } | boolean; +// } + +// interface Settings { +// options: Options; +// content: string; +// output: string; +// } + +// interface MinifierOptions { +// settings: Settings; +// content: string; +// callback: Function; +// index: number; +// } /** * Run crass. @@ -17,9 +36,9 @@ import { utils } from '@node-minify/utils'; * @param {String} content * @param {Function} callback */ -const minifyCrass = ({ settings, content, callback, index }) => { +const minifyCrass = ({ settings, content, callback, index }: MinifierOptions) => { const contentMinified = crass.parse(content).optimize().toString(); - if (!settings.content) { + if (settings && !settings.content) { utils.writeFile({ file: settings.output, content: contentMinified, index }); } if (callback) { @@ -31,4 +50,4 @@ const minifyCrass = ({ settings, content, callback, index }) => { /** * Expose `minifyCrass()`. */ -module.exports = minifyCrass; +export default minifyCrass; diff --git a/packages/crass/tsconfig-cjs.json b/packages/crass/tsconfig-cjs.json new file mode 100644 index 000000000..33830cb8a --- /dev/null +++ b/packages/crass/tsconfig-cjs.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "commonjs", + "outDir": "dist/cjs", + "target": "es2015" + }, + "include": ["./src"] +} diff --git a/packages/crass/tsconfig.json b/packages/crass/tsconfig.json new file mode 100644 index 000000000..876c1ae30 --- /dev/null +++ b/packages/crass/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "esnext", + "outDir": "dist/esm", + "target": "esnext" + }, + "include": ["./src"] +} diff --git a/packages/cssnano/__tests__/cssnano.test.js b/packages/cssnano/__tests__/cssnano.test.ts similarity index 89% rename from packages/cssnano/__tests__/cssnano.test.js rename to packages/cssnano/__tests__/cssnano.test.ts index bc4476581..0f607fa12 100644 --- a/packages/cssnano/__tests__/cssnano.test.js +++ b/packages/cssnano/__tests__/cssnano.test.ts @@ -4,8 +4,9 @@ * MIT Licensed */ -import minify from '../../core/src/core'; -import cssnano from '../src/cssnano'; +import { afterAll, beforeAll, describe, expect, test } from 'vitest'; +import minify from '../../core/src'; +import cssnano from '../src'; import { filesCSS } from '../../../tests/files-path'; import { runOneTest, tests } from '../../../tests/fixtures'; diff --git a/packages/cssnano/package.json b/packages/cssnano/package.json index df01f9525..f57979e01 100644 --- a/packages/cssnano/package.json +++ b/packages/cssnano/package.json @@ -11,16 +11,29 @@ "author": "Rodolphe Stoclin ", "homepage": "https://github.com/srod/node-minify/tree/master/packages/cssnano#readme", "license": "MIT", - "main": "lib/cssnano.js", "engines": { "node": ">=14.0.0" }, "directories": { - "lib": "lib", + "lib": "dist", "test": "__tests__" }, + "exports": { + ".": { + "import": { + "types": "./dist/esm/types/index.d.ts", + "default": "./dist/esm/index.js" + }, + "require": { + "types": "./dist/cjs/types/index.d.ts", + "default": "./dist/cjs/index.js" + } + } + }, + "types": "./dist/cjs/types/index.d.ts", + "main": "./dist/cjs/index.js", "files": [ - "lib" + "dist/**/*" ], "publishConfig": { "access": "public" @@ -32,9 +45,17 @@ "bugs": { "url": "https://github.com/srod/node-minify/issues" }, + "scripts": { + "clean": "pnpm dlx rimraf dist", + "build": "npm run clean && tsc -p tsconfig.json && tsc -p tsconfig-cjs.json", + "prepack": "npm run build" + }, "dependencies": { - "@node-minify/utils": "^7.0.0", + "@node-minify/utils": "workspace:*", "cssnano": "^5.0.0", "postcss": "8.4.19" + }, + "devDependencies": { + "@node-minify/types": "workspace:*" } } diff --git a/packages/cssnano/src/cssnano.js b/packages/cssnano/src/index.ts similarity index 53% rename from packages/cssnano/src/cssnano.js rename to packages/cssnano/src/index.ts index d92f98b60..09d6f847c 100644 --- a/packages/cssnano/src/cssnano.js +++ b/packages/cssnano/src/index.ts @@ -10,6 +10,25 @@ import postcss from 'postcss'; import cssnano from 'cssnano'; import { utils } from '@node-minify/utils'; +import { MinifierOptions } from '@node-minify/types'; + +// interface Options { +// sourceMap?: boolean; +// _sourceMap?: { url: string } | boolean; +// } + +// interface Settings { +// options: Options; +// content: string; +// output: string; +// } + +// interface MinifierOptions { +// settings: Settings; +// content: string; +// callback: Function; +// index: number; +// } /** * Run cssnano. @@ -18,16 +37,16 @@ import { utils } from '@node-minify/utils'; * @param {String} content * @param {Function} callback */ -const minifyCssnano = async ({ settings, content, callback, index }) => { - let contentMinified; +const minifyCssnano = async ({ settings, content, callback, index }: MinifierOptions) => { + let contentMinified = { css: '' }; try { - contentMinified = await postcss([cssnano]).process(content, { from: undefined }); + contentMinified = await postcss([cssnano]).process(content || '', { from: undefined }); } catch (e) { if (callback) { return callback(e); } } - if (!settings.content) { + if (settings && !settings.content) { utils.writeFile({ file: settings.output, content: contentMinified.css, index }); } if (callback) { @@ -39,4 +58,4 @@ const minifyCssnano = async ({ settings, content, callback, index }) => { /** * Expose `minifyCssnano()`. */ -module.exports = minifyCssnano; +export default minifyCssnano; diff --git a/packages/cssnano/tsconfig-cjs.json b/packages/cssnano/tsconfig-cjs.json new file mode 100644 index 000000000..33830cb8a --- /dev/null +++ b/packages/cssnano/tsconfig-cjs.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "commonjs", + "outDir": "dist/cjs", + "target": "es2015" + }, + "include": ["./src"] +} diff --git a/packages/cssnano/tsconfig.json b/packages/cssnano/tsconfig.json new file mode 100644 index 000000000..876c1ae30 --- /dev/null +++ b/packages/cssnano/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "esnext", + "outDir": "dist/esm", + "target": "esnext" + }, + "include": ["./src"] +} diff --git a/packages/csso/__tests__/csso.test.js b/packages/csso/__tests__/csso.test.ts similarity index 88% rename from packages/csso/__tests__/csso.test.js rename to packages/csso/__tests__/csso.test.ts index 024ba89c6..c6f6edf03 100644 --- a/packages/csso/__tests__/csso.test.js +++ b/packages/csso/__tests__/csso.test.ts @@ -4,7 +4,8 @@ * MIT Licensed */ -import csso from '../../csso/src/csso'; +import { describe } from 'vitest'; +import csso from '../src'; import { runOneTest, tests } from '../../../tests/fixtures'; const compressorLabel = 'csso'; diff --git a/packages/csso/package.json b/packages/csso/package.json index f15389203..3aafc54b4 100644 --- a/packages/csso/package.json +++ b/packages/csso/package.json @@ -11,16 +11,29 @@ "author": "Rodolphe Stoclin ", "homepage": "https://github.com/srod/node-minify/tree/master/packages/csso#readme", "license": "MIT", - "main": "lib/csso.js", "engines": { "node": ">=14.0.0" }, "directories": { - "lib": "lib", + "lib": "dist", "test": "__tests__" }, + "exports": { + ".": { + "import": { + "types": "./dist/esm/types/index.d.ts", + "default": "./dist/esm/index.js" + }, + "require": { + "types": "./dist/cjs/types/index.d.ts", + "default": "./dist/cjs/index.js" + } + } + }, + "types": "./dist/cjs/types/index.d.ts", + "main": "./dist/cjs/index.js", "files": [ - "lib" + "dist/**/*" ], "publishConfig": { "access": "public" @@ -32,8 +45,17 @@ "bugs": { "url": "https://github.com/srod/node-minify/issues" }, + "scripts": { + "clean": "pnpm dlx rimraf dist", + "build": "npm run clean && tsc -p tsconfig.json && tsc -p tsconfig-cjs.json", + "prepack": "npm run build" + }, "dependencies": { - "@node-minify/utils": "^7.0.0", + "@node-minify/utils": "workspace:*", "csso": "5.0.5" + }, + "devDependencies": { + "@node-minify/types": "workspace:*", + "@types/csso": "^5.0.0" } } diff --git a/packages/csso/src/csso.js b/packages/csso/src/csso.js deleted file mode 100644 index 759954882..000000000 --- a/packages/csso/src/csso.js +++ /dev/null @@ -1,34 +0,0 @@ -/*! - * node-minify - * Copyright(c) 2011-2022 Rodolphe Stoclin - * MIT Licensed - */ - -/** - * Module dependencies. - */ -import csso from 'csso'; -import { utils } from '@node-minify/utils'; - -/** - * Run csso. - * - * @param {Object} settings - * @param {String} content - * @param {Function} callback - */ -const minifyCSSO = ({ settings, content, callback, index }) => { - const contentMinified = csso.minify(content, settings.options.restructureOff); - if (!settings.content) { - utils.writeFile({ file: settings.output, content: contentMinified.css, index }); - } - if (callback) { - return callback(null, contentMinified.css); - } - return contentMinified.css; -}; - -/** - * Expose `minifyCSSO()`. - */ -module.exports = minifyCSSO; diff --git a/packages/csso/src/index.ts b/packages/csso/src/index.ts new file mode 100644 index 000000000..6b02db18b --- /dev/null +++ b/packages/csso/src/index.ts @@ -0,0 +1,53 @@ +/*! + * node-minify + * Copyright(c) 2011-2022 Rodolphe Stoclin + * MIT Licensed + */ + +/** + * Module dependencies. + */ +import { minify } from 'csso'; +import { utils } from '@node-minify/utils'; +import { MinifierOptions } from '@node-minify/types'; + +// interface Options { +// sourceMap?: boolean; +// _sourceMap?: { url: string } | boolean; +// } + +// interface Settings { +// options: Options; +// content: string; +// output: string; +// } + +// interface MinifierOptions { +// settings: Settings; +// content: string; +// callback: Function; +// index: number; +// } + +/** + * Run csso. + * + * @param {Object} settings + * @param {String} content + * @param {Function} callback + */ +const minifyCSSO = ({ settings, content, callback, index }: MinifierOptions) => { + const contentMinified = minify(content || '', settings && settings.options); + if (settings && !settings.content) { + utils.writeFile({ file: settings.output, content: contentMinified.css, index }); + } + if (callback) { + return callback(null, contentMinified.css); + } + return contentMinified.css; +}; + +/** + * Expose `minifyCSSO()`. + */ +export default minifyCSSO; diff --git a/packages/csso/tsconfig-cjs.json b/packages/csso/tsconfig-cjs.json new file mode 100644 index 000000000..33830cb8a --- /dev/null +++ b/packages/csso/tsconfig-cjs.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "commonjs", + "outDir": "dist/cjs", + "target": "es2015" + }, + "include": ["./src"] +} diff --git a/packages/csso/tsconfig.json b/packages/csso/tsconfig.json new file mode 100644 index 000000000..876c1ae30 --- /dev/null +++ b/packages/csso/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "esnext", + "outDir": "dist/esm", + "target": "esnext" + }, + "include": ["./src"] +} diff --git a/packages/google-closure-compiler/__tests__/google-closure-compiler.test.js b/packages/google-closure-compiler/__tests__/google-closure-compiler.test.js deleted file mode 100644 index de1226926..000000000 --- a/packages/google-closure-compiler/__tests__/google-closure-compiler.test.js +++ /dev/null @@ -1,56 +0,0 @@ -/*! - * node-minify - * Copyright(c) 2011-2022 Rodolphe Stoclin - * MIT Licensed - */ - -jest.setTimeout(30000); - -import minify from '../../core/src/core'; -import gcc from '../../google-closure-compiler/src/google-closure-compiler'; -import { filesJS } from '../../../tests/files-path'; -import { runOneTest, tests } from '../../../tests/fixtures'; - -const compressorLabel = 'google-closure-compiler'; -const compressor = gcc; - -describe('Package: google-closure-compiler', () => { - tests.commonjs.forEach(options => { - runOneTest({ options, compressorLabel, compressor }); - }); - tests.commonjs.forEach(options => { - runOneTest({ options, compressorLabel, compressor, sync: true }); - }); - test('should compress with some options', done => { - const options = {}; - options.minify = { - compressor: gcc, - input: filesJS.oneFileWithWildcards, - output: filesJS.fileJSOut, - options: { - language_in: 'ECMASCRIPT5' - } - }; - - options.minify.callback = (err, min) => { - expect(err).toBeNull(); - expect(min).not.toBeNull(); - - done(); - }; - - minify(options.minify); - }); - test('should throw an error', () => { - const options = {}; - options.minify = { - compressor: gcc, - input: filesJS.errors, - output: filesJS.fileJSOut - }; - - return minify(options.minify).catch(err => { - return expect(err).not.toBeNull(); - }); - }); -}); diff --git a/packages/google-closure-compiler/__tests__/google-closure-compiler.test.ts b/packages/google-closure-compiler/__tests__/google-closure-compiler.test.ts new file mode 100644 index 000000000..816243f49 --- /dev/null +++ b/packages/google-closure-compiler/__tests__/google-closure-compiler.test.ts @@ -0,0 +1,61 @@ +/*! + * node-minify + * Copyright(c) 2011-2022 Rodolphe Stoclin + * MIT Licensed + */ + +import { afterAll, beforeAll, describe, expect, test } from 'vitest'; +import minify from '../../core/src'; +import gcc from '../src'; +import { filesJS } from '../../../tests/files-path'; +import { runOneTest, tests } from '../../../tests/fixtures'; +import { TESTS_TIMEOUT } from '../../../constants'; + +const compressorLabel = 'google-closure-compiler'; +const compressor = gcc; + +describe( + 'Package: google-closure-compiler', + () => { + tests.commonjs.forEach(options => { + runOneTest({ options, compressorLabel, compressor }); + }); + tests.commonjs.forEach(options => { + runOneTest({ options, compressorLabel, compressor, sync: true }); + }); + test('should compress with some options', () => + new Promise(done => { + const options = {}; + options.minify = { + compressor: gcc, + input: filesJS.oneFileWithWildcards, + output: filesJS.fileJSOut, + options: { + language_in: 'ECMASCRIPT5' + } + }; + + options.minify.callback = (err, min) => { + expect(err).toBeNull(); + expect(min).not.toBeNull(); + + done(); + }; + + minify(options.minify); + })); + test('should throw an error', () => { + const options = {}; + options.minify = { + compressor: gcc, + input: filesJS.errors, + output: filesJS.fileJSOut + }; + + return minify(options.minify).catch(err => { + return expect(err).not.toBeNull(); + }); + }); + }, + TESTS_TIMEOUT +); diff --git a/packages/google-closure-compiler/package.json b/packages/google-closure-compiler/package.json index 4712b7715..366f3ad3b 100644 --- a/packages/google-closure-compiler/package.json +++ b/packages/google-closure-compiler/package.json @@ -12,16 +12,29 @@ "author": "Rodolphe Stoclin ", "homepage": "https://github.com/srod/node-minify/tree/master/packages/google-closure-compiler#readme", "license": "MIT", - "main": "lib/google-closure-compiler.js", "engines": { "node": ">=14.0.0" }, "directories": { - "lib": "lib", + "lib": "dist", "test": "__tests__" }, + "exports": { + ".": { + "import": { + "types": "./dist/esm/types/index.d.ts", + "default": "./dist/esm/index.js" + }, + "require": { + "types": "./dist/cjs/types/index.d.ts", + "default": "./dist/cjs/index.js" + } + } + }, + "types": "./dist/cjs/types/index.d.ts", + "main": "./dist/cjs/index.js", "files": [ - "lib" + "dist/**/*" ], "publishConfig": { "access": "public" @@ -33,9 +46,17 @@ "bugs": { "url": "https://github.com/srod/node-minify/issues" }, + "scripts": { + "clean": "pnpm dlx rimraf dist", + "build": "npm run clean && tsc -p tsconfig.json && tsc -p tsconfig-cjs.json", + "prepack": "npm run build" + }, "dependencies": { - "@node-minify/run": "^7.0.0", - "@node-minify/utils": "^7.0.0", + "@node-minify/run": "workspace:*", + "@node-minify/utils": "workspace:*", "google-closure-compiler-java": "20221102.0.1" + }, + "devDependencies": { + "@node-minify/types": "workspace:*" } } diff --git a/packages/google-closure-compiler/src/google-closure-compiler.js b/packages/google-closure-compiler/src/index.ts similarity index 69% rename from packages/google-closure-compiler/src/google-closure-compiler.js rename to packages/google-closure-compiler/src/index.ts index 3bb88bd7d..2df20e634 100644 --- a/packages/google-closure-compiler/src/google-closure-compiler.js +++ b/packages/google-closure-compiler/src/index.ts @@ -10,6 +10,26 @@ import compilerPath from 'google-closure-compiler-java'; import { utils } from '@node-minify/utils'; import { runCommandLine } from '@node-minify/run'; +import { MinifierOptions, Options, Dictionary } from '@node-minify/types'; + +// interface Options2 { +// [Key: string]: string; +// } + +// interface Settings { +// options: Options; +// content: string; +// output: string; +// sync: boolean; +// buffer: number; +// } + +// interface MinifierOptions { +// settings: Settings; +// content: string; +// callback: Function; +// index: number; +// } // the allowed flags, taken from https://github.com/google/closure-compiler/wiki/Flags-and-Options const allowedFlags = [ @@ -41,13 +61,13 @@ const allowedFlags = [ * @param {String} content * @param {Function} callback */ -const minifyGCC = ({ settings, content, callback, index }) => { - const options = applyOptions({}, settings.options); +const minifyGCC = ({ settings, content, callback, index }: MinifierOptions) => { + const options = applyOptions({}, (settings && settings.options) || {}); return runCommandLine({ args: gccCommand(options), data: content, settings, - callback: (err, content) => { + callback: (err: Error, content: string) => { if (err) { if (callback) { return callback(err); @@ -55,7 +75,7 @@ const minifyGCC = ({ settings, content, callback, index }) => { throw err; } } - if (!settings.content) { + if (settings && !settings.content) { utils.writeFile({ file: settings.output, content, index }); } if (callback) { @@ -66,13 +86,17 @@ const minifyGCC = ({ settings, content, callback, index }) => { }); }; +// interface Dictionary { +// [Key: string]: T; +// } + /** * Adds any valid options passed in the options parameters to the flags parameter and returns the flags object. * @param {Object} flags * @param {Object} options * @returns {Object} flags */ -const applyOptions = (flags, options) => { +const applyOptions = (flags: Dictionary, options: Options) => { if (!options || Object.keys(options).length === 0) { return flags; } @@ -86,11 +110,11 @@ const applyOptions = (flags, options) => { * GCC command line. */ -const gccCommand = options => { +const gccCommand = (options: {}) => { return ['-jar', compilerPath].concat(utils.buildArgs(options || {})); }; /** * Expose `minifyGCC()`. */ -module.exports = minifyGCC; +export default minifyGCC; diff --git a/packages/google-closure-compiler/tsconfig-cjs.json b/packages/google-closure-compiler/tsconfig-cjs.json new file mode 100644 index 000000000..33830cb8a --- /dev/null +++ b/packages/google-closure-compiler/tsconfig-cjs.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "commonjs", + "outDir": "dist/cjs", + "target": "es2015" + }, + "include": ["./src"] +} diff --git a/packages/google-closure-compiler/tsconfig.json b/packages/google-closure-compiler/tsconfig.json new file mode 100644 index 000000000..876c1ae30 --- /dev/null +++ b/packages/google-closure-compiler/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "esnext", + "outDir": "dist/esm", + "target": "esnext" + }, + "include": ["./src"] +} diff --git a/packages/html-minifier/__tests__/html-minifier.test.js b/packages/html-minifier/__tests__/html-minifier.test.ts similarity index 87% rename from packages/html-minifier/__tests__/html-minifier.test.js rename to packages/html-minifier/__tests__/html-minifier.test.ts index 40571492f..6e065e727 100644 --- a/packages/html-minifier/__tests__/html-minifier.test.js +++ b/packages/html-minifier/__tests__/html-minifier.test.ts @@ -4,7 +4,8 @@ * MIT Licensed */ -import htmlMinifier from '../../html-minifier/src/html-minifier'; +import { describe } from 'vitest'; +import htmlMinifier from '../src'; import { runOneTest, tests } from '../../../tests/fixtures'; const compressorLabel = 'html-minifier'; diff --git a/packages/html-minifier/package.json b/packages/html-minifier/package.json index 60cc26694..f1bf30db4 100644 --- a/packages/html-minifier/package.json +++ b/packages/html-minifier/package.json @@ -11,16 +11,29 @@ "author": "Rodolphe Stoclin ", "homepage": "https://github.com/srod/node-minify/tree/master/packages/html-minifier#readme", "license": "MIT", - "main": "lib/html-minifier.js", "engines": { "node": ">=14.0.0" }, "directories": { - "lib": "lib", + "lib": "dist", "test": "__tests__" }, + "exports": { + ".": { + "import": { + "types": "./dist/esm/types/index.d.ts", + "default": "./dist/esm/index.js" + }, + "require": { + "types": "./dist/cjs/types/index.d.ts", + "default": "./dist/cjs/index.js" + } + } + }, + "types": "./dist/cjs/types/index.d.ts", + "main": "./dist/cjs/index.js", "files": [ - "lib" + "dist/**/*" ], "publishConfig": { "access": "public" @@ -32,8 +45,17 @@ "bugs": { "url": "https://github.com/srod/node-minify/issues" }, + "scripts": { + "clean": "pnpm dlx rimraf dist", + "build": "npm run clean && tsc -p tsconfig.json && tsc -p tsconfig-cjs.json", + "prepack": "npm run build" + }, "dependencies": { - "@node-minify/utils": "^7.0.0", + "@node-minify/utils": "workspace:*", "html-minifier": "4.0.0" + }, + "devDependencies": { + "@node-minify/types": "workspace:*", + "@types/html-minifier": "^4.0.2" } } diff --git a/packages/html-minifier/src/html-minifier.js b/packages/html-minifier/src/index.ts similarity index 64% rename from packages/html-minifier/src/html-minifier.js rename to packages/html-minifier/src/index.ts index 8cfa1f9c4..81411200a 100644 --- a/packages/html-minifier/src/html-minifier.js +++ b/packages/html-minifier/src/index.ts @@ -9,6 +9,25 @@ */ import minifier from 'html-minifier'; import { utils } from '@node-minify/utils'; +import { MinifierOptions } from '@node-minify/types'; + +// interface Options { +// sourceMap?: boolean; +// _sourceMap?: { url: string } | boolean; +// } + +// interface Settings { +// options: Options; +// content: string; +// output: string; +// } + +// interface MinifierOptions { +// settings: Settings; +// content: string; +// callback: Function; +// index: number; +// } /** * Module variables. @@ -39,10 +58,10 @@ const defaultOptions = { * @param {String} content * @param {Function} callback */ -const minifyHTMLMinifier = ({ settings, content, callback, index }) => { - const options = Object.assign({}, defaultOptions, settings.options); - const contentMinified = HTMLMinifier(content, options); - if (!settings.content) { +const minifyHTMLMinifier = ({ settings, content, callback, index }: MinifierOptions) => { + const options = Object.assign({}, defaultOptions, settings && settings.options); + const contentMinified = HTMLMinifier(content || '', options); + if (settings && !settings.content) { utils.writeFile({ file: settings.output, content: contentMinified, index }); } if (callback) { @@ -54,4 +73,4 @@ const minifyHTMLMinifier = ({ settings, content, callback, index }) => { /** * Expose `minifyHTMLMinifier()`. */ -module.exports = minifyHTMLMinifier; +export default minifyHTMLMinifier; diff --git a/packages/html-minifier/tsconfig-cjs.json b/packages/html-minifier/tsconfig-cjs.json new file mode 100644 index 000000000..33830cb8a --- /dev/null +++ b/packages/html-minifier/tsconfig-cjs.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "commonjs", + "outDir": "dist/cjs", + "target": "es2015" + }, + "include": ["./src"] +} diff --git a/packages/html-minifier/tsconfig.json b/packages/html-minifier/tsconfig.json new file mode 100644 index 000000000..876c1ae30 --- /dev/null +++ b/packages/html-minifier/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "esnext", + "outDir": "dist/esm", + "target": "esnext" + }, + "include": ["./src"] +} diff --git a/packages/jsonminify/__tests__/jsonminify.test.js b/packages/jsonminify/__tests__/jsonminify.test.ts similarity index 87% rename from packages/jsonminify/__tests__/jsonminify.test.js rename to packages/jsonminify/__tests__/jsonminify.test.ts index 2b86e60e1..d5a772378 100644 --- a/packages/jsonminify/__tests__/jsonminify.test.js +++ b/packages/jsonminify/__tests__/jsonminify.test.ts @@ -4,7 +4,8 @@ * MIT Licensed */ -import jsonminify from '../src/jsonminify'; +import { describe } from 'vitest'; +import jsonminify from '../src'; import { runOneTest, tests } from '../../../tests/fixtures'; const compressorLabel = 'jsonminify'; diff --git a/packages/jsonminify/package.json b/packages/jsonminify/package.json index 9b9843663..7700efe59 100644 --- a/packages/jsonminify/package.json +++ b/packages/jsonminify/package.json @@ -12,16 +12,29 @@ "author": "Rodolphe Stoclin ", "homepage": "https://github.com/srod/node-minify/tree/master/packages/jsonminify#readme", "license": "MIT", - "main": "lib/jsonminify.js", "engines": { "node": ">=14.0.0" }, "directories": { - "lib": "lib", + "lib": "dist", "test": "__tests__" }, + "exports": { + ".": { + "import": { + "types": "./dist/esm/types/index.d.ts", + "default": "./dist/esm/index.js" + }, + "require": { + "types": "./dist/cjs/types/index.d.ts", + "default": "./dist/cjs/index.js" + } + } + }, + "types": "./dist/cjs/types/index.d.ts", + "main": "./dist/cjs/index.js", "files": [ - "lib" + "dist/**/*" ], "publishConfig": { "access": "public" @@ -33,8 +46,17 @@ "bugs": { "url": "https://github.com/srod/node-minify/issues" }, + "scripts": { + "clean": "pnpm dlx rimraf dist", + "build": "npm run clean && tsc -p tsconfig.json && tsc -p tsconfig-cjs.json", + "prepack": "npm run build" + }, "dependencies": { - "@node-minify/utils": "^7.0.0", + "@node-minify/utils": "workspace:*", "jsonminify": "0.4.2" + }, + "devDependencies": { + "@node-minify/types": "workspace:*", + "@types/jsonminify": "^0.4.1" } } diff --git a/packages/jsonminify/src/jsonminify.js b/packages/jsonminify/src/index.ts similarity index 53% rename from packages/jsonminify/src/jsonminify.js rename to packages/jsonminify/src/index.ts index 457f34972..bb6bfe4ce 100644 --- a/packages/jsonminify/src/jsonminify.js +++ b/packages/jsonminify/src/index.ts @@ -9,6 +9,25 @@ */ import jsonminify from 'jsonminify'; import { utils } from '@node-minify/utils'; +import { MinifierOptions } from '@node-minify/types'; + +// interface Options { +// sourceMap?: boolean; +// _sourceMap?: { url: string } | boolean; +// } + +// interface Settings { +// options: Options; +// content: string; +// output: string; +// } + +// interface MinifierOptions { +// settings: Settings; +// content: string; +// callback: Function; +// index: number; +// } /** * Run jsonminify. @@ -17,9 +36,9 @@ import { utils } from '@node-minify/utils'; * @param {String} content * @param {Function} callback */ -const minifyJsonMinify = ({ settings, content, callback, index }) => { - const contentMinified = jsonminify(content); - if (!settings.content) { +const minifyJsonMinify = ({ settings, content, callback, index }: MinifierOptions) => { + const contentMinified = jsonminify(content || ''); + if (settings && !settings.content) { utils.writeFile({ file: settings.output, content: contentMinified, index }); } if (callback) { @@ -31,4 +50,4 @@ const minifyJsonMinify = ({ settings, content, callback, index }) => { /** * Expose `minifyJsonMinify()`. */ -module.exports = minifyJsonMinify; +export default minifyJsonMinify; diff --git a/packages/jsonminify/tsconfig-cjs.json b/packages/jsonminify/tsconfig-cjs.json new file mode 100644 index 000000000..33830cb8a --- /dev/null +++ b/packages/jsonminify/tsconfig-cjs.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "commonjs", + "outDir": "dist/cjs", + "target": "es2015" + }, + "include": ["./src"] +} diff --git a/packages/jsonminify/tsconfig.json b/packages/jsonminify/tsconfig.json new file mode 100644 index 000000000..876c1ae30 --- /dev/null +++ b/packages/jsonminify/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "esnext", + "outDir": "dist/esm", + "target": "esnext" + }, + "include": ["./src"] +} diff --git a/packages/no-compress/__tests__/no-compress.test.js b/packages/no-compress/__tests__/no-compress.test.ts similarity index 82% rename from packages/no-compress/__tests__/no-compress.test.js rename to packages/no-compress/__tests__/no-compress.test.ts index d341ca22c..4eb45943e 100644 --- a/packages/no-compress/__tests__/no-compress.test.js +++ b/packages/no-compress/__tests__/no-compress.test.ts @@ -4,7 +4,8 @@ * MIT Licensed */ -import noCompress from '../../no-compress/src/no-compress'; +import { afterAll, beforeAll, describe, expect, test } from 'vitest'; +import noCompress from '../src'; import { runOneTest, tests } from '../../../tests/fixtures'; const compressorLabel = 'no-compress'; diff --git a/packages/no-compress/package.json b/packages/no-compress/package.json index bfc654e93..efd8632a5 100644 --- a/packages/no-compress/package.json +++ b/packages/no-compress/package.json @@ -8,16 +8,29 @@ "author": "Rodolphe Stoclin ", "homepage": "https://github.com/srod/node-minify/tree/master/packages/no-compress#readme", "license": "MIT", - "main": "lib/no-compress.js", "engines": { "node": ">=14.0.0" }, "directories": { - "lib": "lib", + "lib": "dist", "test": "__tests__" }, + "exports": { + ".": { + "import": { + "types": "./dist/esm/types/index.d.ts", + "default": "./dist/esm/index.js" + }, + "require": { + "types": "./dist/cjs/types/index.d.ts", + "default": "./dist/cjs/index.js" + } + } + }, + "types": "./dist/cjs/types/index.d.ts", + "main": "./dist/cjs/index.js", "files": [ - "lib" + "dist/**/*" ], "publishConfig": { "access": "public" @@ -29,7 +42,15 @@ "bugs": { "url": "https://github.com/srod/node-minify/issues" }, + "scripts": { + "clean": "pnpm dlx rimraf dist", + "build": "npm run clean && tsc -p tsconfig.json && tsc -p tsconfig-cjs.json", + "prepack": "npm run build" + }, "dependencies": { - "@node-minify/utils": "^7.0.0" + "@node-minify/utils": "workspace:*" + }, + "devDependencies": { + "@node-minify/types": "workspace:*" } } diff --git a/packages/no-compress/src/index.ts b/packages/no-compress/src/index.ts new file mode 100644 index 000000000..54736d04e --- /dev/null +++ b/packages/no-compress/src/index.ts @@ -0,0 +1,51 @@ +/*! + * node-minify + * Copyright(c) 2011-2022 Rodolphe Stoclin + * MIT Licensed + */ + +/** + * Module dependencies. + */ +import { utils } from '@node-minify/utils'; +import { MinifierOptions } from '@node-minify/types'; + +// interface Options { +// sourceMap?: boolean; +// _sourceMap?: { url: string } | boolean; +// } + +// interface Settings { +// options: Options; +// content: string; +// output: string; +// } + +// interface MinifierOptions { +// settings: Settings; +// content: string; +// callback: Function; +// index: number; +// } + +/** + * Just merge, no compression. + * + * @param {Object} settings + * @param {String} content + * @param {Function} callback + */ +const noCompress = ({ settings, content, callback, index }: MinifierOptions) => { + if (settings && !settings.content) { + utils.writeFile({ file: settings.output, content, index }); + } + if (callback) { + return callback(null, content); + } + return content; +}; + +/** + * Expose `noCompress()`. + */ +export default noCompress; diff --git a/packages/no-compress/src/no-compress.js b/packages/no-compress/src/no-compress.js deleted file mode 100644 index 81123247e..000000000 --- a/packages/no-compress/src/no-compress.js +++ /dev/null @@ -1,32 +0,0 @@ -/*! - * node-minify - * Copyright(c) 2011-2022 Rodolphe Stoclin - * MIT Licensed - */ - -/** - * Module dependencies. - */ -import { utils } from '@node-minify/utils'; - -/** - * Just merge, no compression. - * - * @param {Object} settings - * @param {String} content - * @param {Function} callback - */ -const noCompress = ({ settings, content, callback, index }) => { - if (!settings.content) { - utils.writeFile({ file: settings.output, content, index }); - } - if (callback) { - return callback(null, content); - } - return content; -}; - -/** - * Expose `noCompress()`. - */ -module.exports = noCompress; diff --git a/packages/no-compress/tsconfig-cjs.json b/packages/no-compress/tsconfig-cjs.json new file mode 100644 index 000000000..33830cb8a --- /dev/null +++ b/packages/no-compress/tsconfig-cjs.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "commonjs", + "outDir": "dist/cjs", + "target": "es2015" + }, + "include": ["./src"] +} diff --git a/packages/no-compress/tsconfig.json b/packages/no-compress/tsconfig.json new file mode 100644 index 000000000..876c1ae30 --- /dev/null +++ b/packages/no-compress/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "esnext", + "outDir": "dist/esm", + "target": "esnext" + }, + "include": ["./src"] +} diff --git a/packages/run/__tests__/run.test.js b/packages/run/__tests__/run.test.js deleted file mode 100644 index ca1837420..000000000 --- a/packages/run/__tests__/run.test.js +++ /dev/null @@ -1,108 +0,0 @@ -/*! - * node-minify - * Copyright(c) 2011-2022 Rodolphe Stoclin - * MIT Licensed - */ - -jest.setTimeout(30000); - -import childProcess from 'child_process'; -import { runCommandLine } from '../src/run'; - -const jar = `${__dirname}/../../yui/src/binaries/yuicompressor-2.4.7.jar`; - -describe('Package: run', () => { - describe('Base', () => { - test('should be OK with YUI and async', done => { - const command = { - args: ['-jar', '-Xss2048k', jar, '--type', 'js'], - data: 'console.log("foo");', - settings: { - sync: false - }, - callback: (err, min) => { - expect(spy).toHaveBeenCalled(); - expect(err).toBeNull(); - expect(min).toBeDefined(); - done(); - } - }; - const spy = jest.spyOn(command, 'callback'); - runCommandLine(command); - }); - - test('should not be OK with YUI and sync, fake arg', done => { - const command = { - args: ['-jar', '-Xss2048k', jar, '--type', 'js', '--fake'], - data: 'console.log("foo");', - settings: { - sync: false - }, - callback: (err, min) => { - expect(spy).toHaveBeenCalled(); - expect(err).toBeDefined(); - expect(min).toBeUndefined(); - done(); - } - }; - const spy = jest.spyOn(command, 'callback'); - runCommandLine(command); - }); - - test('should be OK with YUI and sync', () => { - const command = { - args: ['-jar', '-Xss2048k', jar, '--type', 'js'], - data: 'console.log("foo");', - settings: { - sync: true - }, - callback: () => { - expect(spy).toHaveBeenCalled(); - } - }; - const spy = jest.spyOn(command, 'callback'); - runCommandLine(command); - }); - - test('should not be OK with YUI and sync, fake arg', () => { - const command = { - args: ['-jar', '-Xss2048k', jar, '--type', 'js', '--fake'], - data: 'console.log("foo");', - settings: { - sync: true - }, - callback: () => { - expect(spy).toHaveBeenCalled(); - } - }; - const spy = jest.spyOn(command, 'callback'); - runCommandLine(command); - }); - }); - - describe('Create sync errors', () => { - beforeAll(() => { - let spy = jest.spyOn(childProcess, 'spawnSync'); - spy.mockImplementation(() => { - throw new Error(); - }); - }); - test('should not be OK with YUI and sync', () => { - const command = { - args: ['-jar', '-Xss2048k', 'foo.jar', '--type', 'js', '--fake'], - data: 'console.log("foo");', - settings: { - sync: true - }, - callback: () => { - expect(spy).toHaveBeenCalled(); - } - }; - const spy = jest.spyOn(command, 'callback'); - runCommandLine(command); - }); - }); - afterAll(() => { - jest.restoreAllMocks(); - }); -}); diff --git a/packages/run/__tests__/run.test.ts b/packages/run/__tests__/run.test.ts new file mode 100644 index 000000000..1e64e9892 --- /dev/null +++ b/packages/run/__tests__/run.test.ts @@ -0,0 +1,121 @@ +/*! + * node-minify + * Copyright(c) 2011-2022 Rodolphe Stoclin + * MIT Licensed + */ + +import { afterAll, beforeAll, describe, expect, test, vi } from 'vitest'; +import childProcess from 'child_process'; +import { runCommandLine } from '../src'; +import { TESTS_TIMEOUT } from '../../../constants'; + +const jar = `${__dirname}/../../yui/src/binaries/yuicompressor-2.4.7.jar`; + +describe('Package: run', () => { + describe( + 'Base', + () => { + test('should be OK with YUI and async', () => + new Promise(done => { + const command = { + args: ['-jar', '-Xss2048k', jar, '--type', 'js'], + data: 'console.log("foo");', + settings: { + sync: false + }, + callback: (err, min) => { + expect(spy).toHaveBeenCalled(); + expect(err).toBeNull(); + expect(min).toBeDefined(); + done(); + } + }; + const spy = vi.spyOn(command, 'callback'); + runCommandLine(command); + })); + test('should not be OK with YUI and sync, fake arg', () => + new Promise(done => { + const command = { + args: ['-jar', '-Xss2048k', jar, '--type', 'js', '--fake'], + data: 'console.log("foo");', + settings: { + sync: false + }, + callback: (err, min) => { + expect(spy).toHaveBeenCalled(); + expect(err).toBeDefined(); + expect(min).toBeUndefined(); + done(); + } + }; + const spy = vi.spyOn(command, 'callback'); + runCommandLine(command); + })); + test('should be OK with YUI and sync', () => + new Promise(done => { + const command = { + args: ['-jar', '-Xss2048k', jar, '--type', 'js'], + data: 'console.log("foo");', + settings: { + sync: true + }, + callback: () => { + expect(spy).toHaveBeenCalled(); + done(); + } + }; + const spy = vi.spyOn(command, 'callback'); + runCommandLine(command); + })); + test('should not be OK with YUI and sync, fake arg', () => + new Promise(done => { + const command = { + args: ['-jar', '-Xss2048k', jar, '--type', 'js', '--fake'], + data: 'console.log("foo");', + settings: { + sync: true + }, + callback: () => { + expect(spy).toHaveBeenCalled(); + done(); + } + }; + const spy = vi.spyOn(command, 'callback'); + runCommandLine(command); + })); + }, + TESTS_TIMEOUT + ); + + describe( + 'Create sync errors', + () => { + beforeAll(() => { + let spy = vi.spyOn(childProcess, 'spawnSync'); + spy.mockImplementation(() => { + throw new Error(); + }); + }); + test('should not be OK with YUI and sync', () => + new Promise(done => { + const command = { + args: ['-jar', '-Xss2048k', 'foo.jar', '--type', 'js', '--fake'], + data: 'console.log("foo");', + settings: { + sync: true + }, + callback: () => { + expect(spy).toHaveBeenCalled(); + done(); + } + }; + const spy = vi.spyOn(command, 'callback'); + runCommandLine(command); + })); + }, + TESTS_TIMEOUT + ); + afterAll(() => { + vi.restoreAllMocks(); + }); +}); diff --git a/packages/run/package.json b/packages/run/package.json index fe9460e94..0bee280b5 100644 --- a/packages/run/package.json +++ b/packages/run/package.json @@ -5,21 +5,35 @@ "keywords": [ "compressor", "minify", - "minifier" + "minifier", + "run" ], "author": "Rodolphe Stoclin ", "homepage": "https://github.com/srod/node-minify/tree/master/packages/run#readme", "license": "MIT", - "main": "lib/run.js", "engines": { "node": ">=14.0.0" }, "directories": { - "lib": "lib", + "lib": "dist", "test": "__tests__" }, + "exports": { + ".": { + "import": { + "types": "./dist/esm/types/index.d.ts", + "default": "./dist/esm/index.js" + }, + "require": { + "types": "./dist/cjs/types/index.d.ts", + "default": "./dist/cjs/index.js" + } + } + }, + "types": "./dist/cjs/types/index.d.ts", + "main": "./dist/cjs/index.js", "files": [ - "lib" + "dist/**/*" ], "publishConfig": { "access": "public" @@ -30,5 +44,13 @@ }, "bugs": { "url": "https://github.com/srod/node-minify/issues" + }, + "scripts": { + "clean": "pnpm dlx rimraf dist", + "build": "npm run clean && tsc -p tsconfig.json && tsc -p tsconfig-cjs.json", + "prepack": "npm run build" + }, + "devDependencies": { + "@node-minify/types": "workspace:*" } } diff --git a/packages/run/src/run.js b/packages/run/src/index.ts similarity index 67% rename from packages/run/src/run.js rename to packages/run/src/index.ts index 54745daf9..b26dcb7e6 100644 --- a/packages/run/src/run.js +++ b/packages/run/src/index.ts @@ -8,6 +8,7 @@ * Module dependencies. */ import childProcess from 'child_process'; +import { MinifierOptions } from '@node-minify/types'; /** * Run the command line with spawn. @@ -17,8 +18,21 @@ import childProcess from 'child_process'; * @param {Object} settings * @param {Function} callback */ -const runCommandLine = ({ args, data, settings, callback }) => { - if (settings.sync) { + +// interface Settings { +// sync: boolean; +// buffer: number; +// } + +// interface MinifierOptions { +// args: string[]; +// data: string; +// settings?: Settings; +// callback: Function; +// } + +const runCommandLine = ({ args, data, settings, callback }: MinifierOptions) => { + if (settings && settings.sync) { return runSync({ settings, data, args, callback }); } @@ -32,7 +46,7 @@ const runCommandLine = ({ args, data, settings, callback }) => { * @param {Array} args * @param {Function} callback */ -const runAsync = ({ data, args, callback }) => { +const runAsync = ({ data, args, callback }: MinifierOptions) => { let stdout = ''; let stderr = ''; @@ -47,10 +61,10 @@ const runAsync = ({ data, args, callback }) => { child.on('exit', code => { if (code !== 0) { - return callback(new Error(stderr)); + return callback && callback(new Error(stderr)); } - return callback(null, stdout); + return callback && callback(null, stdout); }); child.stdout.on('data', chunk => { @@ -71,24 +85,24 @@ const runAsync = ({ data, args, callback }) => { * @param {Array} args * @param {Function} callback */ -const runSync = ({ settings, data, args, callback }) => { +const runSync = ({ settings, data, args, callback }: MinifierOptions) => { try { const child = childProcess.spawnSync('java', args, { input: data, stdio: 'pipe', - maxBuffer: settings.buffer + maxBuffer: settings && settings.buffer }); const stdout = child.stdout.toString(); const stderr = child.stderr.toString(); const code = child.status; if (code !== 0) { - return callback(new Error(stderr)); + return callback && callback(new Error(stderr)); } - return callback(null, stdout); + return callback && callback(null, stdout); } catch (err) { - return callback(err); + return callback && callback(err); } }; diff --git a/packages/run/tsconfig-cjs.json b/packages/run/tsconfig-cjs.json new file mode 100644 index 000000000..33830cb8a --- /dev/null +++ b/packages/run/tsconfig-cjs.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "commonjs", + "outDir": "dist/cjs", + "target": "es2015" + }, + "include": ["./src"] +} diff --git a/packages/run/tsconfig.json b/packages/run/tsconfig.json new file mode 100644 index 000000000..876c1ae30 --- /dev/null +++ b/packages/run/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "esnext", + "outDir": "dist/esm", + "target": "esnext" + }, + "include": ["./src"] +} diff --git a/packages/sqwish/__tests__/sqwish.test.js b/packages/sqwish/__tests__/sqwish.test.ts similarity index 58% rename from packages/sqwish/__tests__/sqwish.test.js rename to packages/sqwish/__tests__/sqwish.test.ts index b5f046f87..6c7bfdf2e 100644 --- a/packages/sqwish/__tests__/sqwish.test.js +++ b/packages/sqwish/__tests__/sqwish.test.ts @@ -4,17 +4,24 @@ * MIT Licensed */ -import sqwish from '../../sqwish/src/sqwish'; +import { describe } from 'vitest'; +import sqwish from '../src'; import { runOneTest, tests } from '../../../tests/fixtures'; +export interface Result { + compressor?: string | Function; + compressorLabel: string | Function; + options: {}; +} + const compressorLabel = 'sqwish'; const compressor = sqwish; describe('Package: sqwish', () => { - tests.commoncss.forEach(options => { + tests.commoncss.forEach((options: Result) => { runOneTest({ options, compressorLabel, compressor }); }); - tests.commoncss.forEach(options => { + tests.commoncss.forEach((options: Result) => { runOneTest({ options, compressorLabel, compressor, sync: true }); }); }); diff --git a/packages/sqwish/package.json b/packages/sqwish/package.json index 6cff3bd49..499e8cde0 100644 --- a/packages/sqwish/package.json +++ b/packages/sqwish/package.json @@ -11,16 +11,29 @@ "author": "Rodolphe Stoclin ", "homepage": "https://github.com/srod/node-minify/tree/master/packages/sqwish#readme", "license": "MIT", - "main": "lib/sqwish.js", "engines": { "node": ">=14.0.0" }, "directories": { - "lib": "lib", + "lib": "dist", "test": "__tests__" }, + "exports": { + ".": { + "import": { + "types": "./dist/esm/types/index.d.ts", + "default": "./dist/esm/index.js" + }, + "require": { + "types": "./dist/cjs/types/index.d.ts", + "default": "./dist/cjs/index.js" + } + } + }, + "types": "./dist/cjs/types/index.d.ts", + "main": "./dist/cjs/index.js", "files": [ - "lib" + "dist/**/*" ], "publishConfig": { "access": "public" @@ -32,8 +45,16 @@ "bugs": { "url": "https://github.com/srod/node-minify/issues" }, + "scripts": { + "clean": "pnpm dlx rimraf dist", + "build": "npm run clean && tsc -p tsconfig.json && tsc -p tsconfig-cjs.json", + "prepack": "npm run build" + }, "dependencies": { - "@node-minify/utils": "^7.0.0", + "@node-minify/utils": "workspace:*", "sqwish": "0.2.2" + }, + "devDependencies": { + "@node-minify/types": "workspace:*" } } diff --git a/packages/sqwish/src/index.ts b/packages/sqwish/src/index.ts new file mode 100644 index 000000000..98e045325 --- /dev/null +++ b/packages/sqwish/src/index.ts @@ -0,0 +1,54 @@ +/*! + * node-minify + * Copyright(c) 2011-2022 Rodolphe Stoclin + * MIT Licensed + */ + +/** + * Module dependencies. + */ +import sqwish from 'sqwish'; +import { utils } from '@node-minify/utils'; +import { MinifierOptions } from '@node-minify/types'; + +// interface Options { +// sourceMap?: boolean; +// _sourceMap?: { url: string } | boolean; +// strict?: boolean; +// } + +// interface Settings { +// options: Options; +// content: string; +// output: string; +// } + +// interface MinifierOptions { +// settings: Settings; +// content: string; +// callback: Function; +// index: number; +// } + +/** + * Run sqwish. + * + * @param {Object} settings + * @param {String} content + * @param {Function} callback + */ +const minifySqwish = ({ settings, content, callback, index }: MinifierOptions) => { + const contentMinified = sqwish.minify(content, settings && settings.options && settings.options.strict); + if (settings && !settings.content) { + utils.writeFile({ file: settings.output, content: contentMinified, index }); + } + if (callback) { + return callback(null, contentMinified); + } + return contentMinified; +}; + +/** + * Expose `minifySqwish()`. + */ +export default minifySqwish; diff --git a/packages/sqwish/src/sqwish.js b/packages/sqwish/src/sqwish.js deleted file mode 100644 index e8d67fe01..000000000 --- a/packages/sqwish/src/sqwish.js +++ /dev/null @@ -1,34 +0,0 @@ -/*! - * node-minify - * Copyright(c) 2011-2022 Rodolphe Stoclin - * MIT Licensed - */ - -/** - * Module dependencies. - */ -import sqwish from 'sqwish'; -import { utils } from '@node-minify/utils'; - -/** - * Run sqwish. - * - * @param {Object} settings - * @param {String} content - * @param {Function} callback - */ -const minifySqwish = ({ settings, content, callback, index }) => { - const contentMinified = sqwish.minify(content, settings.options.strict); - if (!settings.content) { - utils.writeFile({ file: settings.output, content: contentMinified, index }); - } - if (callback) { - return callback(null, contentMinified); - } - return contentMinified; -}; - -/** - * Expose `minifySqwish()`. - */ -module.exports = minifySqwish; diff --git a/packages/sqwish/tsconfig-cjs.json b/packages/sqwish/tsconfig-cjs.json new file mode 100644 index 000000000..33830cb8a --- /dev/null +++ b/packages/sqwish/tsconfig-cjs.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "commonjs", + "outDir": "dist/cjs", + "target": "es2015" + }, + "include": ["./src"] +} diff --git a/packages/sqwish/tsconfig.json b/packages/sqwish/tsconfig.json new file mode 100644 index 000000000..876c1ae30 --- /dev/null +++ b/packages/sqwish/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "esnext", + "outDir": "dist/esm", + "target": "esnext" + }, + "include": ["./src"] +} diff --git a/packages/terser/__tests__/terser.test.js b/packages/terser/__tests__/terser.test.ts similarity index 88% rename from packages/terser/__tests__/terser.test.js rename to packages/terser/__tests__/terser.test.ts index fe9c8b907..fb9442a7f 100644 --- a/packages/terser/__tests__/terser.test.js +++ b/packages/terser/__tests__/terser.test.ts @@ -4,8 +4,9 @@ * MIT Licensed */ -import minify from '../../core/src/core'; -import terser from '../../terser/src/terser'; +import { afterAll, beforeAll, describe, expect, test } from 'vitest'; +import minify from '../../core/src'; +import terser from '../src'; import { filesJS } from '../../../tests/files-path'; import { runOneTest, tests } from '../../../tests/fixtures'; diff --git a/packages/terser/package.json b/packages/terser/package.json index b7009c329..204e205f2 100644 --- a/packages/terser/package.json +++ b/packages/terser/package.json @@ -11,16 +11,29 @@ "author": "Rodolphe Stoclin ", "homepage": "https://github.com/srod/node-minify/tree/master/packages/terser#readme", "license": "MIT", - "main": "lib/terser.js", "engines": { "node": ">=14.0.0" }, "directories": { - "lib": "lib", + "lib": "dist", "test": "__tests__" }, + "exports": { + ".": { + "import": { + "types": "./dist/esm/types/index.d.ts", + "default": "./dist/esm/index.js" + }, + "require": { + "types": "./dist/cjs/types/index.d.ts", + "default": "./dist/cjs/index.js" + } + } + }, + "types": "./dist/cjs/types/index.d.ts", + "main": "./dist/cjs/index.js", "files": [ - "lib" + "dist/**/*" ], "publishConfig": { "access": "public" @@ -32,8 +45,16 @@ "bugs": { "url": "https://github.com/srod/node-minify/issues" }, + "scripts": { + "clean": "pnpm dlx rimraf dist", + "build": "npm run clean && tsc -p tsconfig.json && tsc -p tsconfig-cjs.json", + "prepack": "npm run build" + }, "dependencies": { - "@node-minify/utils": "^7.0.0", + "@node-minify/utils": "workspace:*", "terser": "5.16.1" + }, + "devDependencies": { + "@node-minify/types": "workspace:*" } } diff --git a/packages/terser/src/index.ts b/packages/terser/src/index.ts new file mode 100644 index 000000000..f3c4412d6 --- /dev/null +++ b/packages/terser/src/index.ts @@ -0,0 +1,78 @@ +/*! + * node-minify + * Copyright(c) 2011-2022 Rodolphe Stoclin + * MIT Licensed + */ + +/** + * Module dependencies. + */ +import { minify } from 'terser'; +import { utils } from '@node-minify/utils'; +import { MinifierOptions, Options, Settings } from '@node-minify/types'; + +interface OptionsTerser extends Omit { + sourceMap?: { url: string }; +} + +interface SettingsTerser extends Omit { + options: OptionsTerser; +} + +interface MinifierOptionsTerser extends Omit { + settings: SettingsTerser; +} + +// interface Options { +// sourceMap?: { url: string }; +// // _sourceMap?: { url: string } | boolean; +// } + +// interface Settings { +// options: Options; +// content: string; +// output: string; +// } + +// interface MinifierOptions { +// settings: Settings; +// content: string; +// callback: Function; +// index: number; +// } + +/** + * Run terser. + * + * @param {Object} settings + * @param {String} content + * @param {Function} callback + */ +const minifyTerser = async ({ settings, content, callback, index }: MinifierOptionsTerser) => { + try { + const contentMinified = await minify(content || '', settings && settings.options); + if ( + contentMinified.map && + settings && + settings.options && + typeof settings.options.sourceMap === 'object' && + typeof settings.options.sourceMap.url === 'string' + ) { + utils.writeFile({ file: settings.options.sourceMap.url, content: contentMinified.map, index }); + } + if (settings && !settings.content) { + utils.writeFile({ file: settings.output, content: contentMinified.code, index }); + } + if (callback) { + return callback(null, contentMinified.code); + } + return contentMinified.code; + } catch (error) { + return callback && callback(error); + } +}; + +/** + * Expose `minifyTerser()`. + */ +export default minifyTerser; diff --git a/packages/terser/src/terser.js b/packages/terser/src/terser.js deleted file mode 100644 index 4f0f21a88..000000000 --- a/packages/terser/src/terser.js +++ /dev/null @@ -1,47 +0,0 @@ -/*! - * node-minify - * Copyright(c) 2011-2022 Rodolphe Stoclin - * MIT Licensed - */ - -/** - * Module dependencies. - */ -import terser from 'terser'; -import { utils } from '@node-minify/utils'; - -/** - * Run terser. - * - * @param {Object} settings - * @param {String} content - * @param {Function} callback - */ -const minifyTerser = async ({ settings, content, callback, index }) => { - try { - const contentMinified = await terser.minify(content, settings.options); - - if (contentMinified.error) { - if (callback) { - return callback(contentMinified.error); - } - } - if (contentMinified.map && settings.options.sourceMap) { - utils.writeFile({ file: settings.options.sourceMap.url, content: contentMinified.map, index }); - } - if (!settings.content) { - utils.writeFile({ file: settings.output, content: contentMinified.code, index }); - } - if (callback) { - return callback(null, contentMinified.code); - } - return contentMinified.code; - } catch (error) { - return callback(error); - } -}; - -/** - * Expose `minifyTerser()`. - */ -module.exports = minifyTerser; diff --git a/packages/terser/tsconfig-cjs.json b/packages/terser/tsconfig-cjs.json new file mode 100644 index 000000000..33830cb8a --- /dev/null +++ b/packages/terser/tsconfig-cjs.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "commonjs", + "outDir": "dist/cjs", + "target": "es2015" + }, + "include": ["./src"] +} diff --git a/packages/terser/tsconfig.json b/packages/terser/tsconfig.json new file mode 100644 index 000000000..876c1ae30 --- /dev/null +++ b/packages/terser/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "esnext", + "outDir": "dist/esm", + "target": "esnext" + }, + "include": ["./src"] +} diff --git a/packages/types/README.md b/packages/types/README.md new file mode 100644 index 000000000..ea8005509 --- /dev/null +++ b/packages/types/README.md @@ -0,0 +1,25 @@ +

node-minify

+ +

A very light minifier Node.js module.

+ +

+
+ + + Build Status + +

+ +# Types for node-minify + +`Types` is a plugin for [`node-minify`](https://github.com/srod/node-minify) + +## Installation + +```bash +npm install --save-dev @node-minify/types +``` + +## License + +[MIT](https://github.com/srod/node-minify/blob/develop/LICENSE) diff --git a/packages/types/package.json b/packages/types/package.json new file mode 100644 index 000000000..81fece014 --- /dev/null +++ b/packages/types/package.json @@ -0,0 +1,29 @@ +{ + "name": "@node-minify/types", + "version": "7.0.0", + "description": "types for @node-minify", + "keywords": [ + "compressor", + "minify", + "minifier", + "types" + ], + "author": "Rodolphe Stoclin ", + "homepage": "https://github.com/srod/node-minify/tree/master/packages/types#readme", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + }, + "main": "src/types.ts", + "types": "src/types.ts", + "publishConfig": { + "access": "public" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/srod/node-minify.git" + }, + "bugs": { + "url": "https://github.com/srod/node-minify/issues" + } +} diff --git a/packages/types/src/types.ts b/packages/types/src/types.ts new file mode 100644 index 000000000..0b48d65de --- /dev/null +++ b/packages/types/src/types.ts @@ -0,0 +1,59 @@ +export interface Options { + // sourceMap?: boolean | { url?: string; filename?: string }; + sourceMap?: boolean; + _sourceMap?: { url: string } | boolean; + babelrc?: {}; + presets?: []; + strict?: boolean; +} + +// export interface Settings { +// options: Options; +// content: string; +// output: string; +// } + +export interface Settings { + compressorLabel: string | Function; + compressor: string | Function; + sync?: boolean; + callback?: Function; + content?: string; + input: string | string[]; + output: string; + // options?: string | Options; + options?: Options; + buffer?: number; + type?: string; +} + +export interface MinifierOptions { + settings?: Settings; + content?: string; + callback?: Function; + index?: number; + args?: string[]; + data?: string; + sync?: boolean; + input?: string | string[]; +} + +export interface Cli { + compressor: string | Function; + input: string; + output: string; + // option: Options; + option: string; + silence?: boolean; +} + +export interface Result { + compressor?: string | Function; + compressorLabel: string | Function; + size: number; + sizeGzip: number; +} + +export interface Dictionary { + [Key: string]: T; +} diff --git a/packages/uglify-es/__tests__/uglify-es.test.js b/packages/uglify-es/__tests__/uglify-es.test.ts similarity index 88% rename from packages/uglify-es/__tests__/uglify-es.test.js rename to packages/uglify-es/__tests__/uglify-es.test.ts index d7d8f5326..0b3e02175 100644 --- a/packages/uglify-es/__tests__/uglify-es.test.js +++ b/packages/uglify-es/__tests__/uglify-es.test.ts @@ -4,8 +4,9 @@ * MIT Licensed */ -import minify from '../../core/src/core'; -import uglifyes from '../../uglify-es/src/uglify-es'; +import { afterAll, beforeAll, describe, expect, test } from 'vitest'; +import minify from '../../core/src'; +import uglifyes from '../src'; import { filesJS } from '../../../tests/files-path'; import { runOneTest, tests } from '../../../tests/fixtures'; diff --git a/packages/uglify-es/package.json b/packages/uglify-es/package.json index bd57cea26..ddfb502db 100644 --- a/packages/uglify-es/package.json +++ b/packages/uglify-es/package.json @@ -11,16 +11,29 @@ "author": "Rodolphe Stoclin ", "homepage": "https://github.com/srod/node-minify/tree/master/packages/uglify-es#readme", "license": "MIT", - "main": "lib/uglify-es.js", "engines": { "node": ">=14.0.0" }, "directories": { - "lib": "lib", + "lib": "dist", "test": "__tests__" }, + "exports": { + ".": { + "import": { + "types": "./dist/esm/types/index.d.ts", + "default": "./dist/esm/index.js" + }, + "require": { + "types": "./dist/cjs/types/index.d.ts", + "default": "./dist/cjs/index.js" + } + } + }, + "types": "./dist/cjs/types/index.d.ts", + "main": "./dist/cjs/index.js", "files": [ - "lib" + "dist/**/*" ], "publishConfig": { "access": "public" @@ -32,8 +45,17 @@ "bugs": { "url": "https://github.com/srod/node-minify/issues" }, + "scripts": { + "clean": "pnpm dlx rimraf dist", + "build": "npm run clean && tsc -p tsconfig.json && tsc -p tsconfig-cjs.json", + "prepack": "npm run build" + }, "dependencies": { - "@node-minify/utils": "^7.0.0", + "@node-minify/utils": "workspace:*", "uglify-es": "3.3.9" + }, + "devDependencies": { + "@node-minify/types": "workspace:*", + "@types/uglify-es": "^3.0.0" } } diff --git a/packages/uglify-es/src/index.ts b/packages/uglify-es/src/index.ts new file mode 100644 index 000000000..d98c68073 --- /dev/null +++ b/packages/uglify-es/src/index.ts @@ -0,0 +1,81 @@ +/*! + * node-minify + * Copyright(c) 2011-2022 Rodolphe Stoclin + * MIT Licensed + */ + +/** + * Module dependencies. + */ +import uglifyES from 'uglify-es'; +import { utils } from '@node-minify/utils'; +import { MinifierOptions, Options, Settings, Dictionary } from '@node-minify/types'; + +interface OptionsUglifyES extends Omit { + sourceMap?: { filename: string }; +} + +// interface Options { +// sourceMap?: { filename: string }; +// // _sourceMap?: { url: string } | boolean; +// } + +// interface Settings { +// options: Options; +// content: string; +// output: string; +// } + +interface SettingsUglifyES extends Omit { + options: OptionsUglifyES; +} + +interface MinifierOptionsUglifyES extends Omit { + settings: SettingsUglifyES; +} + +// interface MinifierOptions { +// settings: Settings; +// content: string /* | Dictionary */; +// callback: Function; +// index: number; +// } + +// interface Dictionary { +// [Key: string]: T; +// } + +/** + * Run uglifyES. + * + * @param {Object} settings + * @param {String} content + * @param {Function} callback + */ +const minifyUglifyES = ({ settings, content, callback, index }: MinifierOptionsUglifyES) => { + let content2: string | Dictionary = content || ''; + if (settings && typeof settings.options.sourceMap === 'object') { + content2 = { [settings.options.sourceMap.filename || '']: content || '' }; + } + const contentMinified = uglifyES.minify(content2, settings && settings.options); + if (contentMinified.error) { + if (callback) { + return callback(contentMinified.error); + } + } + if (contentMinified.map && settings && settings.options.sourceMap) { + utils.writeFile({ file: `${settings.output}.map`, content: contentMinified.map, index }); + } + if (settings && !settings.content) { + utils.writeFile({ file: settings.output, content: contentMinified.code, index }); + } + if (callback) { + return callback(null, contentMinified.code); + } + return contentMinified.code; +}; + +/** + * Expose `minifyUglifyES()`. + */ +export default minifyUglifyES; diff --git a/packages/uglify-es/src/uglify-es.js b/packages/uglify-es/src/uglify-es.js deleted file mode 100644 index 1adfb7769..000000000 --- a/packages/uglify-es/src/uglify-es.js +++ /dev/null @@ -1,45 +0,0 @@ -/*! - * node-minify - * Copyright(c) 2011-2022 Rodolphe Stoclin - * MIT Licensed - */ - -/** - * Module dependencies. - */ -import uglifyES from 'uglify-es'; -import { utils } from '@node-minify/utils'; - -/** - * Run uglifyES. - * - * @param {Object} settings - * @param {String} content - * @param {Function} callback - */ -const minifyUglifyES = ({ settings, content, callback, index }) => { - if (settings.options.sourceMap) { - content = { [settings.options.sourceMap.filename]: content }; - } - const contentMinified = uglifyES.minify(content, settings.options); - if (contentMinified.error) { - if (callback) { - return callback(contentMinified.error); - } - } - if (contentMinified.map && settings.options.sourceMap) { - utils.writeFile({ file: `${settings.output}.map`, content: contentMinified.map, index }); - } - if (!settings.content) { - utils.writeFile({ file: settings.output, content: contentMinified.code, index }); - } - if (callback) { - return callback(null, contentMinified.code); - } - return contentMinified.code; -}; - -/** - * Expose `minifyUglifyES()`. - */ -module.exports = minifyUglifyES; diff --git a/packages/uglify-es/tsconfig-cjs.json b/packages/uglify-es/tsconfig-cjs.json new file mode 100644 index 000000000..33830cb8a --- /dev/null +++ b/packages/uglify-es/tsconfig-cjs.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "commonjs", + "outDir": "dist/cjs", + "target": "es2015" + }, + "include": ["./src"] +} diff --git a/packages/uglify-es/tsconfig.json b/packages/uglify-es/tsconfig.json new file mode 100644 index 000000000..876c1ae30 --- /dev/null +++ b/packages/uglify-es/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "esnext", + "outDir": "dist/esm", + "target": "esnext" + }, + "include": ["./src"] +} diff --git a/packages/uglify-js/__tests__/uglify-js.test.js b/packages/uglify-js/__tests__/uglify-js.test.ts similarity index 88% rename from packages/uglify-js/__tests__/uglify-js.test.js rename to packages/uglify-js/__tests__/uglify-js.test.ts index 9a4a5ac2a..a886b5dba 100644 --- a/packages/uglify-js/__tests__/uglify-js.test.js +++ b/packages/uglify-js/__tests__/uglify-js.test.ts @@ -4,8 +4,9 @@ * MIT Licensed */ -import minify from '../../core/src/core'; -import uglifyjs from '../../uglify-js/src/uglify-js'; +import { afterAll, beforeAll, describe, expect, test } from 'vitest'; +import minify from '../../core/src'; +import uglifyjs from '../src'; import { filesJS } from '../../../tests/files-path'; import { runOneTest, tests } from '../../../tests/fixtures'; diff --git a/packages/uglify-js/package.json b/packages/uglify-js/package.json index afe7bc102..824ed317e 100644 --- a/packages/uglify-js/package.json +++ b/packages/uglify-js/package.json @@ -11,16 +11,29 @@ "author": "Rodolphe Stoclin ", "homepage": "https://github.com/srod/node-minify/tree/master/packages/uglify-js#readme", "license": "MIT", - "main": "lib/uglify-js.js", "engines": { "node": ">=14.0.0" }, "directories": { - "lib": "lib", + "lib": "dist", "test": "__tests__" }, + "exports": { + ".": { + "import": { + "types": "./dist/esm/types/index.d.ts", + "default": "./dist/esm/index.js" + }, + "require": { + "types": "./dist/cjs/types/index.d.ts", + "default": "./dist/cjs/index.js" + } + } + }, + "types": "./dist/cjs/types/index.d.ts", + "main": "./dist/cjs/index.js", "files": [ - "lib" + "dist/**/*" ], "publishConfig": { "access": "public" @@ -32,8 +45,17 @@ "bugs": { "url": "https://github.com/srod/node-minify/issues" }, + "scripts": { + "clean": "pnpm dlx rimraf dist", + "build": "npm run clean && tsc -p tsconfig.json && tsc -p tsconfig-cjs.json", + "prepack": "npm run build" + }, "dependencies": { - "@node-minify/utils": "^7.0.0", + "@node-minify/utils": "workspace:*", "uglify-js": "3.17.4" + }, + "devDependencies": { + "@node-minify/types": "workspace:*", + "@types/uglify-js": "^3.17.1" } } diff --git a/packages/uglify-js/src/index.ts b/packages/uglify-js/src/index.ts new file mode 100644 index 000000000..d74a2affa --- /dev/null +++ b/packages/uglify-js/src/index.ts @@ -0,0 +1,74 @@ +/*! + * node-minify + * Copyright(c) 2011-2022 Rodolphe Stoclin + * MIT Licensed + */ + +/** + * Module dependencies. + */ +import uglifyJS from 'uglify-js'; +import { utils } from '@node-minify/utils'; +import { MinifierOptions, Options, Settings } from '@node-minify/types'; + +interface OptionsUglifyJS extends Omit { + sourceMap?: { filename: string }; +} + +interface SettingsUglifyJS extends Omit { + options: OptionsUglifyJS; +} + +interface MinifierOptionsUglifyJS extends Omit { + settings: SettingsUglifyJS; +} + +// interface Options { +// sourceMap?: { filename: string }; +// // _sourceMap?: { url: string } | boolean; +// } + +// interface Settings { +// options: Options; +// content: string; +// output: string; +// } + +// interface MinifierOptions { +// settings: Settings; +// content: string /* | Dictionary */; +// callback: Function; +// index: number; +// } + +/** + * Run uglifyJS. + * + * @param {Object} settings + * @param {String} content + * @param {Function} callback + */ +const minifyUglifyJS = ({ settings, content, callback, index }: MinifierOptionsUglifyJS) => { + const contentMinified = uglifyJS.minify(typeof content === 'string' ? content : '', settings && settings.options); + if (contentMinified.error) { + if (callback) { + return callback(contentMinified.error); + } + } + if (contentMinified.map && settings && typeof settings.options.sourceMap === 'object') { + // TODO + utils.writeFile({ file: settings.options.sourceMap.filename, content: contentMinified.map, index }); + } + if (settings && !settings.content) { + utils.writeFile({ file: settings.output, content: contentMinified.code, index }); + } + if (callback) { + return callback(null, contentMinified.code); + } + return contentMinified.code; +}; + +/** + * Expose `minifyUglifyJS()`. + */ +export default minifyUglifyJS; diff --git a/packages/uglify-js/src/uglify-js.js b/packages/uglify-js/src/uglify-js.js deleted file mode 100644 index 64cf47da6..000000000 --- a/packages/uglify-js/src/uglify-js.js +++ /dev/null @@ -1,42 +0,0 @@ -/*! - * node-minify - * Copyright(c) 2011-2022 Rodolphe Stoclin - * MIT Licensed - */ - -/** - * Module dependencies. - */ -import uglifyJS from 'uglify-js'; -import { utils } from '@node-minify/utils'; - -/** - * Run uglifyJS. - * - * @param {Object} settings - * @param {String} content - * @param {Function} callback - */ -const minifyUglifyJS = ({ settings, content, callback, index }) => { - const contentMinified = uglifyJS.minify(content, settings.options); - if (contentMinified.error) { - if (callback) { - return callback(contentMinified.error); - } - } - if (contentMinified.map && settings.options.sourceMap) { - utils.writeFile({ file: settings.options.sourceMap.filename, content: contentMinified.map, index }); - } - if (!settings.content) { - utils.writeFile({ file: settings.output, content: contentMinified.code, index }); - } - if (callback) { - return callback(null, contentMinified.code); - } - return contentMinified.code; -}; - -/** - * Expose `minifyUglifyJS()`. - */ -module.exports = minifyUglifyJS; diff --git a/packages/uglify-js/tsconfig-cjs.json b/packages/uglify-js/tsconfig-cjs.json new file mode 100644 index 000000000..33830cb8a --- /dev/null +++ b/packages/uglify-js/tsconfig-cjs.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "commonjs", + "outDir": "dist/cjs", + "target": "es2015" + }, + "include": ["./src"] +} diff --git a/packages/uglify-js/tsconfig.json b/packages/uglify-js/tsconfig.json new file mode 100644 index 000000000..876c1ae30 --- /dev/null +++ b/packages/uglify-js/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "esnext", + "outDir": "dist/esm", + "target": "esnext" + }, + "include": ["./src"] +} diff --git a/packages/utils/__tests__/utils.test.js b/packages/utils/__tests__/utils.test.ts similarity index 79% rename from packages/utils/__tests__/utils.test.js rename to packages/utils/__tests__/utils.test.ts index 69b419b09..f2771b8c6 100644 --- a/packages/utils/__tests__/utils.test.js +++ b/packages/utils/__tests__/utils.test.ts @@ -1,4 +1,11 @@ -import { utils } from '../src/utils'; +/*! + * node-minify + * Copyright(c) 2011-2022 Rodolphe Stoclin + * MIT Licensed + */ + +import { afterAll, beforeAll, describe, expect, test } from 'vitest'; +import { utils } from '../src'; const fixtureFile = __dirname + '/../../../tests/fixtures/fixture-content.js'; @@ -33,12 +40,13 @@ describe('Package: utils', () => { }); describe('getFilesizeGzippedInBytes', () => { - test('should return file size', done => { - utils.getFilesizeGzippedInBytes(fixtureFile).then(size => { - expect(size).toMatch(/(44 B)|(45 B)/); - done(); - }); - }); + test('should return file size', () => + new Promise(done => { + utils.getFilesizeGzippedInBytes(fixtureFile).then(size => { + expect(size).toMatch(/(44 B)|(45 B)/); + done(); + }); + })); }); describe('pretty bytes', () => { diff --git a/packages/utils/index.d.ts b/packages/utils/index.d.ts new file mode 100644 index 000000000..7969ede0a --- /dev/null +++ b/packages/utils/index.d.ts @@ -0,0 +1 @@ +declare module '@node-minify/utils'; diff --git a/packages/utils/package.json b/packages/utils/package.json index 4bc33cc7c..1bd6fca7b 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -5,21 +5,35 @@ "keywords": [ "compressor", "minify", - "minifier" + "minifier", + "utils" ], "author": "Rodolphe Stoclin ", "homepage": "https://github.com/srod/node-minify/tree/master/packages/utils#readme", "license": "MIT", - "main": "lib/utils.js", "engines": { "node": ">=14.0.0" }, "directories": { - "lib": "lib", + "lib": "dist", "test": "__tests__" }, + "exports": { + ".": { + "import": { + "types": "./dist/esm/types/index.d.ts", + "default": "./dist/esm/index.js" + }, + "require": { + "types": "./dist/cjs/types/index.d.ts", + "default": "./dist/cjs/index.js" + } + } + }, + "types": "./dist/cjs/types/index.d.ts", + "main": "./dist/cjs/index.js", "files": [ - "lib" + "dist/**/*" ], "publishConfig": { "access": "public" @@ -31,7 +45,15 @@ "bugs": { "url": "https://github.com/srod/node-minify/issues" }, + "scripts": { + "clean": "pnpm dlx rimraf dist", + "build": "npm run clean && tsc -p tsconfig.json && tsc -p tsconfig-cjs.json", + "prepack": "npm run build" + }, "dependencies": { "gzip-size": "6.0.0" + }, + "devDependencies": { + "@node-minify/types": "workspace:*" } } diff --git a/packages/utils/src/utils.js b/packages/utils/src/index.ts similarity index 62% rename from packages/utils/src/utils.js rename to packages/utils/src/index.ts index d2ff6252a..f7b8b34c7 100644 --- a/packages/utils/src/utils.js +++ b/packages/utils/src/index.ts @@ -9,8 +9,54 @@ */ import fs from 'fs'; import gzipSize from 'gzip-size'; +import { MinifierOptions } from '@node-minify/types'; +// import { MinifierOptions } from '../../../types'; -const utils = {}; +interface Utils { + readFile: Function; + writeFile: Function; + deleteFile: Function; + buildArgs: Function; + clone: Function; + getFilesizeInBytes: Function; + getFilesizeGzippedInBytes: Function; + prettyBytes: Function; + setFileNameMin: Function; + compressSingleFile: Function; + getContentFromFiles: Function; + runSync: Function; + runAsync: Function; +} + +// interface Options { +// // sourceMap?: { filename: string }; +// // _sourceMap?: { url: string } | boolean; +// } + +// interface Settings { +// compressor: Function; +// options: Options; +// content: string; +// output: string; +// type: string; +// } + +// interface MinifierOptions { +// settings: Settings; +// content: string /* | Dictionary */; +// callback: Function; +// index: number; +// input: string; +// sync: boolean; +// } + +interface WriteFile { + file: string; + content: string; + index: number; +} + +const utils = {} as Utils; /** * Read content from file. @@ -18,7 +64,7 @@ const utils = {}; * @param {String} file * @returns {String} */ -utils.readFile = file => fs.readFileSync(file, 'utf8'); +utils.readFile = (file: string) => fs.readFileSync(file, 'utf8'); /** * Write content into file. @@ -28,7 +74,7 @@ utils.readFile = file => fs.readFileSync(file, 'utf8'); * @param {Number} index - index of the file being processed * @returns {String} */ -utils.writeFile = ({ file, content, index }) => { +utils.writeFile = ({ file, content, index }: WriteFile) => { const _file = index !== undefined ? file[index] : file; if (!fs.existsSync(_file) || (fs.existsSync(_file) && !fs.lstatSync(_file).isDirectory())) { fs.writeFileSync(_file, content, 'utf8'); @@ -43,7 +89,7 @@ utils.writeFile = ({ file, content, index }) => { * @param {String} file * @returns {String} */ -utils.deleteFile = file => fs.unlinkSync(file); +utils.deleteFile = (file: string) => fs.unlinkSync(file); /** * Builds arguments array based on an object. @@ -51,10 +97,12 @@ utils.deleteFile = file => fs.unlinkSync(file); * @param {Object} options * @returns {Array} */ -utils.buildArgs = options => { - const args = []; - - Object.keys(options).forEach(key => { +interface Dictionary { + [Key: string]: T; +} +utils.buildArgs = (options: Dictionary) => { + const args: (string | boolean)[] = []; + Object.keys(options).forEach((key: string) => { if (options[key] && options[key] !== false) { args.push('--' + key); } @@ -73,14 +121,14 @@ utils.buildArgs = options => { * @param {Object} obj * @returns {Object} */ -utils.clone = obj => JSON.parse(JSON.stringify(obj)); +utils.clone = (obj: {}) => JSON.parse(JSON.stringify(obj)); /** * Get the file size in bytes. * * @returns {String} */ -utils.getFilesizeInBytes = file => { +utils.getFilesizeInBytes = (file: string) => { const stats = fs.statSync(file); const fileSizeInBytes = stats.size; return utils.prettyBytes(fileSizeInBytes); @@ -91,7 +139,7 @@ utils.getFilesizeInBytes = file => { * * @returns {Promise.} */ -utils.getFilesizeGzippedInBytes = file => { +utils.getFilesizeGzippedInBytes = (file: string) => { return new Promise(resolve => { const source = fs.createReadStream(file); source.pipe(gzipSize.stream()).on('gzip-size', size => { @@ -106,7 +154,7 @@ utils.getFilesizeGzippedInBytes = file => { * * @returns {String} */ -utils.prettyBytes = num => { +utils.prettyBytes = (num: number) => { const UNITS = ['B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']; if (!Number.isFinite(num)) { @@ -140,7 +188,7 @@ utils.prettyBytes = num => { * @param {Boolean} replaceInPlace * @returns {String} */ -utils.setFileNameMin = (file, output, publicFolder, replaceInPlace) => { +utils.setFileNameMin = (file: string, output: string, publicFolder: string, replaceInPlace: boolean) => { const filePath = file.substr(0, file.lastIndexOf('/') + 1); const fileWithoutPath = file.substr(file.lastIndexOf('/') + 1); let fileWithoutExtension = fileWithoutPath.substr(0, fileWithoutPath.lastIndexOf('.')); @@ -158,7 +206,7 @@ utils.setFileNameMin = (file, output, publicFolder, replaceInPlace) => { * * @param {Object} settings */ -utils.compressSingleFile = settings => { +utils.compressSingleFile = (settings: MinifierOptions) => { const content = settings.content ? settings.content : utils.getContentFromFiles(settings.input); return settings.sync ? utils.runSync({ settings, content }) : utils.runAsync({ settings, content }); }; @@ -169,7 +217,7 @@ utils.compressSingleFile = settings => { * @param {String|Array} input * @return {String} */ -utils.getContentFromFiles = input => { +utils.getContentFromFiles = (input: string) => { if (!Array.isArray(input)) { return fs.readFileSync(input, 'utf8'); } @@ -191,7 +239,10 @@ utils.getContentFromFiles = input => { * @param {Number} index - index of the file being processed * @return {String} */ -utils.runSync = ({ settings, content, index }) => settings.compressor({ settings, content, callback: null, index }); +utils.runSync = ({ settings, content, index }: MinifierOptions) => + settings && typeof settings.compressor !== 'string' + ? settings.compressor({ settings, content, callback: null, index }) + : null; /** * Run compressor in async. @@ -201,19 +252,21 @@ utils.runSync = ({ settings, content, index }) => settings.compressor({ settings * @param {Number} index - index of the file being processed * @return {Promise} */ -utils.runAsync = ({ settings, content, index }) => { +utils.runAsync = ({ settings, content, index }: MinifierOptions) => { return new Promise((resolve, reject) => { - settings.compressor({ - settings, - content, - callback: (err, min) => { - if (err) { - return reject(err); - } - resolve(min); - }, - index - }); + settings && typeof settings.compressor !== 'string' + ? settings.compressor({ + settings, + content, + callback: (err: Error, min: string) => { + if (err) { + return reject(err); + } + resolve(min); + }, + index + }) + : null; }); }; diff --git a/packages/utils/tsconfig-cjs.json b/packages/utils/tsconfig-cjs.json new file mode 100644 index 000000000..33830cb8a --- /dev/null +++ b/packages/utils/tsconfig-cjs.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "commonjs", + "outDir": "dist/cjs", + "target": "es2015" + }, + "include": ["./src"] +} diff --git a/packages/utils/tsconfig.json b/packages/utils/tsconfig.json new file mode 100644 index 000000000..876c1ae30 --- /dev/null +++ b/packages/utils/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "esnext", + "outDir": "dist/esm", + "target": "esnext" + }, + "include": ["./src"] +} diff --git a/packages/yui/__tests__/yui.test.js b/packages/yui/__tests__/yui.test.js deleted file mode 100644 index 2bd19973a..000000000 --- a/packages/yui/__tests__/yui.test.js +++ /dev/null @@ -1,121 +0,0 @@ -/*! - * node-minify - * Copyright(c) 2011-2022 Rodolphe Stoclin - * MIT Licensed - */ - -jest.setTimeout(30000); - -import childProcess from 'child_process'; -import minify from '../../core/src/core'; -import yui from '../../yui/src/yui'; -import { filesJS } from '../../../tests/files-path'; -import { runOneTest, tests } from '../../../tests/fixtures'; - -const compressorLabel = 'yui'; -const compressor = yui; - -describe('Package: YUI', () => { - tests.commonjs.forEach(options => { - runOneTest({ options, compressorLabel, compressor }); - }); - tests.commonjs.forEach(options => { - runOneTest({ options, compressorLabel, compressor, sync: true }); - }); - tests.commoncss.forEach(options => { - runOneTest({ options, compressorLabel, compressor }); - }); - tests.commoncss.forEach(options => { - runOneTest({ options, compressorLabel, compressor, sync: true }); - }); - test('should compress with some options', done => { - const options = {}; - options.minify = { - compressor: yui, - input: filesJS.oneFileWithWildcards, - output: filesJS.fileJSOut, - options: { - charset: 'utf8' - } - }; - - options.minify.callback = (err, min) => { - expect(err).toBeNull(); - expect(min).not.toBeNull(); - - done(); - }; - - minify(options.minify); - }); - - test('should catch an error if yui with bad options', () => { - const options = {}; - options.minify = { - compressor: yui, - type: 'js', - input: filesJS.oneFile, - output: filesJS.fileJSOut, - options: { - fake: true - } - }; - - return minify(options.minify).catch(err => { - return expect(err.toString()).toMatch('Error'); - }); - }); - - describe('Create sync errors', () => { - beforeAll(() => { - let spy = jest.spyOn(childProcess, 'spawnSync'); - spy.mockImplementation(() => { - throw new Error(); - }); - }); - test('should callback an error on spawnSync', () => { - const options = {}; - options.minify = { - compressor: yui, - input: filesJS.oneFile, - output: filesJS.fileJSOut, - sync: true, - options: { - fake: true - } - }; - return expect(minify(options.minify)).rejects.toThrow(); - }); - afterAll(() => { - jest.restoreAllMocks(); - }); - }); - - describe('Create async errors', () => { - beforeAll(() => { - let spy = jest.spyOn(childProcess, 'spawn'); - spy.mockImplementation(() => { - throw new Error(); - }); - }); - test('should callback an error on spawn', () => { - const options = {}; - options.minify = { - compressor: yui, - input: filesJS.oneFile, - output: filesJS.fileJSOut, - sync: false, - options: { - fake: true - }, - callback: () => {} - }; - const spy = jest.spyOn(options.minify, 'callback'); - expect(minify(options.minify)).rejects.toThrow(); - return minify(options.minify).catch(() => expect(spy).toHaveBeenCalled()); - }); - }); - afterAll(() => { - jest.restoreAllMocks(); - }); -}); diff --git a/packages/yui/__tests__/yui.test.ts b/packages/yui/__tests__/yui.test.ts new file mode 100644 index 000000000..9d2dcd4ed --- /dev/null +++ b/packages/yui/__tests__/yui.test.ts @@ -0,0 +1,128 @@ +/*! + * node-minify + * Copyright(c) 2011-2022 Rodolphe Stoclin + * MIT Licensed + */ + +import { afterAll, beforeAll, describe, expect, test, vi } from 'vitest'; +import childProcess from 'child_process'; +import minify from '../../core/src'; +import yui from '../src'; +import { filesJS } from '../../../tests/files-path'; +import { runOneTest, tests } from '../../../tests/fixtures'; +import { TESTS_TIMEOUT } from '../../../constants'; + +const compressorLabel = 'yui'; +const compressor = yui; + +describe( + 'Package: YUI', + () => { + tests.commonjs.forEach(options => { + runOneTest({ options, compressorLabel, compressor }); + }); + tests.commonjs.forEach(options => { + runOneTest({ options, compressorLabel, compressor, sync: true }); + }); + tests.commoncss.forEach(options => { + runOneTest({ options, compressorLabel, compressor }); + }); + tests.commoncss.forEach(options => { + runOneTest({ options, compressorLabel, compressor, sync: true }); + }); + test('should compress with some options', () => + new Promise(done => { + const options = {}; + options.minify = { + compressor: yui, + input: filesJS.oneFileWithWildcards, + output: filesJS.fileJSOut, + options: { + charset: 'utf8' + } + }; + + options.minify.callback = (err, min) => { + expect(err).toBeNull(); + expect(min).not.toBeNull(); + + done(); + }; + + minify(options.minify); + })); + + test('should catch an error if yui with bad options', () => { + const options = {}; + options.minify = { + compressor: yui, + type: 'js', + input: filesJS.oneFile, + output: filesJS.fileJSOut, + options: { + fake: true + } + }; + + return minify(options.minify).catch(err => { + return expect(err.toString()).toMatch('Error'); + }); + }); + + describe('Create sync errors', () => { + beforeAll(() => { + let spy = vi.spyOn(childProcess, 'spawnSync'); + spy.mockImplementation(() => { + throw new Error(); + }); + }); + test('should callback an error on spawnSync', () => { + const options = {}; + options.minify = { + compressor: yui, + input: filesJS.oneFile, + output: filesJS.fileJSOut, + sync: true, + options: { + fake: true + } + }; + return expect(minify(options.minify)).rejects.toThrow(); + }); + afterAll(() => { + vi.restoreAllMocks(); + }); + }); + + describe('Create async errors', () => { + beforeAll(() => { + let spy = vi.spyOn(childProcess, 'spawn'); + spy.mockImplementation(() => { + throw new Error(); + }); + }); + test('should callback an error on spawn', () => + new Promise(done => { + const options = {}; + options.minify = { + compressor: yui, + input: filesJS.oneFile, + output: filesJS.fileJSOut, + sync: false, + options: { + fake: true + }, + callback: () => {} + }; + const spy = vi.spyOn(options.minify, 'callback'); + expect(minify(options.minify)).rejects.toThrow(); + done(); + return minify(options.minify).catch(() => expect(spy).toHaveBeenCalled()); + })); + }); + afterAll(() => { + vi.restoreAllMocks(); + }); + }, + TESTS_TIMEOUT +); diff --git a/packages/yui/package.json b/packages/yui/package.json index c11ce3299..d882f6ba6 100644 --- a/packages/yui/package.json +++ b/packages/yui/package.json @@ -11,16 +11,29 @@ "author": "Rodolphe Stoclin ", "homepage": "https://github.com/srod/node-minify/tree/master/packages/yui#readme", "license": "MIT", - "main": "lib/yui.js", "engines": { "node": ">=14.0.0" }, "directories": { - "lib": "lib", + "lib": "dist", "test": "__tests__" }, + "exports": { + ".": { + "import": { + "types": "./dist/esm/types/index.d.ts", + "default": "./dist/esm/index.js" + }, + "require": { + "types": "./dist/cjs/types/index.d.ts", + "default": "./dist/cjs/index.js" + } + } + }, + "types": "./dist/cjs/types/index.d.ts", + "main": "./dist/cjs/index.js", "files": [ - "lib" + "dist/**/*" ], "publishConfig": { "access": "public" @@ -32,8 +45,16 @@ "bugs": { "url": "https://github.com/srod/node-minify/issues" }, + "scripts": { + "clean": "pnpm dlx rimraf dist", + "build": "npm run clean && tsc -p tsconfig.json && tsc -p tsconfig-cjs.json", + "prepack": "npm run build" + }, "dependencies": { - "@node-minify/run": "^7.0.0", - "@node-minify/utils": "^7.0.0" + "@node-minify/run": "workspace:*", + "@node-minify/utils": "workspace:*" + }, + "devDependencies": { + "@node-minify/types": "workspace:*" } } diff --git a/packages/yui/src/yui.js b/packages/yui/src/index.ts similarity index 55% rename from packages/yui/src/yui.js rename to packages/yui/src/index.ts index 21d0d12da..290af80f7 100644 --- a/packages/yui/src/yui.js +++ b/packages/yui/src/index.ts @@ -11,6 +11,28 @@ import path from 'path'; import { utils } from '@node-minify/utils'; import { runCommandLine } from '@node-minify/run'; +import { MinifierOptions, Options } from '@node-minify/types'; + +// interface Options { +// // sourceMap?: { filename: string }; +// // _sourceMap?: { url: string } | boolean; +// } + +// interface Settings { +// options: Options; +// content: string; +// output: string; +// type: string; +// sync: boolean; +// buffer: number; +// } + +// interface MinifierOptions { +// settings: Settings; +// content: string /* | Dictionary */; +// callback: Function; +// index: number; +// } /** * Module variables. @@ -25,12 +47,12 @@ const binYui = path.normalize(__dirname + '/binaries/yuicompressor-2.4.7.jar'); * @param {Function} callback */ -const minifyYUI = ({ settings, content, callback, index }) => { +const minifyYUI = ({ settings, content, callback, index }: MinifierOptions) => { return runCommandLine({ - args: yuiCommand(settings.type, settings.options), + args: yuiCommand(settings && settings.type, settings && settings.options), data: content, settings, - callback: (err, content) => { + callback: (err: Error, content: string) => { if (err) { if (callback) { return callback(err); @@ -38,7 +60,7 @@ const minifyYUI = ({ settings, content, callback, index }) => { throw err; } } - if (!settings.content) { + if (settings && !settings.content) { utils.writeFile({ file: settings.output, content, index }); } if (callback) { @@ -53,7 +75,7 @@ const minifyYUI = ({ settings, content, callback, index }) => { * YUI Compressor CSS command line. */ -const yuiCommand = (type = 'js', options) => { +const yuiCommand = (type = 'js', options?: Options) => { return ['-jar', '-Xss2048k', binYui, '--type', type].concat(utils.buildArgs(options || {})); }; @@ -61,4 +83,4 @@ const yuiCommand = (type = 'js', options) => { * Expose `minifyYUI()`. */ -module.exports = minifyYUI; +export default minifyYUI; diff --git a/packages/yui/tsconfig-cjs.json b/packages/yui/tsconfig-cjs.json new file mode 100644 index 000000000..33830cb8a --- /dev/null +++ b/packages/yui/tsconfig-cjs.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "commonjs", + "outDir": "dist/cjs", + "target": "es2015" + }, + "include": ["./src"] +} diff --git a/packages/yui/tsconfig.json b/packages/yui/tsconfig.json new file mode 100644 index 000000000..876c1ae30 --- /dev/null +++ b/packages/yui/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "esnext", + "outDir": "dist/esm", + "target": "esnext" + }, + "include": ["./src"] +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0822f173b..594dd9f46 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,9 +4,6 @@ importers: .: specifiers: - '@babel/cli': 7.19.3 - '@babel/core': 7.20.5 - '@babel/preset-env': 7.20.2 '@node-minify/babel-minify': workspace:* '@node-minify/clean-css': workspace:* '@node-minify/cli': workspace:* @@ -25,23 +22,20 @@ importers: '@node-minify/uglify-js': workspace:* '@node-minify/utils': workspace:* '@node-minify/yui': workspace:* - babel-core: 6.26.3 - babel-jest: 29.3.1 - babel-preset-env: 1.7.0 + '@types/node': 18.11.10 + '@vitest/coverage-c8': 0.25.3 eslint: 8.29.0 eslint-config-prettier: 8.5.0 eslint-plugin-prettier: 4.2.1 husky: 8.0.2 - jest: 27.5.1 lerna: 6.1.0 lint-staged: 13.1.0 node-notifier: 10.0.1 prettier: 2.8.0 rimraf: 3.0.2 + typescript: 4.9.3 + vitest: 0.25.3 devDependencies: - '@babel/cli': 7.19.3_@babel+core@7.20.5 - '@babel/core': 7.20.5 - '@babel/preset-env': 7.20.2_@babel+core@7.20.5 '@node-minify/babel-minify': link:packages/babel-minify '@node-minify/clean-css': link:packages/clean-css '@node-minify/cli': link:packages/cli @@ -60,19 +54,19 @@ importers: '@node-minify/uglify-js': link:packages/uglify-js '@node-minify/utils': link:packages/utils '@node-minify/yui': link:packages/yui - babel-core: 6.26.3 - babel-jest: 29.3.1_@babel+core@7.20.5 - babel-preset-env: 1.7.0 + '@types/node': 18.11.10 + '@vitest/coverage-c8': 0.25.3 eslint: 8.29.0 eslint-config-prettier: 8.5.0_eslint@8.29.0 eslint-plugin-prettier: 4.2.1_nrhoyyjffvfyk4vtlt5destxgm husky: 8.0.2 - jest: 27.5.1_node-notifier@10.0.1 lerna: 6.1.0 lint-staged: 13.1.0 node-notifier: 10.0.1 prettier: 2.8.0 rimraf: 3.0.2 + typescript: 4.9.3 + vitest: 0.25.3 docs: specifiers: @@ -95,185 +89,236 @@ importers: packages/babel-minify: specifiers: - '@node-minify/utils': ^7.0.0 + '@node-minify/types': workspace:* + '@node-minify/utils': workspace:* + '@types/babel-core': ^6.25.7 babel-core: 6.26.3 + babel-preset-env: 1.7.0 babel-preset-minify: 0.5.2 dependencies: - '@node-minify/utils': 7.1.0 + '@node-minify/utils': link:../utils babel-core: 6.26.3 babel-preset-minify: 0.5.2 + devDependencies: + '@node-minify/types': link:../types + '@types/babel-core': 6.25.7 + babel-preset-env: 1.7.0 packages/clean-css: specifiers: - '@node-minify/utils': ^7.0.0 + '@node-minify/types': workspace:* + '@node-minify/utils': workspace:* + '@types/clean-css': ^4.2.6 clean-css: 5.3.1 dependencies: - '@node-minify/utils': 7.1.0 + '@node-minify/utils': link:../utils clean-css: 5.3.1 + devDependencies: + '@node-minify/types': link:../types + '@types/clean-css': 4.2.6 packages/cli: specifiers: - '@node-minify/core': ^7.0.0 - '@node-minify/utils': ^7.0.0 + '@node-minify/core': workspace:* + '@node-minify/types': workspace:* + '@node-minify/utils': workspace:* + '@types/chalk': ^2.2.0 + '@types/ora': ^3.2.0 chalk: 4.1.2 commander: 9.4.1 ora: 5.4.1 update-notifier: 6.0.2 dependencies: - '@node-minify/core': 7.1.0 - '@node-minify/utils': 7.1.0 + '@node-minify/core': link:../core + '@node-minify/utils': link:../utils chalk: 4.1.2 commander: 9.4.1 ora: 5.4.1 update-notifier: 6.0.2 + devDependencies: + '@node-minify/types': link:../types + '@types/chalk': 2.2.0 + '@types/ora': 3.2.0 packages/core: specifiers: - '@node-minify/utils': ^7.0.0 + '@node-minify/types': workspace:* + '@node-minify/utils': workspace:* + '@types/mkdirp': ^1.0.2 globby: 11.1.0 mkdirp: 1.0.4 dependencies: - '@node-minify/utils': 7.1.0 + '@node-minify/utils': link:../utils globby: 11.1.0 mkdirp: 1.0.4 + devDependencies: + '@node-minify/types': link:../types + '@types/mkdirp': 1.0.2 packages/crass: specifiers: - '@node-minify/utils': ^7.0.0 + '@node-minify/types': workspace:* + '@node-minify/utils': workspace:* crass: 0.12.3 dependencies: - '@node-minify/utils': 7.1.0 + '@node-minify/utils': link:../utils crass: 0.12.3 + devDependencies: + '@node-minify/types': link:../types packages/cssnano: specifiers: - '@node-minify/utils': ^7.0.0 + '@node-minify/types': workspace:* + '@node-minify/utils': workspace:* cssnano: ^5.0.0 postcss: 8.4.19 dependencies: - '@node-minify/utils': 7.1.0 + '@node-minify/utils': link:../utils cssnano: 5.1.14_postcss@8.4.19 postcss: 8.4.19 + devDependencies: + '@node-minify/types': link:../types packages/csso: specifiers: - '@node-minify/utils': ^7.0.0 + '@node-minify/types': workspace:* + '@node-minify/utils': workspace:* + '@types/csso': ^5.0.0 csso: 5.0.5 dependencies: - '@node-minify/utils': 7.1.0 + '@node-minify/utils': link:../utils csso: 5.0.5 + devDependencies: + '@node-minify/types': link:../types + '@types/csso': 5.0.0 packages/google-closure-compiler: specifiers: - '@node-minify/run': ^7.0.0 - '@node-minify/utils': ^7.0.0 + '@node-minify/run': workspace:* + '@node-minify/types': workspace:* + '@node-minify/utils': workspace:* google-closure-compiler-java: 20221102.0.1 dependencies: - '@node-minify/run': 7.1.0 - '@node-minify/utils': 7.1.0 + '@node-minify/run': link:../run + '@node-minify/utils': link:../utils google-closure-compiler-java: 20221102.0.1 + devDependencies: + '@node-minify/types': link:../types packages/html-minifier: specifiers: - '@node-minify/utils': ^7.0.0 + '@node-minify/types': workspace:* + '@node-minify/utils': workspace:* + '@types/html-minifier': ^4.0.2 html-minifier: 4.0.0 dependencies: - '@node-minify/utils': 7.1.0 + '@node-minify/utils': link:../utils html-minifier: 4.0.0 + devDependencies: + '@node-minify/types': link:../types + '@types/html-minifier': 4.0.2 packages/jsonminify: specifiers: - '@node-minify/utils': ^7.0.0 + '@node-minify/types': workspace:* + '@node-minify/utils': workspace:* + '@types/jsonminify': ^0.4.1 jsonminify: 0.4.2 dependencies: - '@node-minify/utils': 7.1.0 + '@node-minify/utils': link:../utils jsonminify: 0.4.2 + devDependencies: + '@node-minify/types': link:../types + '@types/jsonminify': 0.4.1 packages/no-compress: specifiers: - '@node-minify/utils': ^7.0.0 + '@node-minify/types': workspace:* + '@node-minify/utils': workspace:* dependencies: - '@node-minify/utils': 7.1.0 + '@node-minify/utils': link:../utils + devDependencies: + '@node-minify/types': link:../types packages/run: - specifiers: {} + specifiers: + '@node-minify/types': workspace:* + devDependencies: + '@node-minify/types': link:../types packages/sqwish: specifiers: - '@node-minify/utils': ^7.0.0 + '@node-minify/types': workspace:* + '@node-minify/utils': workspace:* sqwish: 0.2.2 dependencies: - '@node-minify/utils': 7.1.0 + '@node-minify/utils': link:../utils sqwish: 0.2.2 + devDependencies: + '@node-minify/types': link:../types packages/terser: specifiers: - '@node-minify/utils': ^7.0.0 + '@node-minify/types': workspace:* + '@node-minify/utils': workspace:* terser: 5.16.1 dependencies: - '@node-minify/utils': 7.1.0 + '@node-minify/utils': link:../utils terser: 5.16.1 + devDependencies: + '@node-minify/types': link:../types + + packages/types: + specifiers: {} packages/uglify-es: specifiers: - '@node-minify/utils': ^7.0.0 + '@node-minify/types': workspace:* + '@node-minify/utils': workspace:* + '@types/uglify-es': ^3.0.0 uglify-es: 3.3.9 dependencies: - '@node-minify/utils': 7.1.0 + '@node-minify/utils': link:../utils uglify-es: 3.3.9 + devDependencies: + '@node-minify/types': link:../types + '@types/uglify-es': 3.0.0 packages/uglify-js: specifiers: - '@node-minify/utils': ^7.0.0 + '@node-minify/types': workspace:* + '@node-minify/utils': workspace:* + '@types/uglify-js': ^3.17.1 uglify-js: 3.17.4 dependencies: - '@node-minify/utils': 7.1.0 + '@node-minify/utils': link:../utils uglify-js: 3.17.4 + devDependencies: + '@node-minify/types': link:../types + '@types/uglify-js': 3.17.1 packages/utils: specifiers: + '@node-minify/types': workspace:* gzip-size: 6.0.0 dependencies: gzip-size: 6.0.0 + devDependencies: + '@node-minify/types': link:../types packages/yui: specifiers: - '@node-minify/run': ^7.0.0 - '@node-minify/utils': ^7.0.0 + '@node-minify/run': workspace:* + '@node-minify/types': workspace:* + '@node-minify/utils': workspace:* dependencies: - '@node-minify/run': 7.1.0 - '@node-minify/utils': 7.1.0 + '@node-minify/run': link:../run + '@node-minify/utils': link:../utils + devDependencies: + '@node-minify/types': link:../types packages: - /@ampproject/remapping/2.2.0: - resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/gen-mapping': 0.1.1 - '@jridgewell/trace-mapping': 0.3.17 - dev: true - - /@babel/cli/7.19.3_@babel+core@7.20.5: - resolution: {integrity: sha512-643/TybmaCAe101m2tSVHi9UKpETXP9c/Ff4mD2tAwkdP6esKIfaauZFc67vGEM6r9fekbEGid+sZhbEnSe3dg==} - engines: {node: '>=6.9.0'} - hasBin: true - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@jridgewell/trace-mapping': 0.3.17 - commander: 4.1.1 - convert-source-map: 1.9.0 - fs-readdir-recursive: 1.1.0 - glob: 7.2.3 - make-dir: 2.1.0 - slash: 2.0.0 - optionalDependencies: - '@nicolo-ribaudo/chokidar-2': 2.1.8-no-fsevents.3 - chokidar: 3.5.3 - dev: true - /@babel/code-frame/7.18.6: resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} engines: {node: '>=6.9.0'} @@ -281,1578 +326,208 @@ packages: '@babel/highlight': 7.18.6 dev: true - /@babel/compat-data/7.20.5: - resolution: {integrity: sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==} + /@babel/helper-validator-identifier/7.19.1: + resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} engines: {node: '>=6.9.0'} dev: true - /@babel/core/7.20.5: - resolution: {integrity: sha512-UdOWmk4pNWTm/4DlPUl/Pt4Gz4rcEMb7CY0Y3eJl5Yz1vI8ZJGmHWaVE55LoxRjdpx0z259GE9U5STA9atUinQ==} + /@babel/highlight/7.18.6: + resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} engines: {node: '>=6.9.0'} dependencies: - '@ampproject/remapping': 2.2.0 - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.20.5 - '@babel/helper-compilation-targets': 7.20.0_@babel+core@7.20.5 - '@babel/helper-module-transforms': 7.20.2 - '@babel/helpers': 7.20.6 - '@babel/parser': 7.20.5 - '@babel/template': 7.18.10 - '@babel/traverse': 7.20.5 - '@babel/types': 7.20.5 - convert-source-map: 1.9.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.1 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color + '@babel/helper-validator-identifier': 7.19.1 + chalk: 2.4.2 + js-tokens: 4.0.0 dev: true - /@babel/generator/7.20.5: - resolution: {integrity: sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA==} + /@babel/runtime/7.20.6: + resolution: {integrity: sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.5 - '@jridgewell/gen-mapping': 0.3.2 - jsesc: 2.5.2 - dev: true + regenerator-runtime: 0.13.11 + dev: false - /@babel/helper-annotate-as-pure/7.18.6: - resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.20.5 + /@bcoe/v8-coverage/0.2.3: + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@babel/helper-builder-binary-assignment-operator-visitor/7.18.9: - resolution: {integrity: sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-explode-assignable-expression': 7.18.6 - '@babel/types': 7.20.5 + /@esbuild/android-arm/0.15.18: + resolution: {integrity: sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true dev: true + optional: true - /@babel/helper-compilation-targets/7.20.0_@babel+core@7.20.5: - resolution: {integrity: sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/compat-data': 7.20.5 - '@babel/core': 7.20.5 - '@babel/helper-validator-option': 7.18.6 - browserslist: 4.21.4 - semver: 6.3.0 + /@esbuild/linux-loong64/0.15.18: + resolution: {integrity: sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true dev: true + optional: true - /@babel/helper-create-class-features-plugin/7.20.5_@babel+core@7.20.5: - resolution: {integrity: sha512-3RCdA/EmEaikrhayahwToF0fpweU/8o2p8vhc1c/1kftHOdTKuC65kik/TLc+qfbS8JKw4qqJbne4ovICDhmww==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.19.0 - '@babel/helper-member-expression-to-functions': 7.18.9 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-replace-supers': 7.19.1 - '@babel/helper-split-export-declaration': 7.18.6 + /@eslint/eslintrc/1.3.3: + resolution: {integrity: sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.4.1 + globals: 13.18.0 + ignore: 5.2.1 + 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 - /@babel/helper-create-regexp-features-plugin/7.20.5_@babel+core@7.20.5: - resolution: {integrity: sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-annotate-as-pure': 7.18.6 - regexpu-core: 5.2.2 + /@gar/promisify/1.1.3: + resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} dev: true - /@babel/helper-define-polyfill-provider/0.3.3_@babel+core@7.20.5: - resolution: {integrity: sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==} + /@headlessui/react/1.7.4_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-D8n5yGCF3WIkPsjEYeM8knn9jQ70bigGGb5aUvN6y4BGxcT3OcOQOKcM3zRGllRCZCFxCZyQvYJF6ZE7bQUOyQ==} + engines: {node: '>=10'} peerDependencies: - '@babel/core': ^7.4.0-0 + react: ^16 || ^17 || ^18 + react-dom: ^16 || ^17 || ^18 + dependencies: + client-only: 0.0.1 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + dev: false + + /@humanwhocodes/config-array/0.11.7: + resolution: {integrity: sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==} + engines: {node: '>=10.10.0'} dependencies: - '@babel/core': 7.20.5 - '@babel/helper-compilation-targets': 7.20.0_@babel+core@7.20.5 - '@babel/helper-plugin-utils': 7.20.2 + '@humanwhocodes/object-schema': 1.2.1 debug: 4.3.4 - lodash.debounce: 4.0.8 - resolve: 1.22.1 - semver: 6.3.0 + minimatch: 3.1.2 transitivePeerDependencies: - supports-color dev: true - /@babel/helper-environment-visitor/7.18.9: - resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} - engines: {node: '>=6.9.0'} + /@humanwhocodes/module-importer/1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} dev: true - /@babel/helper-explode-assignable-expression/7.18.6: - resolution: {integrity: sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.20.5 + /@humanwhocodes/object-schema/1.2.1: + resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: true - /@babel/helper-function-name/7.19.0: - resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==} + /@hutson/parse-repository-url/3.0.2: + resolution: {integrity: sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.18.10 - '@babel/types': 7.20.5 dev: true - /@babel/helper-hoist-variables/7.18.6: - resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.20.5 + /@isaacs/string-locale-compare/1.1.0: + resolution: {integrity: sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==} dev: true - /@babel/helper-member-expression-to-functions/7.18.9: - resolution: {integrity: sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.20.5 + /@istanbuljs/schema/0.1.3: + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} dev: true - /@babel/helper-module-imports/7.18.6: - resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} - engines: {node: '>=6.9.0'} + /@jridgewell/gen-mapping/0.3.2: + resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} + engines: {node: '>=6.0.0'} dependencies: - '@babel/types': 7.20.5 - dev: true + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.14 + '@jridgewell/trace-mapping': 0.3.17 + dev: false - /@babel/helper-module-transforms/7.20.2: - resolution: {integrity: sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-module-imports': 7.18.6 - '@babel/helper-simple-access': 7.20.2 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/helper-validator-identifier': 7.19.1 - '@babel/template': 7.18.10 - '@babel/traverse': 7.20.5 - '@babel/types': 7.20.5 - transitivePeerDependencies: - - supports-color - dev: true + /@jridgewell/resolve-uri/3.1.0: + resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} + engines: {node: '>=6.0.0'} - /@babel/helper-optimise-call-expression/7.18.6: - resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} - engines: {node: '>=6.9.0'} + /@jridgewell/set-array/1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + dev: false + + /@jridgewell/source-map/0.3.2: + resolution: {integrity: sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==} dependencies: - '@babel/types': 7.20.5 - dev: true + '@jridgewell/gen-mapping': 0.3.2 + '@jridgewell/trace-mapping': 0.3.17 + dev: false - /@babel/helper-plugin-utils/7.20.2: - resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} - engines: {node: '>=6.9.0'} - dev: true + /@jridgewell/sourcemap-codec/1.4.14: + resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} - /@babel/helper-remap-async-to-generator/7.18.9_@babel+core@7.20.5: - resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + /@jridgewell/trace-mapping/0.3.17: + resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} + dependencies: + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.14 + + /@lerna/add/6.1.0: + resolution: {integrity: sha512-f2cAeS1mE/p7QvSRn5TCgdUXw6QVbu8PeRxaTOxTThhTdJIWdXZfY00QjAsU6jw1PdYXK1qGUSwWOPkdR16mBg==} + engines: {node: ^14.15.0 || >=16.0.0} dependencies: - '@babel/core': 7.20.5 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-wrap-function': 7.20.5 - '@babel/types': 7.20.5 + '@lerna/bootstrap': 6.1.0 + '@lerna/command': 6.1.0 + '@lerna/filter-options': 6.1.0 + '@lerna/npm-conf': 6.1.0 + '@lerna/validation-error': 6.1.0 + dedent: 0.7.0 + npm-package-arg: 8.1.1 + p-map: 4.0.0 + pacote: 13.6.2 + semver: 7.3.8 transitivePeerDependencies: + - bluebird - supports-color dev: true - /@babel/helper-replace-supers/7.19.1: - resolution: {integrity: sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==} - engines: {node: '>=6.9.0'} + /@lerna/bootstrap/6.1.0: + resolution: {integrity: sha512-aDxKqgxexVj/Z0B1aPu7P1iPbPqhk1FPkl/iayCmPlkAh90pYEH0uVytGzi1hFB5iXEfG7Pa6azGQywUodx/1g==} + engines: {node: ^14.15.0 || >=16.0.0} dependencies: - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-member-expression-to-functions': 7.18.9 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/traverse': 7.20.5 - '@babel/types': 7.20.5 + '@lerna/command': 6.1.0 + '@lerna/filter-options': 6.1.0 + '@lerna/has-npm-version': 6.1.0 + '@lerna/npm-install': 6.1.0 + '@lerna/package-graph': 6.1.0 + '@lerna/pulse-till-done': 6.1.0 + '@lerna/rimraf-dir': 6.1.0 + '@lerna/run-lifecycle': 6.1.0 + '@lerna/run-topologically': 6.1.0 + '@lerna/symlink-binary': 6.1.0 + '@lerna/symlink-dependencies': 6.1.0 + '@lerna/validation-error': 6.1.0 + '@npmcli/arborist': 5.3.0 + dedent: 0.7.0 + get-port: 5.1.1 + multimatch: 5.0.0 + npm-package-arg: 8.1.1 + npmlog: 6.0.2 + p-map: 4.0.0 + p-map-series: 2.1.0 + p-waterfall: 2.1.1 + semver: 7.3.8 transitivePeerDependencies: + - bluebird - supports-color dev: true - /@babel/helper-simple-access/7.20.2: - resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} - engines: {node: '>=6.9.0'} + /@lerna/changed/6.1.0: + resolution: {integrity: sha512-p7C2tf1scmvoUC1Osck/XIKVKXAQ8m8neL8/rfgKSYsvUVjsOB1LbF5HH1VUZntE6S4OxkRxUQGkAHVf5xrGqw==} + engines: {node: ^14.15.0 || >=16.0.0} dependencies: - '@babel/types': 7.20.5 - dev: true - - /@babel/helper-skip-transparent-expression-wrappers/7.20.0: - resolution: {integrity: sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.20.5 - dev: true - - /@babel/helper-split-export-declaration/7.18.6: - resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.20.5 - dev: true - - /@babel/helper-string-parser/7.19.4: - resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-validator-identifier/7.19.1: - resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-validator-option/7.18.6: - resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-wrap-function/7.20.5: - resolution: {integrity: sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-function-name': 7.19.0 - '@babel/template': 7.18.10 - '@babel/traverse': 7.20.5 - '@babel/types': 7.20.5 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helpers/7.20.6: - resolution: {integrity: sha512-Pf/OjgfgFRW5bApskEz5pvidpim7tEDPlFtKcNRXWmfHGn9IEI2W2flqRQXTFb7gIPTyK++N6rVHuwKut4XK6w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.18.10 - '@babel/traverse': 7.20.5 - '@babel/types': 7.20.5 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/highlight/7.18.6: - resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.19.1 - chalk: 2.4.2 - js-tokens: 4.0.0 - dev: true - - /@babel/parser/7.20.5: - resolution: {integrity: sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.20.5 - dev: true - - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.18.6_@babel+core@7.20.5: - resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.18.9_@babel+core@7.20.5: - resolution: {integrity: sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.13.0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.20.5 - dev: true - - /@babel/plugin-proposal-async-generator-functions/7.20.1_@babel+core@7.20.5: - resolution: {integrity: sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.20.5 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.20.5 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-proposal-class-properties/7.18.6_@babel+core@7.20.5: - resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-create-class-features-plugin': 7.20.5_@babel+core@7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-proposal-class-static-block/7.18.6_@babel+core@7.20.5: - resolution: {integrity: sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.12.0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-create-class-features-plugin': 7.20.5_@babel+core@7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.20.5 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-proposal-dynamic-import/7.18.6_@babel+core@7.20.5: - resolution: {integrity: sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.20.5 - dev: true - - /@babel/plugin-proposal-export-namespace-from/7.18.9_@babel+core@7.20.5: - resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.20.5 - dev: true - - /@babel/plugin-proposal-json-strings/7.18.6_@babel+core@7.20.5: - resolution: {integrity: sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.20.5 - dev: true - - /@babel/plugin-proposal-logical-assignment-operators/7.18.9_@babel+core@7.20.5: - resolution: {integrity: sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.20.5 - dev: true - - /@babel/plugin-proposal-nullish-coalescing-operator/7.18.6_@babel+core@7.20.5: - resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.20.5 - dev: true - - /@babel/plugin-proposal-numeric-separator/7.18.6_@babel+core@7.20.5: - resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.20.5 - dev: true - - /@babel/plugin-proposal-object-rest-spread/7.20.2_@babel+core@7.20.5: - resolution: {integrity: sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.20.5 - '@babel/core': 7.20.5 - '@babel/helper-compilation-targets': 7.20.0_@babel+core@7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.20.5 - '@babel/plugin-transform-parameters': 7.20.5_@babel+core@7.20.5 - dev: true - - /@babel/plugin-proposal-optional-catch-binding/7.18.6_@babel+core@7.20.5: - resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.20.5 - dev: true - - /@babel/plugin-proposal-optional-chaining/7.18.9_@babel+core@7.20.5: - resolution: {integrity: sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.20.5 - dev: true - - /@babel/plugin-proposal-private-methods/7.18.6_@babel+core@7.20.5: - resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-create-class-features-plugin': 7.20.5_@babel+core@7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-proposal-private-property-in-object/7.20.5_@babel+core@7.20.5: - resolution: {integrity: sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-create-class-features-plugin': 7.20.5_@babel+core@7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.20.5 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-proposal-unicode-property-regex/7.18.6_@babel+core@7.20.5: - resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} - engines: {node: '>=4'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-create-regexp-features-plugin': 7.20.5_@babel+core@7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.20.5: - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.20.5: - resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.20.5: - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.20.5: - resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.20.5: - resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.20.5: - resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-import-assertions/7.20.0_@babel+core@7.20.5: - resolution: {integrity: sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.20.5: - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.20.5: - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.20.5: - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.20.5: - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.20.5: - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.20.5: - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.20.5: - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.20.5: - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.20.5: - resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.20.5: - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-typescript/7.20.0_@babel+core@7.20.5: - resolution: {integrity: sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-transform-arrow-functions/7.18.6_@babel+core@7.20.5: - resolution: {integrity: sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-transform-async-to-generator/7.18.6_@babel+core@7.20.5: - resolution: {integrity: sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-module-imports': 7.18.6 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.20.5 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-transform-block-scoped-functions/7.18.6_@babel+core@7.20.5: - resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-transform-block-scoping/7.20.5_@babel+core@7.20.5: - resolution: {integrity: sha512-WvpEIW9Cbj9ApF3yJCjIEEf1EiNJLtXagOrL5LNWEZOo3jv8pmPoYTSNJQvqej8OavVlgOoOPw6/htGZro6IkA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-transform-classes/7.20.2_@babel+core@7.20.5: - resolution: {integrity: sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-compilation-targets': 7.20.0_@babel+core@7.20.5 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.19.0 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-replace-supers': 7.19.1 - '@babel/helper-split-export-declaration': 7.18.6 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-transform-computed-properties/7.18.9_@babel+core@7.20.5: - resolution: {integrity: sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-transform-destructuring/7.20.2_@babel+core@7.20.5: - resolution: {integrity: sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-transform-dotall-regex/7.18.6_@babel+core@7.20.5: - resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-create-regexp-features-plugin': 7.20.5_@babel+core@7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-transform-duplicate-keys/7.18.9_@babel+core@7.20.5: - resolution: {integrity: sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-transform-exponentiation-operator/7.18.6_@babel+core@7.20.5: - resolution: {integrity: sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.18.9 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-transform-for-of/7.18.8_@babel+core@7.20.5: - resolution: {integrity: sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-transform-function-name/7.18.9_@babel+core@7.20.5: - resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-compilation-targets': 7.20.0_@babel+core@7.20.5 - '@babel/helper-function-name': 7.19.0 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-transform-literals/7.18.9_@babel+core@7.20.5: - resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-transform-member-expression-literals/7.18.6_@babel+core@7.20.5: - resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-transform-modules-amd/7.19.6_@babel+core@7.20.5: - resolution: {integrity: sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-module-transforms': 7.20.2 - '@babel/helper-plugin-utils': 7.20.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-transform-modules-commonjs/7.19.6_@babel+core@7.20.5: - resolution: {integrity: sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-module-transforms': 7.20.2 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-simple-access': 7.20.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-transform-modules-systemjs/7.19.6_@babel+core@7.20.5: - resolution: {integrity: sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-module-transforms': 7.20.2 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-validator-identifier': 7.19.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-transform-modules-umd/7.18.6_@babel+core@7.20.5: - resolution: {integrity: sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-module-transforms': 7.20.2 - '@babel/helper-plugin-utils': 7.20.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-transform-named-capturing-groups-regex/7.20.5_@babel+core@7.20.5: - resolution: {integrity: sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-create-regexp-features-plugin': 7.20.5_@babel+core@7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-transform-new-target/7.18.6_@babel+core@7.20.5: - resolution: {integrity: sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-transform-object-super/7.18.6_@babel+core@7.20.5: - resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-replace-supers': 7.19.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-transform-parameters/7.20.5_@babel+core@7.20.5: - resolution: {integrity: sha512-h7plkOmcndIUWXZFLgpbrh2+fXAi47zcUX7IrOQuZdLD0I0KvjJ6cvo3BEcAOsDOcZhVKGJqv07mkSqK0y2isQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-transform-property-literals/7.18.6_@babel+core@7.20.5: - resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-transform-regenerator/7.20.5_@babel+core@7.20.5: - resolution: {integrity: sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - regenerator-transform: 0.15.1 - dev: true - - /@babel/plugin-transform-reserved-words/7.18.6_@babel+core@7.20.5: - resolution: {integrity: sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-transform-shorthand-properties/7.18.6_@babel+core@7.20.5: - resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-transform-spread/7.19.0_@babel+core@7.20.5: - resolution: {integrity: sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - dev: true - - /@babel/plugin-transform-sticky-regex/7.18.6_@babel+core@7.20.5: - resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-transform-template-literals/7.18.9_@babel+core@7.20.5: - resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-transform-typeof-symbol/7.18.9_@babel+core@7.20.5: - resolution: {integrity: sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-transform-unicode-escapes/7.18.10_@babel+core@7.20.5: - resolution: {integrity: sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-transform-unicode-regex/7.18.6_@babel+core@7.20.5: - resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-create-regexp-features-plugin': 7.20.5_@babel+core@7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/preset-env/7.20.2_@babel+core@7.20.5: - resolution: {integrity: sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.20.5 - '@babel/core': 7.20.5 - '@babel/helper-compilation-targets': 7.20.0_@babel+core@7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-validator-option': 7.18.6 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.18.9_@babel+core@7.20.5 - '@babel/plugin-proposal-async-generator-functions': 7.20.1_@babel+core@7.20.5 - '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-proposal-class-static-block': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-proposal-dynamic-import': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-proposal-export-namespace-from': 7.18.9_@babel+core@7.20.5 - '@babel/plugin-proposal-json-strings': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-proposal-logical-assignment-operators': 7.18.9_@babel+core@7.20.5 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-proposal-numeric-separator': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-proposal-object-rest-spread': 7.20.2_@babel+core@7.20.5 - '@babel/plugin-proposal-optional-catch-binding': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.20.5 - '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-proposal-private-property-in-object': 7.20.5_@babel+core@7.20.5 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.20.5 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.20.5 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.20.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.20.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.20.5 - '@babel/plugin-syntax-import-assertions': 7.20.0_@babel+core@7.20.5 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.20.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.20.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.20.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.20.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.20.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.20.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.20.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.20.5 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.20.5 - '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-transform-async-to-generator': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-transform-block-scoped-functions': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-transform-block-scoping': 7.20.5_@babel+core@7.20.5 - '@babel/plugin-transform-classes': 7.20.2_@babel+core@7.20.5 - '@babel/plugin-transform-computed-properties': 7.18.9_@babel+core@7.20.5 - '@babel/plugin-transform-destructuring': 7.20.2_@babel+core@7.20.5 - '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-transform-duplicate-keys': 7.18.9_@babel+core@7.20.5 - '@babel/plugin-transform-exponentiation-operator': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.20.5 - '@babel/plugin-transform-function-name': 7.18.9_@babel+core@7.20.5 - '@babel/plugin-transform-literals': 7.18.9_@babel+core@7.20.5 - '@babel/plugin-transform-member-expression-literals': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-transform-modules-amd': 7.19.6_@babel+core@7.20.5 - '@babel/plugin-transform-modules-commonjs': 7.19.6_@babel+core@7.20.5 - '@babel/plugin-transform-modules-systemjs': 7.19.6_@babel+core@7.20.5 - '@babel/plugin-transform-modules-umd': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-transform-named-capturing-groups-regex': 7.20.5_@babel+core@7.20.5 - '@babel/plugin-transform-new-target': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-transform-object-super': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-transform-parameters': 7.20.5_@babel+core@7.20.5 - '@babel/plugin-transform-property-literals': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-transform-regenerator': 7.20.5_@babel+core@7.20.5 - '@babel/plugin-transform-reserved-words': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-transform-spread': 7.19.0_@babel+core@7.20.5 - '@babel/plugin-transform-sticky-regex': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.20.5 - '@babel/plugin-transform-typeof-symbol': 7.18.9_@babel+core@7.20.5 - '@babel/plugin-transform-unicode-escapes': 7.18.10_@babel+core@7.20.5 - '@babel/plugin-transform-unicode-regex': 7.18.6_@babel+core@7.20.5 - '@babel/preset-modules': 0.1.5_@babel+core@7.20.5 - '@babel/types': 7.20.5 - babel-plugin-polyfill-corejs2: 0.3.3_@babel+core@7.20.5 - babel-plugin-polyfill-corejs3: 0.6.0_@babel+core@7.20.5 - babel-plugin-polyfill-regenerator: 0.4.1_@babel+core@7.20.5 - core-js-compat: 3.26.1 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/preset-modules/0.1.5_@babel+core@7.20.5: - resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.20.5 - '@babel/types': 7.20.5 - esutils: 2.0.3 - dev: true - - /@babel/runtime/7.20.6: - resolution: {integrity: sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA==} - engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.13.11 - - /@babel/template/7.18.10: - resolution: {integrity: sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.18.6 - '@babel/parser': 7.20.5 - '@babel/types': 7.20.5 - dev: true - - /@babel/traverse/7.20.5: - resolution: {integrity: sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.20.5 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.19.0 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.20.5 - '@babel/types': 7.20.5 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/types/7.20.5: - resolution: {integrity: sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.19.4 - '@babel/helper-validator-identifier': 7.19.1 - to-fast-properties: 2.0.0 - dev: true - - /@bcoe/v8-coverage/0.2.3: - resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - dev: true - - /@eslint/eslintrc/1.3.3: - resolution: {integrity: sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - ajv: 6.12.6 - debug: 4.3.4 - espree: 9.4.1 - globals: 13.18.0 - ignore: 5.2.1 - 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 - - /@gar/promisify/1.1.3: - resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} - dev: true - - /@headlessui/react/1.7.4_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-D8n5yGCF3WIkPsjEYeM8knn9jQ70bigGGb5aUvN6y4BGxcT3OcOQOKcM3zRGllRCZCFxCZyQvYJF6ZE7bQUOyQ==} - engines: {node: '>=10'} - peerDependencies: - react: ^16 || ^17 || ^18 - react-dom: ^16 || ^17 || ^18 - dependencies: - client-only: 0.0.1 - react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - dev: false - - /@humanwhocodes/config-array/0.11.7: - resolution: {integrity: sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==} - engines: {node: '>=10.10.0'} - dependencies: - '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.4 - 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 - - /@hutson/parse-repository-url/3.0.2: - resolution: {integrity: sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==} - engines: {node: '>=6.9.0'} - dev: true - - /@isaacs/string-locale-compare/1.1.0: - resolution: {integrity: sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==} - 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/27.5.1: - resolution: {integrity: sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.5.1 - '@types/node': 18.11.10 - chalk: 4.1.2 - jest-message-util: 27.5.1 - jest-util: 27.5.1 - slash: 3.0.0 - dev: true - - /@jest/core/27.5.1_node-notifier@10.0.1: - resolution: {integrity: sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/console': 27.5.1 - '@jest/reporters': 27.5.1_node-notifier@10.0.1 - '@jest/test-result': 27.5.1 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 18.11.10 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - emittery: 0.8.1 - exit: 0.1.2 - graceful-fs: 4.2.10 - jest-changed-files: 27.5.1 - jest-config: 27.5.1 - jest-haste-map: 27.5.1 - jest-message-util: 27.5.1 - jest-regex-util: 27.5.1 - jest-resolve: 27.5.1 - jest-resolve-dependencies: 27.5.1 - jest-runner: 27.5.1 - jest-runtime: 27.5.1 - jest-snapshot: 27.5.1 - jest-util: 27.5.1 - jest-validate: 27.5.1 - jest-watcher: 27.5.1 - micromatch: 4.0.5 - node-notifier: 10.0.1 - rimraf: 3.0.2 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - ts-node - - utf-8-validate - dev: true - - /@jest/environment/27.5.1: - resolution: {integrity: sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/fake-timers': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 18.11.10 - jest-mock: 27.5.1 - dev: true - - /@jest/fake-timers/27.5.1: - resolution: {integrity: sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.5.1 - '@sinonjs/fake-timers': 8.1.0 - '@types/node': 18.11.10 - jest-message-util: 27.5.1 - jest-mock: 27.5.1 - jest-util: 27.5.1 - dev: true - - /@jest/globals/27.5.1: - resolution: {integrity: sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/environment': 27.5.1 - '@jest/types': 27.5.1 - expect: 27.5.1 - dev: true - - /@jest/reporters/27.5.1_node-notifier@10.0.1: - resolution: {integrity: sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 18.11.10 - chalk: 4.1.2 - collect-v8-coverage: 1.0.1 - exit: 0.1.2 - glob: 7.2.3 - graceful-fs: 4.2.10 - istanbul-lib-coverage: 3.2.0 - istanbul-lib-instrument: 5.2.1 - istanbul-lib-report: 3.0.0 - istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.5 - jest-haste-map: 27.5.1 - jest-resolve: 27.5.1 - jest-util: 27.5.1 - jest-worker: 27.5.1 - node-notifier: 10.0.1 - slash: 3.0.0 - source-map: 0.6.1 - string-length: 4.0.2 - terminal-link: 2.1.1 - v8-to-istanbul: 8.1.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@jest/schemas/29.0.0: - resolution: {integrity: sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@sinclair/typebox': 0.24.51 - dev: true - - /@jest/source-map/27.5.1: - resolution: {integrity: sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - callsites: 3.1.0 - graceful-fs: 4.2.10 - source-map: 0.6.1 - dev: true - - /@jest/test-result/27.5.1: - resolution: {integrity: sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/console': 27.5.1 - '@jest/types': 27.5.1 - '@types/istanbul-lib-coverage': 2.0.4 - collect-v8-coverage: 1.0.1 - dev: true - - /@jest/test-sequencer/27.5.1: - resolution: {integrity: sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/test-result': 27.5.1 - graceful-fs: 4.2.10 - jest-haste-map: 27.5.1 - jest-runtime: 27.5.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@jest/transform/27.5.1: - resolution: {integrity: sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@babel/core': 7.20.5 - '@jest/types': 27.5.1 - babel-plugin-istanbul: 6.1.1 - chalk: 4.1.2 - convert-source-map: 1.9.0 - fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.10 - jest-haste-map: 27.5.1 - jest-regex-util: 27.5.1 - jest-util: 27.5.1 - micromatch: 4.0.5 - pirates: 4.0.5 - slash: 3.0.0 - source-map: 0.6.1 - write-file-atomic: 3.0.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@jest/transform/29.3.1: - resolution: {integrity: sha512-8wmCFBTVGYqFNLWfcOWoVuMuKYPUBTnTMDkdvFtAYELwDOl9RGwOsvQWGPFxDJ8AWY9xM/8xCXdqmPK3+Q5Lug==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@babel/core': 7.20.5 - '@jest/types': 29.3.1 - '@jridgewell/trace-mapping': 0.3.17 - babel-plugin-istanbul: 6.1.1 - chalk: 4.1.2 - convert-source-map: 2.0.0 - fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.10 - jest-haste-map: 29.3.1 - jest-regex-util: 29.2.0 - jest-util: 29.3.1 - micromatch: 4.0.5 - pirates: 4.0.5 - slash: 3.0.0 - write-file-atomic: 4.0.2 - transitivePeerDependencies: - - 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.4 - '@types/istanbul-reports': 3.0.1 - '@types/node': 18.11.10 - '@types/yargs': 16.0.4 - chalk: 4.1.2 - dev: true - - /@jest/types/29.3.1: - resolution: {integrity: sha512-d0S0jmmTpjnhCmNpApgX3jrUZgZ22ivKJRvL2lli5hpCRoNnp1f85r2/wpKfXuYu8E7Jjh1hGfhPyup1NM5AmA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/schemas': 29.0.0 - '@types/istanbul-lib-coverage': 2.0.4 - '@types/istanbul-reports': 3.0.1 - '@types/node': 18.11.10 - '@types/yargs': 17.0.15 - chalk: 4.1.2 - dev: true - - /@jridgewell/gen-mapping/0.1.1: - resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.14 - dev: true - - /@jridgewell/gen-mapping/0.3.2: - resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.14 - '@jridgewell/trace-mapping': 0.3.17 - - /@jridgewell/resolve-uri/3.1.0: - resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} - engines: {node: '>=6.0.0'} - - /@jridgewell/set-array/1.1.2: - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} - engines: {node: '>=6.0.0'} - - /@jridgewell/source-map/0.3.2: - resolution: {integrity: sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==} - dependencies: - '@jridgewell/gen-mapping': 0.3.2 - '@jridgewell/trace-mapping': 0.3.17 - dev: false - - /@jridgewell/sourcemap-codec/1.4.14: - resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} - - /@jridgewell/trace-mapping/0.3.17: - resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} - dependencies: - '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.14 - - /@lerna/add/6.1.0: - resolution: {integrity: sha512-f2cAeS1mE/p7QvSRn5TCgdUXw6QVbu8PeRxaTOxTThhTdJIWdXZfY00QjAsU6jw1PdYXK1qGUSwWOPkdR16mBg==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/bootstrap': 6.1.0 - '@lerna/command': 6.1.0 - '@lerna/filter-options': 6.1.0 - '@lerna/npm-conf': 6.1.0 - '@lerna/validation-error': 6.1.0 - dedent: 0.7.0 - npm-package-arg: 8.1.1 - p-map: 4.0.0 - pacote: 13.6.2 - semver: 7.3.8 - transitivePeerDependencies: - - bluebird - - supports-color - dev: true - - /@lerna/bootstrap/6.1.0: - resolution: {integrity: sha512-aDxKqgxexVj/Z0B1aPu7P1iPbPqhk1FPkl/iayCmPlkAh90pYEH0uVytGzi1hFB5iXEfG7Pa6azGQywUodx/1g==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/command': 6.1.0 - '@lerna/filter-options': 6.1.0 - '@lerna/has-npm-version': 6.1.0 - '@lerna/npm-install': 6.1.0 - '@lerna/package-graph': 6.1.0 - '@lerna/pulse-till-done': 6.1.0 - '@lerna/rimraf-dir': 6.1.0 - '@lerna/run-lifecycle': 6.1.0 - '@lerna/run-topologically': 6.1.0 - '@lerna/symlink-binary': 6.1.0 - '@lerna/symlink-dependencies': 6.1.0 - '@lerna/validation-error': 6.1.0 - '@npmcli/arborist': 5.3.0 - dedent: 0.7.0 - get-port: 5.1.1 - multimatch: 5.0.0 - npm-package-arg: 8.1.1 - npmlog: 6.0.2 - p-map: 4.0.0 - p-map-series: 2.1.0 - p-waterfall: 2.1.1 - semver: 7.3.8 - transitivePeerDependencies: - - bluebird - - supports-color - dev: true - - /@lerna/changed/6.1.0: - resolution: {integrity: sha512-p7C2tf1scmvoUC1Osck/XIKVKXAQ8m8neL8/rfgKSYsvUVjsOB1LbF5HH1VUZntE6S4OxkRxUQGkAHVf5xrGqw==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/collect-updates': 6.1.0 - '@lerna/command': 6.1.0 - '@lerna/listable': 6.1.0 - '@lerna/output': 6.1.0 + '@lerna/collect-updates': 6.1.0 + '@lerna/command': 6.1.0 + '@lerna/listable': 6.1.0 + '@lerna/output': 6.1.0 dev: true /@lerna/check-working-tree/6.1.0: @@ -2786,33 +1461,6 @@ packages: dev: false optional: true - /@nicolo-ribaudo/chokidar-2/2.1.8-no-fsevents.3: - resolution: {integrity: sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==} - requiresBuild: true - dev: true - optional: true - - /@node-minify/core/7.1.0: - resolution: {integrity: sha512-0lFnw0m4mokyYv3R0Dp83cC3fMHDvYERdncpc8I5KcHiB7kHppxeupRXFEJTkjdxzvryA3OgF1cWNlvtbX1Biw==} - engines: {node: '>=14.0.0'} - dependencies: - '@node-minify/utils': 7.1.0 - globby: 11.0.4 - mkdirp: 1.0.4 - dev: false - - /@node-minify/run/7.1.0: - resolution: {integrity: sha512-KG/+nqRU0iqEmGrYMOVz4KP3vmPmMLmRHg0l3Y/ZonpCSG7nwC/cXUX3EfgDnbRhb94seUUApjHPG9bMMyWTww==} - engines: {node: '>=14.0.0'} - dev: false - - /@node-minify/utils/7.1.0: - resolution: {integrity: sha512-Sjlwlujvzm06tg+wRGgOpni2oeG1GzyEWCNLLBPSJ5rGwcJlBEkvzg6DHGJ9nQ2Emj15Hkw/ITSwQbLvISeNBg==} - engines: {node: '>=14.0.0'} - dependencies: - gzip-size: 6.0.0 - dev: false - /@nodelib/fs.scandir/2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -3195,27 +1843,11 @@ packages: tslib: 2.4.1 dev: false - /@sinclair/typebox/0.24.51: - resolution: {integrity: sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==} - dev: true - /@sindresorhus/is/5.3.0: resolution: {integrity: sha512-CX6t4SYQ37lzxicAqsBtxA3OseeoVrh9cSJ5PFYam0GksYlupRfy1A+Q4aYD3zvcfECLc0zO2u+ZnR2UYKvCrw==} engines: {node: '>=14.16'} dev: false - /@sinonjs/commons/1.8.6: - resolution: {integrity: sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==} - dependencies: - type-detect: 4.0.8 - dev: true - - /@sinonjs/fake-timers/8.1.0: - resolution: {integrity: sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==} - dependencies: - '@sinonjs/commons': 1.8.6 - dev: true - /@swc/helpers/0.4.14: resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==} dependencies: @@ -3229,11 +1861,6 @@ packages: defer-to-connect: 2.0.1 dev: false - /@tootallnate/once/1.1.2: - resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} - engines: {node: '>= 6'} - dev: true - /@tootallnate/once/2.0.0: resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} @@ -3250,33 +1877,77 @@ packages: '@types/estree': 1.0.0 dev: false - /@types/babel__core/7.1.20: - resolution: {integrity: sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ==} + /@types/babel-core/6.25.7: + resolution: {integrity: sha512-WPnyzNFVRo6bxpr7bcL27qXtNKNQ3iToziNBpibaXHyKGWQA0+tTLt73QQxC/5zzbM544ih6Ni5L5xrck6rGwg==} + dependencies: + '@types/babel-generator': 6.25.5 + '@types/babel-template': 6.25.2 + '@types/babel-traverse': 6.25.7 + '@types/babel-types': 7.0.11 + '@types/babylon': 6.16.6 + dev: true + + /@types/babel-generator/6.25.5: + resolution: {integrity: sha512-lhbwMlAy5rfWG+R6l8aPtJdEFX/kcv6LMFIuvUb0i89ehqgD24je9YcB+0fRspQhgJGlEsUImxpw4pQeKS/+8Q==} + dependencies: + '@types/babel-types': 7.0.11 + dev: true + + /@types/babel-template/6.25.2: + resolution: {integrity: sha512-QKtDQRJmAz3Y1HSxfMl0syIHebMc/NnOeH/8qeD0zjgU2juD0uyC922biMxCy5xjTNvHinigML2l8kxE8eEBmw==} + dependencies: + '@types/babel-types': 7.0.11 + '@types/babylon': 6.16.6 + dev: true + + /@types/babel-traverse/6.25.7: + resolution: {integrity: sha512-BeQiEGLnVzypzBdsexEpZAHUx+WucOMXW6srEWDkl4SegBlaCy+iBvRO+4vz6EZ+BNQg22G4MCdDdvZxf+jW5A==} + dependencies: + '@types/babel-types': 7.0.11 + dev: true + + /@types/babel-types/7.0.11: + resolution: {integrity: sha512-pkPtJUUY+Vwv6B1inAz55rQvivClHJxc9aVEPPmaq2cbyeMLCiDpbKpcKyX4LAwpNGi+SHBv0tHv6+0gXv0P2A==} + dev: true + + /@types/babylon/6.16.6: + resolution: {integrity: sha512-G4yqdVlhr6YhzLXFKy5F7HtRBU8Y23+iWy7UKthMq/OSQnL1hbsoeXESQ2LY8zEDlknipDG3nRGhUC9tkwvy/w==} + dependencies: + '@types/babel-types': 7.0.11 + dev: true + + /@types/chai-subset/1.3.3: + resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} dependencies: - '@babel/parser': 7.20.5 - '@babel/types': 7.20.5 - '@types/babel__generator': 7.6.4 - '@types/babel__template': 7.4.1 - '@types/babel__traverse': 7.18.3 + '@types/chai': 4.3.4 + dev: true + + /@types/chai/4.3.4: + resolution: {integrity: sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==} dev: true - /@types/babel__generator/7.6.4: - resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} + /@types/chalk/2.2.0: + resolution: {integrity: sha512-1zzPV9FDe1I/WHhRkf9SNgqtRJWZqrBWgu7JGveuHmmyR9CnAPCie2N/x+iHrgnpYBIcCJWHBoMRv2TRWktsvw==} + deprecated: This is a stub types definition for chalk (https://github.com/chalk/chalk). chalk provides its own type definitions, so you don't need @types/chalk installed! dependencies: - '@babel/types': 7.20.5 + chalk: 5.1.2 dev: true - /@types/babel__template/7.4.1: - resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} + /@types/clean-css/4.2.6: + resolution: {integrity: sha512-Ze1tf+LnGPmG6hBFMi0B4TEB0mhF7EiMM5oyjLDNPE9hxrPU0W+5+bHvO+eFPA+bt0iC1zkQMoU/iGdRVjcRbw==} dependencies: - '@babel/parser': 7.20.5 - '@babel/types': 7.20.5 + '@types/node': 18.11.10 + source-map: 0.6.1 + dev: true + + /@types/css-tree/2.0.0: + resolution: {integrity: sha512-mY2sXRLBnUPMYw6mkOT+6dABeaNxAEKZz6scE9kQPNJx8fKe1fOsm8Honl7+xFYe6TKX8WNk2+7oMp2vBArJ9Q==} dev: true - /@types/babel__traverse/7.18.3: - resolution: {integrity: sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==} + /@types/csso/5.0.0: + resolution: {integrity: sha512-EMrCTGpXRUsbFfZBzn2jcW6Sqg8kxWXkJcpvAGYSEzFqAJ2THDJSwiMeS2fPUw+0p6RQNT/n8F/skEc9hUBc0g==} dependencies: - '@babel/types': 7.20.5 + '@types/css-tree': 2.0.0 dev: true /@types/debug/4.1.7: @@ -3295,18 +1966,20 @@ packages: resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} dev: false - /@types/graceful-fs/4.1.5: - resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} - dependencies: - '@types/node': 18.11.10 - dev: true - /@types/hast/2.3.4: resolution: {integrity: sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==} dependencies: '@types/unist': 2.0.6 dev: false + /@types/html-minifier/4.0.2: + resolution: {integrity: sha512-4IkmkXJP/25R2fZsCHDX2abztXuQRzUAZq39PfCMz2loLFj8vS9y7aF6vDl58koXSTpsF+eL4Lc5Y4Aww/GCTQ==} + dependencies: + '@types/clean-css': 4.2.6 + '@types/relateurl': 0.2.29 + '@types/uglify-js': 3.17.1 + dev: true + /@types/http-cache-semantics/4.0.1: resolution: {integrity: sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==} dev: false @@ -3315,22 +1988,14 @@ packages: resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} dev: true - /@types/istanbul-lib-report/3.0.0: - resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} - dependencies: - '@types/istanbul-lib-coverage': 2.0.4 - dev: true - - /@types/istanbul-reports/3.0.1: - resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} - dependencies: - '@types/istanbul-lib-report': 3.0.0 - dev: true - /@types/json5/0.0.29: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: true + /@types/jsonminify/0.4.1: + resolution: {integrity: sha512-CkbsT83tCMuFefGh+aXlsunetd66yN62QxtjBfk4lX4zMVBPRlWyHQvZvIPOMUznVA7MXdt6RtqHa9fra1PlCw==} + dev: true + /@types/mdast/3.0.10: resolution: {integrity: sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==} dependencies: @@ -3349,6 +2014,12 @@ packages: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true + /@types/mkdirp/1.0.2: + resolution: {integrity: sha512-o0K1tSO0Dx5X6xlU5F1D6625FawhC3dU3iqr25lluNv/+/QIVH8RLNEiVokgIZo+mz+87w/3Mkg/VvQS+J51fQ==} + dependencies: + '@types/node': 18.11.10 + dev: true + /@types/ms/0.7.31: resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} dev: false @@ -3361,12 +2032,15 @@ packages: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} dev: true - /@types/parse-json/4.0.0: - resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} + /@types/ora/3.2.0: + resolution: {integrity: sha512-jll99xUKpiFbIFZSQcxm4numfsLaOWBzWNaRk3PvTSE7BPqTzzOCFmS0mQ7m8qkTfmYhuYbehTGsxkvRLPC++w==} + deprecated: This is a stub types definition. ora provides its own type definitions, so you do not need this installed. + dependencies: + ora: 5.4.1 dev: true - /@types/prettier/2.7.1: - resolution: {integrity: sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow==} + /@types/parse-json/4.0.0: + resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} dev: true /@types/prop-types/15.7.5: @@ -3381,32 +2055,47 @@ packages: csstype: 3.1.1 dev: false + /@types/relateurl/0.2.29: + resolution: {integrity: sha512-QSvevZ+IRww2ldtfv1QskYsqVVVwCKQf1XbwtcyyoRvLIQzfyPhj/C+3+PKzSDRdiyejaiLgnq//XTkleorpLg==} + dev: true + /@types/scheduler/0.16.2: resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} dev: false - /@types/stack-utils/2.0.1: - resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} + /@types/uglify-es/3.0.0: + resolution: {integrity: sha512-Oc/c7pGIQL0MVhC6g+VftWiDQethKsT4c3fQKYm6nOprkvkx9s1MLrnJprDTKlZL3ZJulMpCF9Qn7s6u3uCNxQ==} + dependencies: + '@types/uglify-js': 3.17.1 + dev: true + + /@types/uglify-js/3.17.1: + resolution: {integrity: sha512-GkewRA4i5oXacU/n4MA9+bLgt5/L3F1mKrYvFGm7r2ouLXhRKjuWwo9XHNnbx6WF3vlGW21S3fCvgqxvxXXc5g==} + dependencies: + source-map: 0.6.1 dev: true /@types/unist/2.0.6: resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} dev: false - /@types/yargs-parser/21.0.0: - resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} - dev: true - - /@types/yargs/16.0.4: - resolution: {integrity: sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==} - dependencies: - '@types/yargs-parser': 21.0.0 - dev: true - - /@types/yargs/17.0.15: - resolution: {integrity: sha512-ZHc4W2dnEQPfhn06TBEdWaiUHEZAocYaiVMfwOipY5jcJt/251wVrKCBWBetGZWO5CF8tdb7L3DmdxVlZ2BOIg==} + /@vitest/coverage-c8/0.25.3: + resolution: {integrity: sha512-+tmrB3E7pZTSM+aWKzLk0FpyyaQOoRQf0594hHp+E3Kk0tiFONiEFYf7+9a1Z+C2ffU/0w6KvyBjpNPdashMrg==} dependencies: - '@types/yargs-parser': 21.0.0 + c8: 7.12.0 + vitest: 0.25.3 + transitivePeerDependencies: + - '@edge-runtime/vm' + - '@vitest/browser' + - '@vitest/ui' + - happy-dom + - jsdom + - less + - sass + - stylus + - sugarss + - supports-color + - terser dev: true /@yarnpkg/lockfile/1.1.0: @@ -3436,21 +2125,10 @@ packages: through: 2.3.8 dev: true - /abab/2.0.6: - resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} - dev: true - /abbrev/1.1.1: resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} dev: true - /acorn-globals/6.0.0: - resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==} - dependencies: - acorn: 7.4.1 - acorn-walk: 7.2.0 - dev: true - /acorn-jsx/5.3.2_acorn@8.8.1: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -3458,15 +2136,9 @@ packages: dependencies: acorn: 8.8.1 - /acorn-walk/7.2.0: - resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} - engines: {node: '>=0.4.0'} - dev: true - - /acorn/7.4.1: - resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + /acorn-walk/8.2.0: + resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} - hasBin: true dev: true /acorn/8.8.1: @@ -3561,11 +2233,6 @@ packages: dependencies: color-convert: 2.0.1 - /ansi-styles/5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} - dev: true - /ansi-styles/6.2.1: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} @@ -3634,6 +2301,10 @@ packages: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} dev: true + /assertion-error/1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + dev: true + /astral-regex/2.0.0: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} engines: {node: '>=8'} @@ -3698,6 +2369,7 @@ packages: source-map: 0.5.7 transitivePeerDependencies: - supports-color + dev: false /babel-generator/6.26.1: resolution: {integrity: sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==} @@ -3710,6 +2382,7 @@ packages: lodash: 4.17.21 source-map: 0.5.7 trim-right: 1.0.1 + dev: false /babel-helper-builder-binary-assignment-operator-visitor/6.24.1: resolution: {integrity: sha512-gCtfYORSG1fUMX4kKraymq607FWgMWg+j42IFPc18kFQEsmtaibP4UrqsXt8FlEJle25HUd4tsoDR7H2wDhe9Q==} @@ -3854,43 +2527,7 @@ packages: babel-template: 6.26.0 transitivePeerDependencies: - supports-color - - /babel-jest/27.5.1_@babel+core@7.20.5: - resolution: {integrity: sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - peerDependencies: - '@babel/core': ^7.8.0 - dependencies: - '@babel/core': 7.20.5 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 - '@types/babel__core': 7.1.20 - babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 27.5.1_@babel+core@7.20.5 - chalk: 4.1.2 - graceful-fs: 4.2.10 - slash: 3.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-jest/29.3.1_@babel+core@7.20.5: - resolution: {integrity: sha512-aard+xnMoxgjwV70t0L6wkW/3HQQtV+O0PEimxKgzNqCJnbYmroPojdP2tqKSOAt8QAKV/uSZU8851M7B5+fcA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@babel/core': ^7.8.0 - dependencies: - '@babel/core': 7.20.5 - '@jest/transform': 29.3.1 - '@types/babel__core': 7.1.20 - babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.2.0_@babel+core@7.20.5 - chalk: 4.1.2 - graceful-fs: 4.2.10 - slash: 3.0.0 - transitivePeerDependencies: - - supports-color - dev: true + dev: false /babel-messages/6.23.0: resolution: {integrity: sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w==} @@ -3903,39 +2540,6 @@ packages: babel-runtime: 6.26.0 dev: true - /babel-plugin-istanbul/6.1.1: - resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} - engines: {node: '>=8'} - dependencies: - '@babel/helper-plugin-utils': 7.20.2 - '@istanbuljs/load-nyc-config': 1.1.0 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-instrument: 5.2.1 - test-exclude: 6.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-jest-hoist/27.5.1: - resolution: {integrity: sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@babel/template': 7.18.10 - '@babel/types': 7.20.5 - '@types/babel__core': 7.1.20 - '@types/babel__traverse': 7.18.3 - dev: true - - /babel-plugin-jest-hoist/29.2.0: - resolution: {integrity: sha512-TnspP2WNiR3GLfCsUNHqeXw0RoQ2f9U5hQ5L3XFpwuO8htQmSrhh8qsB6vi5Yi8+kuynN1yjDjQsPfkebmB6ZA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@babel/template': 7.18.10 - '@babel/types': 7.20.5 - '@types/babel__core': 7.1.20 - '@types/babel__traverse': 7.18.3 - dev: true - /babel-plugin-minify-builtins/0.5.0: resolution: {integrity: sha512-wpqbN7Ov5hsNwGdzuzvFcjgRlzbIeVv1gMIlICbPj0xkexnfoIDe7q+AZHMkQmAE/F9R5jkrB6TLfTegImlXag==} dev: false @@ -4001,42 +2605,6 @@ packages: babel-helper-is-void-0: 0.4.3 dev: false - /babel-plugin-polyfill-corejs2/0.3.3_@babel+core@7.20.5: - resolution: {integrity: sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.20.5 - '@babel/core': 7.20.5 - '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.20.5 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-polyfill-corejs3/0.6.0_@babel+core@7.20.5: - resolution: {integrity: sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.20.5 - core-js-compat: 3.26.1 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-polyfill-regenerator/0.4.1_@babel+core@7.20.5: - resolution: {integrity: sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.20.5 - transitivePeerDependencies: - - supports-color - dev: true - /babel-plugin-syntax-async-functions/6.13.0: resolution: {integrity: sha512-4Zp4unmHgw30A1eWI5EpACji2qMocisdXhAftfhXoSV9j0Tvj6nRFE3tOmRY912E0FMRm/L5xWE7MGVT2FoLnw==} dev: true @@ -4318,26 +2886,6 @@ packages: resolution: {integrity: sha512-D2UbwxawEY1xVc9svYAUZQM2xarwSNXue2qDIx6CeV2EuMGaes/0su78zlIDIAgE7BvnMw4UpmSo9fDy+znghg==} dev: false - /babel-preset-current-node-syntax/1.0.1_@babel+core@7.20.5: - resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.20.5 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.20.5 - '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.20.5 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.20.5 - '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.20.5 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.20.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.20.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.20.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.20.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.20.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.20.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.20.5 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.20.5 - dev: true - /babel-preset-env/1.7.0: resolution: {integrity: sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg==} dependencies: @@ -4375,28 +2923,6 @@ packages: - supports-color dev: true - /babel-preset-jest/27.5.1_@babel+core@7.20.5: - resolution: {integrity: sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.20.5 - babel-plugin-jest-hoist: 27.5.1 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.5 - dev: true - - /babel-preset-jest/29.2.0_@babel+core@7.20.5: - resolution: {integrity: sha512-z9JmMJppMxNv8N7fNRHvhMg9cvIkMxQBXgFkane3yKVEvEOP+kB50lk8DFRvF9PGqbyXxlmebKWhuDORO8RgdA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.20.5 - babel-plugin-jest-hoist: 29.2.0 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.5 - dev: true - /babel-preset-minify/0.5.2: resolution: {integrity: sha512-v4GL+kk0TfovbRIKZnC3HPbu2cAGmPAby7BsOmuPdMJfHV+4FVdsGXTH/OOGQRKYdjemBuL1+MsE6mobobhe9w==} dependencies: @@ -4437,6 +2963,7 @@ packages: source-map-support: 0.4.18 transitivePeerDependencies: - supports-color + dev: false /babel-runtime/6.26.0: resolution: {integrity: sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==} @@ -4556,10 +3083,6 @@ packages: dependencies: fill-range: 7.0.1 - /browser-process-hrtime/1.0.0: - resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} - dev: true - /browserslist/3.2.8: resolution: {integrity: sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==} hasBin: true @@ -4577,12 +3100,7 @@ packages: electron-to-chromium: 1.4.284 node-releases: 2.0.6 update-browserslist-db: 1.0.10_browserslist@4.21.4 - - /bser/2.1.1: - resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} - dependencies: - node-int64: 0.4.0 - dev: true + dev: false /buffer-from/1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} @@ -4608,6 +3126,25 @@ packages: engines: {node: '>=10'} dev: true + /c8/7.12.0: + resolution: {integrity: sha512-CtgQrHOkyxr5koX1wEUmN/5cfDa2ckbHRA4Gy5LAL0zaCFtVWJS5++n+w4/sr2GWGerBxgTjpKeDclk/Qk6W/A==} + engines: {node: '>=10.12.0'} + hasBin: true + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@istanbuljs/schema': 0.1.3 + find-up: 5.0.0 + foreground-child: 2.0.0 + istanbul-lib-coverage: 3.2.0 + istanbul-lib-report: 3.0.0 + istanbul-reports: 3.1.5 + rimraf: 3.0.2 + test-exclude: 6.0.0 + v8-to-istanbul: 9.0.1 + yargs: 16.2.0 + yargs-parser: 20.2.9 + dev: true + /cacache/16.1.3: resolution: {integrity: sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -4678,11 +3215,6 @@ packages: engines: {node: '>=6'} dev: true - /camelcase/6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - dev: true - /camelcase/7.0.0: resolution: {integrity: sha512-JToIvOmz6nhGsUhAYScbo2d6Py5wojjNfoxoc2mEVLUdJ70gJK2gnd+ABY1Tc3sVMyK7QDPtN0T/XdlCQWITyQ==} engines: {node: '>=14.16'} @@ -4704,6 +3236,19 @@ packages: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} dev: false + /chai/4.3.7: + resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==} + engines: {node: '>=4'} + dependencies: + assertion-error: 1.1.0 + check-error: 1.0.2 + deep-eql: 4.1.3 + get-func-name: 2.0.0 + loupe: 2.3.6 + pathval: 1.1.1 + type-detect: 4.0.8 + dev: true + /chalk/1.1.3: resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} engines: {node: '>=0.10.0'} @@ -4750,12 +3295,6 @@ packages: /chalk/5.1.2: resolution: {integrity: sha512-E5CkT4jWURs1Vy5qGJye+XwCkNj7Od3Af7CP6SujMetSMkLs8Do2RWJK5yx1wamHV/op8Rz+9rltjaTQWDnEFQ==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - dev: false - - /char-regex/1.0.2: - resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} - engines: {node: '>=10'} - dev: true /character-entities-html4/2.1.0: resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} @@ -4777,6 +3316,10 @@ packages: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} dev: true + /check-error/1.0.2: + resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} + dev: true + /chokidar/3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} @@ -4804,10 +3347,7 @@ packages: /ci-info/3.7.0: resolution: {integrity: sha512-2CpRNYmImPx+RXKLq6jko/L07phmS9I02TyqkcNU20GCF/GgaWvc58hPtjxDX8lPpkdwc9sNh72V9k00S7ezog==} engines: {node: '>=8'} - - /cjs-module-lexer/1.2.2: - resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} - dev: true + dev: false /clap/1.2.3: resolution: {integrity: sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==} @@ -4930,11 +3470,6 @@ packages: mkdirp-infer-owner: 2.0.0 dev: true - /co/4.6.0: - resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} - engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - dev: true - /coa/1.0.4: resolution: {integrity: sha512-KAGck/eNAmCL0dcT3BiuYwLbExK6lduR8DxM3C1TyDzaXhZHyZ8ooX5I5+na2e3dPFuibfxrGdorr0/Lr7RYCQ==} engines: {node: '>= 0.8.0'} @@ -4942,10 +3477,6 @@ packages: q: 1.5.1 dev: false - /collect-v8-coverage/1.0.1: - resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} - dev: true - /color-convert/1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: @@ -5008,11 +3539,6 @@ packages: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} dev: false - /commander/4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} - dev: true - /commander/7.2.0: resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} engines: {node: '>= 10'} @@ -5159,16 +3685,6 @@ packages: /convert-source-map/1.9.0: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - /convert-source-map/2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - dev: true - - /core-js-compat/3.26.1: - resolution: {integrity: sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A==} - dependencies: - browserslist: 4.21.4 - dev: true - /core-js/2.6.12: resolution: {integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==} deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. @@ -5351,21 +3867,6 @@ packages: css-tree: 2.2.1 dev: false - /cssom/0.3.8: - resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} - dev: true - - /cssom/0.4.4: - resolution: {integrity: sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==} - dev: true - - /cssstyle/2.3.0: - resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} - engines: {node: '>=8'} - dependencies: - cssom: 0.3.8 - dev: true - /csstype/3.1.1: resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==} dev: false @@ -5375,15 +3876,6 @@ packages: engines: {node: '>=8'} dev: true - /data-urls/2.0.0: - resolution: {integrity: sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==} - engines: {node: '>=10'} - dependencies: - abab: 2.0.6 - whatwg-mimetype: 2.3.0 - whatwg-url: 8.7.0 - dev: true - /dateformat/3.0.3: resolution: {integrity: sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==} dev: true @@ -5426,10 +3918,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /decimal.js/10.4.3: - resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} - dev: true - /decode-named-character-reference/1.0.2: resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} dependencies: @@ -5447,6 +3935,13 @@ packages: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} dev: true + /deep-eql/4.1.3: + resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + engines: {node: '>=6'} + dependencies: + type-detect: 4.0.8 + dev: true + /deep-extend/0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} @@ -5456,11 +3951,6 @@ packages: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true - /deepmerge/4.2.2: - resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} - engines: {node: '>=0.10.0'} - dev: true - /defaults/1.0.4: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} dependencies: @@ -5504,6 +3994,7 @@ packages: engines: {node: '>=0.10.0'} dependencies: repeating: 2.0.1 + dev: false /detect-indent/5.0.0: resolution: {integrity: sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g==} @@ -5515,11 +4006,6 @@ packages: engines: {node: '>=8'} dev: true - /detect-newline/3.1.0: - resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} - engines: {node: '>=8'} - dev: true - /dezalgo/1.0.4: resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==} dependencies: @@ -5527,11 +4013,6 @@ packages: wrappy: 1.0.2 dev: true - /diff-sequences/27.5.1: - resolution: {integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dev: true - /diff/5.1.0: resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} engines: {node: '>=0.3.1'} @@ -5562,13 +4043,6 @@ packages: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} dev: false - /domexception/2.0.1: - resolution: {integrity: sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==} - engines: {node: '>=8'} - dependencies: - webidl-conversions: 5.0.0 - dev: true - /domhandler/4.3.1: resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} engines: {node: '>= 4'} @@ -5619,11 +4093,6 @@ packages: /electron-to-chromium/1.4.284: resolution: {integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==} - /emittery/0.8.1: - resolution: {integrity: sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==} - engines: {node: '>=10'} - dev: true - /emoji-regex/8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -5676,6 +4145,216 @@ packages: is-arrayish: 0.2.1 dev: true + /esbuild-android-64/0.15.18: + resolution: {integrity: sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /esbuild-android-arm64/0.15.18: + resolution: {integrity: sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /esbuild-darwin-64/0.15.18: + resolution: {integrity: sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /esbuild-darwin-arm64/0.15.18: + resolution: {integrity: sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /esbuild-freebsd-64/0.15.18: + resolution: {integrity: sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-freebsd-arm64/0.15.18: + resolution: {integrity: sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-32/0.15.18: + resolution: {integrity: sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-64/0.15.18: + resolution: {integrity: sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-arm/0.15.18: + resolution: {integrity: sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-arm64/0.15.18: + resolution: {integrity: sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-mips64le/0.15.18: + resolution: {integrity: sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-ppc64le/0.15.18: + resolution: {integrity: sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-riscv64/0.15.18: + resolution: {integrity: sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-s390x/0.15.18: + resolution: {integrity: sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-netbsd-64/0.15.18: + resolution: {integrity: sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-openbsd-64/0.15.18: + resolution: {integrity: sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-sunos-64/0.15.18: + resolution: {integrity: sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-32/0.15.18: + resolution: {integrity: sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-64/0.15.18: + resolution: {integrity: sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-arm64/0.15.18: + resolution: {integrity: sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild/0.15.18: + resolution: {integrity: sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.15.18 + '@esbuild/linux-loong64': 0.15.18 + esbuild-android-64: 0.15.18 + esbuild-android-arm64: 0.15.18 + esbuild-darwin-64: 0.15.18 + esbuild-darwin-arm64: 0.15.18 + esbuild-freebsd-64: 0.15.18 + esbuild-freebsd-arm64: 0.15.18 + esbuild-linux-32: 0.15.18 + esbuild-linux-64: 0.15.18 + esbuild-linux-arm: 0.15.18 + esbuild-linux-arm64: 0.15.18 + esbuild-linux-mips64le: 0.15.18 + esbuild-linux-ppc64le: 0.15.18 + esbuild-linux-riscv64: 0.15.18 + esbuild-linux-s390x: 0.15.18 + esbuild-netbsd-64: 0.15.18 + esbuild-openbsd-64: 0.15.18 + esbuild-sunos-64: 0.15.18 + esbuild-windows-32: 0.15.18 + esbuild-windows-64: 0.15.18 + esbuild-windows-arm64: 0.15.18 + dev: true + /escalade/3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} @@ -5689,11 +4368,6 @@ packages: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} - /escape-string-regexp/2.0.0: - resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} - engines: {node: '>=8'} - dev: true - /escape-string-regexp/4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} @@ -5704,19 +4378,6 @@ packages: engines: {node: '>=12'} dev: false - /escodegen/2.0.0: - resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==} - engines: {node: '>=6.0'} - hasBin: true - dependencies: - esprima: 4.0.1 - estraverse: 5.3.0 - esutils: 2.0.3 - optionator: 0.8.3 - optionalDependencies: - source-map: 0.6.1 - dev: true - /eslint-config-prettier/8.5.0_eslint@8.29.0: resolution: {integrity: sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==} hasBin: true @@ -5957,21 +4618,6 @@ packages: strip-final-newline: 3.0.0 dev: true - /exit/0.1.2: - resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} - engines: {node: '>= 0.8.0'} - dev: true - - /expect/27.5.1: - resolution: {integrity: sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.5.1 - jest-get-type: 27.5.1 - jest-matcher-utils: 27.5.1 - jest-message-util: 27.5.1 - dev: true - /extend-shallow/2.0.1: resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} engines: {node: '>=0.10.0'} @@ -6034,12 +4680,6 @@ packages: dependencies: reusify: 1.0.4 - /fb-watchman/2.0.2: - resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} - dependencies: - bser: 2.1.1 - dev: true - /figures/3.2.0: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} engines: {node: '>=8'} @@ -6124,20 +4764,19 @@ packages: optional: true dev: true + /foreground-child/2.0.0: + resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==} + engines: {node: '>=8.0.0'} + dependencies: + cross-spawn: 7.0.3 + signal-exit: 3.0.7 + dev: true + /form-data-encoder/2.1.4: resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==} engines: {node: '>= 14.17'} dev: false - /form-data/3.0.1: - resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} - engines: {node: '>= 6'} - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - dev: true - /form-data/4.0.0: resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} engines: {node: '>= 6'} @@ -6177,10 +4816,6 @@ packages: minipass: 3.3.6 dev: true - /fs-readdir-recursive/1.1.0: - resolution: {integrity: sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==} - dev: true - /fs.realpath/1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} dev: true @@ -6211,19 +4846,13 @@ packages: wide-align: 1.1.5 dev: true - /gensync/1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - dev: true - /get-caller-file/2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} dev: true - /get-package-type/0.1.0: - resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} - engines: {node: '>=8.0.0'} + /get-func-name/2.0.0: + resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} dev: true /get-pkg-repo/4.2.1: @@ -6354,11 +4983,6 @@ packages: ini: 2.0.0 dev: false - /globals/11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - dev: true - /globals/13.18.0: resolution: {integrity: sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==} engines: {node: '>=8'} @@ -6370,18 +4994,6 @@ packages: resolution: {integrity: sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==} engines: {node: '>=0.10.0'} - /globby/11.0.4: - resolution: {integrity: sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==} - engines: {node: '>=10'} - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.2.12 - ignore: 5.2.1 - merge2: 1.4.1 - slash: 3.0.0 - dev: false - /globby/11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} @@ -6537,6 +5149,7 @@ packages: dependencies: os-homedir: 1.0.2 os-tmpdir: 1.0.2 + dev: false /hosted-git-info/2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} @@ -6563,13 +5176,6 @@ packages: lru-cache: 7.14.1 dev: true - /html-encoding-sniffer/2.0.1: - resolution: {integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==} - engines: {node: '>=10'} - dependencies: - whatwg-encoding: 1.0.5 - dev: true - /html-escaper/2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} dev: true @@ -6591,17 +5197,6 @@ packages: /http-cache-semantics/4.1.0: resolution: {integrity: sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==} - /http-proxy-agent/4.0.1: - resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} - engines: {node: '>= 6'} - dependencies: - '@tootallnate/once': 1.1.2 - agent-base: 6.0.2 - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - dev: true - /http-proxy-agent/5.0.0: resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} engines: {node: '>= 6'} @@ -6855,6 +5450,7 @@ packages: /is-finite/1.1.0: resolution: {integrity: sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==} engines: {node: '>=0.10.0'} + dev: false /is-fullwidth-code-point/3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} @@ -6865,11 +5461,6 @@ packages: engines: {node: '>=12'} dev: true - /is-generator-fn/2.1.0: - resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} - engines: {node: '>=6'} - dev: true - /is-glob/4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} @@ -6880,708 +5471,166 @@ packages: resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} dev: false - /is-installed-globally/0.4.0: - resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} - engines: {node: '>=10'} - dependencies: - global-dirs: 3.0.1 - is-path-inside: 3.0.3 - dev: false - - /is-interactive/1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} - engines: {node: '>=8'} - - /is-lambda/1.0.1: - resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} - dev: true - - /is-npm/6.0.0: - resolution: {integrity: sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: false - - /is-number/7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - /is-obj/2.0.0: - resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} - engines: {node: '>=8'} - - /is-path-inside/3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - - /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'} - dev: false - - /is-plain-obj/4.1.0: - resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} - engines: {node: '>=12'} - dev: false - - /is-plain-object/2.0.4: - resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} - engines: {node: '>=0.10.0'} - dependencies: - isobject: 3.0.1 - dev: true - - /is-plain-object/5.0.0: - resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} - engines: {node: '>=0.10.0'} - dev: true - - /is-potential-custom-element-name/1.0.1: - resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} - dev: true - - /is-reference/3.0.0: - resolution: {integrity: sha512-Eo1W3wUoHWoCoVM4GVl/a+K0IgiqE5aIo4kJABFyMum1ZORlPkC+UC357sSQUL5w5QCE5kCC9upl75b7+7CY/Q==} - dependencies: - '@types/estree': 1.0.0 - dev: false - - /is-ssh/1.4.0: - resolution: {integrity: sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==} - dependencies: - protocols: 2.0.1 - - /is-stream/1.1.0: - resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} - engines: {node: '>=0.10.0'} - dev: false - - /is-stream/2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - dev: true - - /is-stream/3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true - - /is-text-path/1.0.1: - resolution: {integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==} - engines: {node: '>=0.10.0'} - dependencies: - text-extensions: 1.9.0 - dev: true - - /is-typedarray/1.0.0: - resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} - - /is-unicode-supported/0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - - /is-wsl/2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} - dependencies: - is-docker: 2.2.1 - dev: true - - /is-yarn-global/0.4.1: - resolution: {integrity: sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==} - engines: {node: '>=12'} - dev: false - - /isarray/1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - dev: true - - /isexe/2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - /isobject/3.0.1: - resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} - engines: {node: '>=0.10.0'} - dev: true - - /istanbul-lib-coverage/3.2.0: - resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} - engines: {node: '>=8'} - dev: true - - /istanbul-lib-instrument/5.2.1: - resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} - engines: {node: '>=8'} - dependencies: - '@babel/core': 7.20.5 - '@babel/parser': 7.20.5 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.0 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: true - - /istanbul-lib-report/3.0.0: - resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} - engines: {node: '>=8'} - dependencies: - istanbul-lib-coverage: 3.2.0 - make-dir: 3.1.0 - supports-color: 7.2.0 - dev: true - - /istanbul-lib-source-maps/4.0.1: - resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} - engines: {node: '>=10'} - dependencies: - debug: 4.3.4 - istanbul-lib-coverage: 3.2.0 - source-map: 0.6.1 - transitivePeerDependencies: - - supports-color - dev: true - - /istanbul-reports/3.1.5: - resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} - engines: {node: '>=8'} - dependencies: - html-escaper: 2.0.2 - istanbul-lib-report: 3.0.0 - dev: true - - /jake/10.8.5: - resolution: {integrity: sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==} - engines: {node: '>=10'} - hasBin: true - dependencies: - async: 3.2.4 - chalk: 4.1.2 - filelist: 1.0.4 - minimatch: 3.1.2 - dev: true - - /jest-changed-files/27.5.1: - resolution: {integrity: sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.5.1 - execa: 5.1.1 - throat: 6.0.1 - dev: true - - /jest-circus/27.5.1: - resolution: {integrity: sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/environment': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 18.11.10 - chalk: 4.1.2 - co: 4.6.0 - dedent: 0.7.0 - expect: 27.5.1 - is-generator-fn: 2.1.0 - jest-each: 27.5.1 - jest-matcher-utils: 27.5.1 - jest-message-util: 27.5.1 - jest-runtime: 27.5.1 - jest-snapshot: 27.5.1 - jest-util: 27.5.1 - pretty-format: 27.5.1 - slash: 3.0.0 - stack-utils: 2.0.6 - throat: 6.0.1 - transitivePeerDependencies: - - supports-color - dev: true - - /jest-cli/27.5.1_node-notifier@10.0.1: - resolution: {integrity: sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/core': 27.5.1_node-notifier@10.0.1 - '@jest/test-result': 27.5.1 - '@jest/types': 27.5.1 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.10 - import-local: 3.1.0 - jest-config: 27.5.1 - jest-util: 27.5.1 - jest-validate: 27.5.1 - node-notifier: 10.0.1 - prompts: 2.4.2 - yargs: 16.2.0 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - ts-node - - utf-8-validate - dev: true - - /jest-config/27.5.1: - resolution: {integrity: sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - peerDependencies: - ts-node: '>=9.0.0' - peerDependenciesMeta: - ts-node: - optional: true - dependencies: - '@babel/core': 7.20.5 - '@jest/test-sequencer': 27.5.1 - '@jest/types': 27.5.1 - babel-jest: 27.5.1_@babel+core@7.20.5 - chalk: 4.1.2 - ci-info: 3.7.0 - deepmerge: 4.2.2 - glob: 7.2.3 - graceful-fs: 4.2.10 - jest-circus: 27.5.1 - jest-environment-jsdom: 27.5.1 - jest-environment-node: 27.5.1 - jest-get-type: 27.5.1 - jest-jasmine2: 27.5.1 - jest-regex-util: 27.5.1 - jest-resolve: 27.5.1 - jest-runner: 27.5.1 - jest-util: 27.5.1 - jest-validate: 27.5.1 - micromatch: 4.0.5 - parse-json: 5.2.0 - pretty-format: 27.5.1 - slash: 3.0.0 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - utf-8-validate - dev: true - - /jest-diff/27.5.1: - resolution: {integrity: sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - chalk: 4.1.2 - diff-sequences: 27.5.1 - jest-get-type: 27.5.1 - pretty-format: 27.5.1 - dev: true - - /jest-docblock/27.5.1: - resolution: {integrity: sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /is-installed-globally/0.4.0: + resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} + engines: {node: '>=10'} dependencies: - detect-newline: 3.1.0 - dev: true + global-dirs: 3.0.1 + is-path-inside: 3.0.3 + dev: false - /jest-each/27.5.1: - resolution: {integrity: sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.5.1 - chalk: 4.1.2 - jest-get-type: 27.5.1 - jest-util: 27.5.1 - pretty-format: 27.5.1 - dev: true + /is-interactive/1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} - /jest-environment-jsdom/27.5.1: - resolution: {integrity: sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/environment': 27.5.1 - '@jest/fake-timers': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 18.11.10 - jest-mock: 27.5.1 - jest-util: 27.5.1 - jsdom: 16.7.0 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - utf-8-validate + /is-lambda/1.0.1: + resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} dev: true - /jest-environment-node/27.5.1: - resolution: {integrity: sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/environment': 27.5.1 - '@jest/fake-timers': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 18.11.10 - jest-mock: 27.5.1 - jest-util: 27.5.1 - dev: true + /is-npm/6.0.0: + resolution: {integrity: sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: false - /jest-get-type/27.5.1: - resolution: {integrity: sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dev: true + /is-number/7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} - /jest-haste-map/27.5.1: - resolution: {integrity: sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.5.1 - '@types/graceful-fs': 4.1.5 - '@types/node': 18.11.10 - anymatch: 3.1.3 - fb-watchman: 2.0.2 - graceful-fs: 4.2.10 - jest-regex-util: 27.5.1 - jest-serializer: 27.5.1 - jest-util: 27.5.1 - jest-worker: 27.5.1 - micromatch: 4.0.5 - walker: 1.0.8 - optionalDependencies: - fsevents: 2.3.2 - dev: true + /is-obj/2.0.0: + resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} + engines: {node: '>=8'} - /jest-haste-map/29.3.1: - resolution: {integrity: sha512-/FFtvoG1xjbbPXQLFef+WSU4yrc0fc0Dds6aRPBojUid7qlPqZvxdUBA03HW0fnVHXVCnCdkuoghYItKNzc/0A==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.3.1 - '@types/graceful-fs': 4.1.5 - '@types/node': 18.11.10 - anymatch: 3.1.3 - fb-watchman: 2.0.2 - graceful-fs: 4.2.10 - jest-regex-util: 29.2.0 - jest-util: 29.3.1 - jest-worker: 29.3.1 - micromatch: 4.0.5 - walker: 1.0.8 - optionalDependencies: - fsevents: 2.3.2 - dev: true + /is-path-inside/3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} - /jest-jasmine2/27.5.1: - resolution: {integrity: sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/environment': 27.5.1 - '@jest/source-map': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 18.11.10 - chalk: 4.1.2 - co: 4.6.0 - expect: 27.5.1 - is-generator-fn: 2.1.0 - jest-each: 27.5.1 - jest-matcher-utils: 27.5.1 - jest-message-util: 27.5.1 - jest-runtime: 27.5.1 - jest-snapshot: 27.5.1 - jest-util: 27.5.1 - pretty-format: 27.5.1 - throat: 6.0.1 - transitivePeerDependencies: - - supports-color + /is-plain-obj/1.1.0: + resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} + engines: {node: '>=0.10.0'} dev: true - /jest-leak-detector/27.5.1: - resolution: {integrity: sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - jest-get-type: 27.5.1 - pretty-format: 27.5.1 + /is-plain-obj/2.1.0: + resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} + engines: {node: '>=8'} dev: true - /jest-matcher-utils/27.5.1: - resolution: {integrity: sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /is-plain-obj/3.0.0: + resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} + engines: {node: '>=10'} + dev: false + + /is-plain-obj/4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + dev: false + + /is-plain-object/2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} dependencies: - chalk: 4.1.2 - jest-diff: 27.5.1 - jest-get-type: 27.5.1 - pretty-format: 27.5.1 + isobject: 3.0.1 dev: true - /jest-message-util/27.5.1: - resolution: {integrity: sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@babel/code-frame': 7.18.6 - '@jest/types': 27.5.1 - '@types/stack-utils': 2.0.1 - chalk: 4.1.2 - graceful-fs: 4.2.10 - micromatch: 4.0.5 - pretty-format: 27.5.1 - slash: 3.0.0 - stack-utils: 2.0.6 + /is-plain-object/5.0.0: + resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} + engines: {node: '>=0.10.0'} dev: true - /jest-mock/27.5.1: - resolution: {integrity: sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /is-reference/3.0.0: + resolution: {integrity: sha512-Eo1W3wUoHWoCoVM4GVl/a+K0IgiqE5aIo4kJABFyMum1ZORlPkC+UC357sSQUL5w5QCE5kCC9upl75b7+7CY/Q==} dependencies: - '@jest/types': 27.5.1 - '@types/node': 18.11.10 - dev: true + '@types/estree': 1.0.0 + dev: false - /jest-pnp-resolver/1.2.3_jest-resolve@27.5.1: - resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} - engines: {node: '>=6'} - peerDependencies: - jest-resolve: '*' - peerDependenciesMeta: - jest-resolve: - optional: true + /is-ssh/1.4.0: + resolution: {integrity: sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==} dependencies: - jest-resolve: 27.5.1 - dev: true + protocols: 2.0.1 - /jest-regex-util/27.5.1: - resolution: {integrity: sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dev: true + /is-stream/1.1.0: + resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} + engines: {node: '>=0.10.0'} + dev: false - /jest-regex-util/29.2.0: - resolution: {integrity: sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /is-stream/2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} dev: true - /jest-resolve-dependencies/27.5.1: - resolution: {integrity: sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.5.1 - jest-regex-util: 27.5.1 - jest-snapshot: 27.5.1 - transitivePeerDependencies: - - supports-color + /is-stream/3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /jest-resolve/27.5.1: - resolution: {integrity: sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /is-text-path/1.0.1: + resolution: {integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==} + engines: {node: '>=0.10.0'} dependencies: - '@jest/types': 27.5.1 - chalk: 4.1.2 - graceful-fs: 4.2.10 - jest-haste-map: 27.5.1 - jest-pnp-resolver: 1.2.3_jest-resolve@27.5.1 - jest-util: 27.5.1 - jest-validate: 27.5.1 - resolve: 1.22.1 - resolve.exports: 1.1.0 - slash: 3.0.0 + text-extensions: 1.9.0 dev: true - /jest-runner/27.5.1: - resolution: {integrity: sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/console': 27.5.1 - '@jest/environment': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 18.11.10 - chalk: 4.1.2 - emittery: 0.8.1 - graceful-fs: 4.2.10 - jest-docblock: 27.5.1 - jest-environment-jsdom: 27.5.1 - jest-environment-node: 27.5.1 - jest-haste-map: 27.5.1 - jest-leak-detector: 27.5.1 - jest-message-util: 27.5.1 - jest-resolve: 27.5.1 - jest-runtime: 27.5.1 - jest-util: 27.5.1 - jest-worker: 27.5.1 - source-map-support: 0.5.21 - throat: 6.0.1 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - utf-8-validate - dev: true + /is-typedarray/1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} - /jest-runtime/27.5.1: - resolution: {integrity: sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/environment': 27.5.1 - '@jest/fake-timers': 27.5.1 - '@jest/globals': 27.5.1 - '@jest/source-map': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 - chalk: 4.1.2 - cjs-module-lexer: 1.2.2 - collect-v8-coverage: 1.0.1 - execa: 5.1.1 - glob: 7.2.3 - graceful-fs: 4.2.10 - jest-haste-map: 27.5.1 - jest-message-util: 27.5.1 - jest-mock: 27.5.1 - jest-regex-util: 27.5.1 - jest-resolve: 27.5.1 - jest-snapshot: 27.5.1 - jest-util: 27.5.1 - slash: 3.0.0 - strip-bom: 4.0.0 - transitivePeerDependencies: - - supports-color - dev: true + /is-unicode-supported/0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} - /jest-serializer/27.5.1: - resolution: {integrity: sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /is-wsl/2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} dependencies: - '@types/node': 18.11.10 - graceful-fs: 4.2.10 + is-docker: 2.2.1 dev: true - /jest-snapshot/27.5.1: - resolution: {integrity: sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@babel/core': 7.20.5 - '@babel/generator': 7.20.5 - '@babel/plugin-syntax-typescript': 7.20.0_@babel+core@7.20.5 - '@babel/traverse': 7.20.5 - '@babel/types': 7.20.5 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 - '@types/babel__traverse': 7.18.3 - '@types/prettier': 2.7.1 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.5 - chalk: 4.1.2 - expect: 27.5.1 - graceful-fs: 4.2.10 - jest-diff: 27.5.1 - jest-get-type: 27.5.1 - jest-haste-map: 27.5.1 - jest-matcher-utils: 27.5.1 - jest-message-util: 27.5.1 - jest-util: 27.5.1 - natural-compare: 1.4.0 - pretty-format: 27.5.1 - semver: 7.3.8 - transitivePeerDependencies: - - supports-color - dev: true + /is-yarn-global/0.4.1: + resolution: {integrity: sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==} + engines: {node: '>=12'} + dev: false - /jest-util/27.5.1: - resolution: {integrity: sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.5.1 - '@types/node': 18.11.10 - chalk: 4.1.2 - ci-info: 3.7.0 - graceful-fs: 4.2.10 - picomatch: 2.3.1 + /isarray/1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} dev: true - /jest-util/29.3.1: - resolution: {integrity: sha512-7YOVZaiX7RJLv76ZfHt4nbNEzzTRiMW/IiOG7ZOKmTXmoGBxUDefgMAxQubu6WPVqP5zSzAdZG0FfLcC7HOIFQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.3.1 - '@types/node': 18.11.10 - chalk: 4.1.2 - ci-info: 3.7.0 - graceful-fs: 4.2.10 - picomatch: 2.3.1 - dev: true + /isexe/2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - /jest-validate/27.5.1: - resolution: {integrity: sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.5.1 - camelcase: 6.3.0 - chalk: 4.1.2 - jest-get-type: 27.5.1 - leven: 3.1.0 - pretty-format: 27.5.1 + /isobject/3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} dev: true - /jest-watcher/27.5.1: - resolution: {integrity: sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/test-result': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 18.11.10 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - jest-util: 27.5.1 - string-length: 4.0.2 + /istanbul-lib-coverage/3.2.0: + resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} + engines: {node: '>=8'} dev: true - /jest-worker/27.5.1: - resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} - engines: {node: '>= 10.13.0'} + /istanbul-lib-report/3.0.0: + resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} + engines: {node: '>=8'} dependencies: - '@types/node': 18.11.10 - merge-stream: 2.0.0 - supports-color: 8.1.1 + istanbul-lib-coverage: 3.2.0 + make-dir: 3.1.0 + supports-color: 7.2.0 dev: true - /jest-worker/29.3.1: - resolution: {integrity: sha512-lY4AnnmsEWeiXirAIA0c9SDPbuCBq8IYuDVL8PMm0MZ2PEs2yPvRA/J64QBXuZp7CYKrDM/rmNrc9/i3KJQncw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /istanbul-reports/3.1.5: + resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} + engines: {node: '>=8'} dependencies: - '@types/node': 18.11.10 - jest-util: 29.3.1 - merge-stream: 2.0.0 - supports-color: 8.1.1 + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.0 dev: true - /jest/27.5.1_node-notifier@10.0.1: - resolution: {integrity: sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jake/10.8.5: + resolution: {integrity: sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==} + engines: {node: '>=10'} hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true dependencies: - '@jest/core': 27.5.1_node-notifier@10.0.1 - import-local: 3.1.0 - jest-cli: 27.5.1_node-notifier@10.0.1 - node-notifier: 10.0.1 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - ts-node - - utf-8-validate + async: 3.2.4 + chalk: 4.1.2 + filelist: 1.0.4 + minimatch: 3.1.2 dev: true /js-sdsl/4.2.0: @@ -7616,48 +5665,6 @@ packages: argparse: 2.0.1 dev: true - /jsdom/16.7.0: - resolution: {integrity: sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==} - engines: {node: '>=10'} - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - dependencies: - abab: 2.0.6 - acorn: 8.8.1 - acorn-globals: 6.0.0 - cssom: 0.4.4 - cssstyle: 2.3.0 - data-urls: 2.0.0 - decimal.js: 10.4.3 - domexception: 2.0.1 - escodegen: 2.0.0 - form-data: 3.0.1 - html-encoding-sniffer: 2.0.1 - http-proxy-agent: 4.0.1 - https-proxy-agent: 5.0.1 - is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.2 - parse5: 6.0.1 - saxes: 5.0.1 - symbol-tree: 3.2.4 - tough-cookie: 4.1.2 - w3c-hr-time: 1.0.2 - w3c-xmlserializer: 2.0.0 - webidl-conversions: 6.1.0 - whatwg-encoding: 1.0.5 - whatwg-mimetype: 2.3.0 - whatwg-url: 8.7.0 - ws: 7.5.9 - xml-name-validator: 3.0.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - dev: true - /jsesc/0.5.0: resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} hasBin: true @@ -7666,12 +5673,7 @@ packages: /jsesc/1.3.0: resolution: {integrity: sha512-Mke0DA0QjUWuJlhsE0ZPPhYiJkRap642SmI/4ztCFaUs6V2AiH1sfecc+57NgaryfAA2VR3v6O+CSjC1jZJKOA==} hasBin: true - - /jsesc/2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true - dev: true + dev: false /json-buffer/3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} @@ -7704,6 +5706,7 @@ packages: /json5/0.5.1: resolution: {integrity: sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==} hasBin: true + dev: false /json5/1.0.1: resolution: {integrity: sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==} @@ -7712,12 +5715,6 @@ packages: minimist: 1.2.7 dev: true - /json5/2.2.1: - resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} - engines: {node: '>=6'} - hasBin: true - dev: true - /jsonc-parser/3.2.0: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} @@ -7757,11 +5754,6 @@ packages: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} - /kleur/3.0.3: - resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} - engines: {node: '>=6'} - dev: true - /kleur/4.1.5: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} @@ -7806,22 +5798,9 @@ packages: - '@swc-node/register' - '@swc/core' - bluebird - - debug - - encoding - - supports-color - dev: true - - /leven/3.1.0: - resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} - engines: {node: '>=6'} - dev: true - - /levn/0.3.0: - resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.1.2 - type-check: 0.3.2 + - debug + - encoding + - supports-color dev: true /levn/0.4.1: @@ -7929,6 +5908,11 @@ packages: type-fest: 0.6.0 dev: true + /local-pkg/0.4.2: + resolution: {integrity: sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg==} + engines: {node: '>=14'} + dev: true + /locate-path/2.0.0: resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} engines: {node: '>=4'} @@ -7951,10 +5935,6 @@ packages: p-locate: 5.0.0 dev: true - /lodash.debounce/4.0.8: - resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} - dev: true - /lodash.ismatch/4.4.0: resolution: {integrity: sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==} dev: true @@ -8001,6 +5981,12 @@ packages: dependencies: js-tokens: 4.0.0 + /loupe/2.3.6: + resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} + dependencies: + get-func-name: 2.0.0 + dev: true + /lower-case/1.1.4: resolution: {integrity: sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==} dev: false @@ -8068,12 +6054,6 @@ packages: - supports-color dev: true - /makeerror/1.0.12: - resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} - dependencies: - tmpl: 1.0.5 - dev: true - /map-obj/1.0.1: resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} engines: {node: '>=0.10.0'} @@ -8783,6 +6763,7 @@ packages: hasBin: true dependencies: minimist: 1.2.7 + dev: false /mkdirp/1.0.4: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} @@ -8828,7 +6809,6 @@ packages: resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - dev: false /natural-compare/1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -9011,10 +6991,6 @@ packages: - supports-color dev: true - /node-int64/0.4.0: - resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - dev: true - /node-notifier/10.0.1: resolution: {integrity: sha512-YX7TSyDukOZ0g+gmzjB6abKu+hTGvO8+8+gIFDsRCU2t8fLV/P2unmt+LGFaIa4y64aX98Qksa97rgz4vMNeLQ==} dependencies: @@ -9028,6 +7004,7 @@ packages: /node-releases/2.0.6: resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==} + dev: false /nopt/5.0.0: resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} @@ -9211,10 +7188,6 @@ packages: boolbase: 1.0.0 dev: false - /nwsapi/2.2.2: - resolution: {integrity: sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==} - dev: true - /nx/15.2.4: resolution: {integrity: sha512-8rTLo5WGmM6hEo5R/u03Jllkyj4vIUbBk2MRAppCvVRXWLS4xJUEOityXJ5BAvaKoLYm6sWUP1gqU7xlldnT5A==} hasBin: true @@ -9299,18 +7272,6 @@ packages: is-wsl: 2.2.0 dev: true - /optionator/0.8.3: - resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} - engines: {node: '>= 0.8.0'} - dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.3.0 - prelude-ls: 1.1.2 - type-check: 0.3.2 - word-wrap: 1.2.3 - dev: true - /optionator/0.9.1: resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} engines: {node: '>= 0.8.0'} @@ -9340,6 +7301,7 @@ packages: /os-homedir/1.0.2: resolution: {integrity: sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==} engines: {node: '>=0.10.0'} + dev: false /os-tmpdir/1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} @@ -9558,10 +7520,6 @@ packages: dependencies: parse-path: 7.0.0 - /parse5/6.0.1: - resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} - dev: true - /path-exists/3.0.0: resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} engines: {node: '>=4'} @@ -9606,6 +7564,10 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} + /pathval/1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + dev: true + /periscopic/3.0.4: resolution: {integrity: sha512-SFx68DxCv0Iyo6APZuw/AKewkkThGwssmU0QWtTlvov3VAtPX+QJ4CadwSaz8nrT5jPIuxdvJWB4PnD2KNDxQg==} dependencies: @@ -9646,11 +7608,6 @@ packages: engines: {node: '>=10'} dev: true - /pirates/4.0.5: - resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} - engines: {node: '>= 6'} - dev: true - /pkg-dir/4.2.0: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} @@ -9968,12 +7925,6 @@ packages: nanoid: 3.3.4 picocolors: 1.0.0 source-map-js: 1.0.2 - dev: false - - /prelude-ls/1.1.2: - resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} - engines: {node: '>= 0.8.0'} - dev: true /prelude-ls/1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} @@ -9993,15 +7944,6 @@ packages: hasBin: true dev: true - /pretty-format/27.5.1: - resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - ansi-regex: 5.0.1 - ansi-styles: 5.2.0 - react-is: 17.0.2 - dev: true - /private/0.1.8: resolution: {integrity: sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==} engines: {node: '>= 0.6'} @@ -10040,14 +7982,6 @@ packages: retry: 0.12.0 dev: true - /prompts/2.4.2: - resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} - engines: {node: '>= 6'} - dependencies: - kleur: 3.0.3 - sisteransi: 1.0.5 - dev: true - /promzard/0.3.0: resolution: {integrity: sha512-JZeYqd7UAcHCwI+sTOeUDYkvEU+1bQ7iE0UT1MgB/tERkAPkesW46MrpIySzODi+owTjZtiF8Ay5j9m60KmMBw==} dependencies: @@ -10072,10 +8006,6 @@ packages: resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} dev: false - /psl/1.9.0: - resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} - dev: true - /punycode/2.1.1: resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} engines: {node: '>=6'} @@ -10092,10 +8022,6 @@ packages: resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} engines: {node: '>=0.6.0', teleport: '>=0.2.0'} - /querystringify/2.2.0: - resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} - dev: true - /queue-microtask/1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -10129,10 +8055,6 @@ packages: scheduler: 0.23.0 dev: false - /react-is/17.0.2: - resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} - dev: true - /react/18.2.0: resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} engines: {node: '>=0.10.0'} @@ -10255,13 +8177,6 @@ packages: strip-indent: 3.0.0 dev: true - /regenerate-unicode-properties/10.1.0: - resolution: {integrity: sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==} - engines: {node: '>=4'} - dependencies: - regenerate: 1.4.2 - dev: true - /regenerate/1.4.2: resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} dev: true @@ -10271,6 +8186,7 @@ packages: /regenerator-runtime/0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + dev: false /regenerator-transform/0.10.1: resolution: {integrity: sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==} @@ -10280,12 +8196,6 @@ packages: private: 0.1.8 dev: true - /regenerator-transform/0.15.1: - resolution: {integrity: sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==} - dependencies: - '@babel/runtime': 7.20.6 - dev: true - /regexpp/3.2.0: resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} engines: {node: '>=8'} @@ -10299,18 +8209,6 @@ packages: regjsparser: 0.1.5 dev: true - /regexpu-core/5.2.2: - resolution: {integrity: sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==} - engines: {node: '>=4'} - dependencies: - regenerate: 1.4.2 - regenerate-unicode-properties: 10.1.0 - regjsgen: 0.7.1 - regjsparser: 0.9.1 - unicode-match-property-ecmascript: 2.0.0 - unicode-match-property-value-ecmascript: 2.1.0 - dev: true - /registry-auth-token/5.0.1: resolution: {integrity: sha512-UfxVOj8seK1yaIOiieV4FIP01vfBDLsY0H9sQzi9EbbUdJiuuBjJgLa1DpImXMNPnVkBD4eVxTEXcrZA6kfpJA==} engines: {node: '>=14'} @@ -10329,10 +8227,6 @@ packages: resolution: {integrity: sha512-x+Y3yA24uF68m5GA+tBjbGYo64xXVJpbToBaWCoSNSc1hdk6dfctaRWrNFTVJZIIhL5GxW8zwjoixbnifnK59g==} dev: true - /regjsgen/0.7.1: - resolution: {integrity: sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==} - dev: true - /regjsparser/0.1.5: resolution: {integrity: sha512-jlQ9gYLfk2p3V5Ag5fYhA7fv7OHzd1KUH0PRP46xc3TgwjwgROIW572AfYg/X9kaNq/LJnu6oJcFRXlIrGoTRw==} hasBin: true @@ -10340,13 +8234,6 @@ packages: jsesc: 0.5.0 dev: true - /regjsparser/0.9.1: - resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} - hasBin: true - dependencies: - jsesc: 0.5.0 - dev: true - /rehype-mdx-title/1.0.0: resolution: {integrity: sha512-5B/53Y+KQHm4/nrE6pIIPc9Ie2fbPMCLs8WwMGYWWHr+5g3TkmEijRkr8TGYHULtc+C7bOoPR8LIF5DpGROIDg==} engines: {node: '>=12.2.0'} @@ -10428,16 +8315,13 @@ packages: engines: {node: '>=0.10.0'} dependencies: is-finite: 1.1.0 + dev: false /require-directory/2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} dev: true - /requires-port/1.0.0: - resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} - dev: true - /resolve-alpn/1.2.1: resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} dev: false @@ -10459,11 +8343,6 @@ packages: engines: {node: '>=8'} dev: true - /resolve.exports/1.1.0: - resolution: {integrity: sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==} - engines: {node: '>=10'} - dev: true - /resolve/1.22.1: resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} hasBin: true @@ -10507,6 +8386,14 @@ packages: glob: 7.2.3 dev: true + /rollup/2.79.1: + resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} + engines: {node: '>=10.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.2 + dev: true + /run-async/2.4.1: resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} engines: {node: '>=0.12.0'} @@ -10545,13 +8432,6 @@ packages: resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} dev: false - /saxes/5.0.1: - resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==} - engines: {node: '>=10'} - dependencies: - xmlchars: 2.2.0 - dev: true - /scheduler/0.23.0: resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} dependencies: @@ -10654,18 +8534,10 @@ packages: /signal-exit/3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - /sisteransi/1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - dev: true - /slash/1.0.0: resolution: {integrity: sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==} engines: {node: '>=0.10.0'} - - /slash/2.0.0: - resolution: {integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==} - engines: {node: '>=6'} - dev: true + dev: false /slash/3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} @@ -10738,22 +8610,24 @@ packages: /source-map-js/1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} - dev: false /source-map-support/0.4.18: resolution: {integrity: sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==} dependencies: source-map: 0.5.7 + dev: false /source-map-support/0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} dependencies: buffer-from: 1.1.2 source-map: 0.6.1 + dev: false /source-map/0.5.7: resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} engines: {node: '>=0.10.0'} + dev: false /source-map/0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} @@ -10762,6 +8636,7 @@ packages: /source-map/0.7.4: resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} engines: {node: '>= 8'} + dev: false /space-separated-tokens/2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} @@ -10822,26 +8697,11 @@ packages: deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' dev: false - /stack-utils/2.0.6: - resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} - engines: {node: '>=10'} - dependencies: - escape-string-regexp: 2.0.0 - dev: true - /string-argv/0.3.1: resolution: {integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==} engines: {node: '>=0.6.19'} dev: true - /string-length/4.0.2: - resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} - engines: {node: '>=10'} - dependencies: - char-regex: 1.0.2 - strip-ansi: 6.0.1 - dev: true - /string-width/4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -10941,6 +8801,12 @@ packages: engines: {node: '>=8'} dev: true + /strip-literal/0.4.2: + resolution: {integrity: sha512-pv48ybn4iE1O9RLgCAN0iU4Xv7RlBTiit6DKmMiErbs9x1wH6vXBs45tWc0H5wUIF6TLTrKweqkmYF/iraQKNw==} + dependencies: + acorn: 8.8.1 + dev: true + /strong-data-uri/1.0.6: resolution: {integrity: sha512-zhzBZev0uhT2IrFUerenXhfaE0vFUYwAZsnG0gIKGpfM/Gi6jOUQ3cmcvyTsXeDLIPiTubHESeO7EbD6FoPmzw==} engines: {node: '>=0.8.0'} @@ -11016,21 +8882,6 @@ packages: dependencies: has-flag: 4.0.0 - /supports-color/8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - dependencies: - has-flag: 4.0.0 - dev: true - - /supports-hyperlinks/2.3.0: - resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} - engines: {node: '>=8'} - dependencies: - has-flag: 4.0.0 - supports-color: 7.2.0 - dev: true - /supports-preserve-symlinks-flag/1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} @@ -11065,10 +8916,6 @@ packages: stable: 0.1.8 dev: false - /symbol-tree/3.2.4: - resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - dev: true - /tar-stream/2.2.0: resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} engines: {node: '>=6'} @@ -11097,14 +8944,6 @@ packages: engines: {node: '>=4'} dev: true - /terminal-link/2.1.1: - resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} - engines: {node: '>=8'} - dependencies: - ansi-escapes: 4.3.2 - supports-hyperlinks: 2.3.0 - dev: true - /terser/5.16.1: resolution: {integrity: sha512-xvQfyfA1ayT0qdK47zskQgRZeWLoOQ8JQ6mIgRGVNwZKdQMU+5FkCBjmv4QjcrTzyZquRw2FVtlJSRUmMKQslw==} engines: {node: '>=10'} @@ -11134,10 +8973,6 @@ packages: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true - /throat/6.0.1: - resolution: {integrity: sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==} - dev: true - /through/2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true @@ -11159,6 +8994,20 @@ packages: resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} dev: false + /tinybench/2.3.1: + resolution: {integrity: sha512-hGYWYBMPr7p4g5IarQE7XhlyWveh1EKhy4wUBS1LrHXCKYgvz+4/jCqgmJqZxxldesn05vccrtME2RLLZNW7iA==} + dev: true + + /tinypool/0.3.0: + resolution: {integrity: sha512-NX5KeqHOBZU6Bc0xj9Vr5Szbb1j8tUHIeD18s41aDJaPeC5QTdEhK0SpdpUrZlj2nv5cctNcSjaKNanXlfcVEQ==} + engines: {node: '>=14.0.0'} + dev: true + + /tinyspy/1.0.2: + resolution: {integrity: sha512-bSGlgwLBYf7PnUsQ6WOc6SJ3pGOcd+d8AA6EUnLDDM0kWEstC1JIlSZA3UNliDXhd9ABoS7hiRBDCu+XP/sf1Q==} + engines: {node: '>=14.0.0'} + dev: true + /title/3.5.3: resolution: {integrity: sha512-20JyowYglSEeCvZv3EZ0nZ046vLarO37prvV0mbtQV7C8DJPGgN967r8SJkqd3XK3K3lD3/Iyfp3avjfil8Q2Q==} hasBin: true @@ -11188,46 +9037,20 @@ packages: rimraf: 3.0.2 dev: true - /tmpl/1.0.5: - resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} - dev: true - /to-fast-properties/1.0.3: resolution: {integrity: sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==} engines: {node: '>=0.10.0'} - /to-fast-properties/2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - dev: true - /to-regex-range/5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 - /tough-cookie/4.1.2: - resolution: {integrity: sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==} - engines: {node: '>=6'} - dependencies: - psl: 1.9.0 - punycode: 2.1.1 - universalify: 0.2.0 - url-parse: 1.5.10 - dev: true - /tr46/0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} dev: true - /tr46/2.1.0: - resolution: {integrity: sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==} - engines: {node: '>=8'} - dependencies: - punycode: 2.1.1 - dev: true - /treeverse/2.0.0: resolution: {integrity: sha512-N5gJCkLu1aXccpOTtqV6ddSEi6ZmGkh3hjmbu1IjcavJK4qyOVQmi0myQKM7z5jVGmD68SJoliaVrMmVObhj6A==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -11245,6 +9068,7 @@ packages: /trim-right/1.0.1: resolution: {integrity: sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw==} engines: {node: '>=0.10.0'} + dev: false /trough/2.1.0: resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} @@ -11266,13 +9090,6 @@ packages: /tslib/2.4.1: resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} - /type-check/0.3.2: - resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.1.2 - dev: true - /type-check/0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -11356,29 +9173,6 @@ packages: hasBin: true requiresBuild: true - /unicode-canonical-property-names-ecmascript/2.0.0: - resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} - engines: {node: '>=4'} - dev: true - - /unicode-match-property-ecmascript/2.0.0: - resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} - engines: {node: '>=4'} - dependencies: - unicode-canonical-property-names-ecmascript: 2.0.0 - unicode-property-aliases-ecmascript: 2.1.0 - dev: true - - /unicode-match-property-value-ecmascript/2.1.0: - resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} - engines: {node: '>=4'} - dev: true - - /unicode-property-aliases-ecmascript/2.1.0: - resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} - engines: {node: '>=4'} - dev: true - /unified/10.1.2: resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} dependencies: @@ -11504,11 +9298,6 @@ packages: resolution: {integrity: sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==} dev: true - /universalify/0.2.0: - resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} - engines: {node: '>= 4.0.0'} - dev: true - /universalify/2.0.0: resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} engines: {node: '>= 10.0.0'} @@ -11528,6 +9317,7 @@ packages: browserslist: 4.21.4 escalade: 3.1.1 picocolors: 1.0.0 + dev: false /update-notifier/6.0.2: resolution: {integrity: sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==} @@ -11559,13 +9349,6 @@ packages: punycode: 2.1.1 dev: true - /url-parse/1.5.10: - resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} - dependencies: - querystringify: 2.2.0 - requires-port: 1.0.0 - dev: true - /util-deprecate/1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -11589,13 +9372,13 @@ packages: resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} dev: true - /v8-to-istanbul/8.1.1: - resolution: {integrity: sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==} + /v8-to-istanbul/9.0.1: + resolution: {integrity: sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==} engines: {node: '>=10.12.0'} dependencies: + '@jridgewell/trace-mapping': 0.3.17 '@types/istanbul-lib-coverage': 2.0.4 convert-source-map: 1.9.0 - source-map: 0.7.4 dev: true /validate-npm-package-license/3.0.4: @@ -11641,6 +9424,85 @@ packages: vfile-message: 3.1.3 dev: false + /vite/3.2.5_@types+node@18.11.10: + resolution: {integrity: sha512-4mVEpXpSOgrssFZAOmGIr85wPHKvaDAcXqxVxVRZhljkJOMZi1ibLibzjLHzJvcok8BMguLc7g1W6W/GqZbLdQ==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + '@types/node': 18.11.10 + esbuild: 0.15.18 + postcss: 8.4.19 + resolve: 1.22.1 + rollup: 2.79.1 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /vitest/0.25.3: + resolution: {integrity: sha512-/UzHfXIKsELZhL7OaM2xFlRF8HRZgAHtPctacvNK8H4vOcbJJAMEgbWNGSAK7Y9b1NBe5SeM7VTuz2RsTHFJJA==} + engines: {node: '>=v14.16.0'} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@vitest/browser': '*' + '@vitest/ui': '*' + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + dependencies: + '@types/chai': 4.3.4 + '@types/chai-subset': 1.3.3 + '@types/node': 18.11.10 + acorn: 8.8.1 + acorn-walk: 8.2.0 + chai: 4.3.7 + debug: 4.3.4 + local-pkg: 0.4.2 + source-map: 0.6.1 + strip-literal: 0.4.2 + tinybench: 2.3.1 + tinypool: 0.3.0 + tinyspy: 1.0.2 + vite: 3.2.5_@types+node@18.11.10 + transitivePeerDependencies: + - less + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + /vscode-oniguruma/1.7.0: resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} dev: false @@ -11649,30 +9511,10 @@ packages: resolution: {integrity: sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==} dev: false - /w3c-hr-time/1.0.2: - resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} - deprecated: Use your platform's native performance.now() and performance.timeOrigin. - dependencies: - browser-process-hrtime: 1.0.0 - dev: true - - /w3c-xmlserializer/2.0.0: - resolution: {integrity: sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==} - engines: {node: '>=10'} - dependencies: - xml-name-validator: 3.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: - makeerror: 1.0.12 - dev: true - /wcwidth/1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} dependencies: @@ -11682,26 +9524,6 @@ packages: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} dev: true - /webidl-conversions/5.0.0: - resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==} - engines: {node: '>=8'} - dev: true - - /webidl-conversions/6.1.0: - resolution: {integrity: sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==} - engines: {node: '>=10.4'} - dev: true - - /whatwg-encoding/1.0.5: - resolution: {integrity: sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==} - dependencies: - iconv-lite: 0.4.24 - dev: true - - /whatwg-mimetype/2.3.0: - resolution: {integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==} - dev: true - /whatwg-url/5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} dependencies: @@ -11709,15 +9531,6 @@ packages: webidl-conversions: 3.0.1 dev: true - /whatwg-url/8.7.0: - resolution: {integrity: sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==} - engines: {node: '>=10'} - dependencies: - lodash: 4.17.21 - tr46: 2.1.0 - webidl-conversions: 6.1.0 - dev: true - /whet.extend/0.9.9: resolution: {integrity: sha512-mmIPAft2vTgEILgPeZFqE/wWh24SEsR/k+N9fJ3Jxrz44iDFy9aemCxdksfURSHYFCLmvs/d/7Iso5XjPpNfrA==} engines: {node: '>=0.6.0'} @@ -11848,32 +9661,11 @@ packages: write-json-file: 3.2.0 dev: true - /ws/7.5.9: - resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dev: true - /xdg-basedir/5.1.0: resolution: {integrity: sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==} engines: {node: '>=12'} dev: false - /xml-name-validator/3.0.0: - resolution: {integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==} - dev: true - - /xmlchars/2.2.0: - resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} - dev: true - /xtend/4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} diff --git a/tests/files-path.js b/tests/files-path.ts similarity index 100% rename from tests/files-path.js rename to tests/files-path.ts diff --git a/tests/fixtures.js b/tests/fixtures.ts similarity index 99% rename from tests/fixtures.js rename to tests/fixtures.ts index 36fea0130..478d74456 100644 --- a/tests/fixtures.js +++ b/tests/fixtures.ts @@ -1,4 +1,5 @@ -import minify from '../packages/core/src/core'; +import { test, expect } from 'vitest'; +import minify from '../packages/core/src'; import { filesJS, filesCSS, filesHTML, filesJSON } from './files-path'; const runOneTest = ({ options, compressorLabel, compressor, sync }) => { diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 000000000..403c24bf6 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "strict": true, + "strictNullChecks": true, + "esModuleInterop": true, + "noUnusedLocals": true, + "skipLibCheck": true, + "moduleResolution": "node", + "module": "commonjs", + "declaration": true, + "noImplicitAny": false, + "removeComments": true, + "noLib": false, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "target": "es6", + "sourceMap": true, + "lib": ["es6"] + }, + "exclude": ["node_modules", "**/__tests__/**"] +} diff --git a/types.ts b/types.ts new file mode 100644 index 000000000..90bbdc9c3 --- /dev/null +++ b/types.ts @@ -0,0 +1,53 @@ +export interface Options { + sourceMap?: boolean; + _sourceMap?: { url: string } | boolean; + babelrc?: {}; + presets?: []; + strict?: boolean; +} + +// export interface Settings { +// options: Options; +// content: string; +// output: string; +// } + +export interface Settings { + compressorLabel: string | Function; + compressor: string | Function; + sync?: boolean; + callback?: Function; + content?: string; + input: string | string[]; + output: string; + // options?: string | Options; + options: Options; + buffer?: number; +} + +export interface MinifierOptions { + settings?: Settings; + content?: string; + callback?: Function; + index?: number; + args?: string[]; + data?: string; + sync?: boolean; + input?: string | string[]; +} + +export interface Cli { + compressor: string | Function; + input: string; + output: string; + // option: Options; + option: string; + silence?: boolean; +} + +export interface Result { + compressor?: string | Function; + compressorLabel: string | Function; + size: number; + sizeGzip: number; +} diff --git a/vitest.config.ts b/vitest.config.ts new file mode 100644 index 000000000..b939d0503 --- /dev/null +++ b/vitest.config.ts @@ -0,0 +1,10 @@ +import { defineConfig } from 'vitest/config'; + +export default defineConfig({ + test: { + reporters: 'dot', + coverage: { + reporter: ['text', 'json', 'html'] + } + } +});