From 99b1ca6a71a573f61174dffe4cd7902d52909870 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joan=20Leo=CC=81n?= Date: Wed, 28 Dec 2022 16:52:53 +0100 Subject: [PATCH 001/545] docs(Root): add project stats --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 21a22c5ce..a0b251812 100644 --- a/README.md +++ b/README.md @@ -61,4 +61,8 @@ SUI is a set of packages which goal to ease development of SUI-based components - `test:client:watch` - Run client tests and watch for changes - `test:server` - Run server tests - `test:server:watch` - Run server tests and watch for changes -- `test:e2e` - Run E2E tests \ No newline at end of file +- `test:e2e` - Run E2E tests + +## Project Stats + +![Project Stats](https://repobeats.axiom.co/api/embed/0f3c2ce931553c4d7dc2338a83e4d8f7caf87160.svg "Repobeats analytics image") From ca3f4b3b6add3d0464aad407d9100f7ea5992667 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Wed, 21 Jun 2023 11:31:04 +0200 Subject: [PATCH 002/545] feat(packages/sui-bundler): add support to typescript --- packages/sui-bundler/bin/sui-bundler-dev.js | 7 +- .../loaders/linkLoaderConfigBuilder.js | 2 +- packages/sui-bundler/package.json | 9 +- packages/sui-bundler/shared/index.js | 2 +- .../sui-bundler/shared/module-rules-babel.js | 115 ++++++++++++++---- packages/sui-bundler/webpack.config.dev.js | 2 +- 6 files changed, 103 insertions(+), 34 deletions(-) diff --git a/packages/sui-bundler/bin/sui-bundler-dev.js b/packages/sui-bundler/bin/sui-bundler-dev.js index b2d29cb45..3d2e1b451 100755 --- a/packages/sui-bundler/bin/sui-bundler-dev.js +++ b/packages/sui-bundler/bin/sui-bundler-dev.js @@ -67,12 +67,7 @@ const start = async ({ } = {}) => { clearConsole() // Warn and crash if required files are missing - if ( - !checkRequiredFiles([ - path.join(config.context, 'index.html'), - path.join(config.context, 'app.js') - ]) - ) { + if (!checkRequiredFiles([path.join(config.context, 'index.html')])) { log.error( `✖ Required files are missing, create and index.html and app.js inside your src folder.` ) diff --git a/packages/sui-bundler/loaders/linkLoaderConfigBuilder.js b/packages/sui-bundler/loaders/linkLoaderConfigBuilder.js index 166e4681e..775fecb45 100644 --- a/packages/sui-bundler/loaders/linkLoaderConfigBuilder.js +++ b/packages/sui-bundler/loaders/linkLoaderConfigBuilder.js @@ -49,7 +49,7 @@ module.exports = ({config, packagesToLink, linkAll}) => { * if neccesary */ const linkLoader = { - test: /\.(jsx?|scss)$/, + test: /\.(jsx?|tsx?|scss)$/, enforce: 'pre', // this will ensure is execute before transformations use: { loader: require.resolve('./LinkLoader'), diff --git a/packages/sui-bundler/package.json b/packages/sui-bundler/package.json index 4fc44938e..eb03be490 100644 --- a/packages/sui-bundler/package.json +++ b/packages/sui-bundler/package.json @@ -21,9 +21,11 @@ }, "homepage": "https://github.com/SUI-Components/sui/tree/master/packages/sui-bundler#readme", "dependencies": { - "@babel/core": "7.18.10", + "@babel/core": "7.21.8", "@s-ui/helpers": "1", "@s-ui/sass-loader": "1", + "@swc/core": "1.3.14", + "@swc/helpers": "0.4.12", "address": "1.2.0", "autoprefixer": "10.4.8", "babel-loader": "8.2.5", @@ -34,7 +36,7 @@ "css-minimizer-webpack-plugin": "4.0.0", "esbuild": "0.15.5", "escape-string-regexp": "4.0.0", - "fast-glob": "3.2.11", + "fast-glob": "3.2.12", "find-free-ports": "3.0.0", "html-webpack-plugin": "5.5.0", "https-browserify": "1.0.0", @@ -46,8 +48,9 @@ "stream-http": "3.2.0", "strip-ansi": "6.0.1", "style-loader": "3.3.1", + "swc-loader": "0.2.1", "url": "0.11.0", - "webpack": "5.74.0", + "webpack": "5.82.1", "webpack-dev-server": "4.10.0", "webpack-manifest-plugin": "5.0.0", "webpack-node-externals": "3.0.0" diff --git a/packages/sui-bundler/shared/index.js b/packages/sui-bundler/shared/index.js index a112101ea..2c9c59415 100644 --- a/packages/sui-bundler/shared/index.js +++ b/packages/sui-bundler/shared/index.js @@ -1,6 +1,6 @@ const {config} = require('./config.js') -exports.MAIN_ENTRY_POINT = './app.js' +exports.MAIN_ENTRY_POINT = './app' exports.config = config exports.cleanList = list => list.filter(Boolean) diff --git a/packages/sui-bundler/shared/module-rules-babel.js b/packages/sui-bundler/shared/module-rules-babel.js index d3bd48f0c..8a64c5e8f 100644 --- a/packages/sui-bundler/shared/module-rules-babel.js +++ b/packages/sui-bundler/shared/module-rules-babel.js @@ -1,3 +1,5 @@ +/* eslint-disable no-console */ +const fs = require('fs-extra') const path = require('path') const {config} = require('./index.js') @@ -5,28 +7,97 @@ const EXCLUDED_FOLDERS_REGEXP = new RegExp( `node_modules(?!${path.sep}@s-ui(${path.sep}studio)(${path.sep}workbench)?${path.sep}src)` ) -module.exports = ({isServer = false, supportLegacyBrowsers = true} = {}) => ({ - test: /\.jsx?$/, - exclude: EXCLUDED_FOLDERS_REGEXP, - use: [ - { - loader: require.resolve('babel-loader'), - options: { - cacheDirectory: true, - cacheCompression: false, - babelrc: false, - compact: true, - presets: [ - [ - require.resolve('babel-preset-sui'), - { - isServer, - isModern: !supportLegacyBrowsers, - targets: config.targets +const getTSConfig = () => { + // Get TS config from the package dir. + const tsConfigPath = path.join(process.cwd(), 'tsconfig.json') + let tsConfig + + try { + if (fs.existsSync(tsConfigPath)) { + tsConfig = JSON.parse(fs.readFileSync(tsConfigPath, {encoding: 'utf8'})) + } + } catch (err) { + console.error(err) + } + + return tsConfig +} + +module.exports = ({isServer = false, supportLegacyBrowsers = true} = {}) => { + const tsConfig = getTSConfig() + // If TS config exists in root dir, set TypeScript as enabled. + const isTypeScriptEnabled = Boolean(tsConfig) + + return isTypeScriptEnabled + ? { + test: /\.(js|ts)x?$/, + exclude: EXCLUDED_FOLDERS_REGEXP, + use: [ + { + loader: require.resolve('swc-loader'), + options: { + minify: true, + jsc: { + parser: { + syntax: 'typescript', + tsx: true, + dynamicImport: true, + privateMethod: true, + functionBind: true, + exportDefaultFrom: true, + exportNamespaceFrom: true, + decorators: true, + decoratorsBeforeExport: true, + topLevelAwait: true, + importMeta: true + }, + transform: { + legacyDecorator: true, + react: { + useBuiltins: true, + runtime: 'automatic' + } + }, + target: 'es5', + loose: true, + externalHelpers: true + }, + env: { + targets: { + ie: '11' + }, + dynamicImport: true, + loose: true, + mode: 'entry', + coreJs: 3 + } } - ] + } ] } - } - ] -}) + : { + test: /\.jsx?$/, + exclude: EXCLUDED_FOLDERS_REGEXP, + use: [ + { + loader: require.resolve('babel-loader'), + options: { + cacheDirectory: true, + cacheCompression: false, + babelrc: false, + compact: true, + presets: [ + [ + require.resolve('babel-preset-sui'), + { + isServer, + isModern: !supportLegacyBrowsers, + targets: config.targets + } + ] + ] + } + } + ] + } +} diff --git a/packages/sui-bundler/webpack.config.dev.js b/packages/sui-bundler/webpack.config.dev.js index 2c501c8f8..8294e0d8f 100644 --- a/packages/sui-bundler/webpack.config.dev.js +++ b/packages/sui-bundler/webpack.config.dev.js @@ -47,7 +47,7 @@ const webpackConfig = { timers: false }, modules: ['node_modules', path.resolve(process.cwd())], - extensions: ['.js', '.json'] + extensions: ['.js', '.tsx', '.ts', '.json'] }, stats: 'errors-only', entry: cleanList([ From 2e4345526fe601518657921cceb0a50e6eda9af6 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Wed, 21 Jun 2023 11:31:45 +0200 Subject: [PATCH 003/545] feat(packages/sui-lint): add support to typescript --- packages/sui-lint/eslintrc.js | 12 ++++++++++-- packages/sui-lint/package.json | 3 ++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/packages/sui-lint/eslintrc.js b/packages/sui-lint/eslintrc.js index bf62bca3b..7a9f790e0 100644 --- a/packages/sui-lint/eslintrc.js +++ b/packages/sui-lint/eslintrc.js @@ -215,14 +215,22 @@ module.exports = { overrides: [ { files: ['**/*.+(ts|tsx)'], - extends: ['standard-with-typescript'], + extends: ['standard-with-typescript', 'standard-react', 'prettier'], parserOptions: { project: './tsconfig.json' }, rules: { 'no-return-await': RULES.OFF, 'prettier/prettier': RULES.OFF, - 'react/react-in-jsx-scope': RULES.OFF + 'react/react-in-jsx-scope': RULES.OFF, + 'react/no-unused-prop-types': RULES.OFF, + '@typescript-eslint/explicit-function-return-type': [ + RULES.OFF, + {allowTypedFunctionExpressions: false} + ], + 'chai-friendly/no-unused-expressions': RULES.ERROR, + '@typescript-eslint/no-unused-expressions': RULES.OFF, + '@typescript-eslint/return-await': RULES.OFF } }, { diff --git a/packages/sui-lint/package.json b/packages/sui-lint/package.json index 3023e77a1..98ef1817b 100644 --- a/packages/sui-lint/package.json +++ b/packages/sui-lint/package.json @@ -18,11 +18,12 @@ "@babel/eslint-parser": "7.18.9", "@babel/eslint-plugin": "7.18.10", "@s-ui/helpers": "1", - "@typescript-eslint/eslint-plugin": "5.33.0", + "@typescript-eslint/eslint-plugin": "5.57.0", "commander": "8.3.0", "eslint": "8.20.0", "eslint-config-prettier": "8.5.0", "eslint-config-standard": "17.0.0", + "eslint-config-standard-react": "13.0.0", "eslint-config-standard-with-typescript": "22.0.0", "eslint-plugin-chai-friendly": "0.7.2", "eslint-plugin-cypress": "2.12.1", From a4eb7cae0cb12254d34eacc41b61067928096fb0 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Wed, 21 Jun 2023 11:32:03 +0200 Subject: [PATCH 004/545] feat(packages/sui-react-context): add support to typescript --- packages/sui-react-context/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/sui-react-context/package.json b/packages/sui-react-context/package.json index 4fab32f5d..1cb2a355f 100644 --- a/packages/sui-react-context/package.json +++ b/packages/sui-react-context/package.json @@ -1,9 +1,9 @@ { "name": "@s-ui/react-context", - "version": "1.8.0", + "version": "1.8.1-typescript.0", "description": "", "main": "lib/index", - "types": "src/index.tsx", + "types": "lib/index.d.ts", "scripts": { "lib": "rm -rf ./lib && tsc", "prepublishOnly": "npm run lib" From 486ff09111405f3b021b91bda6c11ed7e8823075 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Wed, 21 Jun 2023 11:32:35 +0200 Subject: [PATCH 005/545] feat(packages/sui-studio): add support to typescript --- packages/sui-studio/package.json | 4 ++-- packages/sui-studio/src/components/tryRequire.js | 8 ++++---- .../sui-studio/workbench/src/components/Root/index.js | 10 +++++----- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/packages/sui-studio/package.json b/packages/sui-studio/package.json index 0420ce10c..fd1c68b94 100644 --- a/packages/sui-studio/package.json +++ b/packages/sui-studio/package.json @@ -11,9 +11,9 @@ "license": "MIT", "dependencies": { "@babel/cli": "7", - "@s-ui/bundler": "9", + "@s-ui/bundler": "typescript", "@s-ui/helpers": "1", - "@s-ui/react-context": "1", + "@s-ui/react-context": "typescript", "@s-ui/react-router": "1", "@s-ui/test": "8", "@testing-library/react": "10.4.9", diff --git a/packages/sui-studio/src/components/tryRequire.js b/packages/sui-studio/src/components/tryRequire.js index b18d0e0cd..3ab913429 100644 --- a/packages/sui-studio/src/components/tryRequire.js +++ b/packages/sui-studio/src/components/tryRequire.js @@ -62,8 +62,8 @@ export const importReactComponent = ({ importFile: () => { return import( /* webpackChunkName: "src-[request]" */ - /* webpackExclude: /\/node_modules\/(.*)\/src\/index.js$/ */ - `${__BASE_DIR__}/components/${category}/${component}/src/index.js` + /* webpackExclude: /\/node_modules\/(.*)\/src\/index$/ */ + `${__BASE_DIR__}/components/${category}/${component}/src/index` ) } }) @@ -74,8 +74,8 @@ const importDemo = ({category, component}) => importFile: () => import( /* webpackChunkName: "demo-[request]" */ - /* webpackExclude: /\/node_modules\/(.*)\/demo\/index.js$/ */ - `${__BASE_DIR__}/components/${category}/${component}/demo/index.js` + /* webpackExclude: /\/node_modules\/(.*)\/demo\/index$/ */ + `${__BASE_DIR__}/components/${category}/${component}/demo/index` ) }) diff --git a/packages/sui-studio/workbench/src/components/Root/index.js b/packages/sui-studio/workbench/src/components/Root/index.js index 8568ccb45..2ea0e4041 100644 --- a/packages/sui-studio/workbench/src/components/Root/index.js +++ b/packages/sui-studio/workbench/src/components/Root/index.js @@ -2,12 +2,12 @@ import {useState} from 'react' import PropTypes from 'prop-types' -import Header from '../Header/index.js' -import Select from '../Select/index.js' -import Test from '../Suite/index.js' +import Header from '../Header/index' +import Select from '../Select/index' +import Test from '../Suite/index' -const importComponent = () => import('component/index.js') -const importTest = () => import('test/index.test.js') +const importComponent = () => import('component/index') +const importTest = () => import('test/index.test') const getFromStorage = (key, defaultValue) => window.sessionStorage[key] || defaultValue From a39c57ef753aad32eebfe401c1e0f0660d5e2656 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Mon, 26 Jun 2023 12:13:14 +0200 Subject: [PATCH 006/545] chore(packages/sui-bundler): set new beta version --- packages/sui-bundler/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sui-bundler/package.json b/packages/sui-bundler/package.json index eb03be490..e0a121ee7 100644 --- a/packages/sui-bundler/package.json +++ b/packages/sui-bundler/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/bundler", - "version": "9.38.0", + "version": "9.39.0-typescript.7", "description": "Config-free bundler for ES6 React apps.", "bin": { "sui-bundler": "./bin/sui-bundler.js" From c599db54157be81925a21085dcb367b77bedbb27 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Mon, 26 Jun 2023 12:14:33 +0200 Subject: [PATCH 007/545] chore(packages/sui-lint): set new ts tag --- packages/sui-lint/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sui-lint/package.json b/packages/sui-lint/package.json index 98ef1817b..6fef7e487 100644 --- a/packages/sui-lint/package.json +++ b/packages/sui-lint/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/lint", - "version": "4.33.0", + "version": "4.34.0-typescript.0", "description": "Linting CLI for sui packages", "main": "./bin/sui-lint.js", "bin": { From 505be81d45d3aa0e0bd0d4b8ef506097c35da911 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Mon, 26 Jun 2023 12:15:20 +0200 Subject: [PATCH 008/545] chore(packages/sui-react-context): set new ts tag --- packages/sui-react-context/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sui-react-context/package.json b/packages/sui-react-context/package.json index 1cb2a355f..801b43bad 100644 --- a/packages/sui-react-context/package.json +++ b/packages/sui-react-context/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-context", - "version": "1.8.1-typescript.0", + "version": "1.8.1-typescript.1", "description": "", "main": "lib/index", "types": "lib/index.d.ts", From cc743be7653c98ed9774bc6fe0e330b09c33efbd Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Mon, 26 Jun 2023 12:15:48 +0200 Subject: [PATCH 009/545] chore(packages/sui-studio): set new ts tag --- packages/sui-studio/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sui-studio/package.json b/packages/sui-studio/package.json index fd1c68b94..cd266d8d8 100644 --- a/packages/sui-studio/package.json +++ b/packages/sui-studio/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/studio", - "version": "11.33.0", + "version": "11.34.0-typescript.1", "description": "Develop, maintain and publish your SUI components.", "main": "index.js", "bin": { From 12224a58b94649bcbb7c87a519e9a5339d73b42b Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Mon, 17 Jul 2023 14:38:47 +0200 Subject: [PATCH 010/545] feat(packages/sui-bundler): Add TS support for dev and build --- packages/sui-bundler/package.json | 6 ++- packages/sui-bundler/scripts/postinstall.js | 52 +++++++++++++++++++ packages/sui-bundler/shared/define.js | 23 ++++++-- .../sui-bundler/shared/module-rules-babel.js | 39 +------------- packages/sui-bundler/shared/resolve-alias.js | 24 ++++++--- packages/sui-bundler/tsconfig.json | 3 ++ packages/sui-bundler/webpack.config.prod.js | 2 +- 7 files changed, 99 insertions(+), 50 deletions(-) create mode 100755 packages/sui-bundler/scripts/postinstall.js create mode 100644 packages/sui-bundler/tsconfig.json diff --git a/packages/sui-bundler/package.json b/packages/sui-bundler/package.json index eb03be490..652c19cbf 100644 --- a/packages/sui-bundler/package.json +++ b/packages/sui-bundler/package.json @@ -1,12 +1,13 @@ { "name": "@s-ui/bundler", - "version": "9.38.0", + "version": "9.39.0-typescript.115", "description": "Config-free bundler for ES6 React apps.", "bin": { "sui-bundler": "./bin/sui-bundler.js" }, "main": "./bin/sui-bundler.js", "scripts": { + "postinstall": "node ./scripts/postinstall.js", "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], @@ -22,8 +23,9 @@ "homepage": "https://github.com/SUI-Components/sui/tree/master/packages/sui-bundler#readme", "dependencies": { "@babel/core": "7.21.8", - "@s-ui/helpers": "1", + "@s-ui/helpers": "typescript", "@s-ui/sass-loader": "1", + "@s-ui/typescript-config": "typescript", "@swc/core": "1.3.14", "@swc/helpers": "0.4.12", "address": "1.2.0", diff --git a/packages/sui-bundler/scripts/postinstall.js b/packages/sui-bundler/scripts/postinstall.js new file mode 100755 index 000000000..e6610d501 --- /dev/null +++ b/packages/sui-bundler/scripts/postinstall.js @@ -0,0 +1,52 @@ +#!/usr/bin/env node + +const crypto = require('crypto') +const fs = require('fs-extra') +const path = require('path') +const {writeFile} = require('@s-ui/helpers/file.js') +const {dynamicPackage} = require('@s-ui/helpers/packages') + +const {INIT_CWD} = process.env +const tsConfigTemplate = `\ +{ + "extends": "@s-ui/bundler/tsconfig.json", + "compilerOptions": { + "rootDir": "./src" + }, + "include": ["src/**/*"] +}` + +const md5 = str => crypto.createHash('md5').update(str).digest('hex') +const TS_CONFIG_PATH = path.join(INIT_CWD, 'tsconfig.json') +const PACKAGE_JSON_CONFIG_PATH = path.join(INIT_CWD, 'package.json') + +const config = require(PACKAGE_JSON_CONFIG_PATH)?.config?.['sui-bundler'] || {} + +const shouldGenerateTSConfig = () => { + try { + if (!config?.type || config?.type !== 'typescript') return false + + if (!fs.existsSync(TS_CONFIG_PATH)) return true + + const tsConfigLocal = fs.readFileSync(TS_CONFIG_PATH, {encoding: 'utf8'}) + return md5(tsConfigLocal) !== md5(tsConfigTemplate) + } catch (err) { + return true + } +} + +async function main() { + console.log( + '🔍 [sui-bundler postinstall] Checking if tsconfig.json is up to date...' + ) + if (!shouldGenerateTSConfig()) { + console.log('✅ [sui-bundler postinstall] tsconfig.json is up to date') + process.exit(0) + } + await writeFile(TS_CONFIG_PATH, tsConfigTemplate) + await dynamicPackage('typescript') + console.log( + '❌ [sui-bundler postinstall] tsconfig.json was not up to date, so we updated it' + ) +} +main() diff --git a/packages/sui-bundler/shared/define.js b/packages/sui-bundler/shared/define.js index 242a361b5..d19795e35 100644 --- a/packages/sui-bundler/shared/define.js +++ b/packages/sui-bundler/shared/define.js @@ -6,9 +6,24 @@ if (process.platform === 'win32') { process.env.PWD = process.cwd() } -module.exports = (vars = {}) => - new webpack.DefinePlugin({ +const {MAGIC_STRINGS = '{}'} = process.env + +let magic +try { + magic = JSON.parse(MAGIC_STRINGS) +} catch (err) { + magic = {} +} + +module.exports = (vars = {}) => { + const definitions = { __DEV__: false, __BASE_DIR__: JSON.stringify(process.env.PWD), - ...vars - }) + ...vars, + ...Object.fromEntries( + Object.entries(magic).map(([key, value]) => [key, JSON.stringify(value)]) + ) + } + + return new webpack.DefinePlugin(definitions) +} diff --git a/packages/sui-bundler/shared/module-rules-babel.js b/packages/sui-bundler/shared/module-rules-babel.js index 8a64c5e8f..443ea8084 100644 --- a/packages/sui-bundler/shared/module-rules-babel.js +++ b/packages/sui-bundler/shared/module-rules-babel.js @@ -2,6 +2,7 @@ const fs = require('fs-extra') const path = require('path') const {config} = require('./index.js') +const {getSWCConfig} = require('@s-ui/typescript-config') const EXCLUDED_FOLDERS_REGEXP = new RegExp( `node_modules(?!${path.sep}@s-ui(${path.sep}studio)(${path.sep}workbench)?${path.sep}src)` @@ -35,43 +36,7 @@ module.exports = ({isServer = false, supportLegacyBrowsers = true} = {}) => { use: [ { loader: require.resolve('swc-loader'), - options: { - minify: true, - jsc: { - parser: { - syntax: 'typescript', - tsx: true, - dynamicImport: true, - privateMethod: true, - functionBind: true, - exportDefaultFrom: true, - exportNamespaceFrom: true, - decorators: true, - decoratorsBeforeExport: true, - topLevelAwait: true, - importMeta: true - }, - transform: { - legacyDecorator: true, - react: { - useBuiltins: true, - runtime: 'automatic' - } - }, - target: 'es5', - loose: true, - externalHelpers: true - }, - env: { - targets: { - ie: '11' - }, - dynamicImport: true, - loose: true, - mode: 'entry', - coreJs: 3 - } - } + options: getSWCConfig({isModern: false, isTypeScript: true}) } ] } diff --git a/packages/sui-bundler/shared/resolve-alias.js b/packages/sui-bundler/shared/resolve-alias.js index ddd15521a..ebb700fa0 100644 --- a/packages/sui-bundler/shared/resolve-alias.js +++ b/packages/sui-bundler/shared/resolve-alias.js @@ -1,5 +1,6 @@ const path = require('path') const {config} = require('./config.js') +const fs = require('fs') const {PWD} = process.env @@ -11,22 +12,33 @@ const {PWD} = process.env */ const defaultPackagesToAlias = [ 'react', + 'react-dom', 'react-router-dom', + 'react/jsx-dev-runtime', + 'react/jsx-runtime', '@s-ui/pde', '@s-ui/react-context', '@s-ui/react-router' ] -const createAliasPath = pkgName => - path.resolve(path.join(PWD, `./node_modules/${pkgName}`)) +const createAliasPath = pkgName => { + const PWDNodeModules = path.join(PWD, './node_modules') + if (fs.existsSync(PWDNodeModules)) + return path.resolve(path.join(PWDNodeModules, pkgName)) -const mustPackagesToAlias = { - 'react/jsx-dev-runtime': 'react/jsx-dev-runtime.js', - 'react/jsx-runtime': 'react/jsx-runtime.js' + try { + return require.resolve(pkgName).replace(/\/index\.js$/, '') + } catch (e) { + return '' + } } +const mustPackagesToAlias = {} + exports.defaultAlias = Object.fromEntries( - defaultPackagesToAlias.map(pkgName => [pkgName, createAliasPath(pkgName)]) + defaultPackagesToAlias + .map(pkgName => [pkgName, createAliasPath(pkgName)]) + .filter(([, path]) => path) ) const aliasFromConfig = config.alias diff --git a/packages/sui-bundler/tsconfig.json b/packages/sui-bundler/tsconfig.json new file mode 100644 index 000000000..754330a94 --- /dev/null +++ b/packages/sui-bundler/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "@s-ui/typescript-config/tsconfig.json" +} diff --git a/packages/sui-bundler/webpack.config.prod.js b/packages/sui-bundler/webpack.config.prod.js index 3c933dab1..525bd82b0 100644 --- a/packages/sui-bundler/webpack.config.prod.js +++ b/packages/sui-bundler/webpack.config.prod.js @@ -54,7 +54,7 @@ const webpackConfig = { context: path.resolve(CWD, 'src'), resolve: { alias: {...aliasFromConfig}, - extensions: ['.js', '.json'], + extensions: ['.js', '.json', '.ts', '.tsx'], modules: ['node_modules', path.resolve(CWD)], fallback: { assert: false, From dbfded8342e96add990b323337e54b1d34cd6a2b Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Mon, 17 Jul 2023 14:39:24 +0200 Subject: [PATCH 011/545] feat(packages/sui-helpers): Add dynamicPackage --- packages/sui-helpers/package.json | 2 +- packages/sui-helpers/packages.js | 16 +++++++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/packages/sui-helpers/package.json b/packages/sui-helpers/package.json index 710286d8d..3ef52141b 100644 --- a/packages/sui-helpers/package.json +++ b/packages/sui-helpers/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/helpers", - "version": "1.38.0", + "version": "1.38.0-typescript.1", "description": "A set of internal helpers used by sui-related packages.", "author": "", "dependencies": { diff --git a/packages/sui-helpers/packages.js b/packages/sui-helpers/packages.js index 7a2f3cd3f..6905bf147 100644 --- a/packages/sui-helpers/packages.js +++ b/packages/sui-helpers/packages.js @@ -65,9 +65,23 @@ const resolveLazyNPMBin = async (binPath, pkg, cwd = process.cwd()) => { ).then(resolvePkgBin) } } +const dynamicPackage = async (name, {version} = {}) => { + const packageName = version ? `${name}@${version}` : name + + try { + await getSpawnPromise('npm', ['explain', packageName]) + } catch (error) { + if (error.exitCode === 1) { + await getSpawnPromise('npm', ['install', packageName, '--no-save']) + } + } + + return import(packageName).then(module => module.default) +} module.exports = { getPackageJson, getPackagesPaths, - resolveLazyNPMBin + resolveLazyNPMBin, + dynamicPackage } From a5c8730a271c9271c6882d81fe64349b3af778e2 Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Mon, 17 Jul 2023 14:39:56 +0200 Subject: [PATCH 012/545] feat(packages/sui-lint): Add support to parse TS files --- packages/sui-lint/eslintrc.js | 3 ++- packages/sui-lint/package.json | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/sui-lint/eslintrc.js b/packages/sui-lint/eslintrc.js index 7a9f790e0..f25d88611 100644 --- a/packages/sui-lint/eslintrc.js +++ b/packages/sui-lint/eslintrc.js @@ -216,12 +216,13 @@ module.exports = { { files: ['**/*.+(ts|tsx)'], extends: ['standard-with-typescript', 'standard-react', 'prettier'], + parser: '@typescript-eslint/parser', parserOptions: { project: './tsconfig.json' }, rules: { 'no-return-await': RULES.OFF, - 'prettier/prettier': RULES.OFF, + 'prettier/prettier': [RULES.ERROR, prettierOptions], 'react/react-in-jsx-scope': RULES.OFF, 'react/no-unused-prop-types': RULES.OFF, '@typescript-eslint/explicit-function-return-type': [ diff --git a/packages/sui-lint/package.json b/packages/sui-lint/package.json index 98ef1817b..913153646 100644 --- a/packages/sui-lint/package.json +++ b/packages/sui-lint/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/lint", - "version": "4.33.0", + "version": "4.33.0-typescript.10", "description": "Linting CLI for sui packages", "main": "./bin/sui-lint.js", "bin": { From 75d688244571731d1ccf9d7eeb128bf30ee09b0b Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Mon, 17 Jul 2023 14:42:35 +0200 Subject: [PATCH 013/545] feat(packages/sui-studio): Use MAGIC_STRING to support sui-bundler with TS --- packages/sui-studio/bin/sui-studio.js | 30 ++++++++++++++++++- packages/sui-studio/package.json | 2 +- .../sui-studio/src/components/layout/index.js | 2 +- .../sui-studio/src/components/tryRequire.js | 5 ++-- packages/sui-studio/src/components/utils.js | 21 ++----------- 5 files changed, 37 insertions(+), 23 deletions(-) diff --git a/packages/sui-studio/bin/sui-studio.js b/packages/sui-studio/bin/sui-studio.js index 75c4309cb..b28b95712 100755 --- a/packages/sui-studio/bin/sui-studio.js +++ b/packages/sui-studio/bin/sui-studio.js @@ -10,6 +10,33 @@ const copyGlobals = require('./helpers/copyGlobals.js') program.version(version, ' --version') +const listOfComponents = () => { + const fg = require('fast-glob') + const path = require('path') + + const folders = fg.sync('components/*/*', { + deep: 3, + onlyDirectories: true + }) + const components = folders.map(folder => { + const [, category, component] = folder.split(path.sep) + return {category, component} + }) + return components +} + +const config = () => { + const path = require('path') + const {config = {}} = require(path.join(process.cwd(), 'package.json')) + console.log(path.join(process.cwd(), 'package.json')) + return config['sui-studio'] || {} +} + +process.env.MAGIC_STRINGS = JSON.stringify({ + __SUI_STUDIO_COMPONENTS_LIST__: listOfComponents(), + __SUI_STUDIO_CONFIG__: config() +}) + program .command('start') .alias('s') @@ -22,7 +49,8 @@ program const devServerExec = require.resolve('@s-ui/bundler/bin/sui-bundler-dev') const args = ['-c', path.join(__dirname, '..', 'src')] getSpawnPromise(devServerExec, args, { - shell: false + shell: false, + env: process.env }).then(process.exit, process.exit) }) diff --git a/packages/sui-studio/package.json b/packages/sui-studio/package.json index fd1c68b94..381340530 100644 --- a/packages/sui-studio/package.json +++ b/packages/sui-studio/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/studio", - "version": "11.33.0", + "version": "11.34.0-typescript.2", "description": "Develop, maintain and publish your SUI components.", "main": "index.js", "bin": { diff --git a/packages/sui-studio/src/components/layout/index.js b/packages/sui-studio/src/components/layout/index.js index 809db869f..65fbd4579 100644 --- a/packages/sui-studio/src/components/layout/index.js +++ b/packages/sui-studio/src/components/layout/index.js @@ -1,4 +1,4 @@ -import React, {useEffect, useState, useRef} from 'react' +import React, {useEffect, useRef, useState} from 'react' import cx from 'classnames' import PropTypes from 'prop-types' diff --git a/packages/sui-studio/src/components/tryRequire.js b/packages/sui-studio/src/components/tryRequire.js index 3ab913429..d9f766277 100644 --- a/packages/sui-studio/src/components/tryRequire.js +++ b/packages/sui-studio/src/components/tryRequire.js @@ -82,12 +82,13 @@ const importDemo = ({category, component}) => export const importGlobals = () => { // we use a variable for the file so Webpack // could safe fail if the file doesn't exist - const globalsFile = 'globals.js' + // const globalsFile = 'globals.js' return safeImport({ importFile: () => import( /* webpackInclude: /\/components\/globals.js$/ */ - `${__BASE_DIR__}/components/${globalsFile}` + /* webpackExclude: /*.md$/ */ + `${__BASE_DIR__}/components/globals.js` ) }) } diff --git a/packages/sui-studio/src/components/utils.js b/packages/sui-studio/src/components/utils.js index 74a8c9e68..966c4e763 100644 --- a/packages/sui-studio/src/components/utils.js +++ b/packages/sui-studio/src/components/utils.js @@ -1,3 +1,4 @@ +/* globals __SUI_STUDIO_CONFIG__ __SUI_STUDIO_COMPONENTS_LIST__ */ import {forwardRef} from 'react' import hoistNonReactStatics from 'hoist-non-react-statics' @@ -8,27 +9,11 @@ const DEFAULT_LOGO = " " export const getComponentsList = () => { - const listOfComponents = preval` - const fg = require('fast-glob') - const path = require('path') - - const folders = fg.sync('components/*/*', { deep: 3, onlyDirectories: true}) - const components = folders.map(folder => { - const [,category, component] = folder.split(path.sep) - return {category, component} - }) - module.exports = components - ` - return listOfComponents + return __SUI_STUDIO_COMPONENTS_LIST__ } export const getSuiStudioConfig = () => { - const config = preval` - const path = require('path') - const {config = {}} = require(path.join(process.cwd(), 'package.json')) - module.exports = config['sui-studio'] || {} - ` - return config + return __SUI_STUDIO_CONFIG__ } export const getStudioName = () => { From 4d8160d0349d635a0960f6519873816478c25ec8 Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Mon, 17 Jul 2023 14:43:08 +0200 Subject: [PATCH 014/545] feat(packages/sui-typescript-config): Create package Add several TS configs shared --- packages/sui-typescript-config/package.json | 22 ++++++++ packages/sui-typescript-config/src/index.js | 56 ++++++++++++++++++++ packages/sui-typescript-config/tsconfig.json | 8 +++ 3 files changed, 86 insertions(+) create mode 100644 packages/sui-typescript-config/package.json create mode 100644 packages/sui-typescript-config/src/index.js create mode 100644 packages/sui-typescript-config/tsconfig.json diff --git a/packages/sui-typescript-config/package.json b/packages/sui-typescript-config/package.json new file mode 100644 index 000000000..e9611c8b6 --- /dev/null +++ b/packages/sui-typescript-config/package.json @@ -0,0 +1,22 @@ +{ + "name": "@s-ui/typescript-config", + "version": "1.0.0-typescript.1", + "description": "Typescript config for SUI projects", + "main": "src/index.js", + "scripts": {}, + "keywords": [], + "author": "", + "license": "MIT", + "repository": { + "type": "git", + "url": "git+https://github.com/SUI-Components/sui.git" + }, + "bugs": { + "url": "https://github.com/SUI-Components/sui/issues" + }, + "homepage": "https://github.com/SUI-Components/sui/tree/master/packages/sui-typescript-config#readme", + "dependencies": { + "@tsconfig/esm": "^1.0.4", + "@tsconfig/vite-react": "^2.0.0" + } +} diff --git a/packages/sui-typescript-config/src/index.js b/packages/sui-typescript-config/src/index.js new file mode 100644 index 000000000..c0d993cf6 --- /dev/null +++ b/packages/sui-typescript-config/src/index.js @@ -0,0 +1,56 @@ +const DEFAULT_LEGACY_BROWSER_TARGETS = { + ie: '11' +} + +const DEFAULT_BROWSER_TARGETS = { + chrome: '98', + edge: '107', + safari: '14.1', + firefox: '108', + ios: '14.5' +} + +const getSWCConfig = ({isModern, isTypeScript}) => { + const targets = isModern + ? DEFAULT_BROWSER_TARGETS + : DEFAULT_LEGACY_BROWSER_TARGETS + const syntaxOptions = isTypeScript + ? {syntax: 'typescript', tsx: true} + : {syntax: 'ecmascript', jsx: true} + + return { + minify: true, + jsc: { + parser: { + ...syntaxOptions, + dynamicImport: true, + privateMethod: true, + functionBind: true, + exportDefaultFrom: true, + exportNamespaceFrom: true, + decorators: true, + decoratorsBeforeExport: true, + topLevelAwait: true, + importMeta: true + }, + transform: { + legacyDecorator: true, + react: { + useBuiltins: true, + runtime: 'automatic' + } + }, + loose: true, + externalHelpers: true + }, + env: { + targets, + dynamicImport: true, + loose: true, + mode: 'entry', + coreJs: 3 + } + } +} + +module.exports.getSWCConfig = getSWCConfig diff --git a/packages/sui-typescript-config/tsconfig.json b/packages/sui-typescript-config/tsconfig.json new file mode 100644 index 000000000..09340ea34 --- /dev/null +++ b/packages/sui-typescript-config/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": ["@tsconfig/esm/tsconfig.json", "@tsconfig/vite-react/tsconfig.json"], + "compilerOptions": { + "allowJs": true, + "target": "ES2022" + } +} + From b4cd94c8234c4be7d3584c6a784da5ca194f8963 Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Thu, 20 Jul 2023 11:20:09 +0200 Subject: [PATCH 015/545] fix(packages/sui-studio): fix require globals.js --- packages/sui-studio/package.json | 2 +- packages/sui-studio/src/components/globals.js | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/packages/sui-studio/package.json b/packages/sui-studio/package.json index 8f5849e93..8ce3832ea 100644 --- a/packages/sui-studio/package.json +++ b/packages/sui-studio/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/studio", - "version": "11.35.0-typescript.0", + "version": "11.35.0-typescript.3", "description": "Develop, maintain and publish your SUI components.", "main": "index.js", "bin": { diff --git a/packages/sui-studio/src/components/globals.js b/packages/sui-studio/src/components/globals.js index 7be636942..cace2bba1 100644 --- a/packages/sui-studio/src/components/globals.js +++ b/packages/sui-studio/src/components/globals.js @@ -3,14 +3,11 @@ import {safeImport} from './utils.js' export const importGlobals = () => { - // we use a variable for the file so Webpack - // could safe fail if the file doesn't exist - const globalsFile = 'globals.js' return safeImport({ importFile: () => import( /* webpackInclude: /\/components\/globals.js$/ */ - `${__BASE_DIR__}/components/${globalsFile}` + `${__BASE_DIR__}/components/globals.js` ) }) } From 0bc9fd50006771d5e8c84203854b71b4432b5bfa Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Wed, 9 Aug 2023 16:47:32 +0200 Subject: [PATCH 016/545] feat(packages/sui-bundler): add more support to typescript --- packages/sui-bundler/package.json | 2 +- packages/sui-bundler/scripts/postinstall.js | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/sui-bundler/package.json b/packages/sui-bundler/package.json index 652c19cbf..9f1c0986c 100644 --- a/packages/sui-bundler/package.json +++ b/packages/sui-bundler/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/bundler", - "version": "9.39.0-typescript.115", + "version": "9.39.0-typescript.117", "description": "Config-free bundler for ES6 React apps.", "bin": { "sui-bundler": "./bin/sui-bundler.js" diff --git a/packages/sui-bundler/scripts/postinstall.js b/packages/sui-bundler/scripts/postinstall.js index e6610d501..9e1a110f0 100755 --- a/packages/sui-bundler/scripts/postinstall.js +++ b/packages/sui-bundler/scripts/postinstall.js @@ -1,4 +1,5 @@ #!/usr/bin/env node +/* eslint-disable no-console */ const crypto = require('crypto') const fs = require('fs-extra') @@ -11,9 +12,9 @@ const tsConfigTemplate = `\ { "extends": "@s-ui/bundler/tsconfig.json", "compilerOptions": { - "rootDir": "./src" + "rootDir": "./" }, - "include": ["src/**/*"] + "include": ["src", "domain", "components"] }` const md5 = str => crypto.createHash('md5').update(str).digest('hex') From 5397da91d6c2bb2abcc4d81b9c7249941ccc23fa Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Wed, 9 Aug 2023 16:48:02 +0200 Subject: [PATCH 017/545] test(packages/sui-react-head): fix some tests --- packages/sui-react-head/test/server/serverSpec.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/sui-react-head/test/server/serverSpec.js b/packages/sui-react-head/test/server/serverSpec.js index 1b4e75b7e..fc16300fb 100644 --- a/packages/sui-react-head/test/server/serverSpec.js +++ b/packages/sui-react-head/test/server/serverSpec.js @@ -59,7 +59,7 @@ describe.server('react-head on server', () => { renderHeadTagsToString(headTags) expect(headString).to.equal( - 'My awesome title' + 'My awesome title' ) expect(htmlAttributes).to.equal('data-rh="" lang="es"') expect(bodyAttributes).to.equal('data-rh="" class="is-test"') @@ -86,7 +86,7 @@ describe.server('react-head on server', () => { renderHeadTagsToString(headTags) expect(headString).to.equal( - 'My awesome title' + 'My awesome title' ) expect(htmlAttributes).to.equal('data-rh="" lang="es"') expect(bodyAttributes).to.equal('data-rh="" class="is-test"') @@ -121,7 +121,7 @@ describe.server('react-head on server', () => { renderHeadTagsToString(headTags) expect(headString).to.equal( - 'My awesome title' + 'My awesome title' ) expect(htmlAttributes).to.equal('data-rh="" lang="es"') expect(bodyAttributes).to.equal('data-rh="" class="is-test"') From a502a655639003f0f97c342a7e323888fc766c59 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Wed, 9 Aug 2023 16:48:59 +0200 Subject: [PATCH 018/545] chore(Root): execute all server tests --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f0951fa56..d28d59a74 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "test:server:ci": "npm run test:server", "test:client": "npx @s-ui/test browser -P 'packages/**/!(server)/*Spec.js'", "test:client:watch": "npm run test:client -- --watch", - "test:server": "npx @s-ui/test server -P './packages/sui-test-contract/test/server/setupSpec.js'", + "test:server": "npx @s-ui/test server -P 'packages/**/server/*Spec.js'", "test:server:watch": "npm run test:server -- --watch", "test:e2e": "node ./packages/sui-studio/test/server/integration/static-server.js ./packages/sui-studio/test/server/integration/sample-studio/public && npx @s-ui/test-e2e --baseUrl=http://localhost:1234", "pre-commit": "sui-lint js --staged && sui-lint sass --staged", From e8780da793f2c882c5da73bfe19d945c1a87f461 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Wed, 9 Aug 2023 16:49:21 +0200 Subject: [PATCH 019/545] feat(packages/sui-helpers): add more support to typescript --- packages/sui-helpers/package.json | 2 +- packages/sui-helpers/packages.js | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/packages/sui-helpers/package.json b/packages/sui-helpers/package.json index 3ef52141b..e0a77d7fb 100644 --- a/packages/sui-helpers/package.json +++ b/packages/sui-helpers/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/helpers", - "version": "1.38.0-typescript.1", + "version": "1.38.0-typescript.2", "description": "A set of internal helpers used by sui-related packages.", "author": "", "dependencies": { diff --git a/packages/sui-helpers/packages.js b/packages/sui-helpers/packages.js index 6905bf147..242f0949e 100644 --- a/packages/sui-helpers/packages.js +++ b/packages/sui-helpers/packages.js @@ -65,6 +65,14 @@ const resolveLazyNPMBin = async (binPath, pkg, cwd = process.cwd()) => { ).then(resolvePkgBin) } } + +/** + * Installs and imports packages dynamically. + * @param {string} name Name of the NPM package. + * @param {object} options Available options. + * @param {string} options.version Specific version of the package. + * @return {Promise} Returns the default module. + */ const dynamicPackage = async (name, {version} = {}) => { const packageName = version ? `${name}@${version}` : name @@ -72,7 +80,12 @@ const dynamicPackage = async (name, {version} = {}) => { await getSpawnPromise('npm', ['explain', packageName]) } catch (error) { if (error.exitCode === 1) { - await getSpawnPromise('npm', ['install', packageName, '--no-save']) + await getSpawnPromise('npm', [ + 'install', + packageName, + '--no-save', + '--legacy-peer-deps' + ]) } } From bbc43363fe1843c4499b6f792f68af06e692844d Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Wed, 9 Aug 2023 16:49:28 +0200 Subject: [PATCH 020/545] feat(packages/sui-js-compiler): add more support to typescript --- packages/sui-js-compiler/index.js | 19 +-------- packages/sui-js-compiler/package.json | 5 ++- packages/sui-js-compiler/swc-config.js | 54 -------------------------- 3 files changed, 5 insertions(+), 73 deletions(-) delete mode 100644 packages/sui-js-compiler/swc-config.js diff --git a/packages/sui-js-compiler/index.js b/packages/sui-js-compiler/index.js index d81b6f13d..7d21f1a8a 100755 --- a/packages/sui-js-compiler/index.js +++ b/packages/sui-js-compiler/index.js @@ -10,9 +10,8 @@ import path from 'node:path' import {transformFile} from '@swc/core' -import {getSpawnPromise} from '@s-ui/helpers/cli.js' - -import {getSWCConfig} from './swc-config.js' +import {dynamicPackage} from '@s-ui/helpers/packages.js' +import {getSWCConfig} from '@s-ui/typescript-config' const SOURCE_DIR = './src' const OUTPUT_DIR = './lib' @@ -34,20 +33,6 @@ const DEFAULT_TS_CONFIG = { types: ['react', 'node'] } -const dynamicPackage = async (name, {version} = {}) => { - const packageName = version ? `${name}@${version}` : name - - try { - await getSpawnPromise('npm', ['explain', packageName]) - } catch (error) { - if (error.exitCode === 1) { - await getSpawnPromise('npm', ['install', packageName, '--no-save']) - } - } - - return import(packageName).then(module => module.default) -} - const getTsConfig = () => { // Get TS config from the package dir. const tsConfigPath = path.join(process.cwd(), 'tsconfig.json') diff --git a/packages/sui-js-compiler/package.json b/packages/sui-js-compiler/package.json index 4bb9089dc..91fc236ad 100644 --- a/packages/sui-js-compiler/package.json +++ b/packages/sui-js-compiler/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/js-compiler", - "version": "1.25.0", + "version": "1.26.0-typescript.0", "description": "JavaScript & TypeScript Compiler", "type": "module", "exports": "./src/index.js", @@ -12,7 +12,8 @@ }, "license": "MIT", "dependencies": { - "@s-ui/helpers": "1", + "@s-ui/helpers": "typescript", + "@s-ui/typescript-config": "typescript", "@swc/core": "1.3.14", "@swc/helpers": "0.4.12", "commander": "8.3.0", diff --git a/packages/sui-js-compiler/swc-config.js b/packages/sui-js-compiler/swc-config.js deleted file mode 100644 index 4bd20e808..000000000 --- a/packages/sui-js-compiler/swc-config.js +++ /dev/null @@ -1,54 +0,0 @@ -const DEFAULT_LEGACY_BROWSER_TARGETS = { - ie: '11' -} - -const DEFAULT_BROWSER_TARGETS = { - chrome: '98', - edge: '107', - safari: '14.1', - firefox: '108', - ios: '14.5' -} - -export const getSWCConfig = ({isModern, isTypeScript}) => { - const targets = isModern - ? DEFAULT_BROWSER_TARGETS - : DEFAULT_LEGACY_BROWSER_TARGETS - const syntaxOptions = isTypeScript - ? {syntax: 'typescript', tsx: true} - : {syntax: 'ecmascript', jsx: true} - - return { - minify: true, - jsc: { - parser: { - ...syntaxOptions, - dynamicImport: true, - privateMethod: true, - functionBind: true, - exportDefaultFrom: true, - exportNamespaceFrom: true, - decorators: true, - decoratorsBeforeExport: true, - topLevelAwait: true, - importMeta: true - }, - transform: { - legacyDecorator: true, - react: { - useBuiltins: true, - runtime: 'automatic' - } - }, - loose: true, - externalHelpers: true - }, - env: { - targets, - dynamicImport: true, - loose: true, - mode: 'entry', - coreJs: 3 - } - } -} From b3616dedc3a780abd1380b8d35726601fa9b0354 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Wed, 9 Aug 2023 16:49:28 +0200 Subject: [PATCH 021/545] feat(packages/sui-lint): add more support to typescript --- packages/sui-lint/eslintrc.js | 1 + packages/sui-lint/package.json | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/sui-lint/eslintrc.js b/packages/sui-lint/eslintrc.js index f25d88611..fb2e25029 100644 --- a/packages/sui-lint/eslintrc.js +++ b/packages/sui-lint/eslintrc.js @@ -221,6 +221,7 @@ module.exports = { project: './tsconfig.json' }, rules: { + 'import/extensions': RULES.OFF, 'no-return-await': RULES.OFF, 'prettier/prettier': [RULES.ERROR, prettierOptions], 'react/react-in-jsx-scope': RULES.OFF, diff --git a/packages/sui-lint/package.json b/packages/sui-lint/package.json index a450172d1..03ad3c5cc 100644 --- a/packages/sui-lint/package.json +++ b/packages/sui-lint/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/lint", - "version": "4.34.0-typescript.10", + "version": "4.34.0-typescript.12", "description": "Linting CLI for sui packages", "main": "./bin/sui-lint.js", "bin": { From c75a1f280b93c86052b1e6c9e38b27b5ff56681f Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Wed, 9 Aug 2023 16:49:29 +0200 Subject: [PATCH 022/545] feat(packages/sui-studio): add more support to typescript --- packages/sui-studio/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/sui-studio/package.json b/packages/sui-studio/package.json index 8ce3832ea..a30d01003 100644 --- a/packages/sui-studio/package.json +++ b/packages/sui-studio/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/studio", - "version": "11.35.0-typescript.3", + "version": "11.35.0-typescript.5", "description": "Develop, maintain and publish your SUI components.", "main": "index.js", "bin": { @@ -15,7 +15,7 @@ "@s-ui/helpers": "1", "@s-ui/react-context": "typescript", "@s-ui/react-router": "1", - "@s-ui/test": "8", + "@s-ui/test": "typescript", "@testing-library/react": "10.4.9", "@testing-library/react-hooks": "4.0.1", "@testing-library/user-event": "13.5.0", From 9c84adb60fbcfe968fedb9852b86400e56477b0f Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Wed, 9 Aug 2023 16:49:30 +0200 Subject: [PATCH 023/545] feat(packages/sui-test): add more support to typescript --- packages/sui-test/bin/karma/config.js | 2 +- packages/sui-test/bin/mocha/applyEsmOverride.js | 5 +++-- packages/sui-test/bin/mocha/register.js | 17 ++++++++++++++--- packages/sui-test/bin/sui-test-browser.js | 2 +- packages/sui-test/bin/sui-test-server.js | 3 ++- packages/sui-test/package.json | 4 +++- 6 files changed, 24 insertions(+), 9 deletions(-) diff --git a/packages/sui-test/bin/karma/config.js b/packages/sui-test/bin/karma/config.js index 0ebfcc629..f60c12c5f 100644 --- a/packages/sui-test/bin/karma/config.js +++ b/packages/sui-test/bin/karma/config.js @@ -68,7 +68,7 @@ const config = { ) }, modules: [path.resolve(process.cwd()), 'node_modules'], - extensions: ['.mjs', '.js', '.jsx', '.json'], + extensions: ['.mjs', '.js', '.jsx', '.ts', '.tsx', '.json'], fallback: { assert: false, child_process: false, diff --git a/packages/sui-test/bin/mocha/applyEsmOverride.js b/packages/sui-test/bin/mocha/applyEsmOverride.js index c2e958404..4415ee757 100644 --- a/packages/sui-test/bin/mocha/applyEsmOverride.js +++ b/packages/sui-test/bin/mocha/applyEsmOverride.js @@ -1,4 +1,5 @@ -const _module = require('module') -const fs = require('fs') +const _module = require('node:module') +const fs = require('node:fs') + _module.Module._extensions['.js'] = (module, filename) => module._compile(fs.readFileSync(filename, 'utf8'), filename) diff --git a/packages/sui-test/bin/mocha/register.js b/packages/sui-test/bin/mocha/register.js index f59dd215d..10473db53 100644 --- a/packages/sui-test/bin/mocha/register.js +++ b/packages/sui-test/bin/mocha/register.js @@ -1,10 +1,11 @@ const {serverConfig} = require('../../src/config.js') +const {getSWCConfig} = require('@s-ui/typescript-config') + const { forceTranspilation = [], esmOverride = false, useLibDir = false } = serverConfig - const regexToAdd = forceTranspilation.map( regexString => new RegExp(regexString) ) @@ -23,10 +24,20 @@ const paths = [ libDir, ...regexToAdd ] +const only = useLibDir ? paths : paths.filter(path => path !== libDir) +const swcConfig = getSWCConfig({isTypeScript: true, compileToCJS: true}) + +// Register TS source files +require('@swc/register')({ + ignore: [/(.*)\.(js|cjs|mjs)/], + only, + ...swcConfig +}) +// Register JS source files require('@babel/register')({ - ignore: [], - only: useLibDir ? paths : paths.filter(path => path !== libDir), + ignore: [/(.*)\.ts/], + only, presets: [ [ 'babel-preset-sui', diff --git a/packages/sui-test/bin/sui-test-browser.js b/packages/sui-test/bin/sui-test-browser.js index 60b5bd378..cba9a8eae 100755 --- a/packages/sui-test/bin/sui-test-browser.js +++ b/packages/sui-test/bin/sui-test-browser.js @@ -12,7 +12,7 @@ program .option( '-P, --pattern ', 'Path pattern to include', - 'test/**/*Spec.js' + 'test/**/*Spec.+(js|jsx|ts|tsx)' ) .option( '-I, --ignore-pattern ', diff --git a/packages/sui-test/bin/sui-test-server.js b/packages/sui-test/bin/sui-test-server.js index cf7a207fb..a90e26470 100755 --- a/packages/sui-test/bin/sui-test-server.js +++ b/packages/sui-test/bin/sui-test-server.js @@ -31,8 +31,9 @@ serialSpawn([ require.resolve('mocha/bin/mocha.js'), [ path.join(process.cwd(), path.sep, pattern), - `--require ${path.join(__dirname, 'mocha', 'register.js')}`, '--recursive', + '--extension js,ts,cjs,mjs', + `--require ${path.join(__dirname, 'mocha', 'register.js')}`, inspect && '--inspect-brk', watch && '--watch', timeout && `--timeout ${timeout}`, diff --git a/packages/sui-test/package.json b/packages/sui-test/package.json index 6859a51c8..8688dc1b6 100644 --- a/packages/sui-test/package.json +++ b/packages/sui-test/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/test", - "version": "8.26.0", + "version": "8.27.0-typescript.2", "description": "", "bin": { "sui-test": "bin/sui-test.js" @@ -23,6 +23,8 @@ "@babel/plugin-transform-modules-commonjs": "7.18.6", "@babel/register": "7.18.9", "@s-ui/helpers": "1", + "@s-ui/typescript-config": "typescript", + "@swc/register": "0.1.10", "babel-loader": "8.2.5", "babel-plugin-dynamic-import-node": "2.3.3", "babel-plugin-istanbul": "6.0.0", From 2096ebb53e61f2f48ad4644cbdd62f5a95c4929d Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Wed, 9 Aug 2023 16:49:30 +0200 Subject: [PATCH 024/545] feat(packages/sui-typescript-config): add more support to typescript --- packages/sui-typescript-config/package.json | 6 +++--- packages/sui-typescript-config/src/index.js | 8 +++++++- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/packages/sui-typescript-config/package.json b/packages/sui-typescript-config/package.json index e9611c8b6..e5fb85e15 100644 --- a/packages/sui-typescript-config/package.json +++ b/packages/sui-typescript-config/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/typescript-config", - "version": "1.0.0-typescript.1", + "version": "1.0.0-typescript.2", "description": "Typescript config for SUI projects", "main": "src/index.js", "scripts": {}, @@ -16,7 +16,7 @@ }, "homepage": "https://github.com/SUI-Components/sui/tree/master/packages/sui-typescript-config#readme", "dependencies": { - "@tsconfig/esm": "^1.0.4", - "@tsconfig/vite-react": "^2.0.0" + "@tsconfig/esm": "1.0.4", + "@tsconfig/vite-react": "2.0.0" } } diff --git a/packages/sui-typescript-config/src/index.js b/packages/sui-typescript-config/src/index.js index c0d993cf6..547585f67 100644 --- a/packages/sui-typescript-config/src/index.js +++ b/packages/sui-typescript-config/src/index.js @@ -10,17 +10,23 @@ const DEFAULT_BROWSER_TARGETS = { ios: '14.5' } -const getSWCConfig = ({isModern, isTypeScript}) => { +const getSWCConfig = ({ + isModern = false, + isTypeScript = false, + compileToCJS = false +}) => { const targets = isModern ? DEFAULT_BROWSER_TARGETS : DEFAULT_LEGACY_BROWSER_TARGETS const syntaxOptions = isTypeScript ? {syntax: 'typescript', tsx: true} : {syntax: 'ecmascript', jsx: true} + const moduleOptions = compileToCJS ? {module: {type: 'commonjs'}} : {} return { minify: true, jsc: { + ...moduleOptions, parser: { ...syntaxOptions, dynamicImport: true, From e7a5b353b8ae3947268c5ec6f9b6a573a62d6909 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Thu, 10 Aug 2023 00:33:09 +0200 Subject: [PATCH 025/545] fix(packages/sui-typescript-config): fix config --- packages/sui-typescript-config/package.json | 2 +- packages/sui-typescript-config/src/index.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/sui-typescript-config/package.json b/packages/sui-typescript-config/package.json index e5fb85e15..827c0cb9d 100644 --- a/packages/sui-typescript-config/package.json +++ b/packages/sui-typescript-config/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/typescript-config", - "version": "1.0.0-typescript.2", + "version": "1.0.0-typescript.4", "description": "Typescript config for SUI projects", "main": "src/index.js", "scripts": {}, diff --git a/packages/sui-typescript-config/src/index.js b/packages/sui-typescript-config/src/index.js index 547585f67..692b28a1c 100644 --- a/packages/sui-typescript-config/src/index.js +++ b/packages/sui-typescript-config/src/index.js @@ -26,7 +26,6 @@ const getSWCConfig = ({ return { minify: true, jsc: { - ...moduleOptions, parser: { ...syntaxOptions, dynamicImport: true, @@ -49,6 +48,7 @@ const getSWCConfig = ({ loose: true, externalHelpers: true }, + ...moduleOptions, env: { targets, dynamicImport: true, From db77a2f3b9c69e2ce6983c519edebcd1a2080456 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Thu, 10 Aug 2023 00:33:43 +0200 Subject: [PATCH 026/545] fix(packages/sui-test): add proper loader to karma --- packages/sui-test/bin/karma/config.js | 32 ++++++++++++++------------- packages/sui-test/package.json | 4 +++- 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/packages/sui-test/bin/karma/config.js b/packages/sui-test/bin/karma/config.js index f60c12c5f..3a4f50a5f 100644 --- a/packages/sui-test/bin/karma/config.js +++ b/packages/sui-test/bin/karma/config.js @@ -3,6 +3,7 @@ const webpack = require('webpack') const path = require('path') const {envVars} = require('@s-ui/bundler/shared/index.js') +const {getSWCConfig} = require('@s-ui/typescript-config') const { bundlerConfig, clientConfig, @@ -11,29 +12,23 @@ const { const {captureConsole = true} = clientConfig const {sep} = path - const mustPackagesToAlias = { 'react/jsx-dev-runtime': 'react/jsx-dev-runtime.js', 'react/jsx-runtime': 'react/jsx-runtime.js' } -/** - * Transform the env config (Array) to an object. - * Where the value is always an empty string. - */ +// Transform the env config (Array) to an object +// where the value is always an empty string. const environmentVariables = envVars(bundlerConfig.env) +const swcConfig = getSWCConfig({isTypeScript: true}) const config = { singleRun: true, - basePath: '', - frameworks: ['mocha', 'webpack'], - proxies: { '/mockServiceWorker.js': `/base/public/mockServiceWorker.js` }, - plugins: [ require.resolve('karma-webpack'), require.resolve('karma-chrome-launcher'), @@ -42,17 +37,12 @@ const config = { require.resolve('karma-coverage'), require.resolve('karma-spec-reporter') ], - reporters: ['spec'], - browsers: ['Chrome'], - browserDisconnectTolerance: 1, - webpackMiddleware: { stats: 'errors-only' }, - webpack: { devtool: 'eval', stats: 'errors-only', @@ -113,6 +103,19 @@ const config = { dataUrl: () => '' } }, + { + test: /\.tsx?$/, + exclude: new RegExp( + `node_modules(?!${sep}@s-ui${sep}studio${sep}src)` + ), + use: { + loader: 'swc-loader', + options: { + sync: true, + ...swcConfig + } + } + }, { test: /\.jsx?$/, exclude: new RegExp( @@ -149,7 +152,6 @@ const config = { ] } }, - client: { captureConsole, mocha: { diff --git a/packages/sui-test/package.json b/packages/sui-test/package.json index 8688dc1b6..f0b521c57 100644 --- a/packages/sui-test/package.json +++ b/packages/sui-test/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/test", - "version": "8.27.0-typescript.2", + "version": "8.27.0-typescript.4", "description": "", "bin": { "sui-test": "bin/sui-test.js" @@ -24,6 +24,7 @@ "@babel/register": "7.18.9", "@s-ui/helpers": "1", "@s-ui/typescript-config": "typescript", + "@swc/core": "1.3.75", "@swc/register": "0.1.10", "babel-loader": "8.2.5", "babel-plugin-dynamic-import-node": "2.3.3", @@ -40,6 +41,7 @@ "mocha": "10.0.0", "process": "0.11.10", "stream-browserify": "3.0.0", + "swc-loader": "0.2.3", "tty-browserify": "0.0.1", "util": "0.12.4", "webpack": "5.74.0" From 793641e025f279d4873f163129da723ac0fcc683 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Thu, 10 Aug 2023 00:34:03 +0200 Subject: [PATCH 027/545] chore(packages/sui-js-compiler): bump test version --- packages/sui-js-compiler/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sui-js-compiler/package.json b/packages/sui-js-compiler/package.json index 91fc236ad..bee7f7689 100644 --- a/packages/sui-js-compiler/package.json +++ b/packages/sui-js-compiler/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/js-compiler", - "version": "1.26.0-typescript.0", + "version": "1.26.0-typescript.2", "description": "JavaScript & TypeScript Compiler", "type": "module", "exports": "./src/index.js", From fcdcf9483b1d84a50e0edb0396e17ba24d183fa0 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Thu, 10 Aug 2023 00:34:39 +0200 Subject: [PATCH 028/545] chore(Root): fix npm options --- .gitignore | 30 +++++++++++++++--------------- .npmrc | 1 + 2 files changed, 16 insertions(+), 15 deletions(-) create mode 100644 .npmrc diff --git a/.gitignore b/.gitignore index 18fe87d62..0e3e749e9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,25 +1,25 @@ -node_modules/ -lib/ -coverage/ .DS_Store -npm-debug.log -.tern-port -package-lock.json +.idea/ .python-version +.tern-port +.vscode/ + +contract/logs/pact.log +coverage/ jsconfig.json +lib/ +node_modules/ +npm-debug.log +package-lock.json + +!packages/sui-sass-loader/test/server/fixtures/**/node_modules packages/sui-codemod/COMMANDS -sui-components-dashboard-9350df448fcd.json -.idea/ -.vscode/ packages/sui-studio/test/server/integration/empty-studio/components/fake/** +packages/sui-studio/test/server/integration/empty-studio/components/fake/componentnvim packages/sui-studio/test/server/integration/empty-studio/demo/fake/** packages/sui-studio/test/server/integration/empty-studio/test/fake/** -packages/sui-studio/test/server/integration/sample-studio/node_modules/ packages/sui-studio/test/server/integration/sample-studio/components/atom/button/node_modules/ +packages/sui-studio/test/server/integration/sample-studio/node_modules/ packages/sui-studio/test/server/integration/sample-studio/public -packages/sui-studio/test/server/integration/empty-studio/components/fake/componentnvim -!packages/sui-sass-loader/test/server/fixtures/**/node_modules - -contract/logs/pact.log -.npmrc \ No newline at end of file +sui-components-dashboard-9350df448fcd.json \ No newline at end of file diff --git a/.npmrc b/.npmrc new file mode 100644 index 000000000..e9ee3cb4d --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +legacy-peer-deps=true \ No newline at end of file From b53ee39213edd2dca80366336d41ea122046fff3 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Thu, 10 Aug 2023 13:24:37 +0200 Subject: [PATCH 029/545] fix(packages/sui-bundler): add some fixes --- packages/sui-bundler/package.json | 2 +- packages/sui-bundler/webpack.config.server.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/sui-bundler/package.json b/packages/sui-bundler/package.json index 9f1c0986c..4f282e0f8 100644 --- a/packages/sui-bundler/package.json +++ b/packages/sui-bundler/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/bundler", - "version": "9.39.0-typescript.117", + "version": "9.39.0-typescript.118", "description": "Config-free bundler for ES6 React apps.", "bin": { "sui-bundler": "./bin/sui-bundler.js" diff --git a/packages/sui-bundler/webpack.config.server.js b/packages/sui-bundler/webpack.config.server.js index 9d4407749..dc0c1f153 100644 --- a/packages/sui-bundler/webpack.config.server.js +++ b/packages/sui-bundler/webpack.config.server.js @@ -18,7 +18,7 @@ const webpackConfig = { mode: process.env.NODE_ENV === 'production' ? 'production' : 'development', resolve: { alias: {...aliasFromConfig}, - extensions: ['.js', '.json'], + extensions: ['.js', '.json', '.ts', '.tsx'], modules: ['node_modules', path.resolve(process.cwd())] }, entry: './server.js', From f4fa3af2366897ee0aa72b469f9a6667d8c21822 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Thu, 10 Aug 2023 13:24:45 +0200 Subject: [PATCH 030/545] fix(packages/sui-helpers): add some fixes --- packages/sui-helpers/package.json | 2 +- packages/sui-helpers/packages.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/sui-helpers/package.json b/packages/sui-helpers/package.json index e0a77d7fb..5c082baf1 100644 --- a/packages/sui-helpers/package.json +++ b/packages/sui-helpers/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/helpers", - "version": "1.38.0-typescript.2", + "version": "1.38.0-typescript.4", "description": "A set of internal helpers used by sui-related packages.", "author": "", "dependencies": { diff --git a/packages/sui-helpers/packages.js b/packages/sui-helpers/packages.js index 242f0949e..16a0a218f 100644 --- a/packages/sui-helpers/packages.js +++ b/packages/sui-helpers/packages.js @@ -1,6 +1,6 @@ /* eslint no-console:0 */ const path = require('path') -const {getSpawnPromise} = require('./cli') +const {getSpawnPromise} = require('./cli.js') /** * Get absolute paths of packages From 7001874a03c800984e0116cbc98ddcf242f44baa Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Thu, 10 Aug 2023 13:24:46 +0200 Subject: [PATCH 031/545] fix(packages/sui-js-compiler): add some fixes --- packages/sui-js-compiler/index.js | 3 ++- packages/sui-js-compiler/package.json | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/sui-js-compiler/index.js b/packages/sui-js-compiler/index.js index 7d21f1a8a..00e15192e 100755 --- a/packages/sui-js-compiler/index.js +++ b/packages/sui-js-compiler/index.js @@ -10,7 +10,7 @@ import path from 'node:path' import {transformFile} from '@swc/core' -import {dynamicPackage} from '@s-ui/helpers/packages.js' +import helpers from '@s-ui/helpers/packages.js' import {getSWCConfig} from '@s-ui/typescript-config' const SOURCE_DIR = './src' @@ -59,6 +59,7 @@ const compileFile = async (file, options) => { } const compileTypes = async (files, options) => { + const {dynamicPackage} = helpers const {createCompilerHost, createProgram} = await dynamicPackage('typescript') const createdFiles = {} const host = createCompilerHost(options) diff --git a/packages/sui-js-compiler/package.json b/packages/sui-js-compiler/package.json index bee7f7689..1026c220c 100644 --- a/packages/sui-js-compiler/package.json +++ b/packages/sui-js-compiler/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/js-compiler", - "version": "1.26.0-typescript.2", + "version": "1.26.0-typescript.4", "description": "JavaScript & TypeScript Compiler", "type": "module", "exports": "./src/index.js", From 09a6949ad393339af331aa13ad5ab6c7783ac29b Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Thu, 10 Aug 2023 13:24:48 +0200 Subject: [PATCH 032/545] fix(packages/sui-studio): add some fixes --- packages/sui-studio/package.json | 4 ++-- packages/sui-studio/src/components/tryRequire.js | 4 ++-- packages/sui-studio/src/runtime-mocha/index.js | 5 +++-- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/packages/sui-studio/package.json b/packages/sui-studio/package.json index a30d01003..ed4b5aaa4 100644 --- a/packages/sui-studio/package.json +++ b/packages/sui-studio/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/studio", - "version": "11.35.0-typescript.5", + "version": "11.35.0-typescript.7", "description": "Develop, maintain and publish your SUI components.", "main": "index.js", "bin": { @@ -12,7 +12,7 @@ "dependencies": { "@babel/cli": "7", "@s-ui/bundler": "typescript", - "@s-ui/helpers": "1", + "@s-ui/helpers": "typescript", "@s-ui/react-context": "typescript", "@s-ui/react-router": "1", "@s-ui/test": "typescript", diff --git a/packages/sui-studio/src/components/tryRequire.js b/packages/sui-studio/src/components/tryRequire.js index d9f766277..5b1f9fa5a 100644 --- a/packages/sui-studio/src/components/tryRequire.js +++ b/packages/sui-studio/src/components/tryRequire.js @@ -1,6 +1,6 @@ /* global __BASE_DIR__ */ -import {safeImport} from './utils' +import {safeImport} from './utils.js' const fetchStaticFile = path => window @@ -87,7 +87,7 @@ export const importGlobals = () => { importFile: () => import( /* webpackInclude: /\/components\/globals.js$/ */ - /* webpackExclude: /*.md$/ */ + /* webpackExclude: /(.*)\.md$/ */ `${__BASE_DIR__}/components/globals.js` ) }) diff --git a/packages/sui-studio/src/runtime-mocha/index.js b/packages/sui-studio/src/runtime-mocha/index.js index d780f704c..72c8211cd 100644 --- a/packages/sui-studio/src/runtime-mocha/index.js +++ b/packages/sui-studio/src/runtime-mocha/index.js @@ -1,4 +1,5 @@ /* global __BASE_DIR__, CATEGORIES, PATTERN */ +/* eslint-disable no-console */ /** * This file is being executed in browser opened to run tests @@ -13,7 +14,7 @@ addSetupEnvironment(window) window.__STUDIO_CONTEXTS__ = {} window.__STUDIO_COMPONENT__ = {} -const defaultPattern = '**/*.test.{js,jsx}' +const defaultPattern = '**/*.test.{js,jsx,ts,tsx}' const globPattern = PATTERN || defaultPattern const categories = CATEGORIES ? CATEGORIES.split(',') : null @@ -35,7 +36,7 @@ window.__karma__.loaded = () => {} const testsFiles = require.context( `${__BASE_DIR__}/components/`, true, - /\.\/(\w+)\/(\w+)\/test\/(components\.)?(\w+).test.(js|jsx)/ + /\.\/(\w+)\/(\w+)\/test\/(components\.)?(\w+).test.(js|jsx|ts|tsx)/ ) const selectedTestFiles = testsFiles.keys().filter(filterAll) From d407c0231bdff12032fbc0f5098404259fbdad76 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Thu, 10 Aug 2023 13:42:57 +0200 Subject: [PATCH 033/545] feat(packages/sui-bundler): add more changes --- packages/sui-bundler/package.json | 4 ++-- packages/sui-bundler/shared/module-rules-babel.js | 2 +- packages/sui-bundler/tsconfig.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/sui-bundler/package.json b/packages/sui-bundler/package.json index 4f282e0f8..1178ef03d 100644 --- a/packages/sui-bundler/package.json +++ b/packages/sui-bundler/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/bundler", - "version": "9.39.0-typescript.118", + "version": "9.39.0-typescript.119", "description": "Config-free bundler for ES6 React apps.", "bin": { "sui-bundler": "./bin/sui-bundler.js" @@ -25,7 +25,7 @@ "@babel/core": "7.21.8", "@s-ui/helpers": "typescript", "@s-ui/sass-loader": "1", - "@s-ui/typescript-config": "typescript", + "@s-ui/compiler-config": "typescript", "@swc/core": "1.3.14", "@swc/helpers": "0.4.12", "address": "1.2.0", diff --git a/packages/sui-bundler/shared/module-rules-babel.js b/packages/sui-bundler/shared/module-rules-babel.js index 443ea8084..4e82ddabb 100644 --- a/packages/sui-bundler/shared/module-rules-babel.js +++ b/packages/sui-bundler/shared/module-rules-babel.js @@ -2,7 +2,7 @@ const fs = require('fs-extra') const path = require('path') const {config} = require('./index.js') -const {getSWCConfig} = require('@s-ui/typescript-config') +const {getSWCConfig} = require('@s-ui/compiler-config') const EXCLUDED_FOLDERS_REGEXP = new RegExp( `node_modules(?!${path.sep}@s-ui(${path.sep}studio)(${path.sep}workbench)?${path.sep}src)` diff --git a/packages/sui-bundler/tsconfig.json b/packages/sui-bundler/tsconfig.json index 754330a94..c4f3b5e4a 100644 --- a/packages/sui-bundler/tsconfig.json +++ b/packages/sui-bundler/tsconfig.json @@ -1,3 +1,3 @@ { - "extends": "@s-ui/typescript-config/tsconfig.json" + "extends": "@s-ui/compiler-config/tsconfig.json" } From 0af1a4f478796ea657fb6cfe0ee16b935c45bd04 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Thu, 10 Aug 2023 13:43:01 +0200 Subject: [PATCH 034/545] feat(packages/sui-compiler-config): add more changes --- packages/sui-compiler-config/package.json | 22 ++++++++ packages/sui-compiler-config/src/index.js | 62 ++++++++++++++++++++++ packages/sui-compiler-config/tsconfig.json | 8 +++ 3 files changed, 92 insertions(+) create mode 100644 packages/sui-compiler-config/package.json create mode 100644 packages/sui-compiler-config/src/index.js create mode 100644 packages/sui-compiler-config/tsconfig.json diff --git a/packages/sui-compiler-config/package.json b/packages/sui-compiler-config/package.json new file mode 100644 index 000000000..c4ee60b18 --- /dev/null +++ b/packages/sui-compiler-config/package.json @@ -0,0 +1,22 @@ +{ + "name": "@s-ui/compiler-config", + "version": "1.0.0-typescript.0", + "description": "Compilers config (SWC, TS...) for SUI projects.", + "main": "src/index.js", + "scripts": {}, + "keywords": [], + "author": "", + "license": "MIT", + "repository": { + "type": "git", + "url": "git+https://github.com/SUI-Components/sui.git" + }, + "bugs": { + "url": "https://github.com/SUI-Components/sui/issues" + }, + "homepage": "https://github.com/SUI-Components/sui/tree/master/packages/sui-compiler-config#readme", + "dependencies": { + "@tsconfig/esm": "1.0.4", + "@tsconfig/vite-react": "2.0.0" + } +} diff --git a/packages/sui-compiler-config/src/index.js b/packages/sui-compiler-config/src/index.js new file mode 100644 index 000000000..692b28a1c --- /dev/null +++ b/packages/sui-compiler-config/src/index.js @@ -0,0 +1,62 @@ +const DEFAULT_LEGACY_BROWSER_TARGETS = { + ie: '11' +} + +const DEFAULT_BROWSER_TARGETS = { + chrome: '98', + edge: '107', + safari: '14.1', + firefox: '108', + ios: '14.5' +} + +const getSWCConfig = ({ + isModern = false, + isTypeScript = false, + compileToCJS = false +}) => { + const targets = isModern + ? DEFAULT_BROWSER_TARGETS + : DEFAULT_LEGACY_BROWSER_TARGETS + const syntaxOptions = isTypeScript + ? {syntax: 'typescript', tsx: true} + : {syntax: 'ecmascript', jsx: true} + const moduleOptions = compileToCJS ? {module: {type: 'commonjs'}} : {} + + return { + minify: true, + jsc: { + parser: { + ...syntaxOptions, + dynamicImport: true, + privateMethod: true, + functionBind: true, + exportDefaultFrom: true, + exportNamespaceFrom: true, + decorators: true, + decoratorsBeforeExport: true, + topLevelAwait: true, + importMeta: true + }, + transform: { + legacyDecorator: true, + react: { + useBuiltins: true, + runtime: 'automatic' + } + }, + loose: true, + externalHelpers: true + }, + ...moduleOptions, + env: { + targets, + dynamicImport: true, + loose: true, + mode: 'entry', + coreJs: 3 + } + } +} + +module.exports.getSWCConfig = getSWCConfig diff --git a/packages/sui-compiler-config/tsconfig.json b/packages/sui-compiler-config/tsconfig.json new file mode 100644 index 000000000..09340ea34 --- /dev/null +++ b/packages/sui-compiler-config/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": ["@tsconfig/esm/tsconfig.json", "@tsconfig/vite-react/tsconfig.json"], + "compilerOptions": { + "allowJs": true, + "target": "ES2022" + } +} + From c80bcf3c1b4daf88970db698b11341d02aadadfa Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Thu, 10 Aug 2023 13:43:03 +0200 Subject: [PATCH 035/545] feat(packages/sui-js-compiler): add more changes --- packages/sui-js-compiler/index.js | 2 +- packages/sui-js-compiler/package.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/sui-js-compiler/index.js b/packages/sui-js-compiler/index.js index 00e15192e..c9860432c 100755 --- a/packages/sui-js-compiler/index.js +++ b/packages/sui-js-compiler/index.js @@ -10,8 +10,8 @@ import path from 'node:path' import {transformFile} from '@swc/core' +import {getSWCConfig} from '@s-ui/compiler-config' import helpers from '@s-ui/helpers/packages.js' -import {getSWCConfig} from '@s-ui/typescript-config' const SOURCE_DIR = './src' const OUTPUT_DIR = './lib' diff --git a/packages/sui-js-compiler/package.json b/packages/sui-js-compiler/package.json index 1026c220c..34fd51d79 100644 --- a/packages/sui-js-compiler/package.json +++ b/packages/sui-js-compiler/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/js-compiler", - "version": "1.26.0-typescript.4", + "version": "1.26.0-typescript.5", "description": "JavaScript & TypeScript Compiler", "type": "module", "exports": "./src/index.js", @@ -13,7 +13,7 @@ "license": "MIT", "dependencies": { "@s-ui/helpers": "typescript", - "@s-ui/typescript-config": "typescript", + "@s-ui/compiler-config": "typescript", "@swc/core": "1.3.14", "@swc/helpers": "0.4.12", "commander": "8.3.0", From 70245200938a712fc7e12e3a79104c65f75b6174 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Thu, 10 Aug 2023 13:43:04 +0200 Subject: [PATCH 036/545] feat(packages/sui-test): add more changes --- packages/sui-test/bin/karma/config.js | 2 +- packages/sui-test/bin/mocha/register.js | 2 +- packages/sui-test/package.json | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/sui-test/bin/karma/config.js b/packages/sui-test/bin/karma/config.js index 3a4f50a5f..83c9b63c6 100644 --- a/packages/sui-test/bin/karma/config.js +++ b/packages/sui-test/bin/karma/config.js @@ -3,7 +3,7 @@ const webpack = require('webpack') const path = require('path') const {envVars} = require('@s-ui/bundler/shared/index.js') -const {getSWCConfig} = require('@s-ui/typescript-config') +const {getSWCConfig} = require('@s-ui/compiler-config') const { bundlerConfig, clientConfig, diff --git a/packages/sui-test/bin/mocha/register.js b/packages/sui-test/bin/mocha/register.js index 10473db53..6d69f397b 100644 --- a/packages/sui-test/bin/mocha/register.js +++ b/packages/sui-test/bin/mocha/register.js @@ -1,5 +1,5 @@ const {serverConfig} = require('../../src/config.js') -const {getSWCConfig} = require('@s-ui/typescript-config') +const {getSWCConfig} = require('@s-ui/compiler-config') const { forceTranspilation = [], diff --git a/packages/sui-test/package.json b/packages/sui-test/package.json index f0b521c57..cc34daa10 100644 --- a/packages/sui-test/package.json +++ b/packages/sui-test/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/test", - "version": "8.27.0-typescript.4", + "version": "8.27.0-typescript.5", "description": "", "bin": { "sui-test": "bin/sui-test.js" @@ -23,7 +23,7 @@ "@babel/plugin-transform-modules-commonjs": "7.18.6", "@babel/register": "7.18.9", "@s-ui/helpers": "1", - "@s-ui/typescript-config": "typescript", + "@s-ui/compiler-config": "typescript", "@swc/core": "1.3.75", "@swc/register": "0.1.10", "babel-loader": "8.2.5", From c7cd349cde7320a174ffd57692ea79f178e3b728 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Thu, 10 Aug 2023 13:44:21 +0200 Subject: [PATCH 037/545] feat(Root): remove package --- packages/sui-typescript-config/package.json | 22 ------- packages/sui-typescript-config/src/index.js | 62 -------------------- packages/sui-typescript-config/tsconfig.json | 8 --- 3 files changed, 92 deletions(-) delete mode 100644 packages/sui-typescript-config/package.json delete mode 100644 packages/sui-typescript-config/src/index.js delete mode 100644 packages/sui-typescript-config/tsconfig.json diff --git a/packages/sui-typescript-config/package.json b/packages/sui-typescript-config/package.json deleted file mode 100644 index 827c0cb9d..000000000 --- a/packages/sui-typescript-config/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "@s-ui/typescript-config", - "version": "1.0.0-typescript.4", - "description": "Typescript config for SUI projects", - "main": "src/index.js", - "scripts": {}, - "keywords": [], - "author": "", - "license": "MIT", - "repository": { - "type": "git", - "url": "git+https://github.com/SUI-Components/sui.git" - }, - "bugs": { - "url": "https://github.com/SUI-Components/sui/issues" - }, - "homepage": "https://github.com/SUI-Components/sui/tree/master/packages/sui-typescript-config#readme", - "dependencies": { - "@tsconfig/esm": "1.0.4", - "@tsconfig/vite-react": "2.0.0" - } -} diff --git a/packages/sui-typescript-config/src/index.js b/packages/sui-typescript-config/src/index.js deleted file mode 100644 index 692b28a1c..000000000 --- a/packages/sui-typescript-config/src/index.js +++ /dev/null @@ -1,62 +0,0 @@ -const DEFAULT_LEGACY_BROWSER_TARGETS = { - ie: '11' -} - -const DEFAULT_BROWSER_TARGETS = { - chrome: '98', - edge: '107', - safari: '14.1', - firefox: '108', - ios: '14.5' -} - -const getSWCConfig = ({ - isModern = false, - isTypeScript = false, - compileToCJS = false -}) => { - const targets = isModern - ? DEFAULT_BROWSER_TARGETS - : DEFAULT_LEGACY_BROWSER_TARGETS - const syntaxOptions = isTypeScript - ? {syntax: 'typescript', tsx: true} - : {syntax: 'ecmascript', jsx: true} - const moduleOptions = compileToCJS ? {module: {type: 'commonjs'}} : {} - - return { - minify: true, - jsc: { - parser: { - ...syntaxOptions, - dynamicImport: true, - privateMethod: true, - functionBind: true, - exportDefaultFrom: true, - exportNamespaceFrom: true, - decorators: true, - decoratorsBeforeExport: true, - topLevelAwait: true, - importMeta: true - }, - transform: { - legacyDecorator: true, - react: { - useBuiltins: true, - runtime: 'automatic' - } - }, - loose: true, - externalHelpers: true - }, - ...moduleOptions, - env: { - targets, - dynamicImport: true, - loose: true, - mode: 'entry', - coreJs: 3 - } - } -} - -module.exports.getSWCConfig = getSWCConfig diff --git a/packages/sui-typescript-config/tsconfig.json b/packages/sui-typescript-config/tsconfig.json deleted file mode 100644 index 09340ea34..000000000 --- a/packages/sui-typescript-config/tsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": ["@tsconfig/esm/tsconfig.json", "@tsconfig/vite-react/tsconfig.json"], - "compilerOptions": { - "allowJs": true, - "target": "ES2022" - } -} - From 0b2e9b64574214a1cdf442449cd07f70aed40311 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Thu, 10 Aug 2023 16:14:12 +0200 Subject: [PATCH 038/545] feat(packages/sui-bundler): restore original versions --- packages/sui-bundler/package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/sui-bundler/package.json b/packages/sui-bundler/package.json index 1178ef03d..382218e25 100644 --- a/packages/sui-bundler/package.json +++ b/packages/sui-bundler/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/bundler", - "version": "9.39.0-typescript.119", + "version": "9.38.0", "description": "Config-free bundler for ES6 React apps.", "bin": { "sui-bundler": "./bin/sui-bundler.js" @@ -23,9 +23,9 @@ "homepage": "https://github.com/SUI-Components/sui/tree/master/packages/sui-bundler#readme", "dependencies": { "@babel/core": "7.21.8", - "@s-ui/helpers": "typescript", + "@s-ui/compiler-config": "1", + "@s-ui/helpers": "1", "@s-ui/sass-loader": "1", - "@s-ui/compiler-config": "typescript", "@swc/core": "1.3.14", "@swc/helpers": "0.4.12", "address": "1.2.0", From 80db5eb485dc1caa81b9e3211b04dd410389b566 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Thu, 10 Aug 2023 16:14:15 +0200 Subject: [PATCH 039/545] feat(packages/sui-compiler-config): restore original versions --- packages/sui-compiler-config/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sui-compiler-config/package.json b/packages/sui-compiler-config/package.json index c4ee60b18..24cdef292 100644 --- a/packages/sui-compiler-config/package.json +++ b/packages/sui-compiler-config/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/compiler-config", - "version": "1.0.0-typescript.0", + "version": "1.0.0", "description": "Compilers config (SWC, TS...) for SUI projects.", "main": "src/index.js", "scripts": {}, From 0961a23642b3a5d34c5b5ff332f848e5dd40ccf4 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Thu, 10 Aug 2023 16:14:16 +0200 Subject: [PATCH 040/545] feat(packages/sui-helpers): restore original versions --- packages/sui-helpers/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sui-helpers/package.json b/packages/sui-helpers/package.json index 5c082baf1..710286d8d 100644 --- a/packages/sui-helpers/package.json +++ b/packages/sui-helpers/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/helpers", - "version": "1.38.0-typescript.4", + "version": "1.38.0", "description": "A set of internal helpers used by sui-related packages.", "author": "", "dependencies": { From 8dd8cd1cc7e86ba73ba03636b7608a0c070e09fd Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Thu, 10 Aug 2023 16:14:16 +0200 Subject: [PATCH 041/545] feat(packages/sui-js-compiler): restore original versions --- packages/sui-js-compiler/package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/sui-js-compiler/package.json b/packages/sui-js-compiler/package.json index 34fd51d79..36457f289 100644 --- a/packages/sui-js-compiler/package.json +++ b/packages/sui-js-compiler/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/js-compiler", - "version": "1.26.0-typescript.5", + "version": "1.25.0", "description": "JavaScript & TypeScript Compiler", "type": "module", "exports": "./src/index.js", @@ -12,8 +12,8 @@ }, "license": "MIT", "dependencies": { - "@s-ui/helpers": "typescript", - "@s-ui/compiler-config": "typescript", + "@s-ui/compiler-config": "1", + "@s-ui/helpers": "1", "@swc/core": "1.3.14", "@swc/helpers": "0.4.12", "commander": "8.3.0", From 015daf5fcf24cee4edb001bcd8c98359f538931d Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Thu, 10 Aug 2023 16:14:16 +0200 Subject: [PATCH 042/545] feat(packages/sui-lint): restore original versions --- packages/sui-lint/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sui-lint/package.json b/packages/sui-lint/package.json index 03ad3c5cc..98ef1817b 100644 --- a/packages/sui-lint/package.json +++ b/packages/sui-lint/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/lint", - "version": "4.34.0-typescript.12", + "version": "4.33.0", "description": "Linting CLI for sui packages", "main": "./bin/sui-lint.js", "bin": { From 48c3efcdebc4e43f7d9872d570d0e192cba983dd Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Thu, 10 Aug 2023 16:14:17 +0200 Subject: [PATCH 043/545] feat(packages/sui-react-context): restore original versions --- packages/sui-react-context/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sui-react-context/package.json b/packages/sui-react-context/package.json index 801b43bad..bcb9e5e04 100644 --- a/packages/sui-react-context/package.json +++ b/packages/sui-react-context/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-context", - "version": "1.8.1-typescript.1", + "version": "1.8.0", "description": "", "main": "lib/index", "types": "lib/index.d.ts", From 60e1b778be153f3a1f8b5135a43a1842d32cdc8f Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Thu, 10 Aug 2023 16:14:18 +0200 Subject: [PATCH 044/545] feat(packages/sui-studio): restore original versions --- packages/sui-studio/package.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/sui-studio/package.json b/packages/sui-studio/package.json index ed4b5aaa4..4219631ed 100644 --- a/packages/sui-studio/package.json +++ b/packages/sui-studio/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/studio", - "version": "11.35.0-typescript.7", + "version": "11.35.0", "description": "Develop, maintain and publish your SUI components.", "main": "index.js", "bin": { @@ -11,11 +11,11 @@ "license": "MIT", "dependencies": { "@babel/cli": "7", - "@s-ui/bundler": "typescript", - "@s-ui/helpers": "typescript", - "@s-ui/react-context": "typescript", + "@s-ui/bundler": "9", + "@s-ui/helpers": "1", + "@s-ui/react-context": "1", "@s-ui/react-router": "1", - "@s-ui/test": "typescript", + "@s-ui/test": "8", "@testing-library/react": "10.4.9", "@testing-library/react-hooks": "4.0.1", "@testing-library/user-event": "13.5.0", From d3081ebd961f10159156449ba08a6d2f327bd7b6 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Thu, 10 Aug 2023 16:14:19 +0200 Subject: [PATCH 045/545] feat(packages/sui-test): restore original versions --- packages/sui-test/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/sui-test/package.json b/packages/sui-test/package.json index cc34daa10..7e276db87 100644 --- a/packages/sui-test/package.json +++ b/packages/sui-test/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/test", - "version": "8.27.0-typescript.5", + "version": "8.26.0", "description": "", "bin": { "sui-test": "bin/sui-test.js" @@ -22,8 +22,8 @@ "@babel/core": "7.18.10", "@babel/plugin-transform-modules-commonjs": "7.18.6", "@babel/register": "7.18.9", + "@s-ui/compiler-config": "1", "@s-ui/helpers": "1", - "@s-ui/compiler-config": "typescript", "@swc/core": "1.3.75", "@swc/register": "0.1.10", "babel-loader": "8.2.5", From f6c4f9607d7054bc5e044b849fe1741473007dfa Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Fri, 11 Aug 2023 09:26:24 +0200 Subject: [PATCH 046/545] feat(packages/sui-bundler): rename module rules --- .../{module-rules-babel.js => module-rules-compiler.js} | 0 packages/sui-bundler/webpack.config.dev.js | 4 ++-- packages/sui-bundler/webpack.config.lib.js | 4 ++-- packages/sui-bundler/webpack.config.prod.js | 4 ++-- packages/sui-bundler/webpack.config.server.js | 4 ++-- 5 files changed, 8 insertions(+), 8 deletions(-) rename packages/sui-bundler/shared/{module-rules-babel.js => module-rules-compiler.js} (100%) diff --git a/packages/sui-bundler/shared/module-rules-babel.js b/packages/sui-bundler/shared/module-rules-compiler.js similarity index 100% rename from packages/sui-bundler/shared/module-rules-babel.js rename to packages/sui-bundler/shared/module-rules-compiler.js diff --git a/packages/sui-bundler/webpack.config.dev.js b/packages/sui-bundler/webpack.config.dev.js index 8294e0d8f..e277d3d80 100644 --- a/packages/sui-bundler/webpack.config.dev.js +++ b/packages/sui-bundler/webpack.config.dev.js @@ -17,7 +17,7 @@ const {aliasFromConfig, defaultAlias} = require('./shared/resolve-alias.js') const {supportLegacyBrowsers} = require('./shared/config.js') const {resolveLoader} = require('./shared/resolve-loader.js') -const createBabelRules = require('./shared/module-rules-babel.js') +const createCompilerRules = require('./shared/module-rules-compiler.js') const outputPath = path.join(process.cwd(), 'dist') @@ -83,7 +83,7 @@ const webpackConfig = { resolveLoader, module: { rules: cleanList([ - createBabelRules({supportLegacyBrowsers}), + createCompilerRules({supportLegacyBrowsers}), { test: /(\.css|\.scss)$/, use: cleanList([ diff --git a/packages/sui-bundler/webpack.config.lib.js b/packages/sui-bundler/webpack.config.lib.js index 188ba9256..6d1e8ba3b 100644 --- a/packages/sui-bundler/webpack.config.lib.js +++ b/packages/sui-bundler/webpack.config.lib.js @@ -9,7 +9,7 @@ const { const path = require('path') const minifyJs = require('./shared/minify-js.js') const definePlugin = require('./shared/define.js') -const createBabelRules = require('./shared/module-rules-babel.js') +const createCompilerRules = require('./shared/module-rules-compiler.js') const sassRules = require('./shared/module-rules-sass.js') const { extractComments, @@ -67,6 +67,6 @@ module.exports = { definePlugin() ]), module: { - rules: [createBabelRules({supportLegacyBrowsers}), sassRules] + rules: [createCompilerRules({supportLegacyBrowsers}), sassRules] } } diff --git a/packages/sui-bundler/webpack.config.prod.js b/packages/sui-bundler/webpack.config.prod.js index 525bd82b0..b61d0d759 100644 --- a/packages/sui-bundler/webpack.config.prod.js +++ b/packages/sui-bundler/webpack.config.prod.js @@ -23,7 +23,7 @@ const { supportLegacyBrowsers } = require('./shared/config.js') const {resolveLoader} = require('./shared/resolve-loader.js') -const createBabelRules = require('./shared/module-rules-babel.js') +const createCompilerRules = require('./shared/module-rules-compiler.js') const sassRules = require('./shared/module-rules-sass.js') const definePlugin = require('./shared/define.js') const manifestLoaderRules = require('./shared/module-rules-manifest-loader.js') @@ -114,7 +114,7 @@ const webpackConfig = { ]), module: { rules: cleanList([ - createBabelRules({supportLegacyBrowsers}), + createCompilerRules({supportLegacyBrowsers}), sassRules, when(config['externals-manifest'], () => manifestLoaderRules(config['externals-manifest']) diff --git a/packages/sui-bundler/webpack.config.server.js b/packages/sui-bundler/webpack.config.server.js index dc0c1f153..eb03634e8 100644 --- a/packages/sui-bundler/webpack.config.server.js +++ b/packages/sui-bundler/webpack.config.server.js @@ -3,7 +3,7 @@ const webpackNodeExternals = require('webpack-node-externals') const path = require('path') const {config, when, cleanList} = require('./shared/index.js') -const createBabelRules = require('./shared/module-rules-babel.js') +const createCompilerRules = require('./shared/module-rules-compiler.js') const manifestLoaderRules = require('./shared/module-rules-manifest-loader.js') const {aliasFromConfig} = require('./shared/resolve-alias.js') const {resolveLoader} = require('./shared/resolve-loader.js') @@ -39,7 +39,7 @@ const webpackConfig = { resolveLoader, module: { rules: cleanList([ - createBabelRules({isServer: true}), + createCompilerRules({isServer: true}), { // ignore css/scss/svg require/imports files in the server test: /(\.svg|\.s?css)$/, From eb68ce2570b6c6d11acc7d55362d4d5dd3c36d2b Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Fri, 11 Aug 2023 09:26:43 +0200 Subject: [PATCH 047/545] feat(packages/sui-hoc): remove type module --- packages/sui-hoc/package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/sui-hoc/package.json b/packages/sui-hoc/package.json index f2d3dab18..3928f2e3d 100644 --- a/packages/sui-hoc/package.json +++ b/packages/sui-hoc/package.json @@ -3,7 +3,6 @@ "version": "1.36.0", "description": "Set of HoC useful for react", "main": "lib/index.js", - "type": "module", "scripts": { "lib": "babel --presets sui ./src --out-dir ./lib", "prepublishOnly": "npm run lib" From c5facd53f196676b5efd842e68d85a995c8e1c89 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Fri, 18 Aug 2023 11:44:51 +0200 Subject: [PATCH 048/545] test(packages/sui-js-compiler): log errors --- packages/sui-js-compiler/test/server/jsCompilerSpec.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/sui-js-compiler/test/server/jsCompilerSpec.js b/packages/sui-js-compiler/test/server/jsCompilerSpec.js index bca71bfae..e0f6df757 100644 --- a/packages/sui-js-compiler/test/server/jsCompilerSpec.js +++ b/packages/sui-js-compiler/test/server/jsCompilerSpec.js @@ -85,10 +85,12 @@ describe('@s-ui/js-compiler', () => { await fs.outputFile(tsConfigPath, JSON.stringify(tsConfig)) // WHEN execute the compiler command - const {stdout} = await exec('node ../../index.js', { + const {stdout, stderr} = await exec('node ../../index.js', { cwd }) + console.log({stdout, stderr}) const compiledFilenames = await fs.readdir(libPath) + console.log({compiledFilenames}) // THEN package files and types are properly compiled expect(stdout).to.contain('[sui-js-compiler]') From 2a0c0ea4473824545cff780932f18e126a1785de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joan=20Leo=CC=81n?= Date: Mon, 28 Aug 2023 15:10:21 +0200 Subject: [PATCH 049/545] feat(packages/babel-preset-sui): update default Node version to 18 --- packages/babel-preset-sui/src/defaults.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/babel-preset-sui/src/defaults.js b/packages/babel-preset-sui/src/defaults.js index bad6fa742..063f7a3b8 100644 --- a/packages/babel-preset-sui/src/defaults.js +++ b/packages/babel-preset-sui/src/defaults.js @@ -14,6 +14,6 @@ module.exports = { ios: '14.5' }, DEFAULT_SERVER_TARGETS: { - node: '14' + node: '18' } } From b2487abed6a1e5a007bf21fc0cd7d3ea3579eb24 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Tue, 17 Oct 2023 19:43:15 +0200 Subject: [PATCH 050/545] fix(packages/sui-bundler): fix plugin extension --- packages/sui-bundler/webpack.config.lib.js | 2 +- packages/sui-bundler/webpack.config.prod.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/sui-bundler/webpack.config.lib.js b/packages/sui-bundler/webpack.config.lib.js index 6d1e8ba3b..071f8f2f6 100644 --- a/packages/sui-bundler/webpack.config.lib.js +++ b/packages/sui-bundler/webpack.config.lib.js @@ -54,7 +54,7 @@ module.exports = { }, plugins: cleanList([ new webpack.ProvidePlugin({ - process: 'process/browser' + process: 'process/browser.js' }), new MiniCssExtractPlugin({ filename: cssFileName, diff --git a/packages/sui-bundler/webpack.config.prod.js b/packages/sui-bundler/webpack.config.prod.js index b61d0d759..c586b3dac 100644 --- a/packages/sui-bundler/webpack.config.prod.js +++ b/packages/sui-bundler/webpack.config.prod.js @@ -84,7 +84,7 @@ const webpackConfig = { }, plugins: cleanList([ new webpack.ProvidePlugin({ - process: 'process/browser' + process: 'process/browser.js' }), new webpack.ids.HashedModuleIdsPlugin(), new webpack.EnvironmentPlugin(envVars(config.env)), From 561bca9df69c96d5a8f6ac3e0b46c73acc5149f7 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Tue, 17 Oct 2023 21:42:45 +0200 Subject: [PATCH 051/545] feat(packages/sui-mock): sync typescript versions --- packages/sui-mock/package.json | 7 +++---- packages/sui-mock/src/browser.js | 11 ++++++++--- packages/sui-mock/src/server.js | 13 +++++++++---- 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/packages/sui-mock/package.json b/packages/sui-mock/package.json index a0c177f5c..6561a5f7c 100644 --- a/packages/sui-mock/package.json +++ b/packages/sui-mock/package.json @@ -2,12 +2,11 @@ "name": "@s-ui/mock", "version": "1.2.0", "main": "lib/index.js", - "description": "mock provider", - "types": "lib/index", + "description": "Mock provider", "scripts": { "lib": "babel --presets sui ./src --out-dir ./lib", "prepublishOnly": "npm run lib", - "test": "npm run test:client && npm run test:server", + "test": "npm run test:browser && npm run test:server", "test:browser": "npx @s-ui/test browser -P './test/browser/**/*Spec.js'", "test:browser:watch": "npm run test:client -- --watch", "test:server": "npx @s-ui/test server -P './test/server/**/*Spec.js'", @@ -17,7 +16,7 @@ "author": "", "license": "MIT", "dependencies": { - "msw": "0.47.4" + "msw": "1.2.1" }, "repository": { "type": "git", diff --git a/packages/sui-mock/src/browser.js b/packages/sui-mock/src/browser.js index 6dca6c6dc..1923d7de2 100644 --- a/packages/sui-mock/src/browser.js +++ b/packages/sui-mock/src/browser.js @@ -5,8 +5,13 @@ export const getBrowserMocker = async (handlers = []) => { const worker = setup(...handlers) return { - ...worker, - listen: worker.start, - close: worker.stop + start: worker.start.bind(worker), + stop: worker.stop.bind(worker), + listen: worker.start.bind(worker), + close: worker.stop.bind(worker), + use: worker.use.bind(worker), + resetHandlers: worker.resetHandlers.bind(worker), + restoreHandlers: worker.restoreHandlers.bind(worker), + printHandlers: worker.printHandlers.bind(worker) } } diff --git a/packages/sui-mock/src/server.js b/packages/sui-mock/src/server.js index a1ca38c4a..0461c967b 100644 --- a/packages/sui-mock/src/server.js +++ b/packages/sui-mock/src/server.js @@ -1,12 +1,17 @@ export {rest} from 'msw' export const getServerMocker = async (handlers = []) => { - const {setupServer} = require('msw/node') + const setupServer = await import('msw/node').then(pkg => pkg.setupServer) const worker = setupServer(...handlers) return { - ...worker, - start: worker.listen, - stop: worker.close + start: worker.listen.bind(worker), + stop: worker.close.bind(worker), + listen: worker.listen.bind(worker), + close: worker.close.bind(worker), + use: worker.use.bind(worker), + resetHandlers: worker.resetHandlers.bind(worker), + restoreHandlers: worker.restoreHandlers.bind(worker), + printHandlers: worker.printHandlers.bind(worker) } } From 5c75ada6b2c6a00f230f84b9d659c10f2b03277c Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Tue, 17 Oct 2023 21:42:56 +0200 Subject: [PATCH 052/545] feat(packages/sui-test-contract): sync typescript versions --- packages/sui-test-contract/package.json | 4 ++-- packages/sui-test-contract/src/setup/utils.js | 4 ++-- packages/sui-test-contract/test/server/setupSpec.js | 3 ++- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/sui-test-contract/package.json b/packages/sui-test-contract/package.json index 6d8993431..7e9069923 100644 --- a/packages/sui-test-contract/package.json +++ b/packages/sui-test-contract/package.json @@ -17,8 +17,8 @@ }, "dependencies": { "@pact-foundation/pact": "9.18.1", - "@pactflow/pact-msw-adapter": "1.2.1", - "@s-ui/mock": "1", + "@pactflow/pact-msw-adapter": "2.0.0", + "@s-ui/mock": "typescript", "commander": "8.3.0", "headers-polyfill": "3.1.2" }, diff --git a/packages/sui-test-contract/src/setup/utils.js b/packages/sui-test-contract/src/setup/utils.js index 37b87eb88..b0d009e47 100644 --- a/packages/sui-test-contract/src/setup/utils.js +++ b/packages/sui-test-contract/src/setup/utils.js @@ -1,6 +1,6 @@ import {stringify} from 'qs' -import {writeData2File} from '@pactflow/pact-msw-adapter/dist/utils/utils.js' +import {createWriter} from '@pactflow/pact-msw-adapter/dist/utils/utils.js' const flatEntries = (input, prefix = '') => Object.entries(input).flatMap(([key, value]) => { @@ -61,7 +61,7 @@ export const writerFactory = providers => (path, data) => { }) console.log(`Writing the Pact file "${path}"`) // eslint-disable-line - writeData2File(path, data) + createWriter()(path, data) } export const mapProviders = providers => diff --git a/packages/sui-test-contract/test/server/setupSpec.js b/packages/sui-test-contract/test/server/setupSpec.js index 7dd4de6bc..de31a0e3c 100644 --- a/packages/sui-test-contract/test/server/setupSpec.js +++ b/packages/sui-test-contract/test/server/setupSpec.js @@ -1,11 +1,12 @@ import {expect} from 'chai' import {FetcherFactory} from '@s-ui/domain' -import {rest} from '@s-ui/mock' +import mock from '@s-ui/mock' import {setupContractTests} from '../../src/index.js' import {getContractFileData, removeContractFiles} from '../utils.js' +const {rest} = mock const fetcher = FetcherFactory.httpFetcher({config: {}}) const consumer = 'test-consumer' const fujiAppleResponse = {color: 'red', type: 'Fuji'} From bfd4f8cea375b5291d9bd9b4d1aed0a7e7bd184c Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Mon, 30 Oct 2023 23:45:15 +0100 Subject: [PATCH 053/545] chore(Root): upgrade ts versio --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index d28d59a74..c9567f9f6 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "chai": "4.3.6", "react": "17", "sinon": "10.0.0", - "typescript": "4.3.2", + "typescript": "5", "validate-commit-msg": "2.14.0" }, "config": { @@ -79,4 +79,4 @@ "stylelint": { "extends": "./node_modules/@s-ui/lint/stylelint.config.js" } -} \ No newline at end of file +} From 1a3585b02b640ea88a3477340da4a57fc3c2b308 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Mon, 30 Oct 2023 23:45:40 +0100 Subject: [PATCH 054/545] feat(packages/sui-test): sync ts version --- packages/sui-test/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sui-test/package.json b/packages/sui-test/package.json index e1887107f..e6bc1745d 100644 --- a/packages/sui-test/package.json +++ b/packages/sui-test/package.json @@ -24,7 +24,7 @@ "@babel/register": "7.18.9", "@s-ui/compiler-config": "1", "@s-ui/helpers": "1", - "@swc/core": "1.3.75", + "@swc/core": "1.3.14", "@swc/register": "0.1.10", "babel-loader": "8.2.5", "babel-plugin-dynamic-import-node": "2.3.3", From b2d8f6678e270d7b4f88c03f6fa1892e36c600d1 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Mon, 30 Oct 2023 23:46:19 +0100 Subject: [PATCH 055/545] feat(packages/sui-js-compiler): install ts by default --- packages/sui-js-compiler/index.js | 7 ++++--- packages/sui-js-compiler/package.json | 1 - 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/sui-js-compiler/index.js b/packages/sui-js-compiler/index.js index c9860432c..ce6cfb7bb 100755 --- a/packages/sui-js-compiler/index.js +++ b/packages/sui-js-compiler/index.js @@ -7,11 +7,11 @@ import program from 'commander' import fg from 'fast-glob' import fs from 'fs-extra' import path from 'node:path' +import typescript from 'typescript' import {transformFile} from '@swc/core' import {getSWCConfig} from '@s-ui/compiler-config' -import helpers from '@s-ui/helpers/packages.js' const SOURCE_DIR = './src' const OUTPUT_DIR = './lib' @@ -59,8 +59,9 @@ const compileFile = async (file, options) => { } const compileTypes = async (files, options) => { - const {dynamicPackage} = helpers - const {createCompilerHost, createProgram} = await dynamicPackage('typescript') + const {createCompilerHost, createProgram} = await import(typescript).then( + module => module.default + ) const createdFiles = {} const host = createCompilerHost(options) host.writeFile = (fileName, contents) => (createdFiles[fileName] = contents) diff --git a/packages/sui-js-compiler/package.json b/packages/sui-js-compiler/package.json index 36457f289..920a6bf1d 100644 --- a/packages/sui-js-compiler/package.json +++ b/packages/sui-js-compiler/package.json @@ -13,7 +13,6 @@ "license": "MIT", "dependencies": { "@s-ui/compiler-config": "1", - "@s-ui/helpers": "1", "@swc/core": "1.3.14", "@swc/helpers": "0.4.12", "commander": "8.3.0", From 6db9f33e0d6f9bcad657f9eda251946a91684995 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Mon, 30 Oct 2023 23:46:51 +0100 Subject: [PATCH 056/545] feat(packages/sui-helpers): remove not needed function --- packages/sui-helpers/packages.js | 29 +---------------------------- 1 file changed, 1 insertion(+), 28 deletions(-) diff --git a/packages/sui-helpers/packages.js b/packages/sui-helpers/packages.js index 16a0a218f..d0501174f 100644 --- a/packages/sui-helpers/packages.js +++ b/packages/sui-helpers/packages.js @@ -66,35 +66,8 @@ const resolveLazyNPMBin = async (binPath, pkg, cwd = process.cwd()) => { } } -/** - * Installs and imports packages dynamically. - * @param {string} name Name of the NPM package. - * @param {object} options Available options. - * @param {string} options.version Specific version of the package. - * @return {Promise} Returns the default module. - */ -const dynamicPackage = async (name, {version} = {}) => { - const packageName = version ? `${name}@${version}` : name - - try { - await getSpawnPromise('npm', ['explain', packageName]) - } catch (error) { - if (error.exitCode === 1) { - await getSpawnPromise('npm', [ - 'install', - packageName, - '--no-save', - '--legacy-peer-deps' - ]) - } - } - - return import(packageName).then(module => module.default) -} - module.exports = { getPackageJson, getPackagesPaths, - resolveLazyNPMBin, - dynamicPackage + resolveLazyNPMBin } From 6cab6ffdb4161e9904509d561d485a77b528f6f4 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Tue, 31 Oct 2023 09:19:29 +0100 Subject: [PATCH 057/545] feat(packages/sui-bundler): remove dynamic import --- packages/sui-bundler/scripts/postinstall.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/sui-bundler/scripts/postinstall.js b/packages/sui-bundler/scripts/postinstall.js index 9e1a110f0..5d5fa1f89 100755 --- a/packages/sui-bundler/scripts/postinstall.js +++ b/packages/sui-bundler/scripts/postinstall.js @@ -5,7 +5,6 @@ const crypto = require('crypto') const fs = require('fs-extra') const path = require('path') const {writeFile} = require('@s-ui/helpers/file.js') -const {dynamicPackage} = require('@s-ui/helpers/packages') const {INIT_CWD} = process.env const tsConfigTemplate = `\ @@ -45,9 +44,9 @@ async function main() { process.exit(0) } await writeFile(TS_CONFIG_PATH, tsConfigTemplate) - await dynamicPackage('typescript') console.log( '❌ [sui-bundler postinstall] tsconfig.json was not up to date, so we updated it' ) } + main() From 5cacd3eac41cd4ba7aa7f243d9e9617ebf19156b Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Tue, 31 Oct 2023 10:47:42 +0100 Subject: [PATCH 058/545] chore(Root): fix ts version --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index c9567f9f6..addb4d8e1 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "chai": "4.3.6", "react": "17", "sinon": "10.0.0", - "typescript": "5", + "typescript": "5.0.4", "validate-commit-msg": "2.14.0" }, "config": { @@ -79,4 +79,4 @@ "stylelint": { "extends": "./node_modules/@s-ui/lint/stylelint.config.js" } -} +} \ No newline at end of file From c7f0a06d0e9ff6a7d65c4482e4280e908eaf52d5 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Tue, 31 Oct 2023 10:48:02 +0100 Subject: [PATCH 059/545] test(packages/sui-js-compiler): fix test --- packages/sui-js-compiler/index.js | 3 +-- packages/sui-js-compiler/package.json | 3 ++- packages/sui-js-compiler/test/server/jsCompilerSpec.js | 4 +--- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/packages/sui-js-compiler/index.js b/packages/sui-js-compiler/index.js index ce6cfb7bb..966763269 100755 --- a/packages/sui-js-compiler/index.js +++ b/packages/sui-js-compiler/index.js @@ -7,7 +7,6 @@ import program from 'commander' import fg from 'fast-glob' import fs from 'fs-extra' import path from 'node:path' -import typescript from 'typescript' import {transformFile} from '@swc/core' @@ -59,7 +58,7 @@ const compileFile = async (file, options) => { } const compileTypes = async (files, options) => { - const {createCompilerHost, createProgram} = await import(typescript).then( + const {createCompilerHost, createProgram} = await import('typescript').then( module => module.default ) const createdFiles = {} diff --git a/packages/sui-js-compiler/package.json b/packages/sui-js-compiler/package.json index 920a6bf1d..c0bb9fc5b 100644 --- a/packages/sui-js-compiler/package.json +++ b/packages/sui-js-compiler/package.json @@ -17,6 +17,7 @@ "@swc/helpers": "0.4.12", "commander": "8.3.0", "fast-glob": "3.2.12", - "fs-extra": "10.1.0" + "fs-extra": "10.1.0", + "typescript": "5.0.4" } } diff --git a/packages/sui-js-compiler/test/server/jsCompilerSpec.js b/packages/sui-js-compiler/test/server/jsCompilerSpec.js index e0f6df757..bca71bfae 100644 --- a/packages/sui-js-compiler/test/server/jsCompilerSpec.js +++ b/packages/sui-js-compiler/test/server/jsCompilerSpec.js @@ -85,12 +85,10 @@ describe('@s-ui/js-compiler', () => { await fs.outputFile(tsConfigPath, JSON.stringify(tsConfig)) // WHEN execute the compiler command - const {stdout, stderr} = await exec('node ../../index.js', { + const {stdout} = await exec('node ../../index.js', { cwd }) - console.log({stdout, stderr}) const compiledFilenames = await fs.readdir(libPath) - console.log({compiledFilenames}) // THEN package files and types are properly compiled expect(stdout).to.contain('[sui-js-compiler]') From 27cce44bd84cab877cbffda6e552b8fdb2f1be63 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Tue, 31 Oct 2023 13:23:35 +0100 Subject: [PATCH 060/545] test(Root): debug test --- .../test/server/jsCompilerSpec.js | 44 +++++++++++++------ 1 file changed, 30 insertions(+), 14 deletions(-) diff --git a/packages/sui-js-compiler/test/server/jsCompilerSpec.js b/packages/sui-js-compiler/test/server/jsCompilerSpec.js index bca71bfae..1547f1912 100644 --- a/packages/sui-js-compiler/test/server/jsCompilerSpec.js +++ b/packages/sui-js-compiler/test/server/jsCompilerSpec.js @@ -26,26 +26,42 @@ describe('@s-ui/js-compiler', () => { await fs.remove(tsConfigPath) }) - it('should compile a "src" folder with a JavaScript file and output it to "lib"', async () => { - const {stdout} = await exec('node ../../index.js', { - cwd - }) + it.only( + 'should compile a "src" folder with a JavaScript file and output it to "lib"', + async () => { + const {stdout: stdout1} = await exec('npm ls @swc/core', { + cwd + }) + console.log({stdout1}) + const {stdout: stdout2} = await exec('npm ls @swc/helpers', { + cwd + }) + console.log({stdout2}) + const {stdout: stdout3} = await exec('npm ls typescript', { + cwd + }) + console.log({stdout3}) + const {stdout} = await exec('node ../../index.js', { + cwd + }) - const compiledFilenames = await fs.readdir(libPath) + const compiledFilenames = await fs.readdir(libPath) - expect(compiledFilenames).to.eql(['example.js', 'example.test.js']) + expect(compiledFilenames).to.eql(['example.js', 'example.test.js']) - expect(stdout).to.contain('[sui-js-compiler]') + expect(stdout).to.contain('[sui-js-compiler]') - const compiledFile = await fs.readFile(libFilePath, 'utf-8') + const compiledFile = await fs.readFile(libFilePath, 'utf-8') + console.log({compiledFilenames, compiledFile}) - expect(compiledFile).to.contain('react/jsx-runtime') - expect(compiledFile).to.contain('_jsx') + expect(compiledFile).to.contain('react/jsx-runtime') + expect(compiledFile).to.contain('_jsx') - expect(compiledFile).to.contain('_async_to_generator') - expect(compiledFile).to.contain('_ts_decorate') - expect(compiledFile).to.contain('_ts_generator') - }).timeout(DEFAULT_TIMEOUT) + expect(compiledFile).to.contain('_async_to_generator') + expect(compiledFile).to.contain('_ts_decorate') + expect(compiledFile).to.contain('_ts_generator') + } + ).timeout(DEFAULT_TIMEOUT) it('should exclude all the files matching the passed patterns when the "ignore" option exists', async () => { const {stdout} = await exec( From ba9fd99f39a7b5bc654869105740b612a37fc812 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Tue, 31 Oct 2023 13:26:59 +0100 Subject: [PATCH 061/545] test(packages/sui-js-compiler): remove only --- .../test/server/jsCompilerSpec.js | 57 +++++++++---------- 1 file changed, 27 insertions(+), 30 deletions(-) diff --git a/packages/sui-js-compiler/test/server/jsCompilerSpec.js b/packages/sui-js-compiler/test/server/jsCompilerSpec.js index 1547f1912..e595b1c3f 100644 --- a/packages/sui-js-compiler/test/server/jsCompilerSpec.js +++ b/packages/sui-js-compiler/test/server/jsCompilerSpec.js @@ -26,42 +26,39 @@ describe('@s-ui/js-compiler', () => { await fs.remove(tsConfigPath) }) - it.only( - 'should compile a "src" folder with a JavaScript file and output it to "lib"', - async () => { - const {stdout: stdout1} = await exec('npm ls @swc/core', { - cwd - }) - console.log({stdout1}) - const {stdout: stdout2} = await exec('npm ls @swc/helpers', { - cwd - }) - console.log({stdout2}) - const {stdout: stdout3} = await exec('npm ls typescript', { - cwd - }) - console.log({stdout3}) - const {stdout} = await exec('node ../../index.js', { - cwd - }) + it('should compile a "src" folder with a JavaScript file and output it to "lib"', async () => { + const {stdout: stdout1} = await exec('npm ls @swc/core', { + cwd + }) + console.log({stdout1}) + const {stdout: stdout2} = await exec('npm ls @swc/helpers', { + cwd + }) + console.log({stdout2}) + const {stdout: stdout3} = await exec('npm ls typescript', { + cwd + }) + console.log({stdout3}) + const {stdout} = await exec('node ../../index.js', { + cwd + }) - const compiledFilenames = await fs.readdir(libPath) + const compiledFilenames = await fs.readdir(libPath) - expect(compiledFilenames).to.eql(['example.js', 'example.test.js']) + expect(compiledFilenames).to.eql(['example.js', 'example.test.js']) - expect(stdout).to.contain('[sui-js-compiler]') + expect(stdout).to.contain('[sui-js-compiler]') - const compiledFile = await fs.readFile(libFilePath, 'utf-8') - console.log({compiledFilenames, compiledFile}) + const compiledFile = await fs.readFile(libFilePath, 'utf-8') + console.log({compiledFilenames, compiledFile}) - expect(compiledFile).to.contain('react/jsx-runtime') - expect(compiledFile).to.contain('_jsx') + expect(compiledFile).to.contain('react/jsx-runtime') + expect(compiledFile).to.contain('_jsx') - expect(compiledFile).to.contain('_async_to_generator') - expect(compiledFile).to.contain('_ts_decorate') - expect(compiledFile).to.contain('_ts_generator') - } - ).timeout(DEFAULT_TIMEOUT) + expect(compiledFile).to.contain('_async_to_generator') + expect(compiledFile).to.contain('_ts_decorate') + expect(compiledFile).to.contain('_ts_generator') + }).timeout(DEFAULT_TIMEOUT) it('should exclude all the files matching the passed patterns when the "ignore" option exists', async () => { const {stdout} = await exec( From d733a17c9a61c4a0bb55e7ec1bfe84eecbc9808a Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Tue, 31 Oct 2023 13:37:17 +0100 Subject: [PATCH 062/545] test(packages/sui-js-compiler): remove logs --- .../test/server/jsCompilerSpec.js | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/packages/sui-js-compiler/test/server/jsCompilerSpec.js b/packages/sui-js-compiler/test/server/jsCompilerSpec.js index e595b1c3f..0bc3aeeb4 100644 --- a/packages/sui-js-compiler/test/server/jsCompilerSpec.js +++ b/packages/sui-js-compiler/test/server/jsCompilerSpec.js @@ -9,7 +9,6 @@ import {promisify} from 'node:util' const DEFAULT_TIMEOUT = 9000 const exec = promisify(execCallback) - const cwd = fileURLToPath(new URL('.', import.meta.url)) const libPath = fileURLToPath(new URL('lib', import.meta.url)) const tsConfigPath = fileURLToPath(new URL('tsconfig.json', import.meta.url)) @@ -27,18 +26,6 @@ describe('@s-ui/js-compiler', () => { }) it('should compile a "src" folder with a JavaScript file and output it to "lib"', async () => { - const {stdout: stdout1} = await exec('npm ls @swc/core', { - cwd - }) - console.log({stdout1}) - const {stdout: stdout2} = await exec('npm ls @swc/helpers', { - cwd - }) - console.log({stdout2}) - const {stdout: stdout3} = await exec('npm ls typescript', { - cwd - }) - console.log({stdout3}) const {stdout} = await exec('node ../../index.js', { cwd }) @@ -46,15 +33,12 @@ describe('@s-ui/js-compiler', () => { const compiledFilenames = await fs.readdir(libPath) expect(compiledFilenames).to.eql(['example.js', 'example.test.js']) - expect(stdout).to.contain('[sui-js-compiler]') const compiledFile = await fs.readFile(libFilePath, 'utf-8') - console.log({compiledFilenames, compiledFile}) expect(compiledFile).to.contain('react/jsx-runtime') expect(compiledFile).to.contain('_jsx') - expect(compiledFile).to.contain('_async_to_generator') expect(compiledFile).to.contain('_ts_decorate') expect(compiledFile).to.contain('_ts_generator') @@ -71,14 +55,12 @@ describe('@s-ui/js-compiler', () => { const compiledFilenames = await fs.readdir(libPath) expect(compiledFilenames).to.eql(['example.js']) - expect(stdout).to.contain('[sui-js-compiler]') const compiledFile = await fs.readFile(libFilePath, 'utf-8') expect(compiledFile).to.contain('react/jsx-runtime') expect(compiledFile).to.contain('_jsx') - expect(compiledFile).to.contain('_async_to_generator') expect(compiledFile).to.contain('_ts_decorate') expect(compiledFile).to.contain('_ts_generator') From c6eb1ee7f05d3c94c28aac5912a890315427afc3 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Tue, 31 Oct 2023 15:38:04 +0100 Subject: [PATCH 063/545] test(packages/sui-js-compiler): increase timeout --- packages/sui-js-compiler/test/server/jsCompilerSpec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sui-js-compiler/test/server/jsCompilerSpec.js b/packages/sui-js-compiler/test/server/jsCompilerSpec.js index 0bc3aeeb4..c7c11f776 100644 --- a/packages/sui-js-compiler/test/server/jsCompilerSpec.js +++ b/packages/sui-js-compiler/test/server/jsCompilerSpec.js @@ -6,7 +6,7 @@ import {exec as execCallback} from 'node:child_process' import {join} from 'node:path' import {promisify} from 'node:util' -const DEFAULT_TIMEOUT = 9000 +const DEFAULT_TIMEOUT = 15000 const exec = promisify(execCallback) const cwd = fileURLToPath(new URL('.', import.meta.url)) From bbcdf125682e4b0345cba99facedac34bbf5251b Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Mon, 6 Nov 2023 12:37:13 +0100 Subject: [PATCH 064/545] test(packages/sui-js-compiler): restore timeout value --- packages/sui-js-compiler/test/server/jsCompilerSpec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sui-js-compiler/test/server/jsCompilerSpec.js b/packages/sui-js-compiler/test/server/jsCompilerSpec.js index c7c11f776..0bc3aeeb4 100644 --- a/packages/sui-js-compiler/test/server/jsCompilerSpec.js +++ b/packages/sui-js-compiler/test/server/jsCompilerSpec.js @@ -6,7 +6,7 @@ import {exec as execCallback} from 'node:child_process' import {join} from 'node:path' import {promisify} from 'node:util' -const DEFAULT_TIMEOUT = 15000 +const DEFAULT_TIMEOUT = 9000 const exec = promisify(execCallback) const cwd = fileURLToPath(new URL('.', import.meta.url)) From 96683afe093914f186e9a3bc545b10a1f6764d06 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Tue, 7 Nov 2023 11:39:08 +0100 Subject: [PATCH 065/545] test(packages/sui-js-compiler): skip some tests --- .../test/server/jsCompilerSpec.js | 76 ++++++++++--------- 1 file changed, 41 insertions(+), 35 deletions(-) diff --git a/packages/sui-js-compiler/test/server/jsCompilerSpec.js b/packages/sui-js-compiler/test/server/jsCompilerSpec.js index 0bc3aeeb4..7c32da95b 100644 --- a/packages/sui-js-compiler/test/server/jsCompilerSpec.js +++ b/packages/sui-js-compiler/test/server/jsCompilerSpec.js @@ -25,46 +25,52 @@ describe('@s-ui/js-compiler', () => { await fs.remove(tsConfigPath) }) - it('should compile a "src" folder with a JavaScript file and output it to "lib"', async () => { - const {stdout} = await exec('node ../../index.js', { - cwd - }) - - const compiledFilenames = await fs.readdir(libPath) - - expect(compiledFilenames).to.eql(['example.js', 'example.test.js']) - expect(stdout).to.contain('[sui-js-compiler]') - - const compiledFile = await fs.readFile(libFilePath, 'utf-8') - - expect(compiledFile).to.contain('react/jsx-runtime') - expect(compiledFile).to.contain('_jsx') - expect(compiledFile).to.contain('_async_to_generator') - expect(compiledFile).to.contain('_ts_decorate') - expect(compiledFile).to.contain('_ts_generator') - }).timeout(DEFAULT_TIMEOUT) - - it('should exclude all the files matching the passed patterns when the "ignore" option exists', async () => { - const {stdout} = await exec( - 'node ../../index.js --ignore="./src/**.test.js"', - { + it.skip( + 'should compile a "src" folder with a JavaScript file and output it to "lib"', + async () => { + const {stdout} = await exec('node ../../index.js', { cwd - } - ) + }) - const compiledFilenames = await fs.readdir(libPath) + const compiledFilenames = await fs.readdir(libPath) - expect(compiledFilenames).to.eql(['example.js']) - expect(stdout).to.contain('[sui-js-compiler]') + expect(compiledFilenames).to.eql(['example.js', 'example.test.js']) + expect(stdout).to.contain('[sui-js-compiler]') - const compiledFile = await fs.readFile(libFilePath, 'utf-8') + const compiledFile = await fs.readFile(libFilePath, 'utf-8') - expect(compiledFile).to.contain('react/jsx-runtime') - expect(compiledFile).to.contain('_jsx') - expect(compiledFile).to.contain('_async_to_generator') - expect(compiledFile).to.contain('_ts_decorate') - expect(compiledFile).to.contain('_ts_generator') - }).timeout(DEFAULT_TIMEOUT) + expect(compiledFile).to.contain('react/jsx-runtime') + expect(compiledFile).to.contain('_jsx') + expect(compiledFile).to.contain('_async_to_generator') + expect(compiledFile).to.contain('_ts_decorate') + expect(compiledFile).to.contain('_ts_generator') + } + ).timeout(DEFAULT_TIMEOUT) + + it.skip( + 'should exclude all the files matching the passed patterns when the "ignore" option exists', + async () => { + const {stdout} = await exec( + 'node ../../index.js --ignore="./src/**.test.js"', + { + cwd + } + ) + + const compiledFilenames = await fs.readdir(libPath) + + expect(compiledFilenames).to.eql(['example.js']) + expect(stdout).to.contain('[sui-js-compiler]') + + const compiledFile = await fs.readFile(libFilePath, 'utf-8') + + expect(compiledFile).to.contain('react/jsx-runtime') + expect(compiledFile).to.contain('_jsx') + expect(compiledFile).to.contain('_async_to_generator') + expect(compiledFile).to.contain('_ts_decorate') + expect(compiledFile).to.contain('_ts_generator') + } + ).timeout(DEFAULT_TIMEOUT) it('should compile a "src" folder with a JSX file written in TypeScript and output it to "lib"', async () => { // GIVEN a "tsconfig.json" definition in the package root directory From 7fea970a2a44f487818339e5a69b1420a9bb28a1 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Mon, 13 Nov 2023 11:53:06 +0100 Subject: [PATCH 066/545] chore(Root): change script --- .github/workflows/node.js.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index 7478c36ff..2aa091457 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -26,7 +26,7 @@ jobs: - uses: browser-actions/setup-chrome@latest - run: sudo apt-get install xvfb - run: npm install --no-save --no-fund --no-audit --legacy-peer-deps - - run: npx -y ultra-runner --raw --recursive prepublishOnly &>/dev/null + - run: npx -y ultra-runner --raw --recursive prepublishOnly - run: npm run lint - run: npm run test:server:ci - run: xvfb-run --auto-servernum npm run test:client:ci From 95153a8fa4267fc5bbfe37a872fff095bbd43d94 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Mon, 13 Nov 2023 12:53:41 +0100 Subject: [PATCH 067/545] chore(packages/sui-consents): fix deps --- packages/sui-consents/package.json | 4 ++-- packages/sui-consents/src/useUserConsents.ts | 20 +++++++++++++------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/packages/sui-consents/package.json b/packages/sui-consents/package.json index a37e72155..a9fed42f5 100644 --- a/packages/sui-consents/package.json +++ b/packages/sui-consents/package.json @@ -12,13 +12,13 @@ "author": "", "license": "MIT", "devDependencies": { - "@s-ui/react-context": "1", + "@s-ui/react-context": "typescript", "@testing-library/react": "11.2.5", "react": "17", "react-dom": "17" }, "peerDependencies": { - "@s-ui/react-context": "1", + "@s-ui/react-context": "typescript", "react": "16 || 17" } } diff --git a/packages/sui-consents/src/useUserConsents.ts b/packages/sui-consents/src/useUserConsents.ts index c4a70d0e3..d088d58f8 100644 --- a/packages/sui-consents/src/useUserConsents.ts +++ b/packages/sui-consents/src/useUserConsents.ts @@ -1,20 +1,20 @@ -import { useContext, useEffect, useState } from 'react' +import {useContext, useEffect, useState} from 'react' import SUIContext from '@s-ui/react-context' -import { TCF_VERSION, TCF_WINDOW_API } from './config' +import {TCF_VERSION, TCF_WINDOW_API} from './config' import hasUserConsents from './hasUserConsents' -import { EventStatus, Purpose } from './types' +import {EventStatus, Purpose} from './types' -export default function useUserConsents (requiredConsents: number[]): boolean { +export default function useUserConsents(requiredConsents: number[]): boolean { /** * Consents acceptance state is inited based on the cookies from the * context, so we know the state of consents from the beginning, even * in SSR. */ - const { cookies } = useContext(SUIContext) + const {cookies} = useContext(SUIContext) const [areConsentsAccepted, setAreConsentsAccepted] = useState(() => - hasUserConsents({ requiredConsents, cookies }) + hasUserConsents({requiredConsents, cookies}) ) /** @@ -25,7 +25,13 @@ export default function useUserConsents (requiredConsents: number[]): boolean { useEffect(() => { const tcfApi = window[TCF_WINDOW_API] if (tcfApi !== undefined) { - const consentsListener = ({ eventStatus, purpose }: { eventStatus: EventStatus, purpose: Purpose}): void => { + const consentsListener = ({ + eventStatus, + purpose + }: { + eventStatus: EventStatus + purpose: Purpose + }): void => { if (eventStatus !== EventStatus.USER_ACTION_COMPLETE) return setAreConsentsAccepted( From 6bde899111a93b9a4532c29159e61ba7bb08fd23 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Mon, 13 Nov 2023 12:54:11 +0100 Subject: [PATCH 068/545] chore(Root): put some logs in ci scripts --- .github/workflows/node.js.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index 2aa091457..322fa2bee 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -26,7 +26,10 @@ jobs: - uses: browser-actions/setup-chrome@latest - run: sudo apt-get install xvfb - run: npm install --no-save --no-fund --no-audit --legacy-peer-deps + - run: ls -pal ./node_modules/@s-ui + - run: ls ./node_modules/@s-ui/react-context - run: npx -y ultra-runner --raw --recursive prepublishOnly + - run: ls ./node_modules/@s-ui/react-context - run: npm run lint - run: npm run test:server:ci - run: xvfb-run --auto-servernum npm run test:client:ci From 2d9830a069922d9a186811bbe4cc63a83b635c39 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Tue, 21 Nov 2023 11:18:56 +0100 Subject: [PATCH 069/545] chore(Root): execute only one more server test --- package.json | 4 +- .../test/server/jsCompilerSpec.js | 76 +++++++++---------- 2 files changed, 37 insertions(+), 43 deletions(-) diff --git a/package.json b/package.json index addb4d8e1..1dd8da3a0 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "packages/*" ], "scripts": { - "phoenix": "npx @s-ui/mono phoenix && npx -y ultra-runner --raw --recursive prepublishOnly &>/dev/null", + "phoenix": "npx @s-ui/mono phoenix && npx -y ultra-runner --raw --recursive prepublishOnly --build &>/dev/null", "co": "npx @s-ui/mono commit", "lint": "sui-lint js && sui-lint sass", "test": "npm run test:client && npm run test:server", @@ -20,7 +20,7 @@ "test:server:ci": "npm run test:server", "test:client": "npx @s-ui/test browser -P 'packages/**/!(server)/*Spec.js'", "test:client:watch": "npm run test:client -- --watch", - "test:server": "npx @s-ui/test server -P 'packages/**/server/*Spec.js'", + "test:server": "npx @s-ui/test server -P 'packages/{sui-test-contract,sui-js-compiler}/**/server/*Spec.js'", "test:server:watch": "npm run test:server -- --watch", "test:e2e": "node ./packages/sui-studio/test/server/integration/static-server.js ./packages/sui-studio/test/server/integration/sample-studio/public && npx @s-ui/test-e2e --baseUrl=http://localhost:1234", "pre-commit": "sui-lint js --staged && sui-lint sass --staged", diff --git a/packages/sui-js-compiler/test/server/jsCompilerSpec.js b/packages/sui-js-compiler/test/server/jsCompilerSpec.js index 7c32da95b..0bc3aeeb4 100644 --- a/packages/sui-js-compiler/test/server/jsCompilerSpec.js +++ b/packages/sui-js-compiler/test/server/jsCompilerSpec.js @@ -25,52 +25,46 @@ describe('@s-ui/js-compiler', () => { await fs.remove(tsConfigPath) }) - it.skip( - 'should compile a "src" folder with a JavaScript file and output it to "lib"', - async () => { - const {stdout} = await exec('node ../../index.js', { + it('should compile a "src" folder with a JavaScript file and output it to "lib"', async () => { + const {stdout} = await exec('node ../../index.js', { + cwd + }) + + const compiledFilenames = await fs.readdir(libPath) + + expect(compiledFilenames).to.eql(['example.js', 'example.test.js']) + expect(stdout).to.contain('[sui-js-compiler]') + + const compiledFile = await fs.readFile(libFilePath, 'utf-8') + + expect(compiledFile).to.contain('react/jsx-runtime') + expect(compiledFile).to.contain('_jsx') + expect(compiledFile).to.contain('_async_to_generator') + expect(compiledFile).to.contain('_ts_decorate') + expect(compiledFile).to.contain('_ts_generator') + }).timeout(DEFAULT_TIMEOUT) + + it('should exclude all the files matching the passed patterns when the "ignore" option exists', async () => { + const {stdout} = await exec( + 'node ../../index.js --ignore="./src/**.test.js"', + { cwd - }) + } + ) - const compiledFilenames = await fs.readdir(libPath) + const compiledFilenames = await fs.readdir(libPath) - expect(compiledFilenames).to.eql(['example.js', 'example.test.js']) - expect(stdout).to.contain('[sui-js-compiler]') + expect(compiledFilenames).to.eql(['example.js']) + expect(stdout).to.contain('[sui-js-compiler]') - const compiledFile = await fs.readFile(libFilePath, 'utf-8') + const compiledFile = await fs.readFile(libFilePath, 'utf-8') - expect(compiledFile).to.contain('react/jsx-runtime') - expect(compiledFile).to.contain('_jsx') - expect(compiledFile).to.contain('_async_to_generator') - expect(compiledFile).to.contain('_ts_decorate') - expect(compiledFile).to.contain('_ts_generator') - } - ).timeout(DEFAULT_TIMEOUT) - - it.skip( - 'should exclude all the files matching the passed patterns when the "ignore" option exists', - async () => { - const {stdout} = await exec( - 'node ../../index.js --ignore="./src/**.test.js"', - { - cwd - } - ) - - const compiledFilenames = await fs.readdir(libPath) - - expect(compiledFilenames).to.eql(['example.js']) - expect(stdout).to.contain('[sui-js-compiler]') - - const compiledFile = await fs.readFile(libFilePath, 'utf-8') - - expect(compiledFile).to.contain('react/jsx-runtime') - expect(compiledFile).to.contain('_jsx') - expect(compiledFile).to.contain('_async_to_generator') - expect(compiledFile).to.contain('_ts_decorate') - expect(compiledFile).to.contain('_ts_generator') - } - ).timeout(DEFAULT_TIMEOUT) + expect(compiledFile).to.contain('react/jsx-runtime') + expect(compiledFile).to.contain('_jsx') + expect(compiledFile).to.contain('_async_to_generator') + expect(compiledFile).to.contain('_ts_decorate') + expect(compiledFile).to.contain('_ts_generator') + }).timeout(DEFAULT_TIMEOUT) it('should compile a "src" folder with a JSX file written in TypeScript and output it to "lib"', async () => { // GIVEN a "tsconfig.json" definition in the package root directory From aa7d38b577aa7a1d45d79cd5499478a6fea774bb Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Wed, 29 Nov 2023 17:03:45 +0100 Subject: [PATCH 070/545] feat(packages/sui-bundler): add autoload support for MSW --- packages/sui-bundler/package.json | 2 +- packages/sui-bundler/shared/define.js | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/sui-bundler/package.json b/packages/sui-bundler/package.json index 97232213e..59d8d50bc 100644 --- a/packages/sui-bundler/package.json +++ b/packages/sui-bundler/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/bundler", - "version": "9.43.0", + "version": "9.43.0-typescript.1", "description": "Config-free bundler for ES6 React apps.", "bin": { "sui-bundler": "./bin/sui-bundler.js" diff --git a/packages/sui-bundler/shared/define.js b/packages/sui-bundler/shared/define.js index d19795e35..fff933a70 100644 --- a/packages/sui-bundler/shared/define.js +++ b/packages/sui-bundler/shared/define.js @@ -19,6 +19,9 @@ module.exports = (vars = {}) => { const definitions = { __DEV__: false, __BASE_DIR__: JSON.stringify(process.env.PWD), + __MOCKS_API_PATH__: JSON.stringify( + process.env.MOCKS_API_PATH || process.env.PWD + '/mocks/routes' + ), ...vars, ...Object.fromEntries( Object.entries(magic).map(([key, value]) => [key, JSON.stringify(value)]) From dcac5295d2576838541f9879905b4122e8acde9c Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Wed, 29 Nov 2023 17:04:26 +0100 Subject: [PATCH 071/545] feat(packages/sui-studio): Use relative paths for monorepos --- packages/sui-studio/bin/sui-studio-test.js | 6 ++++++ packages/sui-studio/package.json | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/sui-studio/bin/sui-studio-test.js b/packages/sui-studio/bin/sui-studio-test.js index e583e03e8..b963f3d79 100755 --- a/packages/sui-studio/bin/sui-studio-test.js +++ b/packages/sui-studio/bin/sui-studio-test.js @@ -25,6 +25,11 @@ program const {coverage, watch, ci, headless, timeout} = program.opts() +const relPath = path.relative( + process.cwd(), + require.resolve('@s-ui/studio/src/runtime-mocha/index.js').replace(/\/node_modules.*/, ''), +) + const run = async () => { try { const result = await serialSpawn([ @@ -33,6 +38,7 @@ const run = async () => { [ '--pattern', path.join( + relPath, 'node_modules', '@s-ui', 'studio', diff --git a/packages/sui-studio/package.json b/packages/sui-studio/package.json index 99d6f1701..422f07766 100644 --- a/packages/sui-studio/package.json +++ b/packages/sui-studio/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/studio", - "version": "11.36.0", + "version": "11.36.0-typescript.0", "description": "Develop, maintain and publish your SUI components.", "main": "index.js", "bin": { From c09ccc2be254f8dc1dfa6d18db9e8fcd7522a95e Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Wed, 29 Nov 2023 17:05:00 +0100 Subject: [PATCH 072/545] feat(packages/sui-test): use relative paths for monorepos --- packages/sui-test/bin/karma/config.js | 7 ++++++- packages/sui-test/package.json | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/sui-test/bin/karma/config.js b/packages/sui-test/bin/karma/config.js index 83c9b63c6..a97ddef29 100644 --- a/packages/sui-test/bin/karma/config.js +++ b/packages/sui-test/bin/karma/config.js @@ -22,6 +22,11 @@ const mustPackagesToAlias = { const environmentVariables = envVars(bundlerConfig.env) const swcConfig = getSWCConfig({isTypeScript: true}) +const relPath = path.relative( + process.cwd(), + require.resolve('@s-ui/react-context').replace(/\/node_modules.*/, ''), +) + const config = { singleRun: true, basePath: '', @@ -52,7 +57,7 @@ const config = { '@s-ui/react-context': path.resolve( path.join( process.env.PWD, - isWorkspace() ? '../' : './', + isWorkspace() ? relPath : './', 'node_modules/@s-ui/react-context' ) ) diff --git a/packages/sui-test/package.json b/packages/sui-test/package.json index e6bc1745d..da7e9fe5b 100644 --- a/packages/sui-test/package.json +++ b/packages/sui-test/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/test", - "version": "8.27.0", + "version": "8.27.0-typescript.7", "description": "", "bin": { "sui-test": "bin/sui-test.js" From 1b4541bbbc6211bdd8f636b540f6655556cacc01 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Mon, 18 Dec 2023 10:40:03 +0100 Subject: [PATCH 073/545] fix(packages/sui-consents): fix linting issues --- packages/sui-consents/src/hasUserConsents.ts | 20 ++++++++++++-------- packages/sui-consents/src/index.ts | 2 +- packages/sui-consents/src/types.ts | 14 +++++++------- packages/sui-consents/src/useUserConsents.ts | 18 +++--------------- 4 files changed, 23 insertions(+), 31 deletions(-) diff --git a/packages/sui-consents/src/hasUserConsents.ts b/packages/sui-consents/src/hasUserConsents.ts index 5929b6a8e..f2b9cd116 100644 --- a/packages/sui-consents/src/hasUserConsents.ts +++ b/packages/sui-consents/src/hasUserConsents.ts @@ -1,5 +1,5 @@ import atob from './atob' -import { TCF_COOKIE_KEY } from './config' +import {TCF_COOKIE_KEY} from './config' /** * Extracts the cookie value from the cookie string @@ -10,13 +10,13 @@ const readCookie = (key: string, cookies: string): string | null => { return value !== null ? value[1] : null } -const getUserConsents = ({ cookies }: { cookies: string}): object => { +const getUserConsents = ({cookies}: {cookies: string}): object => { const cookieValue = readCookie(TCF_COOKIE_KEY, cookies) if (cookieValue === null) return {} try { - const { purpose } = JSON.parse(atob(cookieValue)) - const { consents } = purpose + const {purpose} = JSON.parse(atob(cookieValue)) + const {consents} = purpose return consents } catch (e) { // eslint-disable-next-line no-console @@ -25,9 +25,13 @@ const getUserConsents = ({ cookies }: { cookies: string}): object => { } } -export default function hasUserConsents ( - { requiredConsents, cookies }: { requiredConsents: number[], cookies: string} -): boolean { - const userConsents = getUserConsents({ cookies }) +export default function hasUserConsents({ + requiredConsents, + cookies +}: { + requiredConsents: number[] + cookies: string +}): boolean { + const userConsents = getUserConsents({cookies}) return requiredConsents.every(purposeId => Boolean(userConsents[purposeId])) } diff --git a/packages/sui-consents/src/index.ts b/packages/sui-consents/src/index.ts index e24fe31b2..409e0d857 100644 --- a/packages/sui-consents/src/index.ts +++ b/packages/sui-consents/src/index.ts @@ -1,4 +1,4 @@ import hasUserConsents from './hasUserConsents' import useUserConsents from './useUserConsents' -export { hasUserConsents, useUserConsents } +export {hasUserConsents, useUserConsents} diff --git a/packages/sui-consents/src/types.ts b/packages/sui-consents/src/types.ts index 3c8cf68ca..98e2977b7 100644 --- a/packages/sui-consents/src/types.ts +++ b/packages/sui-consents/src/types.ts @@ -1,16 +1,16 @@ export interface Purpose { consents: { /** - * true - Consent - * false - No Consent. - */ + * true - Consent + * false - No Consent. + */ [purposeId: number]: boolean | undefined } legitimateInterests: { /** - * true - Legitimate Interest Established, - * false - No Legitimate Interest Established - */ + * true - Legitimate Interest Established, + * false - No Legitimate Interest Established + */ [purposeId: number]: boolean } } @@ -50,5 +50,5 @@ export enum EventStatus { * in accordance with TCF Policy and a CMP is prepared to respond to any * calling scripts with the corresponding TC String. */ - USER_ACTION_COMPLETE = 'useractioncomplete', + USER_ACTION_COMPLETE = 'useractioncomplete' } diff --git a/packages/sui-consents/src/useUserConsents.ts b/packages/sui-consents/src/useUserConsents.ts index d088d58f8..1c4ebe44f 100644 --- a/packages/sui-consents/src/useUserConsents.ts +++ b/packages/sui-consents/src/useUserConsents.ts @@ -13,9 +13,7 @@ export default function useUserConsents(requiredConsents: number[]): boolean { * in SSR. */ const {cookies} = useContext(SUIContext) - const [areConsentsAccepted, setAreConsentsAccepted] = useState(() => - hasUserConsents({requiredConsents, cookies}) - ) + const [areConsentsAccepted, setAreConsentsAccepted] = useState(() => hasUserConsents({requiredConsents, cookies})) /** * From then on, we listen for TCF events so consents changes @@ -25,20 +23,10 @@ export default function useUserConsents(requiredConsents: number[]): boolean { useEffect(() => { const tcfApi = window[TCF_WINDOW_API] if (tcfApi !== undefined) { - const consentsListener = ({ - eventStatus, - purpose - }: { - eventStatus: EventStatus - purpose: Purpose - }): void => { + const consentsListener = ({eventStatus, purpose}: {eventStatus: EventStatus; purpose: Purpose}): void => { if (eventStatus !== EventStatus.USER_ACTION_COMPLETE) return - setAreConsentsAccepted( - requiredConsents.every(purposeId => - Boolean(purpose.consents[purposeId]) - ) - ) + setAreConsentsAccepted(requiredConsents.every(purposeId => Boolean(purpose.consents[purposeId]))) } tcfApi('addEventListener', TCF_VERSION, consentsListener) return () => { From 547c28b7d64be9ed6a80160af9eefa83ddfafab8 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Mon, 18 Dec 2023 10:40:13 +0100 Subject: [PATCH 074/545] fix(packages/sui-react-context): fix linting issues --- packages/sui-react-context/src/index.tsx | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/packages/sui-react-context/src/index.tsx b/packages/sui-react-context/src/index.tsx index 1c1f0bbd0..69858f98a 100644 --- a/packages/sui-react-context/src/index.tsx +++ b/packages/sui-react-context/src/index.tsx @@ -2,8 +2,7 @@ import * as React from 'react' import hoistNonReactStatics from 'hoist-non-react-statics' -type SUIContextType = React.Context -& { +type SUIContextType = React.Context & { wrapper?: (Component: React.ComponentType, displayName: string) => React.ComponentType } @@ -11,19 +10,15 @@ const SUIContext: SUIContextType = React.createContext({}) SUIContext.wrapper = (Component, displayName): React.ComponentType => { const WrappedComponent = (props: any): JSX.Element => ( - - {context => } - + {context => } ) - WrappedComponent.displayName = Component.displayName !== undefined - ? Component.displayName - : displayName + WrappedComponent.displayName = Component.displayName !== undefined ? Component.displayName : displayName return hoistNonReactStatics(WrappedComponent, Component) } -export function useSuiContext (): React.Context { +export function useSuiContext(): React.Context { return React.useContext(SUIContext) } From 99d0af8d741c7243d4a0582665ad4ebb61301402 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Mon, 18 Dec 2023 10:40:13 +0100 Subject: [PATCH 075/545] fix(packages/sui-react-head): fix linting issues --- packages/sui-react-head/src/Body.tsx | 18 ++++---- packages/sui-react-head/src/Html.tsx | 6 +-- packages/sui-react-head/src/index.tsx | 27 ++++-------- packages/sui-react-head/src/server.ts | 25 ++++++----- packages/sui-react-head/src/utils.tsx | 62 +++++++++++++-------------- 5 files changed, 65 insertions(+), 73 deletions(-) diff --git a/packages/sui-react-head/src/Body.tsx b/packages/sui-react-head/src/Body.tsx index e67ac54c3..7b89a6632 100644 --- a/packages/sui-react-head/src/Body.tsx +++ b/packages/sui-react-head/src/Body.tsx @@ -1,7 +1,7 @@ /* eslint-disable react/prop-types */ -import { useEffect } from 'react' -import { Meta } from 'react-head' +import {useEffect} from 'react' +import {Meta} from 'react-head' export const BODY_ATTRIBUTES_KEY = 'bodyattributes' const isClient = typeof window !== 'undefined' @@ -10,24 +10,22 @@ interface BodyProps { attributes: object } -const Body: React.FC = ({ attributes = {} }) => { +const Body: React.FC = ({attributes = {}}) => { useEffect(() => { - const { body } = document + const {body} = document - function toggleBodyAttributes ({ action = 'set' } = {}): void { + function toggleBodyAttributes({action = 'set'} = {}): void { const method = `${action}Attribute` - Object.entries(attributes).forEach(([key, value]) => - body[method](key, value) - ) + Object.entries(attributes).forEach(([key, value]) => body[method](key, value)) } toggleBodyAttributes() - return () => toggleBodyAttributes({ action: 'remove' }) + return () => toggleBodyAttributes({action: 'remove'}) }, [attributes]) if (isClient) return null // on the server, use the Meta tag to extract later - const metaProps = { ...attributes, name: BODY_ATTRIBUTES_KEY } + const metaProps = {...attributes, name: BODY_ATTRIBUTES_KEY} return } diff --git a/packages/sui-react-head/src/Html.tsx b/packages/sui-react-head/src/Html.tsx index 10cd69326..e9335f89d 100644 --- a/packages/sui-react-head/src/Html.tsx +++ b/packages/sui-react-head/src/Html.tsx @@ -1,6 +1,6 @@ /* eslint-disable react/prop-types */ -import { Meta } from 'react-head' +import {Meta} from 'react-head' export const HTML_ATTRIBUTES_KEY = 'htmlattributes' const isClient = typeof window !== 'undefined' @@ -9,10 +9,10 @@ interface HtmlProps { attributes: object } -const Html: React.FC = ({ attributes = {} }) => { +const Html: React.FC = ({attributes = {}}) => { if (isClient) return null // on the server, use the Meta tag to extract later - const metaProps = { ...attributes, name: HTML_ATTRIBUTES_KEY } + const metaProps = {...attributes, name: HTML_ATTRIBUTES_KEY} return } diff --git a/packages/sui-react-head/src/index.tsx b/packages/sui-react-head/src/index.tsx index f655ab2bf..f26489d2d 100644 --- a/packages/sui-react-head/src/index.tsx +++ b/packages/sui-react-head/src/index.tsx @@ -1,13 +1,11 @@ /* eslint-disable react/prop-types */ import * as React from 'react' -import { - HeadProvider, Link, Meta as MetaPrimitive, Style, Title -} from 'react-head' +import {HeadProvider, Link, Meta as MetaPrimitive, Style, Title} from 'react-head' import Body from './Body' import Html from './Html' -import { extractTagsFrom, extractTitleFrom, renderStyles, renderTags } from './utils' +import {extractTagsFrom, extractTitleFrom, renderStyles, renderTags} from './utils' interface HeadProps { bodyAttributes?: object @@ -31,23 +29,16 @@ interface MetaTagInverterProps extends React.MetaHTMLAttributes 'data-rh': string } -const MetaTagInverter: React.FC = ({ 'data-rh': rh, ...others }) => { +const MetaTagInverter: React.FC = ({'data-rh': rh, ...others}) => { return } -const Meta: React.FC = (props) => { +const Meta: React.FC = props => { // @ts-expect-error return } -const Head: React.FC = ({ - bodyAttributes, - children, - htmlAttributes, - title, - meta = [], - link = [] -}) => { +const Head: React.FC = ({bodyAttributes, children, htmlAttributes, title, meta = [], link = []}) => { const metaTagsToRender = extractTagsFrom({ children, tag: 'meta', @@ -73,14 +64,14 @@ const Head: React.FC = ({ return ( <> {titleToRender !== '' && {titleToRender}} - {renderTags({ tagsArray: metaTagsToRender, Component: Meta })} - {renderTags({ tagsArray: linkTagsToRender, Component: Link })} - {renderStyles({ stylesArray: stylesTagsToRender, Component: Style })} + {renderTags({tagsArray: metaTagsToRender, Component: Meta})} + {renderTags({tagsArray: linkTagsToRender, Component: Link})} + {renderStyles({stylesArray: stylesTagsToRender, Component: Style})} {bodyAttributes != null && } {htmlAttributes != null && } ) } -export { HeadProvider } +export {HeadProvider} export default Head diff --git a/packages/sui-react-head/src/server.ts b/packages/sui-react-head/src/server.ts index 8bbfd0aaa..5101f849d 100644 --- a/packages/sui-react-head/src/server.ts +++ b/packages/sui-react-head/src/server.ts @@ -1,8 +1,8 @@ -import { renderToString } from 'react-dom/server' +import {renderToString} from 'react-dom/server' -import { BODY_ATTRIBUTES_KEY } from './Body' -import { HTML_ATTRIBUTES_KEY } from './Html' -import { ComponentTag } from './types' +import {BODY_ATTRIBUTES_KEY} from './Body' +import {HTML_ATTRIBUTES_KEY} from './Html' +import {ComponentTag} from './types' interface ExtractPropsFromConfig { withKey: string @@ -12,13 +12,13 @@ interface ExtractPropsFromConfig { * Extract props from a list of tags a specific tag by using a key * and then discard this key before returning the key */ -const extractPropsFrom = (tags: ComponentTag[], { withKey }: ExtractPropsFromConfig): undefined | { [x: string]: any} => { +const extractPropsFrom = (tags: ComponentTag[], {withKey}: ExtractPropsFromConfig): undefined | {[x: string]: any} => { // search the tag using the key and default to an empty object for simplicity - const tag: ComponentTag | undefined = tags.find(({ props }) => props.name === withKey) + const tag: ComponentTag | undefined = tags.find(({props}) => props.name === withKey) if (tag != null) { // discard the key used to search the tag - const { name, ...restOfTag } = tag.props + const {name, ...restOfTag} = tag.props // return only the desired info for the tag return restOfTag } @@ -27,7 +27,7 @@ const extractPropsFrom = (tags: ComponentTag[], { withKey }: ExtractPropsFromCon /** * Transform the object from the head to a string to be used in the server */ -const transformToString = (headObject: { [key: string]: string} = {}): string => +const transformToString = (headObject: {[key: string]: string} = {}): string => Object.entries(headObject) .map(([key, value]) => `${key}="${value}"`) .join(' ') @@ -35,7 +35,11 @@ const transformToString = (headObject: { [key: string]: string} = {}): string => /** * Render the tags for the head */ -export function renderHeadTagsToString (headTags: any[]): { headString: string, bodyAttributes: string, htmlAttributes: string} { +export function renderHeadTagsToString(headTags: any[]): { + headString: string + bodyAttributes: string + htmlAttributes: string +} { const bodyAttributesProps = extractPropsFrom(headTags, { withKey: BODY_ATTRIBUTES_KEY }) @@ -44,8 +48,7 @@ export function renderHeadTagsToString (headTags: any[]): { headString: string, }) const headTagsToRender = headTags.filter( - ({ props }) => - props.name !== BODY_ATTRIBUTES_KEY && props.name !== HTML_ATTRIBUTES_KEY + ({props}) => props.name !== BODY_ATTRIBUTES_KEY && props.name !== HTML_ATTRIBUTES_KEY ) return { diff --git a/packages/sui-react-head/src/utils.tsx b/packages/sui-react-head/src/utils.tsx index ddb6068cd..c64298390 100644 --- a/packages/sui-react-head/src/utils.tsx +++ b/packages/sui-react-head/src/utils.tsx @@ -1,17 +1,16 @@ import * as React from 'react' -import { Children as ReactChildren } from 'react' +import {Children as ReactChildren} from 'react' -import { Style, Tag } from './types' +import {Style, Tag} from './types' -const checkRelNeedsHref = (rel: string): boolean => - ['alternate', 'preload', 'prefetch'].includes(rel) +const checkRelNeedsHref = (rel: string): boolean => ['alternate', 'preload', 'prefetch'].includes(rel) /** * Use rel as key but put extra info if needed * to avoid duplicated keys */ const extractRelAsKey = (tag: Tag): string | undefined => { - const { rel, href, hreflang } = tag + const {rel, href, hreflang} = tag if (rel != null) { if (hreflang != null) return `${rel}-${hreflang}` if (checkRelNeedsHref(rel) && href != null) return `${rel}-${href}` @@ -23,21 +22,21 @@ const extractRelAsKey = (tag: Tag): string | undefined => { * Extract value in a specific order */ const extractKeyFromTag = (tag: Tag): string | undefined => { - const { name, content } = tag + const {name, content} = tag return name ?? extractRelAsKey(tag) ?? content } /** * Extract children from React by tag type and return an array of React Type Component */ -export const extract = ({ children, byTag }: { children: React.ReactNode, byTag: string}): Tag[] => { +export const extract = ({children, byTag}: {children: React.ReactNode; byTag: string}): Tag[] => { const arrayOfComponents = ReactChildren.toArray(children) - return arrayOfComponents.filter(child => - React.isValidElement(child) && child.type === byTag - ).map(child => { - const el = child as React.ReactElement - return { ...el.props } - }) + return arrayOfComponents + .filter(child => React.isValidElement(child) && child.type === byTag) + .map(child => { + const el = child as React.ReactElement + return {...el.props} + }) } interface extractTagsFromParams { @@ -46,20 +45,23 @@ interface extractTagsFromParams { fallback?: any[] } -export const extractTagsFrom = ({ children, tag, fallback }: extractTagsFromParams): any[] => { +export const extractTagsFrom = ({children, tag, fallback}: extractTagsFromParams): any[] => { if (children != null) { - return extract({ children, byTag: tag }) + return extract({children, byTag: tag}) } - return (fallback != null) ? fallback : [] + return fallback != null ? fallback : [] } -interface extractTitleFromParams { children: React.ReactNode, fallback?: string} +interface extractTitleFromParams { + children: React.ReactNode + fallback?: string +} -export const extractTitleFrom = ({ children, fallback = '' }: extractTitleFromParams): string => { +export const extractTitleFrom = ({children, fallback = ''}: extractTitleFromParams): string => { if (typeof children === 'undefined') return fallback - const listOfTitles = extract({ children, byTag: 'title' }) + const listOfTitles = extract({children, byTag: 'title'}) if (listOfTitles.length > 0) { const [title] = listOfTitles return title.children !== undefined ? title.children : fallback @@ -74,16 +76,10 @@ interface renderTagsParams { tagsArray: any[] Component: React.ComponentType } -export const renderTags = ({ tagsArray = [], Component }: renderTagsParams): JSX.Element[] => +export const renderTags = ({tagsArray = [], Component}: renderTagsParams): JSX.Element[] => tagsArray.map((tag: Tag) => { - const { hreflang: hrefLang, ...restOfTagInfo } = tag - return ( - - ) + const {hreflang: hrefLang, ...restOfTagInfo} = tag + return }) /** @@ -93,8 +89,12 @@ interface renderStylesParams { stylesArray: any[] Component: React.ComponentType } -export const renderStyles = ({ stylesArray = [], Component }: renderStylesParams): JSX.Element[] => +export const renderStyles = ({stylesArray = [], Component}: renderStylesParams): JSX.Element[] => stylesArray.map((style: Style, index: number) => { - const { children, ...styleAttr } = style - return {children} + const {children, ...styleAttr} = style + return ( + + {children} + + ) }) From 19c9633f57e3ad4bc9324973cecd959307b42cf1 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Mon, 18 Dec 2023 10:40:13 +0100 Subject: [PATCH 076/545] fix(packages/sui-react-initial-props): fix linting issues --- .../src/createClientContextFactoryParams.ts | 2 +- .../src/createServerContextFactoryParams.ts | 2 +- packages/sui-react-initial-props/src/index.ts | 8 +-- .../src/initialPropsContext.ts | 4 +- .../sui-react-initial-props/src/loadPage.tsx | 59 ++++++++++--------- .../src/ssrComponentWithInitialProps.tsx | 15 +++-- .../sui-react-initial-props/src/types.d.ts | 21 +++---- .../src/withInitialProps.tsx | 41 +++++-------- 8 files changed, 69 insertions(+), 83 deletions(-) diff --git a/packages/sui-react-initial-props/src/createClientContextFactoryParams.ts b/packages/sui-react-initial-props/src/createClientContextFactoryParams.ts index 5f69702f7..b32fb768a 100644 --- a/packages/sui-react-initial-props/src/createClientContextFactoryParams.ts +++ b/packages/sui-react-initial-props/src/createClientContextFactoryParams.ts @@ -1,4 +1,4 @@ -import { ContextFactoryParams } from './types' +import {ContextFactoryParams} from './types' export default (): ContextFactoryParams => ({ appConfig: window.__APP_CONFIG__, diff --git a/packages/sui-react-initial-props/src/createServerContextFactoryParams.ts b/packages/sui-react-initial-props/src/createServerContextFactoryParams.ts index 5012976bf..2bf23553e 100644 --- a/packages/sui-react-initial-props/src/createServerContextFactoryParams.ts +++ b/packages/sui-react-initial-props/src/createServerContextFactoryParams.ts @@ -1,4 +1,4 @@ -import { ContextFactoryParams } from './types' +import {ContextFactoryParams} from './types' export default (req: IncomingMessage.ServerRequest): ContextFactoryParams => ({ appConfig: req.appConfig, diff --git a/packages/sui-react-initial-props/src/index.ts b/packages/sui-react-initial-props/src/index.ts index f043a5c6d..ceeecb070 100644 --- a/packages/sui-react-initial-props/src/index.ts +++ b/packages/sui-react-initial-props/src/index.ts @@ -1,4 +1,4 @@ -export { default as createClientContextFactoryParams } from './createClientContextFactoryParams' -export { default as createServerContextFactoryParams } from './createServerContextFactoryParams' -export { default as loadPage } from './loadPage' -export { default as ssrComponentWithInitialProps } from './ssrComponentWithInitialProps' +export {default as createClientContextFactoryParams} from './createClientContextFactoryParams' +export {default as createServerContextFactoryParams} from './createServerContextFactoryParams' +export {default as loadPage} from './loadPage' +export {default as ssrComponentWithInitialProps} from './ssrComponentWithInitialProps' diff --git a/packages/sui-react-initial-props/src/initialPropsContext.ts b/packages/sui-react-initial-props/src/initialPropsContext.ts index 83d89f74f..b37eb74f3 100644 --- a/packages/sui-react-initial-props/src/initialPropsContext.ts +++ b/packages/sui-react-initial-props/src/initialPropsContext.ts @@ -1,3 +1,3 @@ -import { createContext } from 'react' +import {createContext} from 'react' -export default createContext({ initialProps: {} }) +export default createContext({initialProps: {}}) diff --git a/packages/sui-react-initial-props/src/loadPage.tsx b/packages/sui-react-initial-props/src/loadPage.tsx index 56655d6fe..f2839b18b 100644 --- a/packages/sui-react-initial-props/src/loadPage.tsx +++ b/packages/sui-react-initial-props/src/loadPage.tsx @@ -1,41 +1,42 @@ /* eslint-disable @typescript-eslint/no-floating-promises */ -import { useContext } from 'react' +import {useContext} from 'react' import InitialPropsContext from './initialPropsContext' -import { ClientPageComponent, DoneImportingPageCallback, ReactRouterTypes, WithInitialPropsComponent } from './types' +import {ClientPageComponent, DoneImportingPageCallback, ReactRouterTypes, WithInitialPropsComponent} from './types' import withInitialProps from './withInitialProps' const EMPTY_GET_INITIAL_PROPS = async (): Promise => ({}) -const createUniversalPage = (routeInfo: ReactRouterTypes.RouteInfo) => ({ default: Page }: {default: ClientPageComponent}) => { - // check if the Page page has a getInitialProps, if not put a resolve with an empty object - Page.getInitialProps = - typeof Page.getInitialProps === 'function' - ? Page.getInitialProps - : EMPTY_GET_INITIAL_PROPS +const createUniversalPage = + (routeInfo: ReactRouterTypes.RouteInfo) => + async ({default: Page}: {default: ClientPageComponent}) => { + // check if the Page page has a getInitialProps, if not put a resolve with an empty object + Page.getInitialProps = typeof Page.getInitialProps === 'function' ? Page.getInitialProps : EMPTY_GET_INITIAL_PROPS - // CLIENT - if (typeof window !== 'undefined') { - // let withInitialProps HOC handle client getInitialProps logic - return Promise.resolve(withInitialProps(Page)) + // CLIENT + if (typeof window !== 'undefined') { + // let withInitialProps HOC handle client getInitialProps logic + return Promise.resolve(withInitialProps(Page)) + } + // SERVER + // Create a component that gets the initialProps from context + // this context has been created on the `ssrWithComponentWithInitialProps` + const ServerPage: WithInitialPropsComponent = (props: object) => { + const {initialProps} = useContext(InitialPropsContext) + return + } + // recover the displayName from the original page + ServerPage.displayName = Page.displayName + // detect if the page has getInitialProps and wrap it with the routeInfo + // if we don't have any getInitialProps, just use a empty function returning an empty object + ServerPage.getInitialProps = async ( + context: object, + req: IncomingMessage.ServerRequest, + res: IncomingMessage.ClientResponse + ) => await Page.getInitialProps({context, routeInfo, req, res}) + // return the component to be used on the server + return ServerPage } - // SERVER - // Create a component that gets the initialProps from context - // this context has been created on the `ssrWithComponentWithInitialProps` - const ServerPage: WithInitialPropsComponent = (props: object) => { - const { initialProps } = useContext(InitialPropsContext) - return - } - // recover the displayName from the original page - ServerPage.displayName = Page.displayName - // detect if the page has getInitialProps and wrap it with the routeInfo - // if we don't have any getInitialProps, just use a empty function returning an empty object - ServerPage.getInitialProps = - async (context: object, req: IncomingMessage.ServerRequest, res: IncomingMessage.ClientResponse) => - await Page.getInitialProps({ context, routeInfo, req, res }) - // return the component to be used on the server - return ServerPage -} // TODO: Remove this method on next major as it's using unnecessary contextFactory param // and unnecesary calling done method instead relying on promises diff --git a/packages/sui-react-initial-props/src/ssrComponentWithInitialProps.tsx b/packages/sui-react-initial-props/src/ssrComponentWithInitialProps.tsx index f0ba75dac..48cd03455 100644 --- a/packages/sui-react-initial-props/src/ssrComponentWithInitialProps.tsx +++ b/packages/sui-react-initial-props/src/ssrComponentWithInitialProps.tsx @@ -1,11 +1,11 @@ -import { renderToNodeStream, renderToString } from 'react-dom/server' +import {renderToNodeStream, renderToString} from 'react-dom/server' import InitialPropsContext from './initialPropsContext' -import { InitialProps, SsrComponentWithInitialPropsParams } from './types' +import {InitialProps, SsrComponentWithInitialPropsParams} from './types' const hrTimeToMs = (diff: [number, number]): number => diff[0] * 1e3 + diff[1] * 1e-6 -export default async function ssrComponentWithInitialProps ({ +export default async function ssrComponentWithInitialProps({ Target, context, req, @@ -15,12 +15,11 @@ export default async function ssrComponentWithInitialProps ({ }: SsrComponentWithInitialPropsParams): Promise { const startGetInitialProps = process.hrtime() // use the getInitialProps from the page to retrieve the props to initialize - const { getInitialProps } = - renderProps.components[renderProps.components.length - 1] + const {getInitialProps} = renderProps.components[renderProps.components.length - 1] const initialProps: InitialProps = await getInitialProps(context, req, res) const diffGetInitialProps = process.hrtime(startGetInitialProps) - const { __HTTP__: http } = initialProps + const {__HTTP__: http} = initialProps if (http?.redirectTo !== undefined) { return { @@ -34,7 +33,7 @@ export default async function ssrComponentWithInitialProps ({ // Create App with Context with the initialProps const AppWithContext = ( - + ) @@ -45,7 +44,7 @@ export default async function ssrComponentWithInitialProps ({ // start to calculate renderToString const startRenderToString = process.hrtime() // render with the needed action - const renderResponse = { [renderResponseKey]: renderAction(AppWithContext) } + const renderResponse = {[renderResponseKey]: renderAction(AppWithContext)} // calculate the difference of time used rendering const diffRenderToString = process.hrtime(startRenderToString) // return all the info diff --git a/packages/sui-react-initial-props/src/types.d.ts b/packages/sui-react-initial-props/src/types.d.ts index d53677bb5..1acd21a1f 100644 --- a/packages/sui-react-initial-props/src/types.d.ts +++ b/packages/sui-react-initial-props/src/types.d.ts @@ -1,4 +1,4 @@ -import { RouteInfo } from '@s-ui/react-router/src/types' +import {RouteInfo} from '@s-ui/react-router/src/types' export * as ReactRouterTypes from '@s-ui/react-router/src/types' export interface InitialProps { @@ -19,15 +19,14 @@ export interface ContextFactoryParams { req?: object } -export type ClientPageComponent = React.ComponentType -& PageComponentOptions -& { getInitialProps: GetInitialPropsFunction } +export type ClientPageComponent = React.ComponentType & + PageComponentOptions & {getInitialProps: GetInitialPropsFunction} -export type ServerPageComponent = React.ComponentType -& PageComponentOptions -& { getInitialProps: GetInitialPropsServerFunction } +export type ServerPageComponent = React.ComponentType & + PageComponentOptions & {getInitialProps: GetInitialPropsServerFunction} -export type GetInitialPropsServerFunction = (context: object, +export type GetInitialPropsServerFunction = ( + context: object, req: IncomingMessage.ServerRequest, res: IncomingMessage.ClientResponse ) => Promise @@ -39,11 +38,9 @@ export interface GetInitialPropsClientFunctionParams { res?: IncomingMessage.ClientResponse } -export type GetInitialPropsFunction = - (params: GetInitialPropsClientFunctionParams) => Promise +export type GetInitialPropsFunction = (params: GetInitialPropsClientFunctionParams) => Promise -export type DoneImportingPageCallback = - (err: null, Page: WithInitialPropsComponent) => Promise +export type DoneImportingPageCallback = (err: null, Page: WithInitialPropsComponent) => Promise export interface RenderProps { components: ServerPageComponent[] diff --git a/packages/sui-react-initial-props/src/withInitialProps.tsx b/packages/sui-react-initial-props/src/withInitialProps.tsx index d4a5f4849..6f6427833 100644 --- a/packages/sui-react-initial-props/src/withInitialProps.tsx +++ b/packages/sui-react-initial-props/src/withInitialProps.tsx @@ -1,13 +1,9 @@ -import { useContext, useEffect, useRef, useState } from 'react' +import {useContext, useEffect, useRef, useState} from 'react' import SUIContext from '@s-ui/react-context' -import { RouteInfo } from '@s-ui/react-router/src/types' +import {RouteInfo} from '@s-ui/react-router/src/types' -import { - ClientPageComponent, - InitialProps, - WithInitialPropsComponent -} from './types' +import {ClientPageComponent, InitialProps, WithInitialPropsComponent} from './types' const INITIAL_PROPS_KEY = '__INITIAL_PROPS__' @@ -22,7 +18,7 @@ const getInitialPropsFromWindow = (): object | undefined => { } // extract needed info from props for routeInfo object -const createRouteInfoFromProps = ({ location, params, routes }: RouteInfo): RouteInfo => ({ +const createRouteInfoFromProps = ({location, params, routes}: RouteInfo): RouteInfo => ({ location, params, routes @@ -39,7 +35,7 @@ const createRouteInfoFromProps = ({ location, params, routes }: RouteInfo): Rout // gets props updated. Also, since PageComponent keeps mounted it will receive // an `isLoading` prop while getInitialProps is in progress. export default (Page: ClientPageComponent): WithInitialPropsComponent => { - const { keepMounted = false } = Page + const {keepMounted = false} = Page // gather window initial props for this Page, if present const windowInitialProps = getInitialPropsFromWindow() // remove the variable of the window @@ -55,9 +51,9 @@ export default (Page: ClientPageComponent): WithInitialPropsComponent => { // consume sui context from the context provider const suiContext: object = useContext(SUIContext) // pathName from context is outdated, so we update it from routeInfo - const context = { ...suiContext, pathName: routeInfo.location.pathname } + const context = {...suiContext, pathName: routeInfo.location.pathname} - const [{ initialProps, isLoading }, setState] = useState(() => ({ + const [{initialProps, isLoading}, setState] = useState(() => ({ initialProps: initialPropsFromWindowRef.current ?? {}, isLoading: initialPropsFromWindowRef.current == null })) @@ -70,22 +66,22 @@ export default (Page: ClientPageComponent): WithInitialPropsComponent => { } else { // only update state if already request initial props if (requestedInitialPropsOnceRef.current) { - setState({ initialProps, isLoading: true }) + setState({initialProps, isLoading: true}) } - Page.getInitialProps({ context, routeInfo }) + Page.getInitialProps({context, routeInfo}) .then((initialProps: InitialProps) => { - const { __HTTP__: http } = initialProps + const {__HTTP__: http} = initialProps if (http?.redirectTo !== undefined) { window.location = http.redirectTo return } - setState({ initialProps, isLoading: false }) + setState({initialProps, isLoading: false}) }) .catch((error: Error) => { - setState({ initialProps: { error }, isLoading: false }) + setState({initialProps: {error}, isLoading: false}) }) .finally(() => { if (requestedInitialPropsOnceRef.current) return @@ -94,9 +90,7 @@ export default (Page: ClientPageComponent): WithInitialPropsComponent => { } }, [routeInfo.location]) // eslint-disable-line react-hooks/exhaustive-deps - const renderPage = (): any => ( - - ) + const renderPage = (): any => // if the page has a `keepMounted` property and already requested // initialProps once, just keep rendering the page @@ -106,9 +100,7 @@ export default (Page: ClientPageComponent): WithInitialPropsComponent => { const renderLoading = (): React.ElementType | null => { // check if the page has a `renderLoading` method, if not, just render nothing - return (Page.renderLoading != null) - ? Page.renderLoading({ context, routeInfo }) - : null + return Page.renderLoading != null ? Page.renderLoading({context, routeInfo}) : null } return isLoading ? renderLoading() : renderPage() @@ -116,10 +108,7 @@ export default (Page: ClientPageComponent): WithInitialPropsComponent => { // if `keepMounted` property is found and the component is the same one, // we just reuse it instead of returning a new one - if ( - keepMounted && - Page.displayName === latestClientPage?.Page?.displayName - ) { + if (keepMounted && Page.displayName === latestClientPage?.Page?.displayName) { return latestClientPage } From 1904ca297650c5a7a3f3d6b187ecd9359e9a3d2a Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Mon, 18 Dec 2023 10:40:14 +0100 Subject: [PATCH 077/545] fix(packages/sui-studio): fix linting issues --- packages/sui-studio/src/components/preview/_style.scss | 6 ++---- packages/sui-studio/src/styles/_settings.scss | 4 ++-- .../sui-studio/workbench/src/components/Root/index.scss | 4 ++-- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/packages/sui-studio/src/components/preview/_style.scss b/packages/sui-studio/src/components/preview/_style.scss index 6c76cbd9c..258cf00f6 100644 --- a/packages/sui-studio/src/components/preview/_style.scss +++ b/packages/sui-studio/src/components/preview/_style.scss @@ -68,8 +68,7 @@ } &:focus { outline: none; - box-shadow: inset 0 0 0 1px $c-primary, - 0 0 0 4px rgba($c-primary, 0.2); + box-shadow: inset 0 0 0 1px $c-primary, 0 0 0 4px rgba($c-primary, 0.2); } } & + button { @@ -134,8 +133,7 @@ } &:focus { outline: none; - box-shadow: inset 0 0 0 1px $c-primary, - 0 0 0 4px rgba($c-primary, 0.2); + box-shadow: inset 0 0 0 1px $c-primary, 0 0 0 4px rgba($c-primary, 0.2); } } } diff --git a/packages/sui-studio/src/styles/_settings.scss b/packages/sui-studio/src/styles/_settings.scss index 63c0d4189..57a732d2d 100644 --- a/packages/sui-studio/src/styles/_settings.scss +++ b/packages/sui-studio/src/styles/_settings.scss @@ -23,8 +23,8 @@ $bgc-tag: #eeeeee; // --- Fonts --- // // Font family -$ff-sans-serif: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, - Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol' !default; +$ff-sans-serif: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', + 'Segoe UI Emoji', 'Segoe UI Symbol' !default; // Font weights $fw-ultra-light: 100 !default; diff --git a/packages/sui-studio/workbench/src/components/Root/index.scss b/packages/sui-studio/workbench/src/components/Root/index.scss index f9e2c8aa7..cf7b0a5d0 100644 --- a/packages/sui-studio/workbench/src/components/Root/index.scss +++ b/packages/sui-studio/workbench/src/components/Root/index.scss @@ -1,6 +1,6 @@ * { - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, - Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', + 'Helvetica Neue', sans-serif; } .Root { From 37213c085abc6ba99e1d784c88e4b026ec161134 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Mon, 18 Dec 2023 10:40:15 +0100 Subject: [PATCH 078/545] fix(packages/sui-theme): fix linting issues --- .../sui-theme/src/components/_button.scss | 7 +---- .../src/components/atom/input/_settings.scss | 7 ++--- .../src/settings-compat-v7/_layout.scss | 6 +--- packages/sui-theme/src/utils/_colors.scss | 7 +---- packages/sui-theme/src/utils/_text.scss | 28 +++---------------- 5 files changed, 10 insertions(+), 45 deletions(-) diff --git a/packages/sui-theme/src/components/_button.scss b/packages/sui-theme/src/components/_button.scss index 789766615..3e1fb1cb5 100644 --- a/packages/sui-theme/src/components/_button.scss +++ b/packages/sui-theme/src/components/_button.scss @@ -44,12 +44,7 @@ @include sui-button--flat; } @if $type == 'custom' { - @include sui-button--custom( - $background-color, - $color, - $icon-fill, - $icon-stroke - ); + @include sui-button--custom($background-color, $color, $icon-fill, $icon-stroke); } @if $size == 'small' { diff --git a/packages/sui-theme/src/components/atom/input/_settings.scss b/packages/sui-theme/src/components/atom/input/_settings.scss index ecfc7318b..58c472490 100644 --- a/packages/sui-theme/src/components/atom/input/_settings.scss +++ b/packages/sui-theme/src/components/atom/input/_settings.scss @@ -30,7 +30,6 @@ $c-atom-input--success: $c-success !default; $c-atom-input--error: $c-error !default; $c-atom-input--alert: $c-alert !default; -$sizes-atom-input: xl $h-atom-input--xl, l $h-atom-input--l, m $h-atom-input--m, - xs $h-atom-input--xs, s $h-atom-input--s !default; -$states-atom-input: success $c-atom-input--success, error $c-atom-input--error, - alert $c-atom-input--alert !default; +$sizes-atom-input: xl $h-atom-input--xl, l $h-atom-input--l, m $h-atom-input--m, xs $h-atom-input--xs, + s $h-atom-input--s !default; +$states-atom-input: success $c-atom-input--success, error $c-atom-input--error, alert $c-atom-input--alert !default; diff --git a/packages/sui-theme/src/settings-compat-v7/_layout.scss b/packages/sui-theme/src/settings-compat-v7/_layout.scss index 93727be1f..65979dc0b 100644 --- a/packages/sui-theme/src/settings-compat-v7/_layout.scss +++ b/packages/sui-theme/src/settings-compat-v7/_layout.scss @@ -26,11 +26,7 @@ $breakpoint-names: map-keys($breakpoints) !default; // md @function breakpoint-next($name) { $n: index($breakpoint-names, $name); - @return if( - $n < length($breakpoint-names), - nth($breakpoint-names, $n + 1), - null - ); + @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null); } // Maximum breakpoint width. Null for the largest (last) breakpoint. diff --git a/packages/sui-theme/src/utils/_colors.scss b/packages/sui-theme/src/utils/_colors.scss index d0b298e14..edb4ca3c2 100644 --- a/packages/sui-theme/src/utils/_colors.scss +++ b/packages/sui-theme/src/utils/_colors.scss @@ -18,12 +18,7 @@ $color-variation-light: white !default; $color-lighten-steps: 25, 50, 75, 90, 95 !default; $color-darken-steps: 20, 35, 55, 75 !default; -@function color-variation( - $color, - $step: 0, - $dark: $color-variation-dark, - $light: $color-variation-light -) { +@function color-variation($color, $step: 0, $dark: $color-variation-dark, $light: $color-variation-light) { $positive-steps: length($color-lighten-steps); $negative-steps: length($color-darken-steps); diff --git a/packages/sui-theme/src/utils/_text.scss b/packages/sui-theme/src/utils/_text.scss index 2f041512d..806068219 100644 --- a/packages/sui-theme/src/utils/_text.scss +++ b/packages/sui-theme/src/utils/_text.scss @@ -51,22 +51,12 @@ @include calc-font-size($fz-caption, $fw-caption, $ls-caption, $lh-caption); } @if $type == 'overline' { - @include calc-font-size( - $fz-overline, - $fw-overline, - $ls-overline, - $lh-overline - ); + @include calc-font-size($fz-overline, $fw-overline, $ls-overline, $lh-overline); } } @mixin font-size-large { - @include calc-font-size( - $fz-large-title, - $fw-large-title, - $ls-large-title, - $lh-large-title - ); + @include calc-font-size($fz-large-title, $fw-large-title, $ls-large-title, $lh-large-title); } @mixin font-size-title1 { @include calc-font-size($fz-title1, $fw-title1, $ls-title1, $lh-title1); @@ -78,20 +68,10 @@ @include calc-font-size($fz-title3, $fw-title3, $ls-title3, $lh-title3); } @mixin font-size-headline1 { - @include calc-font-size( - $fz-headline1, - $fw-headline1, - $ls-headline1, - $lh-headline1 - ); + @include calc-font-size($fz-headline1, $fw-headline1, $ls-headline1, $lh-headline1); } @mixin font-size-headline2 { - @include calc-font-size( - $fz-headline2, - $fw-headline2, - $ls-headline2, - $lh-headline2 - ); + @include calc-font-size($fz-headline2, $fw-headline2, $ls-headline2, $lh-headline2); } // CSS image replacement From 06139b3628ec5fbb01c291b1f5f57daf294ecaea Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Mon, 18 Dec 2023 12:35:42 +0100 Subject: [PATCH 079/545] test(packages/sui-consents): fix some imports --- packages/sui-consents/test/common/functionSpec.js | 2 +- packages/sui-consents/test/common/index.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/sui-consents/test/common/functionSpec.js b/packages/sui-consents/test/common/functionSpec.js index ba6dec449..8fc1b87dc 100644 --- a/packages/sui-consents/test/common/functionSpec.js +++ b/packages/sui-consents/test/common/functionSpec.js @@ -1,7 +1,7 @@ /* eslint-env mocha */ import {expect} from 'chai' -import {hasUserConsents} from '../../lib/index' +import {hasUserConsents} from '../../lib/index.js' describe('hasUserConsents', () => { describe('when the user accepts all consents', () => { diff --git a/packages/sui-consents/test/common/index.js b/packages/sui-consents/test/common/index.js index 99bb219c6..e9c5905f5 100644 --- a/packages/sui-consents/test/common/index.js +++ b/packages/sui-consents/test/common/index.js @@ -1,2 +1,2 @@ -import './functionSpec' -import './hookSpec' +import './functionSpec.js' +import './hookSpec.js' From ea9a8859e15fb1e2c44ae7724b99d3d3b305f11a Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Mon, 18 Dec 2023 12:49:07 +0100 Subject: [PATCH 080/545] chore(Root): remove logs --- .github/workflows/node.js.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index 322fa2bee..2aa091457 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -26,10 +26,7 @@ jobs: - uses: browser-actions/setup-chrome@latest - run: sudo apt-get install xvfb - run: npm install --no-save --no-fund --no-audit --legacy-peer-deps - - run: ls -pal ./node_modules/@s-ui - - run: ls ./node_modules/@s-ui/react-context - run: npx -y ultra-runner --raw --recursive prepublishOnly - - run: ls ./node_modules/@s-ui/react-context - run: npm run lint - run: npm run test:server:ci - run: xvfb-run --auto-servernum npm run test:client:ci From e022570ea7223e4f907222ff271f4faf72d96599 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Mon, 18 Dec 2023 15:29:58 +0100 Subject: [PATCH 081/545] feat(packages/sui-studio): restore package version --- packages/sui-studio/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sui-studio/package.json b/packages/sui-studio/package.json index 422f07766..99d6f1701 100644 --- a/packages/sui-studio/package.json +++ b/packages/sui-studio/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/studio", - "version": "11.36.0-typescript.0", + "version": "11.36.0", "description": "Develop, maintain and publish your SUI components.", "main": "index.js", "bin": { From b185cc8ac0f5ae3028d2c85a9234b4d15d25fb3f Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Mon, 18 Dec 2023 16:57:49 +0100 Subject: [PATCH 082/545] fix(packages/sui-react-initial-props): fix ts config --- packages/sui-react-initial-props/tsconfig.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/sui-react-initial-props/tsconfig.json b/packages/sui-react-initial-props/tsconfig.json index e7bd7dc4f..89de39364 100644 --- a/packages/sui-react-initial-props/tsconfig.json +++ b/packages/sui-react-initial-props/tsconfig.json @@ -3,5 +3,6 @@ "compilerOptions": { "outDir": "./lib", "rootDir": "./src" - } -} \ No newline at end of file + }, + "exclude": ["./lib"] +} From c28e283c65cb8f1e3e3541b09bf166caccf53b44 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Mon, 18 Dec 2023 16:58:09 +0100 Subject: [PATCH 083/545] fix(packages/sui-js-compiler): fix types --- packages/sui-js-compiler/test/server/src/example.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sui-js-compiler/test/server/src/example.tsx b/packages/sui-js-compiler/test/server/src/example.tsx index d7e209472..e91998d4b 100644 --- a/packages/sui-js-compiler/test/server/src/example.tsx +++ b/packages/sui-js-compiler/test/server/src/example.tsx @@ -4,6 +4,6 @@ interface ThingProps { type?: 'inert' | 'moving' } -export default function Thing({name, type = 'moving'}: ThingProps): React.FC { +export default function Thing({name, type = 'moving'}: ThingProps): React.ReactElement { return
{name}
} From e9e73e746b9c7a897ae0d01dd6cd1975ef390da8 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Mon, 18 Dec 2023 16:58:47 +0100 Subject: [PATCH 084/545] chore(Root): add type checking --- .github/workflows/main.yml | 60 +++++++++++++++++++++++++++++++++++ .github/workflows/node.js.yml | 40 ----------------------- package.json | 7 ++-- tsconfig.json | 11 +++---- 4 files changed, 69 insertions(+), 49 deletions(-) create mode 100644 .github/workflows/main.yml delete mode 100644 .github/workflows/node.js.yml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 000000000..f680facc9 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,60 @@ +name: CI + +on: + push: + branches: [master] + pull_request: + branches: [master] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Cancel Previous Redundant Builds + uses: styfle/cancel-workflow-action@0.6.0 + with: + access_token: ${{ github.token }} + + - name: Checkout + uses: actions/checkout@v2 + with: + fetch-depth: 0 + persist-credentials: false + + - name: Setup Node + uses: actions/setup-node@v4 + with: + registry-url: 'https://registry.npmjs.org' + node-version-file: '.nvmrc' + cache: 'npm' + cache-dependency-path: 'package-lock.json' + + - name: Setup Chrome + uses: browser-actions/setup-chrome@latest + + - name: Install + run: | + sudo apt-get install xvfb + npm install --no-save --no-fund --no-audit --legacy-peer-deps + npx -y ultra-runner --raw --recursive prepublishOnly + + - name: Lint + run: npm run lint + + - name: Type Checking + run: npm run types:check + + - name: Tests + run: | + npm run test:server:ci + xvfb-run --auto-servernum npm run test:client:ci + + - name: Release packages + run: npx -p ./packages/sui-ci sui-ci release + env: + DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} + DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} + GITHUB_EMAIL: cloud-accounts@scmspain.com + GITHUB_TOKEN: ${{ secrets.GH_ACTIONS_TOKEN }} + GITHUB_USER: sui-bot + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml deleted file mode 100644 index 2aa091457..000000000 --- a/.github/workflows/node.js.yml +++ /dev/null @@ -1,40 +0,0 @@ -name: CI - -on: - push: - branches: [master] - pull_request: - branches: [master] - -jobs: - build: - runs-on: ubuntu-latest - - steps: - - name: Cancel Previous Redundant Builds - uses: styfle/cancel-workflow-action@0.6.0 - with: - access_token: ${{ github.token }} - - uses: actions/checkout@v2 - with: - fetch-depth: 0 - persist-credentials: false - - uses: actions/setup-node@v2 - with: - node-version: 18 - registry-url: 'https://registry.npmjs.org' - - uses: browser-actions/setup-chrome@latest - - run: sudo apt-get install xvfb - - run: npm install --no-save --no-fund --no-audit --legacy-peer-deps - - run: npx -y ultra-runner --raw --recursive prepublishOnly - - run: npm run lint - - run: npm run test:server:ci - - run: xvfb-run --auto-servernum npm run test:client:ci - - run: npx -p ./packages/sui-ci sui-ci release - env: - DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} - DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} - GITHUB_EMAIL: cloud-accounts@scmspain.com - GITHUB_TOKEN: ${{ secrets.GH_ACTIONS_TOKEN }} - GITHUB_USER: sui-bot - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/package.json b/package.json index 1dd8da3a0..02b9a1b71 100644 --- a/package.json +++ b/package.json @@ -24,8 +24,9 @@ "test:server:watch": "npm run test:server -- --watch", "test:e2e": "node ./packages/sui-studio/test/server/integration/static-server.js ./packages/sui-studio/test/server/integration/sample-studio/public && npx @s-ui/test-e2e --baseUrl=http://localhost:1234", "pre-commit": "sui-lint js --staged && sui-lint sass --staged", - "pre-push": "npm run test", - "commit-msg": "validate-commit-msg" + "pre-push": "npm run test && npm run types:check", + "commit-msg": "validate-commit-msg", + "types:check": "tsc" }, "devDependencies": { "@babel/cli": "7", @@ -79,4 +80,4 @@ "stylelint": { "extends": "./node_modules/@s-ui/lint/stylelint.config.js" } -} \ No newline at end of file +} diff --git a/tsconfig.json b/tsconfig.json index d90b1d3a1..96482e01e 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -11,11 +11,10 @@ "skipLibCheck": true, "strict": true, "target": "es5", - "types": [ - "react", - "node" - ] + "types": ["react", "node"] }, "exclude": ["node_modules", "lib"], - "typeAcquisition": { "enable": true } -} \ No newline at end of file + "typeAcquisition": { + "enable": true + } +} From 887e8089f45c6ae7690dfcbf3fd0dfae410d6abb Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Mon, 18 Dec 2023 17:01:50 +0100 Subject: [PATCH 085/545] chore(Root): fix cache option --- .github/workflows/main.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index f680facc9..16ec7c07c 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -27,7 +27,6 @@ jobs: registry-url: 'https://registry.npmjs.org' node-version-file: '.nvmrc' cache: 'npm' - cache-dependency-path: 'package-lock.json' - name: Setup Chrome uses: browser-actions/setup-chrome@latest From 931c7ef6866c839ffd7e1e3546cd82380bbb0c2f Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Mon, 18 Dec 2023 17:03:24 +0100 Subject: [PATCH 086/545] chore(Root): remove cache --- .github/workflows/main.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 16ec7c07c..05f08efe2 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -26,7 +26,6 @@ jobs: with: registry-url: 'https://registry.npmjs.org' node-version-file: '.nvmrc' - cache: 'npm' - name: Setup Chrome uses: browser-actions/setup-chrome@latest From 9acc197d5d353933494ea242580a6c0b0707e582 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Wed, 20 Dec 2023 11:30:20 +0100 Subject: [PATCH 087/545] chore(Root): modify case --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 05f08efe2..451de9b4b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -47,7 +47,7 @@ jobs: npm run test:server:ci xvfb-run --auto-servernum npm run test:client:ci - - name: Release packages + - name: Release Packages run: npx -p ./packages/sui-ci sui-ci release env: DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} From f142e815347d9cf85f625baeb739c5ca0a1f3576 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Mon, 22 Jan 2024 13:05:00 +0100 Subject: [PATCH 088/545] test(packages/sui-js-compiler): remove clean --- packages/sui-js-compiler/test/server/jsCompilerSpec.js | 5 ----- 1 file changed, 5 deletions(-) diff --git a/packages/sui-js-compiler/test/server/jsCompilerSpec.js b/packages/sui-js-compiler/test/server/jsCompilerSpec.js index af0085ba1..873ebe881 100644 --- a/packages/sui-js-compiler/test/server/jsCompilerSpec.js +++ b/packages/sui-js-compiler/test/server/jsCompilerSpec.js @@ -20,11 +20,6 @@ describe('@s-ui/js-compiler', () => { await fs.remove(tsConfigPath) }) - afterEach(async () => { - await fs.remove(libPath) - await fs.remove(tsConfigPath) - }) - it('should compile a "src" folder with a JavaScript file and output it to "lib"', async () => { const {stdout} = await exec('node ../../index.js', { cwd From 9f2c30c4a9db70a8622c02b98100a1bacb2812cb Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Mon, 22 Jan 2024 14:56:12 +0100 Subject: [PATCH 089/545] chore(Root): check pr workflow --- .github/workflows/main.yml | 15 +++++++++++++++ package.json | 4 ++++ scripts/publish-tagged-packages.mjs | 21 +++++++++++++++++++++ 3 files changed, 40 insertions(+) create mode 100644 scripts/publish-tagged-packages.mjs diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index be64ee10f..370fdbffd 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -60,3 +60,18 @@ jobs: GITHUB_TOKEN: ${{ secrets.GH_ACTIONS_TOKEN }} GITHUB_USER: sui-bot NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + + publish-tagged-packages: + name: Publish Tagged Packages to NPM + if: github.ref != 'refs/heads/master' + runs-on: ubuntu-latest + steps: + - name: Get Files + id: files + uses: jitterbit/get-changed-files@v1 + with: + format: 'json' + + - name: Publish Packages + working-directory: ${{ github.workspace }} + run: publish-tagged-packages '${{ steps.files.outputs.added_modified }}' diff --git a/package.json b/package.json index 02b9a1b71..897a4fb33 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,9 @@ "workspaces": [ "packages/*" ], + "bin": { + "publish-tagged-packages": "./scripts/publish-tagged-packages.mjs" + }, "scripts": { "phoenix": "npx @s-ui/mono phoenix && npx -y ultra-runner --raw --recursive prepublishOnly --build &>/dev/null", "co": "npx @s-ui/mono commit", @@ -34,6 +37,7 @@ "@s-ui/precommit": "3", "@s-ui/react-context": "1", "chai": "4.3.6", + "commander": "11.1.0", "react": "17", "sinon": "10.0.0", "typescript": "5.0.4", diff --git a/scripts/publish-tagged-packages.mjs b/scripts/publish-tagged-packages.mjs new file mode 100644 index 000000000..98f8f9f7f --- /dev/null +++ b/scripts/publish-tagged-packages.mjs @@ -0,0 +1,21 @@ +#!/usr/bin/env node + +const program = require('commander') + +program + .option('-f, --files [files]', 'JSON-stringified list of added and modified files.') + .on('--help', () => { + console.log(' Examples:') + console.log('') + console.log( + ' $ publish-tagged-packages --tag ongoing-branch --files \'["packages/sui-mono/foo.js", "packages/sui-bundler/bar.js"]\'' + ) + console.log('') + }) + .parse(process.argv) + +const {files} = program.opts() + +console.log({files}) + +program.exit(0) From d7fdf6a1ac2173e1e3606bc2b3bc6705430f849d Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Mon, 22 Jan 2024 15:00:24 +0100 Subject: [PATCH 090/545] chore(Root): change script command --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 370fdbffd..da35127e6 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -74,4 +74,4 @@ jobs: - name: Publish Packages working-directory: ${{ github.workspace }} - run: publish-tagged-packages '${{ steps.files.outputs.added_modified }}' + run: node ./scripts/publish-tagged-packages.mjs --tag '${{ github.ref }}' --files '${{ steps.files.outputs.added_modified }}' From 71fcce1db2f59c0a2cb089eba986b33716bca0e7 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Mon, 22 Jan 2024 15:21:01 +0100 Subject: [PATCH 091/545] chore(Root): change script execution --- .github/workflows/main.yml | 3 +-- package.json | 4 +--- scripts/publish-tagged-packages.js | 26 ++++++++++++++++++++++++++ scripts/publish-tagged-packages.mjs | 21 --------------------- 4 files changed, 28 insertions(+), 26 deletions(-) create mode 100644 scripts/publish-tagged-packages.js delete mode 100644 scripts/publish-tagged-packages.mjs diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index da35127e6..bc0bd65b7 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -73,5 +73,4 @@ jobs: format: 'json' - name: Publish Packages - working-directory: ${{ github.workspace }} - run: node ./scripts/publish-tagged-packages.mjs --tag '${{ github.ref }}' --files '${{ steps.files.outputs.added_modified }}' + run: npm run publish-tagged-packages --tag '${{ github.ref_name }}' --files '${{ steps.files.outputs.added_modified }}' diff --git a/package.json b/package.json index 897a4fb33..ba0a885e2 100644 --- a/package.json +++ b/package.json @@ -11,9 +11,6 @@ "workspaces": [ "packages/*" ], - "bin": { - "publish-tagged-packages": "./scripts/publish-tagged-packages.mjs" - }, "scripts": { "phoenix": "npx @s-ui/mono phoenix && npx -y ultra-runner --raw --recursive prepublishOnly --build &>/dev/null", "co": "npx @s-ui/mono commit", @@ -28,6 +25,7 @@ "test:e2e": "node ./packages/sui-studio/test/server/integration/static-server.js ./packages/sui-studio/test/server/integration/sample-studio/public && npx @s-ui/test-e2e --baseUrl=http://localhost:1234", "pre-commit": "sui-lint js --staged && sui-lint sass --staged", "pre-push": "npm run test && npm run types:check", + "publish-tagged-packages": "node ./scripts/publish-tagged-packages.js", "commit-msg": "validate-commit-msg", "types:check": "tsc" }, diff --git a/scripts/publish-tagged-packages.js b/scripts/publish-tagged-packages.js new file mode 100644 index 000000000..3adb35f45 --- /dev/null +++ b/scripts/publish-tagged-packages.js @@ -0,0 +1,26 @@ +#!/usr/bin/env node +const program = require('commander') + +program + .name('publish-tagged-packages') + .description('CLI to publish new tagged versions from modified packages in pull requests.') + .version('0.0.1') + +program + .option('-t, --tag [tag]', 'Tag used to publish the packages to NPM.') + .option('-f, --files [files]', 'JSON-stringified list of added and modified files.') + .on('--help', () => { + console.log(' Examples:') + console.log('') + console.log( + ' $ node ./scripts/publish-tagged-packages.js --tag ongoing-branch --files \'["packages/sui-mono/foo.js", "packages/sui-bundler/bar.js"]\'' + ) + console.log('') + }) + .parse(process.argv) + +const {tag, files} = program.opts() + +console.log({tag, files: JSON.parse(files)}) + +program.parse() diff --git a/scripts/publish-tagged-packages.mjs b/scripts/publish-tagged-packages.mjs deleted file mode 100644 index 98f8f9f7f..000000000 --- a/scripts/publish-tagged-packages.mjs +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env node - -const program = require('commander') - -program - .option('-f, --files [files]', 'JSON-stringified list of added and modified files.') - .on('--help', () => { - console.log(' Examples:') - console.log('') - console.log( - ' $ publish-tagged-packages --tag ongoing-branch --files \'["packages/sui-mono/foo.js", "packages/sui-bundler/bar.js"]\'' - ) - console.log('') - }) - .parse(process.argv) - -const {files} = program.opts() - -console.log({files}) - -program.exit(0) From d8a77204624d59938a0b2103c2ed7041dcf1e650 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Mon, 22 Jan 2024 15:22:43 +0100 Subject: [PATCH 092/545] chore(Root): add missing checkout --- .github/workflows/main.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index bc0bd65b7..db31ecb5e 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -66,6 +66,12 @@ jobs: if: github.ref != 'refs/heads/master' runs-on: ubuntu-latest steps: + - name: Checkout + uses: actions/checkout@v2 + with: + fetch-depth: 0 + persist-credentials: false + - name: Get Files id: files uses: jitterbit/get-changed-files@v1 From 8e5184ad632f95b7e1e8ef20d181aaf0b78583ac Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Mon, 22 Jan 2024 15:26:50 +0100 Subject: [PATCH 093/545] chore(Root): add install step --- .github/workflows/main.yml | 10 ++++++++++ package.json | 1 - 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index db31ecb5e..a027126ad 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -72,6 +72,16 @@ jobs: fetch-depth: 0 persist-credentials: false + - name: Setup Node + uses: actions/setup-node@v4 + with: + registry-url: 'https://registry.npmjs.org' + node-version-file: '.nvmrc' + + - name: Install + run: | + npm install -D commander + - name: Get Files id: files uses: jitterbit/get-changed-files@v1 diff --git a/package.json b/package.json index ba0a885e2..10bf72dec 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,6 @@ "@s-ui/precommit": "3", "@s-ui/react-context": "1", "chai": "4.3.6", - "commander": "11.1.0", "react": "17", "sinon": "10.0.0", "typescript": "5.0.4", From 13a3fa23e7e39004eb67385cd7e12b4c014bbdf6 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Mon, 22 Jan 2024 15:32:32 +0100 Subject: [PATCH 094/545] chore(Root): fix some stuff --- .github/workflows/main.yml | 2 +- ...publish-tagged-packages.js => publish-tagged-packages.mjs} | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) rename scripts/{publish-tagged-packages.js => publish-tagged-packages.mjs} (86%) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index a027126ad..7e0a529b0 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -89,4 +89,4 @@ jobs: format: 'json' - name: Publish Packages - run: npm run publish-tagged-packages --tag '${{ github.ref_name }}' --files '${{ steps.files.outputs.added_modified }}' + run: npm run publish-tagged-packages -- --tag ${{ github.event.pull_request.base.ref }} --files ${{ steps.files.outputs.added_modified }} diff --git a/scripts/publish-tagged-packages.js b/scripts/publish-tagged-packages.mjs similarity index 86% rename from scripts/publish-tagged-packages.js rename to scripts/publish-tagged-packages.mjs index 3adb35f45..16badba46 100644 --- a/scripts/publish-tagged-packages.js +++ b/scripts/publish-tagged-packages.mjs @@ -13,7 +13,7 @@ program console.log(' Examples:') console.log('') console.log( - ' $ node ./scripts/publish-tagged-packages.js --tag ongoing-branch --files \'["packages/sui-mono/foo.js", "packages/sui-bundler/bar.js"]\'' + ' $ node ./scripts/publish-tagged-packages.js --tag ongoing-branch --files ["packages/sui-mono/foo.js", "packages/sui-bundler/bar.js"]' ) console.log('') }) @@ -23,4 +23,4 @@ const {tag, files} = program.opts() console.log({tag, files: JSON.parse(files)}) -program.parse() +program.parse(process.argv) From 29c0b79f065394bcc58932d9c96528b8f015dc40 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Mon, 22 Jan 2024 15:37:02 +0100 Subject: [PATCH 095/545] chore(Root): fix more things --- .github/workflows/main.yml | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 7e0a529b0..117d2f2f1 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -89,4 +89,4 @@ jobs: format: 'json' - name: Publish Packages - run: npm run publish-tagged-packages -- --tag ${{ github.event.pull_request.base.ref }} --files ${{ steps.files.outputs.added_modified }} + run: npm run publish-tagged-packages -- --tag ${{ github.event.pull_request.head.ref }} --files ${{ steps.files.outputs.added_modified }} diff --git a/package.json b/package.json index 10bf72dec..ef6cba654 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "test:e2e": "node ./packages/sui-studio/test/server/integration/static-server.js ./packages/sui-studio/test/server/integration/sample-studio/public && npx @s-ui/test-e2e --baseUrl=http://localhost:1234", "pre-commit": "sui-lint js --staged && sui-lint sass --staged", "pre-push": "npm run test && npm run types:check", - "publish-tagged-packages": "node ./scripts/publish-tagged-packages.js", + "publish-tagged-packages": "node ./scripts/publish-tagged-packages.mjs", "commit-msg": "validate-commit-msg", "types:check": "tsc" }, From 136dff7017ecb8368273e911ae636d00c01479e2 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Mon, 22 Jan 2024 15:41:24 +0100 Subject: [PATCH 096/545] chore(Root): fix some other things --- .github/workflows/main.yml | 2 +- scripts/publish-tagged-packages.mjs | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 117d2f2f1..41bc68c13 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -89,4 +89,4 @@ jobs: format: 'json' - name: Publish Packages - run: npm run publish-tagged-packages -- --tag ${{ github.event.pull_request.head.ref }} --files ${{ steps.files.outputs.added_modified }} + run: npm run publish-tagged-packages -- --tag '${{ github.event.pull_request.head.ref }}' --files '${{ steps.files.outputs.added_modified }}' diff --git a/scripts/publish-tagged-packages.mjs b/scripts/publish-tagged-packages.mjs index 16badba46..ccc038cea 100644 --- a/scripts/publish-tagged-packages.mjs +++ b/scripts/publish-tagged-packages.mjs @@ -1,5 +1,7 @@ #!/usr/bin/env node -const program = require('commander') +/* eslint-disable no-console */ + +import program from 'commander' program .name('publish-tagged-packages') @@ -13,7 +15,7 @@ program console.log(' Examples:') console.log('') console.log( - ' $ node ./scripts/publish-tagged-packages.js --tag ongoing-branch --files ["packages/sui-mono/foo.js", "packages/sui-bundler/bar.js"]' + ' $ node ./scripts/publish-tagged-packages.mjs --tag \'ongoing-branch\' --files \'["packages/sui-mono/foo.js", "packages/sui-bundler/bar.js"]\'' ) console.log('') }) From 2da1cb35a8e142331611e9fae9a2bf674029ba94 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Mon, 22 Jan 2024 15:44:35 +0100 Subject: [PATCH 097/545] chore(Root): fix import --- scripts/publish-tagged-packages.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/publish-tagged-packages.mjs b/scripts/publish-tagged-packages.mjs index ccc038cea..3ec2b7d7d 100644 --- a/scripts/publish-tagged-packages.mjs +++ b/scripts/publish-tagged-packages.mjs @@ -1,7 +1,7 @@ #!/usr/bin/env node /* eslint-disable no-console */ -import program from 'commander' +import {program} from 'commander' program .name('publish-tagged-packages') From 0d9713745a511890dc4e2e9b2d70b477ae4ccab3 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Fri, 26 Jan 2024 09:50:18 +0100 Subject: [PATCH 098/545] chore(Root): update script for tagging releases in prs --- .github/workflows/main.yml | 29 ++++++++-- scripts/publish-tagged-packages.mjs | 87 +++++++++++++++++++++++++++-- 2 files changed, 106 insertions(+), 10 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 41bc68c13..977735cf4 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -7,8 +7,8 @@ on: branches: [master] jobs: - checks-and-release: - name: Checks & Release + checks: + name: Checks runs-on: ubuntu-latest steps: - name: Cancel Previous Redundant Builds @@ -48,7 +48,24 @@ jobs: npm run test:server:ci xvfb-run --auto-servernum npm run test:client:ci - - name: Release Packages + publish: + name: Publish + needs: checks + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + fetch-depth: 0 + persist-credentials: false + + - name: Setup Node + uses: actions/setup-node@v4 + with: + registry-url: 'https://registry.npmjs.org' + node-version-file: '.nvmrc' + + - name: Publish Packages if: github.ref == 'refs/heads/master' run: | npx -p ./packages/sui-mono sui-mono check @@ -63,6 +80,7 @@ jobs: publish-tagged-packages: name: Publish Tagged Packages to NPM + needs: checks if: github.ref != 'refs/heads/master' runs-on: ubuntu-latest steps: @@ -79,8 +97,7 @@ jobs: node-version-file: '.nvmrc' - name: Install - run: | - npm install -D commander + run: npm install -D commander execa prettier - name: Get Files id: files @@ -90,3 +107,5 @@ jobs: - name: Publish Packages run: npm run publish-tagged-packages -- --tag '${{ github.event.pull_request.head.ref }}' --files '${{ steps.files.outputs.added_modified }}' + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/scripts/publish-tagged-packages.mjs b/scripts/publish-tagged-packages.mjs index 3ec2b7d7d..8ab3ae05e 100644 --- a/scripts/publish-tagged-packages.mjs +++ b/scripts/publish-tagged-packages.mjs @@ -1,7 +1,12 @@ #!/usr/bin/env node -/* eslint-disable no-console */ +import fs from 'node:fs' +import path from 'node:path' import {program} from 'commander' +import {$} from 'execa' +import prettier from 'prettier' + +const PACKAGE_REGEX = /packages\/((([a-z]+)-?)+)/ // matches "packages/sui-any-package-name" program .name('publish-tagged-packages') @@ -10,19 +15,91 @@ program program .option('-t, --tag [tag]', 'Tag used to publish the packages to NPM.') - .option('-f, --files [files]', 'JSON-stringified list of added and modified files.') + .option('-f, --files [files]', 'Comma-separated list of added and modified files.') .on('--help', () => { console.log(' Examples:') console.log('') console.log( - ' $ node ./scripts/publish-tagged-packages.mjs --tag \'ongoing-branch\' --files \'["packages/sui-mono/foo.js", "packages/sui-bundler/bar.js"]\'' + ' $ node ./scripts/publish-tagged-packages.mjs --tag \'ongoing-branch\' --files \'"packages/sui-mono/foo.js","packages/sui-bundler/bar.js"\'' ) console.log('') }) .parse(process.argv) -const {tag, files} = program.opts() +async function getConfig(fileName) { + return import(`../${fileName}/package.json`, { + assert: {type: 'json'} + }).then(module => module.default) +} + +async function getPackageVersion({name, tag}) { + let version = '' + + try { + // Try to get a previously tagged version. + const {stdout: currentTaggedVersion} = await $`npm view ${name}@${tag} version` + const [mainVersion, taggedVersion] = currentTaggedVersion.split(`-${tag}.`) + + version = `${mainVersion}-${tag}.${Number(taggedVersion) + 1}` + } catch (error) { + // If not, create a new tag from the main package version. + const {stdout: currentVersion} = await $`npm view ${name} version` + const [major, minor] = currentVersion.split('.') + + version = `${major}.${Number(minor) + 1}.0-${tag}.0` + } + + return version +} + +async function publishPackages() { + const {tag, files = ''} = program.opts() + + if (!tag) { + throw new Error('🤨 Tag is mandatory in order to publish new package versions.') + } + + // Get needed packages to publish. + const packagesToPublish = [ + // Avoid duplicates. + ...new Set( + files + .split(',') + // Filter only packages. + .filter(file => file.match(PACKAGE_REGEX)) + // Return the package path. + .map(file => file.match(PACKAGE_REGEX)[0]) + ) + ] + + if (!packagesToPublish.length) { + console.log('\n🐒 There is no new tags to be published.\n') + return + } + + packagesToPublish.forEach(async packageName => { + const packageConfig = await getConfig(packageName) + const {name} = packageConfig + const version = await getPackageVersion({name, tag}) + + // Set the new tagged version. + packageConfig.version = version + + const packagePath = path.join(process.cwd(), packageName) + const packageJsonPath = `${packagePath}/package.json` + const packageJson = await prettier.format(JSON.stringify(packageConfig), {parser: 'json'}) + + // Allow `execa` to execute NPM commands on the cwd of each package. + const $$ = $({cwd: packagePath}) + + console.log(`\n📦 Publishing new tagged version: ${name}@${version}\n`) + + // fs.writeFileSync(packageJsonPath, packageJson) + + // await $$`npm publish --tag ${tag}` + }) +} -console.log({tag, files: JSON.parse(files)}) +await publishPackages() program.parse(process.argv) From 698c932ef2c5bb2ed0ebbe1b11afd165a3a3f9d9 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Fri, 26 Jan 2024 10:36:50 +0100 Subject: [PATCH 099/545] feat(packages/sui-bundler): use latest version of swc --- packages/sui-bundler/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/sui-bundler/package.json b/packages/sui-bundler/package.json index 680f0eeec..10525c12b 100644 --- a/packages/sui-bundler/package.json +++ b/packages/sui-bundler/package.json @@ -26,8 +26,8 @@ "@s-ui/compiler-config": "1", "@s-ui/helpers": "1", "@s-ui/sass-loader": "1", - "@swc/core": "1.3.14", - "@swc/helpers": "0.4.12", + "@swc/core": "1.3.106", + "@swc/helpers": "0.5.3", "address": "1.2.2", "autoprefixer": "10.4.8", "babel-loader": "8.2.5", From 018c890ac15b3b6e79a235174c3b895677783eda Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Fri, 26 Jan 2024 10:36:52 +0100 Subject: [PATCH 100/545] feat(packages/sui-consents): use latest version of swc --- packages/sui-consents/package.json | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/sui-consents/package.json b/packages/sui-consents/package.json index a9fed42f5..133fc8b52 100644 --- a/packages/sui-consents/package.json +++ b/packages/sui-consents/package.json @@ -5,20 +5,21 @@ "description": "iab consents handler", "types": "lib/index", "scripts": { - "lib": "rm -rf ./lib && tsc", + "lib": "sui-js-compiler", "prepublishOnly": "npm run lib" }, "keywords": [], "author": "", "license": "MIT", "devDependencies": { - "@s-ui/react-context": "typescript", + "@s-ui/js-compiler": "typescript-support", + "@s-ui/react-context": "typescript-support", "@testing-library/react": "11.2.5", "react": "17", "react-dom": "17" }, "peerDependencies": { - "@s-ui/react-context": "typescript", + "@s-ui/react-context": "typescript-support", "react": "16 || 17" } } From 9986b236f3b8251b77ae8d6c7e2adef2c55d64d6 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Fri, 26 Jan 2024 10:36:53 +0100 Subject: [PATCH 101/545] feat(packages/sui-decorators): use latest version of swc --- packages/sui-decorators/package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/sui-decorators/package.json b/packages/sui-decorators/package.json index 24df5bdaf..1abaecc32 100644 --- a/packages/sui-decorators/package.json +++ b/packages/sui-decorators/package.json @@ -4,13 +4,14 @@ "description": "> Set of ES6 decorators to improve your apps", "main": "lib/", "scripts": { - "lib": "babel --presets sui ./src --out-dir ./lib", + "lib": "sui-js-compiler", "prepublishOnly": "npm run lib" }, "keywords": [], "author": "", "license": "MIT", "devDependencies": { + "@s-ui/js-compiler": "typescript-support", "sinon": "10.0.0" }, "browser": { From e5746101f509d1a516d1cee814318a3e2cbbea33 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Fri, 26 Jan 2024 10:36:53 +0100 Subject: [PATCH 102/545] feat(packages/sui-domain): use latest version of swc --- packages/sui-domain/package.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/sui-domain/package.json b/packages/sui-domain/package.json index 500bc023e..23fa44afe 100644 --- a/packages/sui-domain/package.json +++ b/packages/sui-domain/package.json @@ -5,7 +5,7 @@ "description": "SDK for creating domains", "main": "lib/index.js", "scripts": { - "lib": "babel --presets sui ./src --out-dir ./lib", + "lib": "sui-js-compiler", "prepublishOnly": "npm run lib", "test": "npm run test:server && npm run test:browser", "test:browser": "NODE_ENV=test sui-test browser -P 'test/browser/*Spec.js'", @@ -16,6 +16,9 @@ "keywords": [], "author": "", "license": "MIT", + "devDependencies": { + "@s-ui/js-compiler": "typescript-support" + }, "dependencies": { "axios": "1.6.2" } From 820adf5c0cf1f460a00979e7f6627d12d394e502 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Fri, 26 Jan 2024 10:36:53 +0100 Subject: [PATCH 103/545] feat(packages/sui-hoc): use latest version of swc --- packages/sui-hoc/package.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/sui-hoc/package.json b/packages/sui-hoc/package.json index 3928f2e3d..418bcc322 100644 --- a/packages/sui-hoc/package.json +++ b/packages/sui-hoc/package.json @@ -4,7 +4,7 @@ "description": "Set of HoC useful for react", "main": "lib/index.js", "scripts": { - "lib": "babel --presets sui ./src --out-dir ./lib", + "lib": "sui-js-compiler", "prepublishOnly": "npm run lib" }, "peerDependencies": { @@ -12,6 +12,9 @@ "prop-types": "15", "react": "16 || 17" }, + "devDependencies": { + "@s-ui/js-compiler": "typescript-support" + }, "dependencies": { "intersection-observer": "0.10.0" } From ea2558192a555f4332f5c4558cb70b3c75715250 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Fri, 26 Jan 2024 10:36:53 +0100 Subject: [PATCH 104/545] feat(packages/sui-jest): use latest version of swc --- packages/sui-jest/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sui-jest/package.json b/packages/sui-jest/package.json index fd7cf7240..64acf7b84 100644 --- a/packages/sui-jest/package.json +++ b/packages/sui-jest/package.json @@ -12,7 +12,7 @@ "author": "", "license": "MIT", "dependencies": { - "@swc/jest": "0.2.24", + "@swc/jest": "0.2.31", "@types/jest": "29.2.4", "jest": "29.3.1", "jest-environment-jsdom": "29.3.1", From b1a0c16df6a23ecdba3f837aafdc3e71f966d2d0 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Fri, 26 Jan 2024 10:36:53 +0100 Subject: [PATCH 105/545] feat(packages/sui-js-compiler): use latest version of swc --- packages/sui-js-compiler/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/sui-js-compiler/package.json b/packages/sui-js-compiler/package.json index 27d9972f3..fdaad467e 100644 --- a/packages/sui-js-compiler/package.json +++ b/packages/sui-js-compiler/package.json @@ -13,8 +13,8 @@ "license": "MIT", "dependencies": { "@s-ui/compiler-config": "1", - "@swc/core": "1.3.14", - "@swc/helpers": "0.4.12", + "@swc/core": "1.3.106", + "@swc/helpers": "0.5.3", "commander": "8.3.0", "fast-glob": "3.2.12", "fs-extra": "10.1.0", From 4b7de4b8197644181994db0c3e84f59d1956fbcb Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Fri, 26 Jan 2024 10:36:54 +0100 Subject: [PATCH 106/545] feat(packages/sui-mock): use latest version of swc --- packages/sui-mock/package.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/sui-mock/package.json b/packages/sui-mock/package.json index 6561a5f7c..14f005211 100644 --- a/packages/sui-mock/package.json +++ b/packages/sui-mock/package.json @@ -4,7 +4,7 @@ "main": "lib/index.js", "description": "Mock provider", "scripts": { - "lib": "babel --presets sui ./src --out-dir ./lib", + "lib": "sui-js-compiler", "prepublishOnly": "npm run lib", "test": "npm run test:browser && npm run test:server", "test:browser": "npx @s-ui/test browser -P './test/browser/**/*Spec.js'", @@ -15,6 +15,9 @@ "keywords": [], "author": "", "license": "MIT", + "devDependencies": { + "@s-ui/js-compiler": "typescript-support" + }, "dependencies": { "msw": "1.2.1" }, From dbb8c882a64b89088be0a8bd2292d79024ed81c9 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Fri, 26 Jan 2024 10:36:54 +0100 Subject: [PATCH 107/545] feat(packages/sui-react-context): use latest version of swc --- packages/sui-react-context/package.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/sui-react-context/package.json b/packages/sui-react-context/package.json index bcb9e5e04..276384be2 100644 --- a/packages/sui-react-context/package.json +++ b/packages/sui-react-context/package.json @@ -5,12 +5,15 @@ "main": "lib/index", "types": "lib/index.d.ts", "scripts": { - "lib": "rm -rf ./lib && tsc", + "lib": "sui-js-compiler", "prepublishOnly": "npm run lib" }, "keywords": [], "author": "", "license": "MIT", + "devDependencies": { + "@s-ui/js-compiler": "typescript-support" + }, "dependencies": { "hoist-non-react-statics": "3.3.2" } From c56495ddeb80b1bb2c17bd002e39ec6c95671e71 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Fri, 26 Jan 2024 10:36:54 +0100 Subject: [PATCH 108/545] feat(packages/sui-react-head): use latest version of swc --- packages/sui-react-head/package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/sui-react-head/package.json b/packages/sui-react-head/package.json index 9133600e9..43843d51c 100644 --- a/packages/sui-react-head/package.json +++ b/packages/sui-react-head/package.json @@ -5,7 +5,7 @@ "main": "lib/index.js", "types": "lib/index.d.ts", "scripts": { - "lib": "rm -rf ./lib && tsc", + "lib": "sui-js-compiler", "prepublishOnly": "npm run lib" }, "keywords": [], @@ -15,6 +15,7 @@ "react-head": "3.4.0" }, "devDependencies": { + "@s-ui/js-compiler": "typescript-support", "@testing-library/react": "11.1.0", "react": "17", "react-dom": "17" From 3e1a7dff8aa073ad3ae13707c150f37562c0614b Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Fri, 26 Jan 2024 10:36:54 +0100 Subject: [PATCH 109/545] feat(packages/sui-react-initial-props): use latest version of swc --- packages/sui-react-initial-props/package.json | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/sui-react-initial-props/package.json b/packages/sui-react-initial-props/package.json index eaeb937be..4122bb114 100644 --- a/packages/sui-react-initial-props/package.json +++ b/packages/sui-react-initial-props/package.json @@ -5,7 +5,7 @@ "types": "lib/index.d.ts", "description": "Provide a way to get initial props for async pages", "scripts": { - "lib": "rm -rf ./lib && tsc", + "lib": "sui-js-compiler", "prepublishOnly": "npm run lib" }, "keywords": [], @@ -17,10 +17,11 @@ "react": "16 || 17" }, "devDependencies": { + "@s-ui/js-compiler": "typescript-support", + "@s-ui/react-router": "1", "@testing-library/react": "11.1.0", "@types/node": "16", "react": "17", - "react-dom": "17", - "@s-ui/react-router": "1" + "react-dom": "17" } } From a133bd7bf9d598fd2fd7f71010d0af3a59cede34 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Fri, 26 Jan 2024 10:36:55 +0100 Subject: [PATCH 110/545] feat(packages/sui-test-contract): use latest version of swc --- packages/sui-test-contract/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sui-test-contract/package.json b/packages/sui-test-contract/package.json index f6109d52f..bfc4bb7c7 100644 --- a/packages/sui-test-contract/package.json +++ b/packages/sui-test-contract/package.json @@ -18,7 +18,7 @@ "dependencies": { "@pact-foundation/pact": "9.18.1", "@pactflow/pact-msw-adapter": "2.0.0", - "@s-ui/mock": "typescript", + "@s-ui/mock": "typescript-support", "commander": "8.3.0", "headers-polyfill": "3.1.2" }, From 18b378329b8113fbaf089ef7fb499b90e27a0090 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Fri, 26 Jan 2024 10:36:55 +0100 Subject: [PATCH 111/545] feat(packages/sui-test): use latest version of swc --- packages/sui-test/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sui-test/package.json b/packages/sui-test/package.json index 25fa05e02..b6f800a64 100644 --- a/packages/sui-test/package.json +++ b/packages/sui-test/package.json @@ -24,7 +24,7 @@ "@babel/register": "7.18.9", "@s-ui/compiler-config": "1", "@s-ui/helpers": "1", - "@swc/core": "1.3.14", + "@swc/core": "1.3.106", "@swc/register": "0.1.10", "babel-loader": "8.2.5", "babel-plugin-dynamic-import-node": "2.3.3", From 51917398b2000bfc430d92db39a09da875aa9642 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Fri, 26 Jan 2024 10:38:15 +0100 Subject: [PATCH 112/545] chore(Root): uncomment script and fix dev dep version --- package.json | 1 + scripts/publish-tagged-packages.mjs | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index ef6cba654..91471d5d8 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,7 @@ "@s-ui/precommit": "3", "@s-ui/react-context": "1", "chai": "4.3.6", + "pino-pretty": "10.3.1", "react": "17", "sinon": "10.0.0", "typescript": "5.0.4", diff --git a/scripts/publish-tagged-packages.mjs b/scripts/publish-tagged-packages.mjs index 8ab3ae05e..8e6f3c994 100644 --- a/scripts/publish-tagged-packages.mjs +++ b/scripts/publish-tagged-packages.mjs @@ -94,9 +94,9 @@ async function publishPackages() { console.log(`\n📦 Publishing new tagged version: ${name}@${version}\n`) - // fs.writeFileSync(packageJsonPath, packageJson) + fs.writeFileSync(packageJsonPath, packageJson) - // await $$`npm publish --tag ${tag}` + await $$`npm publish --tag ${tag}` }) } From 92a337442ca75a30ff5c1c37917cc9f5ab5b664f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Jan 2024 22:39:59 +0000 Subject: [PATCH 113/545] upgrade(deps): bump classnames from 2.2.5 to 2.5.1 Bumps [classnames](https://github.com/JedWatson/classnames) from 2.2.5 to 2.5.1. - [Changelog](https://github.com/JedWatson/classnames/blob/main/HISTORY.md) - [Commits](https://github.com/JedWatson/classnames/compare/v2.2.5...v2.5.1) --- updated-dependencies: - dependency-name: classnames dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- packages/sui-component-dependencies/package.json | 2 +- packages/sui-react-router/package.json | 2 +- packages/sui-studio/package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/sui-component-dependencies/package.json b/packages/sui-component-dependencies/package.json index 945380575..7885965e4 100644 --- a/packages/sui-component-dependencies/package.json +++ b/packages/sui-component-dependencies/package.json @@ -10,7 +10,7 @@ "license": "MIT", "dependencies": { "@s-ui/theme": "8", - "classnames": "2.2.5" + "classnames": "2.5.1" }, "repository": { "type": "git", diff --git a/packages/sui-react-router/package.json b/packages/sui-react-router/package.json index b4cc53080..b2d03c5ba 100644 --- a/packages/sui-react-router/package.json +++ b/packages/sui-react-router/package.json @@ -20,7 +20,7 @@ "author": "", "license": "MIT", "dependencies": { - "classnames": "2.2.5", + "classnames": "2.5.1", "history": "3.3.0", "hoist-non-react-statics": "3.3.2" }, diff --git a/packages/sui-studio/package.json b/packages/sui-studio/package.json index 4e597cfb4..b149ef0ba 100644 --- a/packages/sui-studio/package.json +++ b/packages/sui-studio/package.json @@ -21,7 +21,7 @@ "@testing-library/user-event": "13.5.0", "chai": "4.3.10", "chai-dom": "1.11.0", - "classnames": "2.2.5", + "classnames": "2.5.1", "commander": "8.3.0", "deepmerge": "4.3.1", "fast-glob": "3.2.11", From 7dd479001cfce735fb2fba8803488be957a66217 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Jan 2024 22:40:08 +0000 Subject: [PATCH 114/545] upgrade(deps): bump copy-paste from 1.3.0 to 1.5.3 Bumps [copy-paste](https://github.com/xavi-/node-copy-paste) from 1.3.0 to 1.5.3. - [Commits](https://github.com/xavi-/node-copy-paste/compare/v1.3.0...v1.5.3) --- updated-dependencies: - dependency-name: copy-paste dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- packages/sui-widget-embedder/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sui-widget-embedder/package.json b/packages/sui-widget-embedder/package.json index 0b6af3717..6e0ac6b0e 100644 --- a/packages/sui-widget-embedder/package.json +++ b/packages/sui-widget-embedder/package.json @@ -18,7 +18,7 @@ "@s-ui/react-context": "1", "@s-ui/react-hooks": "1", "commander": "8.3.0", - "copy-paste": "1.3.0", + "copy-paste": "1.5.3", "webpack-dev-middleware": "5.3.3" } } From e7eabfd5a610357c258234bc0ea16afb3e63bcd0 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Mon, 5 Feb 2024 12:13:46 +0100 Subject: [PATCH 115/545] fix(packages/sui-consents): fix linting issues --- packages/sui-consents/src/types.ts | 16 ++-------------- packages/sui-consents/src/useUserConsents.ts | 4 ++-- 2 files changed, 4 insertions(+), 16 deletions(-) diff --git a/packages/sui-consents/src/types.ts b/packages/sui-consents/src/types.ts index 98e2977b7..198687f51 100644 --- a/packages/sui-consents/src/types.ts +++ b/packages/sui-consents/src/types.ts @@ -1,18 +1,6 @@ export interface Purpose { - consents: { - /** - * true - Consent - * false - No Consent. - */ - [purposeId: number]: boolean | undefined - } - legitimateInterests: { - /** - * true - Legitimate Interest Established, - * false - No Legitimate Interest Established - */ - [purposeId: number]: boolean - } + consents: Record + legitimateInterests: Record } export enum EventStatus { diff --git a/packages/sui-consents/src/useUserConsents.ts b/packages/sui-consents/src/useUserConsents.ts index 1c4ebe44f..01facd2b6 100644 --- a/packages/sui-consents/src/useUserConsents.ts +++ b/packages/sui-consents/src/useUserConsents.ts @@ -4,7 +4,7 @@ import SUIContext from '@s-ui/react-context' import {TCF_VERSION, TCF_WINDOW_API} from './config' import hasUserConsents from './hasUserConsents' -import {EventStatus, Purpose} from './types' +import {type Purpose, EventStatus} from './types' export default function useUserConsents(requiredConsents: number[]): boolean { /** @@ -12,7 +12,7 @@ export default function useUserConsents(requiredConsents: number[]): boolean { * context, so we know the state of consents from the beginning, even * in SSR. */ - const {cookies} = useContext(SUIContext) + const {cookies}: {cookies: string} = useContext(SUIContext) const [areConsentsAccepted, setAreConsentsAccepted] = useState(() => hasUserConsents({requiredConsents, cookies})) /** From 6b639a8b8250ac7702bcac29e4ee9b19e9b88673 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Mon, 5 Feb 2024 12:13:55 +0100 Subject: [PATCH 116/545] fix(packages/sui-domain): fix linting issues --- .../sui-domain/src/fetcher/InterceptableFetcherInterface.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sui-domain/src/fetcher/InterceptableFetcherInterface.d.ts b/packages/sui-domain/src/fetcher/InterceptableFetcherInterface.d.ts index d50551989..9bd073ddd 100644 --- a/packages/sui-domain/src/fetcher/InterceptableFetcherInterface.d.ts +++ b/packages/sui-domain/src/fetcher/InterceptableFetcherInterface.d.ts @@ -1,6 +1,6 @@ /** @typedef {import('./FetcherInterface').default} FetcherInterface */ /** @extends {FetcherInterface} */ export default interface InterceptableFetcherInterface { - setErrorInterceptor: (callback: Function) => void + setErrorInterceptor: (callback: () => void) => void unsetErrorInterceptor: () => void } From 5c199d4392f5ffb4e4ad3eb895e668812b639e11 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Mon, 5 Feb 2024 12:13:56 +0100 Subject: [PATCH 117/545] fix(packages/sui-react-context): fix linting issues --- packages/sui-react-context/src/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sui-react-context/src/index.tsx b/packages/sui-react-context/src/index.tsx index 69858f98a..2c1582a97 100644 --- a/packages/sui-react-context/src/index.tsx +++ b/packages/sui-react-context/src/index.tsx @@ -13,7 +13,7 @@ SUIContext.wrapper = (Component, displayName): React.ComponentType => { {context => } ) - WrappedComponent.displayName = Component.displayName !== undefined ? Component.displayName : displayName + WrappedComponent.displayName = Component.displayName ?? displayName return hoistNonReactStatics(WrappedComponent, Component) } From 7f846664dbf6ff73ba9b1456f8819ee03e6a9a0b Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Mon, 5 Feb 2024 12:13:56 +0100 Subject: [PATCH 118/545] fix(packages/sui-react-head): fix linting issues --- packages/sui-react-head/src/Body.tsx | 4 +++- packages/sui-react-head/src/index.tsx | 2 +- packages/sui-react-head/src/server.ts | 9 +++++---- packages/sui-react-head/src/utils.tsx | 7 ++++--- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/packages/sui-react-head/src/Body.tsx b/packages/sui-react-head/src/Body.tsx index 7b89a6632..dbf9f9aa0 100644 --- a/packages/sui-react-head/src/Body.tsx +++ b/packages/sui-react-head/src/Body.tsx @@ -20,7 +20,9 @@ const Body: React.FC = ({attributes = {}}) => { } toggleBodyAttributes() - return () => toggleBodyAttributes({action: 'remove'}) + return () => { + toggleBodyAttributes({action: 'remove'}) + } }, [attributes]) if (isClient) return null diff --git a/packages/sui-react-head/src/index.tsx b/packages/sui-react-head/src/index.tsx index f26489d2d..99e0a0f80 100644 --- a/packages/sui-react-head/src/index.tsx +++ b/packages/sui-react-head/src/index.tsx @@ -34,7 +34,7 @@ const MetaTagInverter: React.FC = ({'data-rh': rh, ...othe } const Meta: React.FC = props => { - // @ts-expect-error + // @ts-expect-error: We should expect any error return } diff --git a/packages/sui-react-head/src/server.ts b/packages/sui-react-head/src/server.ts index 5101f849d..5e1c19311 100644 --- a/packages/sui-react-head/src/server.ts +++ b/packages/sui-react-head/src/server.ts @@ -1,8 +1,9 @@ +import {type ReactElement} from 'react' import {renderToString} from 'react-dom/server' import {BODY_ATTRIBUTES_KEY} from './Body' import {HTML_ATTRIBUTES_KEY} from './Html' -import {ComponentTag} from './types' +import {type ComponentTag} from './types' interface ExtractPropsFromConfig { withKey: string @@ -12,7 +13,7 @@ interface ExtractPropsFromConfig { * Extract props from a list of tags a specific tag by using a key * and then discard this key before returning the key */ -const extractPropsFrom = (tags: ComponentTag[], {withKey}: ExtractPropsFromConfig): undefined | {[x: string]: any} => { +const extractPropsFrom = (tags: ComponentTag[], {withKey}: ExtractPropsFromConfig): undefined | Record => { // search the tag using the key and default to an empty object for simplicity const tag: ComponentTag | undefined = tags.find(({props}) => props.name === withKey) @@ -27,7 +28,7 @@ const extractPropsFrom = (tags: ComponentTag[], {withKey}: ExtractPropsFromConfi /** * Transform the object from the head to a string to be used in the server */ -const transformToString = (headObject: {[key: string]: string} = {}): string => +const transformToString = (headObject: Record = {}): string => Object.entries(headObject) .map(([key, value]) => `${key}="${value}"`) .join(' ') @@ -35,7 +36,7 @@ const transformToString = (headObject: {[key: string]: string} = {}): string => /** * Render the tags for the head */ -export function renderHeadTagsToString(headTags: any[]): { +export function renderHeadTagsToString(headTags: Array>): { headString: string bodyAttributes: string htmlAttributes: string diff --git a/packages/sui-react-head/src/utils.tsx b/packages/sui-react-head/src/utils.tsx index c64298390..c9430237b 100644 --- a/packages/sui-react-head/src/utils.tsx +++ b/packages/sui-react-head/src/utils.tsx @@ -1,7 +1,7 @@ import * as React from 'react' import {Children as ReactChildren} from 'react' -import {Style, Tag} from './types' +import {type Style, type Tag} from './types' const checkRelNeedsHref = (rel: string): boolean => ['alternate', 'preload', 'prefetch'].includes(rel) @@ -50,7 +50,7 @@ export const extractTagsFrom = ({children, tag, fallback}: extractTagsFromParams return extract({children, byTag: tag}) } - return fallback != null ? fallback : [] + return fallback ?? [] } interface extractTitleFromParams { @@ -64,7 +64,8 @@ export const extractTitleFrom = ({children, fallback = ''}: extractTitleFromPara const listOfTitles = extract({children, byTag: 'title'}) if (listOfTitles.length > 0) { const [title] = listOfTitles - return title.children !== undefined ? title.children : fallback + + return title.children ?? fallback } return fallback } From d580498ec84b7339e87901df30fc989aefe94e7f Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Mon, 5 Feb 2024 12:13:57 +0100 Subject: [PATCH 119/545] fix(packages/sui-react-initial-props): fix linting issues --- .../src/createClientContextFactoryParams.ts | 2 +- .../src/createServerContextFactoryParams.ts | 2 +- packages/sui-react-initial-props/src/loadPage.tsx | 7 ++++++- .../src/ssrComponentWithInitialProps.tsx | 2 +- packages/sui-react-initial-props/src/types.d.ts | 6 ++---- packages/sui-react-initial-props/src/withInitialProps.tsx | 4 ++-- 6 files changed, 13 insertions(+), 10 deletions(-) diff --git a/packages/sui-react-initial-props/src/createClientContextFactoryParams.ts b/packages/sui-react-initial-props/src/createClientContextFactoryParams.ts index b32fb768a..389f098cd 100644 --- a/packages/sui-react-initial-props/src/createClientContextFactoryParams.ts +++ b/packages/sui-react-initial-props/src/createClientContextFactoryParams.ts @@ -1,4 +1,4 @@ -import {ContextFactoryParams} from './types' +import {type ContextFactoryParams} from './types' export default (): ContextFactoryParams => ({ appConfig: window.__APP_CONFIG__, diff --git a/packages/sui-react-initial-props/src/createServerContextFactoryParams.ts b/packages/sui-react-initial-props/src/createServerContextFactoryParams.ts index 2bf23553e..fa437efcf 100644 --- a/packages/sui-react-initial-props/src/createServerContextFactoryParams.ts +++ b/packages/sui-react-initial-props/src/createServerContextFactoryParams.ts @@ -1,4 +1,4 @@ -import {ContextFactoryParams} from './types' +import {type ContextFactoryParams} from './types' export default (req: IncomingMessage.ServerRequest): ContextFactoryParams => ({ appConfig: req.appConfig, diff --git a/packages/sui-react-initial-props/src/loadPage.tsx b/packages/sui-react-initial-props/src/loadPage.tsx index f2839b18b..887335b08 100644 --- a/packages/sui-react-initial-props/src/loadPage.tsx +++ b/packages/sui-react-initial-props/src/loadPage.tsx @@ -2,7 +2,12 @@ import {useContext} from 'react' import InitialPropsContext from './initialPropsContext' -import {ClientPageComponent, DoneImportingPageCallback, ReactRouterTypes, WithInitialPropsComponent} from './types' +import { + type ClientPageComponent, + type DoneImportingPageCallback, + type ReactRouterTypes, + type WithInitialPropsComponent +} from './types' import withInitialProps from './withInitialProps' const EMPTY_GET_INITIAL_PROPS = async (): Promise => ({}) diff --git a/packages/sui-react-initial-props/src/ssrComponentWithInitialProps.tsx b/packages/sui-react-initial-props/src/ssrComponentWithInitialProps.tsx index 48cd03455..8665c3807 100644 --- a/packages/sui-react-initial-props/src/ssrComponentWithInitialProps.tsx +++ b/packages/sui-react-initial-props/src/ssrComponentWithInitialProps.tsx @@ -1,7 +1,7 @@ import {renderToNodeStream, renderToString} from 'react-dom/server' import InitialPropsContext from './initialPropsContext' -import {InitialProps, SsrComponentWithInitialPropsParams} from './types' +import {type InitialProps, type SsrComponentWithInitialPropsParams} from './types' const hrTimeToMs = (diff: [number, number]): number => diff[0] * 1e3 + diff[1] * 1e-6 diff --git a/packages/sui-react-initial-props/src/types.d.ts b/packages/sui-react-initial-props/src/types.d.ts index 1acd21a1f..73e76e4ea 100644 --- a/packages/sui-react-initial-props/src/types.d.ts +++ b/packages/sui-react-initial-props/src/types.d.ts @@ -1,9 +1,7 @@ -import {RouteInfo} from '@s-ui/react-router/src/types' +import {type RouteInfo} from '@s-ui/react-router/src/types' export * as ReactRouterTypes from '@s-ui/react-router/src/types' -export interface InitialProps { - [key: string]: any -} +export type InitialProps = Record export interface PageComponentOptions { keepMounted?: boolean renderLoading?: (params: GetInitialPropsClientFunctionParams) => React.ElementType diff --git a/packages/sui-react-initial-props/src/withInitialProps.tsx b/packages/sui-react-initial-props/src/withInitialProps.tsx index 6f6427833..f1d44a734 100644 --- a/packages/sui-react-initial-props/src/withInitialProps.tsx +++ b/packages/sui-react-initial-props/src/withInitialProps.tsx @@ -1,9 +1,9 @@ import {useContext, useEffect, useRef, useState} from 'react' import SUIContext from '@s-ui/react-context' -import {RouteInfo} from '@s-ui/react-router/src/types' +import {type RouteInfo} from '@s-ui/react-router/src/types' -import {ClientPageComponent, InitialProps, WithInitialPropsComponent} from './types' +import {type ClientPageComponent, type InitialProps, type WithInitialPropsComponent} from './types' const INITIAL_PROPS_KEY = '__INITIAL_PROPS__' From 60569dfc2ea4fa71dbe3d7120eea48af3d0495cb Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Mon, 5 Feb 2024 15:31:07 +0100 Subject: [PATCH 120/545] chore(Root): add condition to workflow and modify script --- .github/workflows/main.yml | 3 ++- scripts/publish-tagged-packages.mjs | 17 ++++++++++------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 977735cf4..f52acd647 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -5,6 +5,7 @@ on: branches: [master] pull_request: branches: [master] + types: [labeled] jobs: checks: @@ -81,7 +82,7 @@ jobs: publish-tagged-packages: name: Publish Tagged Packages to NPM needs: checks - if: github.ref != 'refs/heads/master' + if: github.ref != 'refs/heads/master' && contains(github.event.pull_request.labels.*.name, 'feature') runs-on: ubuntu-latest steps: - name: Checkout diff --git a/scripts/publish-tagged-packages.mjs b/scripts/publish-tagged-packages.mjs index 8e6f3c994..9ce60de9d 100644 --- a/scripts/publish-tagged-packages.mjs +++ b/scripts/publish-tagged-packages.mjs @@ -1,9 +1,12 @@ #!/usr/bin/env node +/* eslint-disable no-console */ + +import {createRequire} from 'module' -import fs from 'node:fs' -import path from 'node:path' import {program} from 'commander' import {$} from 'execa' +import fs from 'node:fs' +import path from 'node:path' import prettier from 'prettier' const PACKAGE_REGEX = /packages\/((([a-z]+)-?)+)/ // matches "packages/sui-any-package-name" @@ -26,10 +29,10 @@ program }) .parse(process.argv) -async function getConfig(fileName) { - return import(`../${fileName}/package.json`, { - assert: {type: 'json'} - }).then(module => module.default) +function getConfig(fileName) { + const require = createRequire(import.meta.url) + + return require(`../${fileName}/package.json`) } async function getPackageVersion({name, tag}) { @@ -78,7 +81,7 @@ async function publishPackages() { } packagesToPublish.forEach(async packageName => { - const packageConfig = await getConfig(packageName) + const packageConfig = getConfig(packageName) const {name} = packageConfig const version = await getPackageVersion({name, tag}) From 7e41dc7323cbe9dc782d3eb78a90fef651b72e19 Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Tue, 6 Feb 2024 11:40:53 +0100 Subject: [PATCH 121/545] feat(packages/eslint-plugin-sui): create few rules --- packages/eslint-plugin-sui/README.md | 58 ++++++++++++ .../docs/rules/factory-pattern.md | 35 +++++++ packages/eslint-plugin-sui/package.json | 39 ++++++++ packages/eslint-plugin-sui/src/index.js | 14 +++ .../src/rules/factory-pattern.js | 65 +++++++++++++ .../src/rules/forbidden-require.js | 46 +++++++++ .../src/rules/naming-convention.js | 46 +++++++++ .../src/rules/serialize-deserialize.js | 93 +++++++++++++++++++ .../tests/src/rules/factory-pattern.js | 30 ++++++ 9 files changed, 426 insertions(+) create mode 100644 packages/eslint-plugin-sui/README.md create mode 100644 packages/eslint-plugin-sui/docs/rules/factory-pattern.md create mode 100644 packages/eslint-plugin-sui/package.json create mode 100644 packages/eslint-plugin-sui/src/index.js create mode 100644 packages/eslint-plugin-sui/src/rules/factory-pattern.js create mode 100644 packages/eslint-plugin-sui/src/rules/forbidden-require.js create mode 100644 packages/eslint-plugin-sui/src/rules/naming-convention.js create mode 100644 packages/eslint-plugin-sui/src/rules/serialize-deserialize.js create mode 100644 packages/eslint-plugin-sui/tests/src/rules/factory-pattern.js diff --git a/packages/eslint-plugin-sui/README.md b/packages/eslint-plugin-sui/README.md new file mode 100644 index 000000000..07481eb4d --- /dev/null +++ b/packages/eslint-plugin-sui/README.md @@ -0,0 +1,58 @@ +# eslint-plugin-sui + +Set of sui lint rules + +## Installation + +You'll first need to install [ESLint](https://eslint.org/): + +```sh +npm i eslint --save-dev +``` + +Next, install `eslint-plugin-sui`: + +```sh +npm install eslint-plugin-sui --save-dev +``` + +## Usage + +Add `sui` to the plugins section of your `.eslintrc` configuration file. You can omit the `eslint-plugin-` prefix: + +```json +{ + "plugins": [ + "sui" + ] +} +``` + + +Then configure the rules you want to use under the rules section. + +```json +{ + "rules": { + "sui/rule-name": 2 + } +} +``` + + + +## Configurations + + +TODO: Run eslint-doc-generator to generate the configs list (or delete this section if no configs are offered). + + + + +## Rules + + +TODO: Run eslint-doc-generator to generate the rules list. + + + diff --git a/packages/eslint-plugin-sui/docs/rules/factory-pattern.md b/packages/eslint-plugin-sui/docs/rules/factory-pattern.md new file mode 100644 index 000000000..c6699910d --- /dev/null +++ b/packages/eslint-plugin-sui/docs/rules/factory-pattern.md @@ -0,0 +1,35 @@ +# Ensure that our classes are using the convetion of has a static create method as factory. (`factory-pattern`) + +Please describe the origin of the rule here. + +## Rule Details + +This rule aims to... + +Examples of **incorrect** code for this rule: + +```js + +// fill me in + +``` + +Examples of **correct** code for this rule: + +```js + +// fill me in + +``` + +### Options + +If there are any options, describe them here. Otherwise, delete this section. + +## When Not To Use It + +Give a short description of when it would be appropriate to turn off this rule. + +## Further Reading + +If there are other links that describe the issue this rule addresses, please include them here in a bulleted list. diff --git a/packages/eslint-plugin-sui/package.json b/packages/eslint-plugin-sui/package.json new file mode 100644 index 000000000..99d36c4a1 --- /dev/null +++ b/packages/eslint-plugin-sui/package.json @@ -0,0 +1,39 @@ +{ + "name": "eslint-plugin-sui", + "version": "0.0.0", + "description": "Set of sui lint rules", + "keywords": [ + "eslint", + "eslintplugin", + "eslint-plugin" + ], + "author": "Sui", + "main": "./src/index.js", + "exports": "./src/index.js", + "scripts": { + "lint": "npm-run-all \"lint:*\"", + "lint:eslint-docs": "npm-run-all \"update:eslint-docs -- --check\"", + "lint:js": "eslint .", + "test": "mocha tests --recursive", + "update:eslint-docs": "eslint-doc-generator" + }, + "dependencies": { + "requireindex": "^1.2.0", + "string-dedent": "^3.0.1" + }, + "devDependencies": { + "eslint": "^8.19.0", + "eslint-doc-generator": "^1.0.0", + "eslint-plugin-eslint-plugin": "^5.0.0", + "eslint-plugin-node": "^11.1.0", + "mocha": "^10.0.0", + "npm-run-all": "^4.1.5" + }, + "engines": { + "node": "^14.17.0 || ^16.0.0 || >= 18.0.0" + }, + "peerDependencies": { + "eslint": ">=7" + }, + "license": "ISC" +} diff --git a/packages/eslint-plugin-sui/src/index.js b/packages/eslint-plugin-sui/src/index.js new file mode 100644 index 000000000..84d25af60 --- /dev/null +++ b/packages/eslint-plugin-sui/src/index.js @@ -0,0 +1,14 @@ +const FactoryPattern = require('./rules/factory-pattern.js') +const SerializeDeserialize = require('./rules/serialize-deserialize.js') + +// ------------------------------------------------------------------------------ +// Plugin Definition +// ------------------------------------------------------------------------------ + +// import all rules in lib/rules +module.exports = { + rules: { + 'factory-pattern': FactoryPattern, + 'serialize-deserialize': SerializeDeserialize + } +} diff --git a/packages/eslint-plugin-sui/src/rules/factory-pattern.js b/packages/eslint-plugin-sui/src/rules/factory-pattern.js new file mode 100644 index 000000000..779da9890 --- /dev/null +++ b/packages/eslint-plugin-sui/src/rules/factory-pattern.js @@ -0,0 +1,65 @@ +/** + * @fileoverview Ensure that our classes are using the convetion of has a static create method as factory. + * @author factory pattern + */ +'use strict' + +const dedent = require('string-dedent') + +// ------------------------------------------------------------------------------ +// Rule Definition +// ------------------------------------------------------------------------------ + +/** @type {import('eslint').Rule.RuleModule} */ +module.exports = { + meta: { + type: 'problem', + docs: { + description: 'ensure to define at least one factory function', + recommended: true, + url: 'https://github.mpi-internal.com/scmspain/es-td-agreements/blob/master/30-Frontend/00-agreements/02-project-structure.md' + }, + fixable: null, + schema: [], + messages: { + notFoundFactoryFunction: dedent` + You have to define at least one static function that return an instance of your class. + Avoid to use the 'new' keyword directly in your code. + Use always a factory function + ` + } + }, + create: function (context) { + // variables should be defined here + + // ---------------------------------------------------------------------- + // Helpers + // ---------------------------------------------------------------------- + + // any helper functions should go here or else delete this section + + // ---------------------------------------------------------------------- + // Public + // ---------------------------------------------------------------------- + + return { + ClassDeclaration(node) { + const hasStaticFactoryMethod = Boolean( + node.body?.body?.find(methodDefinition => { + return ( + methodDefinition.static && + methodDefinition.value?.body?.body?.find(body => body.type === 'ReturnStatement')?.argument?.callee.name === node.id.name // eslint-disable-line + ) + }) + ) + + if (!hasStaticFactoryMethod) { + return context.report({ + node, + messageId: 'notFoundFactoryFunction' + }) + } + } + } + } +} diff --git a/packages/eslint-plugin-sui/src/rules/forbidden-require.js b/packages/eslint-plugin-sui/src/rules/forbidden-require.js new file mode 100644 index 000000000..ec3dbe74e --- /dev/null +++ b/packages/eslint-plugin-sui/src/rules/forbidden-require.js @@ -0,0 +1,46 @@ +/** + * @fileoverview Ensure that our coda doesnt have require (CJS) styles + * @author factory pattern + */ +'use strict' + +const dedent = require('string-dedent') + +// ------------------------------------------------------------------------------ +// Rule Definition +// ------------------------------------------------------------------------------ + +/** @type {import('eslint').Rule.RuleModule} */ +module.exports = { + meta: { + type: 'problem', + docs: { + description: 'ensure to use only ESM (import) style', + recommended: true, + url: null + }, + fixable: null, + schema: [], + messages: { + badFileName: dedent``, + badClassName: dedent`` + } + }, + create: function (context) { + // variables should be defined here + + // ---------------------------------------------------------------------- + // Helpers + // ---------------------------------------------------------------------- + + // any helper functions should go here or else delete this section + + // ---------------------------------------------------------------------- + // Public + // ---------------------------------------------------------------------- + + return { + ClassDeclaration(node) {} + } + } +} diff --git a/packages/eslint-plugin-sui/src/rules/naming-convention.js b/packages/eslint-plugin-sui/src/rules/naming-convention.js new file mode 100644 index 000000000..68477031f --- /dev/null +++ b/packages/eslint-plugin-sui/src/rules/naming-convention.js @@ -0,0 +1,46 @@ +/** + * @fileoverview Ensure that our classes are using the naming convention for UseCases, Services and Repositories + * @author factory pattern + */ +'use strict' + +const dedent = require('string-dedent') + +// ------------------------------------------------------------------------------ +// Rule Definition +// ------------------------------------------------------------------------------ + +/** @type {import('eslint').Rule.RuleModule} */ +module.exports = { + meta: { + type: 'problem', + docs: { + description: 'ensure to use a proper naming convention', + recommended: true, + url: null + }, + fixable: null, + schema: [], + messages: { + badFileName: dedent``, + badClassName: dedent`` + } + }, + create: function (context) { + // variables should be defined here + + // ---------------------------------------------------------------------- + // Helpers + // ---------------------------------------------------------------------- + + // any helper functions should go here or else delete this section + + // ---------------------------------------------------------------------- + // Public + // ---------------------------------------------------------------------- + + return { + ClassDeclaration(node) {} + } + } +} diff --git a/packages/eslint-plugin-sui/src/rules/serialize-deserialize.js b/packages/eslint-plugin-sui/src/rules/serialize-deserialize.js new file mode 100644 index 000000000..fc3b6c7f5 --- /dev/null +++ b/packages/eslint-plugin-sui/src/rules/serialize-deserialize.js @@ -0,0 +1,93 @@ +/** + * @fileoverview ensure entity create - toJSON + * @creator david.lacedonia@adevinta.com + */ +'use strict' +const dedent = require('string-dedent') + +// ------------------------------------------------------------------------------ +// Rule Definition +// ------------------------------------------------------------------------------ + +/** @type {import('eslint').Rule.RuleModule} */ +module.exports = { + meta: { + type: 'suggestion', + docs: { + description: 'ensure entity create - toJSON', + recommended: false, + url: null + }, + fixable: null, + schema: [], + messages: { + toJSONProperties: 'Missing toJSON properties ({{props}})', + invalidTOJSONProperties: 'toJSON should return an object', + missingToJSONMethod: dedent` + If your class has a 'static create' method. You have to define a 'toJSON' method too. + The output of the 'toJSON' should be the same as the input of your 'static create' method + `, + missingCreateMethod: dedent` + If your class has a 'toJSON' method. You have to define a 'static create' method too. + The output of the 'toJSON' should be the same as the input of your 'static create' method + ` + } + }, + + create(context) { + return { + ClassDeclaration(node) { + const create = node.body.body.find(i => i.key.name === 'create') + const toJSON = node.body.body.find(i => i.key.name === 'toJSON') + const className = node.id.name + + if (['UseCase', 'Service', 'Repository'].some(allowWord => className.includes(allowWord))) return // eslint-disable-line + + if (!create && !toJSON) return + + if (create && !toJSON) + return context.report({ + node: create, + messageId: 'missingToJSONMethod' + }) + + if (toJSON && !create) + return context.report({ + node: toJSON, + messageId: 'missingCreateMethod' + }) + + let createParams = create.value.params[0] || {properties: []} + if (createParams.left) { + createParams = createParams.left + } + + const createProperties = createParams.properties + const toJSONProperties = toJSON.value.body.body[0].argument.properties + + if (!toJSONProperties) { + return context.report({ + node: toJSON, + messageId: 'invalidTOJSONProperties' + }) + } + + const createProps = createProperties.map(i => i.key.name) + const toJSONProps = toJSONProperties.map(i => i.key.name) + + const missingToJSONProps = createProps.filter( + p => !toJSONProps.find(e => e === p) + ) + if (missingToJSONProps.length) { + context.report({ + node: toJSON, + messageId: 'toJSONProperties', + data: { + props: missingToJSONProps.join(', ') + } + }) + } + } + } + } +} diff --git a/packages/eslint-plugin-sui/tests/src/rules/factory-pattern.js b/packages/eslint-plugin-sui/tests/src/rules/factory-pattern.js new file mode 100644 index 000000000..e04d54faa --- /dev/null +++ b/packages/eslint-plugin-sui/tests/src/rules/factory-pattern.js @@ -0,0 +1,30 @@ +/** + * @fileoverview Ensure that our classes are using the convetion of has a static create method as factory. + * @author factory pattern + */ +'use strict' + +// ------------------------------------------------------------------------------ +// Requirements +// ------------------------------------------------------------------------------ +import {RuleTester} from 'eslint' + +import rule from '../../../src/rules/factory-pattern' + +// ------------------------------------------------------------------------------ +// Tests +// ------------------------------------------------------------------------------ + +const ruleTester = new RuleTester() +ruleTester.run('factory-pattern', rule, { + valid: [ + // give me some code that won't trigger a warning + ], + + invalid: [ + { + code: "class Model { constructor() { this.name = 'John Doe' } }", + errors: [{message: 'Fill me in.', type: 'Me too'}] + } + ] +}) From c6ffa98cea6b262be5d203eaa91de5b82444aa46 Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Wed, 7 Feb 2024 10:44:07 +0100 Subject: [PATCH 122/545] feat(packages/eslint-plugin-sui): make warning --- packages/eslint-plugin-sui/src/rules/factory-pattern.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/eslint-plugin-sui/src/rules/factory-pattern.js b/packages/eslint-plugin-sui/src/rules/factory-pattern.js index 779da9890..97cf15290 100644 --- a/packages/eslint-plugin-sui/src/rules/factory-pattern.js +++ b/packages/eslint-plugin-sui/src/rules/factory-pattern.js @@ -13,7 +13,7 @@ const dedent = require('string-dedent') /** @type {import('eslint').Rule.RuleModule} */ module.exports = { meta: { - type: 'problem', + type: 'warning', docs: { description: 'ensure to define at least one factory function', recommended: true, @@ -54,7 +54,7 @@ module.exports = { ) if (!hasStaticFactoryMethod) { - return context.report({ + context.report({ node, messageId: 'notFoundFactoryFunction' }) From 0a2563ee0809c2e348684fdf72134cdc085e6060 Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Wed, 7 Feb 2024 10:46:01 +0100 Subject: [PATCH 123/545] feat(packages/sui-lint): Create reporter flag --- packages/sui-lint/bin/sui-lint-js.js | 13 +++++++++-- packages/sui-lint/eslintrc.js | 20 ++++++++++++----- packages/sui-lint/package.json | 3 ++- packages/sui-lint/src/reporter.js | 32 ++++++++++++++++++++++++++++ 4 files changed, 60 insertions(+), 8 deletions(-) create mode 100644 packages/sui-lint/src/reporter.js diff --git a/packages/sui-lint/bin/sui-lint-js.js b/packages/sui-lint/bin/sui-lint-js.js index 4e2f90642..bf7db12fc 100755 --- a/packages/sui-lint/bin/sui-lint-js.js +++ b/packages/sui-lint/bin/sui-lint-js.js @@ -7,20 +7,23 @@ const {checkFilesToLint, getFilesToLint, getGitIgnoredFiles, stageFilesIfRequire const {ESLint} = require('eslint') const config = require('../eslintrc.js') +const {Reporter} = require('../src/reporter.js') program .option('--add-fixes') .option('--staged') .option('--fix', 'fix automatically problems with js files') .option('--ignore-patterns ', 'Path patterns to ignore for linting') + .option('--report', 'Send results to DD using sui-logger') + .option('--pattern ', 'Send results to DD using sui-logger') .parse(process.argv) -const {addFixes, fix, ignorePatterns = [], staged} = program.opts() +const {addFixes, fix, ignorePatterns = [], staged, pattern, report} = program.opts() const {CI} = process.env const EXTENSIONS = ['js', 'jsx', 'ts', 'tsx'] const IGNORE_PATTERNS = ['lib', 'dist', 'public', 'node_modules'] -const DEFAULT_PATTERN = './' +const DEFAULT_PATTERN = pattern ?? './' const LINT_FORMATTER = 'stylish' const baseConfig = { ...config, @@ -51,6 +54,12 @@ const baseConfig = { const results = await eslint.lintFiles(files) + if (report) { + debugger + console.log('[sui-lint] Generating report and send it to DD') + Reporter.create().map(results) + } + if (fix) { await ESLint.outputFixes(results) stageFilesIfRequired({extensions: EXTENSIONS, staged, addFixes}) diff --git a/packages/sui-lint/eslintrc.js b/packages/sui-lint/eslintrc.js index c247117c7..b4352b11c 100644 --- a/packages/sui-lint/eslintrc.js +++ b/packages/sui-lint/eslintrc.js @@ -175,7 +175,8 @@ module.exports = { 'react-hooks', 'simple-import-sort', 'jest', - 'jest-dom' + 'jest-dom', + 'sui' ], rules: { ...REACT_RULES, @@ -198,19 +199,28 @@ module.exports = { 'prefer-regex-literals': RULES.WARNING, 'prettier/prettier': [RULES.ERROR, prettierOptions], 'simple-import-sort/imports': [RULES.WARNING, {groups: IMPORT_SORT_GROUPS}], - 'react/jsx-no-bind': RULES.OFF + 'react/jsx-no-bind': RULES.OFF, + 'sui/factory-pattern': RULES.ERROR, + 'sui/serialize-deserialize': RULES.ERROR }, overrides: [ { files: ['**/*.+(ts|tsx)'], - extends: ['standard-with-typescript'], + extends: ['standard-with-typescript', 'standard-react', 'prettier'], + parser: '@typescript-eslint/parser', parserOptions: { project: './tsconfig.json' }, rules: { + 'import/extensions': RULES.OFF, 'no-return-await': RULES.OFF, - 'prettier/prettier': RULES.OFF, - 'react/react-in-jsx-scope': RULES.OFF + 'prettier/prettier': [RULES.ERROR, prettierOptions], + 'react/react-in-jsx-scope': RULES.OFF, + 'react/no-unused-prop-types': RULES.OFF, + '@typescript-eslint/explicit-function-return-type': [RULES.OFF, {allowTypedFunctionExpressions: false}], + 'chai-friendly/no-unused-expressions': RULES.ERROR, + '@typescript-eslint/no-unused-expressions': RULES.OFF, + '@typescript-eslint/return-await': RULES.OFF } }, { diff --git a/packages/sui-lint/package.json b/packages/sui-lint/package.json index dfb8672e4..aa29378b1 100644 --- a/packages/sui-lint/package.json +++ b/packages/sui-lint/package.json @@ -19,8 +19,9 @@ "@babel/eslint-plugin": "7.18.10", "@s-ui/helpers": "1", "@typescript-eslint/eslint-plugin": "5.62.0", + "@adv-ui/logger": "2", "commander": "8.3.0", - "eslint": "8.20.0", + "eslint": "8.56.0", "eslint-config-prettier": "8.5.0", "eslint-config-standard": "17.0.0", "eslint-config-standard-with-typescript": "22.0.0", diff --git a/packages/sui-lint/src/reporter.js b/packages/sui-lint/src/reporter.js new file mode 100644 index 000000000..841fd31ff --- /dev/null +++ b/packages/sui-lint/src/reporter.js @@ -0,0 +1,32 @@ +class Reporter { + #data + + static create() { + return new Reporter() + } + + map(results) { + const stats = results.reduce((rulesIDs, entry) => { + const repitedRulesFailed = entry.messages.map(message => message.ruleId) + const rulesFailed = new Set([...repitedRulesFailed]) + + rulesFailed.forEach(rule => { + rulesIDs[rule] = rulesIDs[rule] ?? [] + rulesIDs[rule].push(entry.filePath) + }) + return rulesIDs + }, {}) + + this.#data = { + totalFiles: results.length, + ...stats + } + debugger + } + + toJSON() { + return {} + } +} + +module.exports.Reporter = Reporter From e2cef862c94d6c0e8d8ea3f67df5e33a1dbaa6ae Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Wed, 7 Feb 2024 10:47:22 +0100 Subject: [PATCH 124/545] feat(packages/eslint-plugin-sui): add empty rule --- .../src/rules/function-named-parameters.js | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 packages/eslint-plugin-sui/src/rules/function-named-parameters.js diff --git a/packages/eslint-plugin-sui/src/rules/function-named-parameters.js b/packages/eslint-plugin-sui/src/rules/function-named-parameters.js new file mode 100644 index 000000000..99c991176 --- /dev/null +++ b/packages/eslint-plugin-sui/src/rules/function-named-parameters.js @@ -0,0 +1,47 @@ +/** + * @fileoverview Ensure that our function are using always named parameters + * @author factory pattern + */ +'use strict' + +const dedent = require('string-dedent') + +// ------------------------------------------------------------------------------ +// Rule Definition +// ------------------------------------------------------------------------------ + +/** @type {import('eslint').Rule.RuleModule} */ +module.exports = { + meta: { + type: 'problem', + docs: { + description: 'ensure to use named parameters', + recommended: true, + url: null + }, + fixable: null, + schema: [], + messages: { + badFileName: dedent``, + badClassName: dedent`` + } + }, + create: function (context) { + // variables should be defined here + + // ---------------------------------------------------------------------- + // Helpers + // ---------------------------------------------------------------------- + + // any helper functions should go here or else delete this section + + // ---------------------------------------------------------------------- + // Public + // ---------------------------------------------------------------------- + + return { + ClassDeclaration(node) {} + } + } +} + From 72ba1229bdc023b35e1d0bb4bc92a751891e84a3 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Mon, 12 Feb 2024 16:06:55 +0100 Subject: [PATCH 125/545] fix(packages/sui-bundler): downgrade swc versions --- packages/sui-bundler/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/sui-bundler/package.json b/packages/sui-bundler/package.json index 8e2a70620..3e6b09065 100644 --- a/packages/sui-bundler/package.json +++ b/packages/sui-bundler/package.json @@ -26,8 +26,8 @@ "@s-ui/compiler-config": "1", "@s-ui/helpers": "1", "@s-ui/sass-loader": "1", - "@swc/core": "1.3.106", - "@swc/helpers": "0.5.3", + "@swc/core": "1.3.14", + "@swc/helpers": "0.4.12", "address": "1.2.2", "autoprefixer": "10.4.8", "babel-loader": "8.3.0", From 20ed77bea8cea6a6433657e4a6847f5218a5a858 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Mon, 12 Feb 2024 16:06:58 +0100 Subject: [PATCH 126/545] fix(packages/sui-js-compiler): downgrade swc versions --- packages/sui-js-compiler/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/sui-js-compiler/package.json b/packages/sui-js-compiler/package.json index 244fca4a5..b4b7fd639 100644 --- a/packages/sui-js-compiler/package.json +++ b/packages/sui-js-compiler/package.json @@ -13,8 +13,8 @@ "license": "MIT", "dependencies": { "@s-ui/compiler-config": "1", - "@swc/core": "1.3.106", - "@swc/helpers": "0.5.3", + "@swc/core": "1.3.14", + "@swc/helpers": "0.4.12", "commander": "8.3.0", "fast-glob": "3.2.12", "fs-extra": "10.1.0", From f875b6589eb7c79f5470cd744b8c1c2962d8a489 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Mon, 12 Feb 2024 16:07:00 +0100 Subject: [PATCH 127/545] fix(packages/sui-test): downgrade swc versions --- packages/sui-test/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sui-test/package.json b/packages/sui-test/package.json index b55535752..b5f099b99 100644 --- a/packages/sui-test/package.json +++ b/packages/sui-test/package.json @@ -25,7 +25,7 @@ "@faker-js/faker": "8.0.2", "@s-ui/compiler-config": "1", "@s-ui/helpers": "1", - "@swc/core": "1.3.106", + "@swc/core": "1.3.14", "@swc/register": "0.1.10", "babel-loader": "8.3.0", "babel-plugin-dynamic-import-node": "2.3.3", From 02b592c407dbb5c6ce9ad8e5665e61b7557877aa Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Tue, 13 Feb 2024 09:22:44 +0100 Subject: [PATCH 128/545] fix(packages/sui-consents): update deps --- packages/sui-consents/package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/sui-consents/package.json b/packages/sui-consents/package.json index 133fc8b52..74ce96328 100644 --- a/packages/sui-consents/package.json +++ b/packages/sui-consents/package.json @@ -12,14 +12,14 @@ "author": "", "license": "MIT", "devDependencies": { - "@s-ui/js-compiler": "typescript-support", - "@s-ui/react-context": "typescript-support", + "@s-ui/js-compiler": "1", + "@s-ui/react-context": "1", "@testing-library/react": "11.2.5", "react": "17", "react-dom": "17" }, "peerDependencies": { - "@s-ui/react-context": "typescript-support", + "@s-ui/react-context": "1", "react": "16 || 17" } } From 038cfefd6e71cd2d42ca3e1ed6fef636c2172793 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Tue, 13 Feb 2024 09:22:47 +0100 Subject: [PATCH 129/545] fix(packages/sui-decorators): update deps --- packages/sui-decorators/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sui-decorators/package.json b/packages/sui-decorators/package.json index 1abaecc32..02dc788b9 100644 --- a/packages/sui-decorators/package.json +++ b/packages/sui-decorators/package.json @@ -11,7 +11,7 @@ "author": "", "license": "MIT", "devDependencies": { - "@s-ui/js-compiler": "typescript-support", + "@s-ui/js-compiler": "1", "sinon": "10.0.0" }, "browser": { From f57199fbdac2b3cc69d8403a0f109db44f69d312 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Tue, 13 Feb 2024 09:22:47 +0100 Subject: [PATCH 130/545] fix(packages/sui-domain): update deps --- packages/sui-domain/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sui-domain/package.json b/packages/sui-domain/package.json index 5db862bd3..8dca96d0f 100644 --- a/packages/sui-domain/package.json +++ b/packages/sui-domain/package.json @@ -17,7 +17,7 @@ "author": "", "license": "MIT", "devDependencies": { - "@s-ui/js-compiler": "typescript-support" + "@s-ui/js-compiler": "1" }, "dependencies": { "axios": "1.6.7" From a9d5998c4d9fd6e7031ac9b3bef5ea18e80be0e6 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Tue, 13 Feb 2024 09:22:47 +0100 Subject: [PATCH 131/545] fix(packages/sui-hoc): update deps --- packages/sui-hoc/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sui-hoc/package.json b/packages/sui-hoc/package.json index 418bcc322..c655d2112 100644 --- a/packages/sui-hoc/package.json +++ b/packages/sui-hoc/package.json @@ -13,7 +13,7 @@ "react": "16 || 17" }, "devDependencies": { - "@s-ui/js-compiler": "typescript-support" + "@s-ui/js-compiler": "1" }, "dependencies": { "intersection-observer": "0.10.0" From b670cc2513de7dc25c9356556ca1a29e87570001 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Tue, 13 Feb 2024 09:22:47 +0100 Subject: [PATCH 132/545] fix(packages/sui-js-compiler): update deps --- packages/sui-js-compiler/index.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/sui-js-compiler/index.js b/packages/sui-js-compiler/index.js index 34e36df71..cdf725efb 100755 --- a/packages/sui-js-compiler/index.js +++ b/packages/sui-js-compiler/index.js @@ -92,6 +92,8 @@ const {ignore: ignoreOpts = [], modern: isModern = false} = program.opts() const ignore = [...ignoreOpts, '**/__tests__'] ;(async () => { + console.time('[sui-js-compiler]') + const files = await fg('./src/**/*.{js,jsx,ts,tsx}', {ignore}) const filesToCompile = Promise.all( files.map(async file => { @@ -111,4 +113,6 @@ const ignore = [...ignoreOpts, '**/__tests__'] : Promise.resolve() await Promise.all([filesToCompile, typesToCompile]) + + console.timeEnd('[sui-js-compiler]') })() From d9e7f35d6fd0058912113b89bed042f3019ea645 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Tue, 13 Feb 2024 09:22:48 +0100 Subject: [PATCH 133/545] fix(packages/sui-mock): update deps --- packages/sui-mock/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sui-mock/package.json b/packages/sui-mock/package.json index 2c6172fe2..5733ca469 100644 --- a/packages/sui-mock/package.json +++ b/packages/sui-mock/package.json @@ -16,7 +16,7 @@ "author": "", "license": "MIT", "devDependencies": { - "@s-ui/js-compiler": "typescript-support" + "@s-ui/js-compiler": "1" }, "dependencies": { "msw": "1.2.1" From 3788e5e9f0d72d525276539397923659c27a26a0 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Tue, 13 Feb 2024 09:22:48 +0100 Subject: [PATCH 134/545] fix(packages/sui-react-context): update deps --- packages/sui-react-context/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sui-react-context/package.json b/packages/sui-react-context/package.json index 276384be2..3bcfcae32 100644 --- a/packages/sui-react-context/package.json +++ b/packages/sui-react-context/package.json @@ -12,7 +12,7 @@ "author": "", "license": "MIT", "devDependencies": { - "@s-ui/js-compiler": "typescript-support" + "@s-ui/js-compiler": "1" }, "dependencies": { "hoist-non-react-statics": "3.3.2" From cf7992d7ad2173c3c3ce5a8c219b31bb80ca5a21 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Tue, 13 Feb 2024 09:22:48 +0100 Subject: [PATCH 135/545] fix(packages/sui-react-head): update deps --- packages/sui-react-head/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sui-react-head/package.json b/packages/sui-react-head/package.json index 43843d51c..46589942b 100644 --- a/packages/sui-react-head/package.json +++ b/packages/sui-react-head/package.json @@ -15,7 +15,7 @@ "react-head": "3.4.0" }, "devDependencies": { - "@s-ui/js-compiler": "typescript-support", + "@s-ui/js-compiler": "1", "@testing-library/react": "11.1.0", "react": "17", "react-dom": "17" From d55aabc694c3a8fd70ff0cee49c6e26541406fa8 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Tue, 13 Feb 2024 09:22:48 +0100 Subject: [PATCH 136/545] fix(packages/sui-react-initial-props): update deps --- packages/sui-react-initial-props/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sui-react-initial-props/package.json b/packages/sui-react-initial-props/package.json index da7fe43d4..74f6d6920 100644 --- a/packages/sui-react-initial-props/package.json +++ b/packages/sui-react-initial-props/package.json @@ -17,7 +17,7 @@ "react": "16 || 17" }, "devDependencies": { - "@s-ui/js-compiler": "typescript-support", + "@s-ui/js-compiler": "1", "@s-ui/react-router": "1", "@testing-library/react": "11.1.0", "@types/node": "16", From abb824ba7bc913759abe5d102f4e3eeb6133a1a5 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Tue, 13 Feb 2024 09:22:49 +0100 Subject: [PATCH 137/545] fix(packages/sui-test-contract): update deps --- packages/sui-test-contract/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sui-test-contract/package.json b/packages/sui-test-contract/package.json index bfc4bb7c7..7abbaabb5 100644 --- a/packages/sui-test-contract/package.json +++ b/packages/sui-test-contract/package.json @@ -18,7 +18,7 @@ "dependencies": { "@pact-foundation/pact": "9.18.1", "@pactflow/pact-msw-adapter": "2.0.0", - "@s-ui/mock": "typescript-support", + "@s-ui/mock": "1", "commander": "8.3.0", "headers-polyfill": "3.1.2" }, From 2e05a91bf74dacc3abed49f506336c00bf71f5ca Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Tue, 13 Feb 2024 09:32:34 +0100 Subject: [PATCH 138/545] fix(packages/sui-react-head): fix type --- packages/sui-react-head/src/server.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/sui-react-head/src/server.ts b/packages/sui-react-head/src/server.ts index 5e1c19311..e5cd0f0e0 100644 --- a/packages/sui-react-head/src/server.ts +++ b/packages/sui-react-head/src/server.ts @@ -1,4 +1,3 @@ -import {type ReactElement} from 'react' import {renderToString} from 'react-dom/server' import {BODY_ATTRIBUTES_KEY} from './Body' @@ -36,7 +35,7 @@ const transformToString = (headObject: Record = {}): string => /** * Render the tags for the head */ -export function renderHeadTagsToString(headTags: Array>): { +export function renderHeadTagsToString(headTags: ComponentTag[]): { headString: string bodyAttributes: string htmlAttributes: string From d58414ca04d52a4d5fd9aa7f2deac80e607cc41f Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Tue, 13 Feb 2024 12:22:35 +0100 Subject: [PATCH 139/545] chore(Root): modify workflow execution condition --- .github/workflows/main.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index f52acd647..5b311f84b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -5,7 +5,6 @@ on: branches: [master] pull_request: branches: [master] - types: [labeled] jobs: checks: From 1ce2585af0a11d9dd11a21fc9cd9e7366a3122c3 Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Tue, 13 Feb 2024 14:48:21 +0100 Subject: [PATCH 140/545] feat(packages/sui-lint): Add send method to the reporter --- packages/sui-lint/bin/sui-lint-js.js | 2 +- packages/sui-lint/package.json | 2 +- packages/sui-lint/src/reporter.js | 8 +++++++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/sui-lint/bin/sui-lint-js.js b/packages/sui-lint/bin/sui-lint-js.js index bf7db12fc..87148995e 100755 --- a/packages/sui-lint/bin/sui-lint-js.js +++ b/packages/sui-lint/bin/sui-lint-js.js @@ -57,7 +57,7 @@ const baseConfig = { if (report) { debugger console.log('[sui-lint] Generating report and send it to DD') - Reporter.create().map(results) + await Reporter.create().map(results).send() } if (fix) { diff --git a/packages/sui-lint/package.json b/packages/sui-lint/package.json index aa29378b1..3df0fb71b 100644 --- a/packages/sui-lint/package.json +++ b/packages/sui-lint/package.json @@ -14,12 +14,12 @@ "author": "", "license": "MIT", "dependencies": { + "@adv-ui/logger": "^2.14.0", "@babel/core": "7.18.10", "@babel/eslint-parser": "7.18.9", "@babel/eslint-plugin": "7.18.10", "@s-ui/helpers": "1", "@typescript-eslint/eslint-plugin": "5.62.0", - "@adv-ui/logger": "2", "commander": "8.3.0", "eslint": "8.56.0", "eslint-config-prettier": "8.5.0", diff --git a/packages/sui-lint/src/reporter.js b/packages/sui-lint/src/reporter.js index 841fd31ff..6ee4cde63 100644 --- a/packages/sui-lint/src/reporter.js +++ b/packages/sui-lint/src/reporter.js @@ -21,7 +21,13 @@ class Reporter { totalFiles: results.length, ...stats } - debugger + } + + send() { + if(this.#data === undefined){ + throw new Error('[sui-lint] No data to send. Maybe you must call to map before') + } + } toJSON() { From 7d34092f0c083bdb8daefb3c254603196839b7b2 Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Wed, 14 Feb 2024 12:17:13 +0100 Subject: [PATCH 141/545] feat(packages/sui-lint): Add send method to the reporter --- packages/sui-lint/bin/sui-lint-js.js | 1 - packages/sui-lint/src/reporter.js | 15 +++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/packages/sui-lint/bin/sui-lint-js.js b/packages/sui-lint/bin/sui-lint-js.js index 87148995e..970e0070f 100755 --- a/packages/sui-lint/bin/sui-lint-js.js +++ b/packages/sui-lint/bin/sui-lint-js.js @@ -55,7 +55,6 @@ const baseConfig = { const results = await eslint.lintFiles(files) if (report) { - debugger console.log('[sui-lint] Generating report and send it to DD') await Reporter.create().map(results).send() } diff --git a/packages/sui-lint/src/reporter.js b/packages/sui-lint/src/reporter.js index 6ee4cde63..3304667fc 100644 --- a/packages/sui-lint/src/reporter.js +++ b/packages/sui-lint/src/reporter.js @@ -1,6 +1,8 @@ class Reporter { #data + static RULES_TO_SEND = ['sui/'] + static create() { return new Reporter() } @@ -21,12 +23,25 @@ class Reporter { totalFiles: results.length, ...stats } + + return this } send() { if(this.#data === undefined){ throw new Error('[sui-lint] No data to send. Maybe you must call to map before') } + debugger + const {totalFiles, ...rest} = this.#data + const statsEntries = Object.entries(rest).map(entry => { + const [rule, failedFiles] = entry + if(!Reporter.RULES_TO_SEND.some(whiteRule => rule.startsWith(whiteRule))) return false + + return [rule, (failedFiles.length * 100) / totalFiles] + }).filter(Boolean) + + debugger + const stats = Object.fromEntries(statsEntries) } From 173221d314accb50288931740eeca16c3cc5509d Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Wed, 21 Feb 2024 15:40:14 +0100 Subject: [PATCH 142/545] fix(packages/sui-bundler): fix resolve alias --- packages/sui-bundler/shared/resolve-alias.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/sui-bundler/shared/resolve-alias.js b/packages/sui-bundler/shared/resolve-alias.js index be8c5d198..8cdfb6192 100644 --- a/packages/sui-bundler/shared/resolve-alias.js +++ b/packages/sui-bundler/shared/resolve-alias.js @@ -22,8 +22,15 @@ const defaultPackagesToAlias = [ ] const createAliasPath = pkgName => { - const PWDNodeModules = path.join(PWD, './node_modules') - if (fs.existsSync(PWDNodeModules)) return path.resolve(path.join(PWDNodeModules, pkgName)) + const nodeModulesPath = path.join(PWD, './node_modules') + const parentNodeModulesPath = path.join(PWD, '../node_modules') + const pkgPath = nodeModulesPath && path.join(nodeModulesPath, pkgName) + + if (pkgPath && fs.existsSync(pkgPath)) { + return path.resolve(pkgPath) + } else if (fs.existsSync(parentNodeModulesPath)) { + return path.resolve(path.join(parentNodeModulesPath, pkgName)) + } try { return require.resolve(pkgName).replace(/\/index\.js$/, '') From 6d5766555a43810891ce4da66c7079854b10d1e6 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Thu, 22 Feb 2024 11:17:43 +0100 Subject: [PATCH 143/545] fix(packages/sui-test): support new project structure --- packages/sui-test/bin/karma/config.js | 8 +++++--- packages/sui-test/src/config.js | 7 ++++++- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/packages/sui-test/bin/karma/config.js b/packages/sui-test/bin/karma/config.js index 6a76d38b1..ac5f5f19a 100644 --- a/packages/sui-test/bin/karma/config.js +++ b/packages/sui-test/bin/karma/config.js @@ -4,7 +4,7 @@ const webpack = require('webpack') const path = require('path') const {envVars} = require('@s-ui/bundler/shared/index.js') const {getSWCConfig} = require('@s-ui/compiler-config') -const {bundlerConfig, clientConfig, isWorkspace} = require('../../src/config.js') +const {bundlerConfig, clientConfig, isWorkspace, isInnerPackage} = require('../../src/config.js') const {captureConsole = true} = clientConfig const {sep} = path @@ -14,7 +14,8 @@ const {sep} = path * Where the value is always an empty string. */ const environmentVariables = envVars(bundlerConfig.env) -const prefix = isWorkspace() ? '../' : './' +const standardPrefix = isWorkspace() ? '../' : './' +const prefix = isInnerPackage() ? '../../' : standardPrefix const pwd = process.env.PWD const swcConfig = getSWCConfig({isTypeScript: true}) const config = { @@ -45,7 +46,8 @@ const config = { alias: { 'react/jsx-dev-runtime': path.resolve(pwd, prefix, 'node_modules/react/jsx-dev-runtime.js'), 'react/jsx-runtime': path.resolve(pwd, prefix, 'node_modules/react/jsx-runtime.js'), - '@s-ui/react-context': path.resolve(path.join(pwd, prefix, 'node_modules/@s-ui/react-context')) + '@s-ui/react-context': path.resolve(path.join(pwd, prefix, 'node_modules/@s-ui/react-context')), + 'studio-utils': path.resolve(path.join(pwd, prefix, 'packages/ui/studio-utils')) }, modules: [path.resolve(process.cwd()), 'node_modules'], extensions: ['.mjs', '.js', '.jsx', '.ts', '.tsx', '.json'], diff --git a/packages/sui-test/src/config.js b/packages/sui-test/src/config.js index 53142e3fe..9f5c978a2 100644 --- a/packages/sui-test/src/config.js +++ b/packages/sui-test/src/config.js @@ -7,9 +7,14 @@ function isWorkspace() { return !workspaces && !isPrivate } +function isInnerPackage() { + return isWorkspace() && Boolean(process.cwd().match(/(.*)\/packages\/(.*)/)) +} + module.exports = { bundlerConfig, clientConfig, serverConfig, - isWorkspace + isWorkspace, + isInnerPackage } From ed4035f8b503c9c7eea41e762115fe4e6339ee51 Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Wed, 28 Feb 2024 15:06:51 +0100 Subject: [PATCH 144/545] feat(packages/sui-lint): Create RepositoryLinter and desactivate eslint-preset-sui rules --- packages/sui-lint/bin/sui-lint-js.js | 15 ++-- packages/sui-lint/bin/sui-lint-repository.js | 36 ++++++++++ packages/sui-lint/eslintrc.js | 23 +++---- packages/sui-lint/package.json | 4 +- packages/sui-lint/repository.config.js | 15 ++++ .../sui-lint/src/RepositoryLinter/Config.js | 23 +++++++ .../sui-lint/src/RepositoryLinter/Context.js | 68 +++++++++++++++++++ .../sui-lint/src/RepositoryLinter/Match.js | 36 ++++++++++ .../sui-lint/src/RepositoryLinter/Results.js | 60 ++++++++++++++++ .../sui-lint/src/RepositoryLinter/Runner.js | 13 ++++ .../sui-lint/src/RepositoryLinter/index.js | 24 +++++++ packages/sui-lint/src/reporter.js | 53 --------------- 12 files changed, 294 insertions(+), 76 deletions(-) create mode 100755 packages/sui-lint/bin/sui-lint-repository.js create mode 100644 packages/sui-lint/repository.config.js create mode 100644 packages/sui-lint/src/RepositoryLinter/Config.js create mode 100644 packages/sui-lint/src/RepositoryLinter/Context.js create mode 100644 packages/sui-lint/src/RepositoryLinter/Match.js create mode 100644 packages/sui-lint/src/RepositoryLinter/Results.js create mode 100644 packages/sui-lint/src/RepositoryLinter/Runner.js create mode 100644 packages/sui-lint/src/RepositoryLinter/index.js delete mode 100644 packages/sui-lint/src/reporter.js diff --git a/packages/sui-lint/bin/sui-lint-js.js b/packages/sui-lint/bin/sui-lint-js.js index 970e0070f..7a566d15a 100755 --- a/packages/sui-lint/bin/sui-lint-js.js +++ b/packages/sui-lint/bin/sui-lint-js.js @@ -7,18 +7,17 @@ const {checkFilesToLint, getFilesToLint, getGitIgnoredFiles, stageFilesIfRequire const {ESLint} = require('eslint') const config = require('../eslintrc.js') -const {Reporter} = require('../src/reporter.js') program .option('--add-fixes') .option('--staged') .option('--fix', 'fix automatically problems with js files') .option('--ignore-patterns ', 'Path patterns to ignore for linting') - .option('--report', 'Send results to DD using sui-logger') - .option('--pattern ', 'Send results to DD using sui-logger') + .option('--reporter ', 'Send results to DD using sui-logger') + .option('--pattern ', 'Patter of files to lint') .parse(process.argv) -const {addFixes, fix, ignorePatterns = [], staged, pattern, report} = program.opts() +const {addFixes, fix, ignorePatterns = [], staged, pattern, reporter} = program.opts() const {CI} = process.env const EXTENSIONS = ['js', 'jsx', 'ts', 'tsx'] @@ -54,9 +53,11 @@ const baseConfig = { const results = await eslint.lintFiles(files) - if (report) { - console.log('[sui-lint] Generating report and send it to DD') - await Reporter.create().map(results).send() + if (reporter) { + console.log('[sui-lint] Sending stats using the reporter ', reporter) + const {Reporter} = await import(reporter) + const reportered = await Reporter.create() + await reportered.map(results).send() } if (fix) { diff --git a/packages/sui-lint/bin/sui-lint-repository.js b/packages/sui-lint/bin/sui-lint-repository.js new file mode 100755 index 000000000..e8d845225 --- /dev/null +++ b/packages/sui-lint/bin/sui-lint-repository.js @@ -0,0 +1,36 @@ +#!/usr/bin/env node +/* eslint-disable no-console */ + +const program = require('commander') +const {RepositoryLinter} = require('../src/RepositoryLinter') + +program + .option('--reporter ', 'Send results to DD using sui-logger') + .option('--output-json ', 'Print messages errors as JSON. Default is a table') + .parse(process.argv) + +const {reporter, outputJson} = program.opts() + +;(async function main() { + const linter = RepositoryLinter.create() + const results = await linter.lint() + + if (outputJson) console.log('\n\n') + if (outputJson) { + results.logJSON() + } else { + results.logTable() + } + if (outputJson) console.log('\n\n') + + if (reporter) { + console.log('\n[sui-lint] Sending stats using the reporter\n\n', reporter) + const {RepositoryReporter} = await import(reporter) + const reportered = RepositoryReporter.create() + await reportered.map(results).send() + results.logMonitorings() + } +})().catch(error => { + process.exitCode = 1 + console.error('[sui-lint]', error) +}) diff --git a/packages/sui-lint/eslintrc.js b/packages/sui-lint/eslintrc.js index b4352b11c..7f089f0e2 100644 --- a/packages/sui-lint/eslintrc.js +++ b/packages/sui-lint/eslintrc.js @@ -175,8 +175,8 @@ module.exports = { 'react-hooks', 'simple-import-sort', 'jest', - 'jest-dom', - 'sui' + 'jest-dom' + // 'sui' ], rules: { ...REACT_RULES, @@ -199,28 +199,21 @@ module.exports = { 'prefer-regex-literals': RULES.WARNING, 'prettier/prettier': [RULES.ERROR, prettierOptions], 'simple-import-sort/imports': [RULES.WARNING, {groups: IMPORT_SORT_GROUPS}], - 'react/jsx-no-bind': RULES.OFF, - 'sui/factory-pattern': RULES.ERROR, - 'sui/serialize-deserialize': RULES.ERROR + 'react/jsx-no-bind': RULES.OFF + // 'sui/factory-pattern': RULES.ERROR, + // 'sui/serialize-deserialize': RULES.ERROR }, overrides: [ { files: ['**/*.+(ts|tsx)'], - extends: ['standard-with-typescript', 'standard-react', 'prettier'], - parser: '@typescript-eslint/parser', + extends: ['standard-with-typescript'], parserOptions: { project: './tsconfig.json' }, rules: { - 'import/extensions': RULES.OFF, 'no-return-await': RULES.OFF, - 'prettier/prettier': [RULES.ERROR, prettierOptions], - 'react/react-in-jsx-scope': RULES.OFF, - 'react/no-unused-prop-types': RULES.OFF, - '@typescript-eslint/explicit-function-return-type': [RULES.OFF, {allowTypedFunctionExpressions: false}], - 'chai-friendly/no-unused-expressions': RULES.ERROR, - '@typescript-eslint/no-unused-expressions': RULES.OFF, - '@typescript-eslint/return-await': RULES.OFF + 'prettier/prettier': RULES.OFF, + 'react/react-in-jsx-scope': RULES.OFF } }, { diff --git a/packages/sui-lint/package.json b/packages/sui-lint/package.json index 3df0fb71b..619497be1 100644 --- a/packages/sui-lint/package.json +++ b/packages/sui-lint/package.json @@ -14,13 +14,15 @@ "author": "", "license": "MIT", "dependencies": { - "@adv-ui/logger": "^2.14.0", "@babel/core": "7.18.10", "@babel/eslint-parser": "7.18.9", "@babel/eslint-plugin": "7.18.10", "@s-ui/helpers": "1", "@typescript-eslint/eslint-plugin": "5.62.0", "commander": "8.3.0", + "console-table-printer": "2.12.0", + "js-yaml": "4.1.0", + "fast-glob": "3.3.2", "eslint": "8.56.0", "eslint-config-prettier": "8.5.0", "eslint-config-standard": "17.0.0", diff --git a/packages/sui-lint/repository.config.js b/packages/sui-lint/repository.config.js new file mode 100644 index 000000000..a4f0bf935 --- /dev/null +++ b/packages/sui-lint/repository.config.js @@ -0,0 +1,15 @@ +const RULES = { + OFF: 0, + WARNING: 1, + ERROR: 2 +} + +module.exports = { + plugins: ['sui'], + rules: { + 'sui/node-version': RULES.WARNING, + 'sui/react-version': RULES.WARNING, + 'sui/package-lock': RULES.WARNING, + 'sui/github-action': RULES.WARNING + } +} diff --git a/packages/sui-lint/src/RepositoryLinter/Config.js b/packages/sui-lint/src/RepositoryLinter/Config.js new file mode 100644 index 000000000..6def2e744 --- /dev/null +++ b/packages/sui-lint/src/RepositoryLinter/Config.js @@ -0,0 +1,23 @@ +module.exports.Config = class Config { + static create() { + return new Config() + } + + async load() { + const repositoryConfig = require('../../repository.config.js') + + const rules = repositoryConfig.plugins.reduce((acc, pkg) => { + const pkgConfig = require(`lint-repository-${pkg}`) + const rulesEntries = Object.entries(pkgConfig.rules) + .map(([rule, handler]) => { + const key = `${pkg}/${rule}` + const level = repositoryConfig.rules[key] + return level ? [key, {handler, level}] : [] + }) + .filter(([key, value]) => key && value) + return {...acc, ...Object.fromEntries(rulesEntries)} + }, {}) + + return rules + } +} diff --git a/packages/sui-lint/src/RepositoryLinter/Context.js b/packages/sui-lint/src/RepositoryLinter/Context.js new file mode 100644 index 000000000..72ceebb04 --- /dev/null +++ b/packages/sui-lint/src/RepositoryLinter/Context.js @@ -0,0 +1,68 @@ +const {Runner} = require('./Runner') + +const EMPTY = 0 + +module.exports.Context = class Context { + #messages = [] + #monitorings = [] + #handler + #runner + + static create(level, handler, rule) { + return new Context(level, handler, rule, Runner.create()) + } + + constructor(level, handler, rule, runner) { + this.#handler = handler + this.#runner = runner + this.rule = rule + this.level = level + } + + run() { + const assertions = this.#handler.create(this) + const {missmatch = () => {}, ...restAssertions} = assertions + Object.entries(restAssertions).forEach(([key, fn]) => { + const matches = this.#runner.assertion(key) + if (matches.length === EMPTY) { + this._assertion = 'missmatch' + return missmatch(key) + } + this._assertion = key // We cant execute assertions in parallel + fn(matches) + }) + return this + } + + get messages() { + return this.#messages.map(opts => { + let message = this.#handler?.meta?.messages[opts.messageId] ?? opts.messageId + message = Object.entries(opts.data ?? {}).reduce((acc, [key, value]) => { + return acc.replaceAll(`{{${key}}}`, value) + }, message) + return {...opts, message, rule: this.rule, level: this.level} + }) + } + + get signal() { + const _signal = {rule: this.rule, level: this.level} + if (this.#monitorings.length === 0) return _signal + if (this.#monitorings.length === 1) return {..._signal, value: this.#monitorings[0].value} + + if (this.#handler.reduceMonitoring === undefined) + throw new Error(` + [RepositoryLinter Context#signal] If your has call to 'context.monitoring' more than one time in your rule. + You have to create a function 'reduceMonitoring' to be able reduce all of them to 1 value. + `) + + return {rule: this.rule, level: this.level, value: this.#handler?.reduceMonitoring(this.#monitorings)} + } + + report(opts) { + this.#messages.push(opts) + } + + monitoring(value, assertion) { + this.#monitorings.push({assertion: assertion ?? this._assertion, rule: this.rule, value, level: this.level}) + } +} diff --git a/packages/sui-lint/src/RepositoryLinter/Match.js b/packages/sui-lint/src/RepositoryLinter/Match.js new file mode 100644 index 000000000..4dbd19ff5 --- /dev/null +++ b/packages/sui-lint/src/RepositoryLinter/Match.js @@ -0,0 +1,36 @@ +const {extname} = require('path') +const yaml = require('js-yaml') +const fs = require('fs') + +module.exports.Match = class Match { + static create(path) { + const ext = extname(path) + if (!ext && fs.statSync(process.cwd() + '/' + path).isDirectory()) { + return new Match(path, undefined, undefined, true) + } + + let parsed + let raw + switch (ext) { + case '.json': + parsed = require(process.cwd() + '/' + path) + break + case '.yml': + case '.yaml': + parsed = yaml.load(fs.readFileSync(process.cwd() + '/' + path, 'utf8')) + break + default: + raw = fs.readFileSync(process.cwd() + '/' + path, 'utf8') + } + + return new Match(path, parsed, raw, false) + } + + constructor(path, parsed, raw, isDir) { + this.parsed = parsed + this.raw = raw + this.path = path + this.isDir = isDir + this.fullPath = process.cwd() + '/' + path + } +} diff --git a/packages/sui-lint/src/RepositoryLinter/Results.js b/packages/sui-lint/src/RepositoryLinter/Results.js new file mode 100644 index 000000000..079ff3ba6 --- /dev/null +++ b/packages/sui-lint/src/RepositoryLinter/Results.js @@ -0,0 +1,60 @@ +const dedent = require('string-dedent') +const {Table} = require('console-table-printer') + +const COLORS_BY_LEVEL = ['green', 'yellow', 'red'] + +module.exports.Results = class Results { + #executions + #messages + #monitorings + + static create(executions) { + return new Results(executions) + } + + constructor(executions) { + this.#executions = executions + this.#messages = executions.reduce((acc, ctxt) => [...acc, ...ctxt.messages], []) + this.#monitorings = executions.map(ctxt => ctxt.signal) + } + + get monitorings() { + return this.#monitorings + } + + logTable() { + if (this.#messages.length === 0) + return console.log(dedent` + 🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳 + 🥳 Your repository follow all our internal conventions 🥳 + 🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳 + `) + + const p = new Table({ + title: dedent` + Lint Respository messages (green=OFF, yellow=WARNING, red=ERROR) + ` + }) + this.#messages.forEach(msg => + p.addRow({rule: msg.rule, message: msg.message.replaceAll('\n', ' ')}, {color: COLORS_BY_LEVEL[msg.level]}) + ) + p.printTable() + } + + logJSON() { + return console.log(JSON.stringify(this.#messages, null, 2)) + } + + logMonitorings() { + if (this.#monitorings.length === 0) + return console.log(dedent` + + There is not signal to be send to DD. Use 'context.monitoring' to add signals at your execution + + `) + + const p = new Table({title: 'List of Signals that will be send to DD'}) + this.#monitorings.forEach(monitor => p.addRow(monitor)) + p.printTable() + } +} diff --git a/packages/sui-lint/src/RepositoryLinter/Runner.js b/packages/sui-lint/src/RepositoryLinter/Runner.js new file mode 100644 index 000000000..056d3204f --- /dev/null +++ b/packages/sui-lint/src/RepositoryLinter/Runner.js @@ -0,0 +1,13 @@ +const {Match} = require('./Match') +const fg = require('fast-glob') + +module.exports.Runner = class Runner { + static create() { + return new Runner() + } + + assertion(key) { + const files = fg.sync(key, {ignore: ['node_modules'], onlyFiles: false}) ?? [] + return files.map(Match.create) + } +} diff --git a/packages/sui-lint/src/RepositoryLinter/index.js b/packages/sui-lint/src/RepositoryLinter/index.js new file mode 100644 index 000000000..0399abc92 --- /dev/null +++ b/packages/sui-lint/src/RepositoryLinter/index.js @@ -0,0 +1,24 @@ +const {Config} = require('./Config') +const {Context} = require('./Context') +const {Results} = require('./Results') + +module.exports.RepositoryLinter = class RepositoryLinter { + #cofig + + static create() { + return new RepositoryLinter(Config.create()) + } + + constructor(config) { + this.#cofig = config + } + + async lint() { + const rules = await this.#cofig.load() + const executions = Object.entries(rules).map(([rule, {handler, level}]) => + Context.create(level, handler, rule).run() + ) + + return Results.create(executions) + } +} diff --git a/packages/sui-lint/src/reporter.js b/packages/sui-lint/src/reporter.js deleted file mode 100644 index 3304667fc..000000000 --- a/packages/sui-lint/src/reporter.js +++ /dev/null @@ -1,53 +0,0 @@ -class Reporter { - #data - - static RULES_TO_SEND = ['sui/'] - - static create() { - return new Reporter() - } - - map(results) { - const stats = results.reduce((rulesIDs, entry) => { - const repitedRulesFailed = entry.messages.map(message => message.ruleId) - const rulesFailed = new Set([...repitedRulesFailed]) - - rulesFailed.forEach(rule => { - rulesIDs[rule] = rulesIDs[rule] ?? [] - rulesIDs[rule].push(entry.filePath) - }) - return rulesIDs - }, {}) - - this.#data = { - totalFiles: results.length, - ...stats - } - - return this - } - - send() { - if(this.#data === undefined){ - throw new Error('[sui-lint] No data to send. Maybe you must call to map before') - } - debugger - const {totalFiles, ...rest} = this.#data - const statsEntries = Object.entries(rest).map(entry => { - const [rule, failedFiles] = entry - if(!Reporter.RULES_TO_SEND.some(whiteRule => rule.startsWith(whiteRule))) return false - - return [rule, (failedFiles.length * 100) / totalFiles] - }).filter(Boolean) - - debugger - const stats = Object.fromEntries(statsEntries) - - } - - toJSON() { - return {} - } -} - -module.exports.Reporter = Reporter From 75a3684fed86de9d2f3ddaa06c94d6d641b26740 Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Wed, 28 Feb 2024 15:07:36 +0100 Subject: [PATCH 145/545] refactor(packages/eslint-plugin-sui): eslint format --- .../eslint-plugin-sui/src/rules/function-named-parameters.js | 1 - packages/eslint-plugin-sui/src/rules/serialize-deserialize.js | 4 +--- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/packages/eslint-plugin-sui/src/rules/function-named-parameters.js b/packages/eslint-plugin-sui/src/rules/function-named-parameters.js index 99c991176..d7fcd975a 100644 --- a/packages/eslint-plugin-sui/src/rules/function-named-parameters.js +++ b/packages/eslint-plugin-sui/src/rules/function-named-parameters.js @@ -44,4 +44,3 @@ module.exports = { } } } - diff --git a/packages/eslint-plugin-sui/src/rules/serialize-deserialize.js b/packages/eslint-plugin-sui/src/rules/serialize-deserialize.js index fc3b6c7f5..82232e19a 100644 --- a/packages/eslint-plugin-sui/src/rules/serialize-deserialize.js +++ b/packages/eslint-plugin-sui/src/rules/serialize-deserialize.js @@ -75,9 +75,7 @@ module.exports = { const createProps = createProperties.map(i => i.key.name) const toJSONProps = toJSONProperties.map(i => i.key.name) - const missingToJSONProps = createProps.filter( - p => !toJSONProps.find(e => e === p) - ) + const missingToJSONProps = createProps.filter(p => !toJSONProps.find(e => e === p)) if (missingToJSONProps.length) { context.report({ node: toJSON, From 836098d30de4fe2f5420530bd10902d2d2d278cb Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Wed, 28 Feb 2024 15:08:50 +0100 Subject: [PATCH 146/545] feat(packages/lint-repository-sui): Create first version of the Golden Path Rules --- packages/lint-repository-sui/README.md | 0 packages/lint-repository-sui/package.json | 17 +++++ packages/lint-repository-sui/src/index.js | 18 +++++ .../src/rules/github-action.js | 71 +++++++++++++++++++ .../src/rules/node-version.js | 60 ++++++++++++++++ .../src/rules/package-lock.js | 34 +++++++++ .../src/rules/react-version.js | 62 ++++++++++++++++ 7 files changed, 262 insertions(+) create mode 100644 packages/lint-repository-sui/README.md create mode 100644 packages/lint-repository-sui/package.json create mode 100644 packages/lint-repository-sui/src/index.js create mode 100644 packages/lint-repository-sui/src/rules/github-action.js create mode 100644 packages/lint-repository-sui/src/rules/node-version.js create mode 100644 packages/lint-repository-sui/src/rules/package-lock.js create mode 100644 packages/lint-repository-sui/src/rules/react-version.js diff --git a/packages/lint-repository-sui/README.md b/packages/lint-repository-sui/README.md new file mode 100644 index 000000000..e69de29bb diff --git a/packages/lint-repository-sui/package.json b/packages/lint-repository-sui/package.json new file mode 100644 index 000000000..97c8dbcb5 --- /dev/null +++ b/packages/lint-repository-sui/package.json @@ -0,0 +1,17 @@ +{ + "name": "lint-repository-sui", + "version": "0.0.0", + "description": "Set of sui lint rules to lint a repository", + "keywords": [ + ], + "author": "Sui", + "main": "./src/index.js", + "exports": "./src/index.js", + "scripts": { + }, + "dependencies": { + }, + "devDependencies": { + } +} + diff --git a/packages/lint-repository-sui/src/index.js b/packages/lint-repository-sui/src/index.js new file mode 100644 index 000000000..3ec72031b --- /dev/null +++ b/packages/lint-repository-sui/src/index.js @@ -0,0 +1,18 @@ +const NodeVersion = require('./rules/node-version.js') +const ReactVersion = require('./rules/react-version.js') +const PackageLock = require('./rules/package-lock.js') +const GithubAction = require('./rules/github-action.js') + +// ------------------------------------------------------------------------------ +// Plugin Definition +// ------------------------------------------------------------------------------ + +// import all rules in lib/rules +module.exports = { + rules: { + 'node-version': NodeVersion, + 'react-version': ReactVersion, + 'package-lock': PackageLock, + 'github-action': GithubAction + } +} diff --git a/packages/lint-repository-sui/src/rules/github-action.js b/packages/lint-repository-sui/src/rules/github-action.js new file mode 100644 index 000000000..402f83a5a --- /dev/null +++ b/packages/lint-repository-sui/src/rules/github-action.js @@ -0,0 +1,71 @@ +const dedent = require('string-dedent') + +module.exports = { + meta: { + type: 'problem', + docs: { + description: 'Check that your repository have properly setup the GHA to CI/CD', + recommended: true, + url: null + }, + fixable: null, + schema: [], + messages: { + missingGithubFolder: dedent` + Every project needs to have a .github/worflows folder to be able to run CI/CD in GHA. + If you are not sure about how do it, please contact with Platform Web. + `, + missingMainWorkflow: dedent` + Every project needs to have a workflow to run on master. + If you are not sure about how do it, please contact with Platform Web. + `, + missingPRWorkflow: dedent` + Every project needs to have a workflow to run on every PR. + If you are not sure about how do it, please contact with Platform Web. + ` + } + }, + reduceMonitoring: function (monitorings) { + return monitorings.reduce((acc, signal) => { + return acc && signal.value + }, true) + }, + create: function (context) { + return { + '.github/_workflows': matches => { + context.monitoring(true) + }, + + '.github/**/main.yml': matches => { + context.monitoring(true) + }, + + '.github/**/pullrequest.yml': matches => { + context.monitoring(true) + }, + + missmatch: key => { + if (key === '.github/_workflows') { + context.report({ + messageId: 'missingGithubFolder' + }) + context.monitoring(false, '.github/workflows') + } + + if (key === '.github/**/main.yml') { + context.report({ + messageId: 'missingMainWorkflow' + }) + context.monitoring(false, '.github/**/main.yml') + } + + if (key === '.github/**/pullrequest.yml') { + context.report({ + messageId: 'missingPRWorkflow' + }) + context.monitoring(false, '.github/**/pullrequest.yml') + } + } + } + } +} diff --git a/packages/lint-repository-sui/src/rules/node-version.js b/packages/lint-repository-sui/src/rules/node-version.js new file mode 100644 index 000000000..0e53b0f68 --- /dev/null +++ b/packages/lint-repository-sui/src/rules/node-version.js @@ -0,0 +1,60 @@ +const dedent = require('string-dedent') + +module.exports = { + meta: { + type: 'problem', + docs: { + description: 'Check that your repository use the latest Node version', + recommended: true, + url: null + }, + fixable: null, + schema: [], + messages: { + moreThanOneNVMRC: dedent` + Your project has more than one .nvmrc file. That can be dangerous. + Please, use onle ONE in the root of your project. + If you are not sure about how do it, please contact with Platform Web. + `, + badNodeVersion: dedent` + Your current Node version is {{version}}. + Please be sure that your repository use the latest Node Version 20. + If you are not sure about how do it, please contact with Platform Web. + `, + noNMVRCFile: dedent` + Every project have to have a .npmrc file to define the node versión. + If you are not sure about how do it, please contact with Platform Web. + ` + } + }, + create: function (context) { + return { + '.nvmrc': matches => { + if (matches.length > 1) { + context.report({ + messageId: 'moreThanOneNVMRC' + }) + return context.monitoring(0) + } + + const [nvmrcMatch] = matches + const version = nvmrcMatch.raw.trim() + if (version !== '20') { + context.report({ + messageId: 'badNodeVersion', + data: {version} + }) + } + + context.monitoring(version) + }, + + missmatch: key => { + context.report({ + messageId: 'noNMVRCFile' + }) + context.monitoring(0) + } + } + } +} diff --git a/packages/lint-repository-sui/src/rules/package-lock.js b/packages/lint-repository-sui/src/rules/package-lock.js new file mode 100644 index 000000000..657fdaca0 --- /dev/null +++ b/packages/lint-repository-sui/src/rules/package-lock.js @@ -0,0 +1,34 @@ +const dedent = require('string-dedent') + +module.exports = { + meta: { + type: 'problem', + docs: { + description: 'Check that your repository have created a package-lock file', + recommended: true, + url: null + }, + fixable: null, + schema: [], + messages: { + missingPackageLock: dedent` + Every project needs to have a package-lock.json file to be used in CI/CD. + If you are not sure about how do it, please contact with Platform Web. + ` + } + }, + create: function (context) { + return { + 'package-lock.json': matches => { + context.monitoring(true) + }, + + missmatch: key => { + context.report({ + messageId: 'missingPackageLock' + }) + context.monitoring(false) + } + } + } +} diff --git a/packages/lint-repository-sui/src/rules/react-version.js b/packages/lint-repository-sui/src/rules/react-version.js new file mode 100644 index 000000000..38411eb7f --- /dev/null +++ b/packages/lint-repository-sui/src/rules/react-version.js @@ -0,0 +1,62 @@ +const dedent = require('string-dedent') + +module.exports = { + meta: { + type: 'problem', + docs: { + description: 'Check that your repository use the latest React version', + recommended: true, + url: null + }, + fixable: null, + schema: [], + messages: { + badReactVersion: dedent` + Please be sure that your repository use the latest React Version 18. + Your current version is {{version}}. + If you are not sure about how do it, please contact with Platform Web. + `, + missingReactDependencie: dedent` + Your project doesnt have installed React. + Please install at least the version 18. + If you are not sure about how do it, please contact with Platform Web. + `, + missingPackageLock: dedent` + To calculate the react version first we need to have a package-lock.json in the root + If you are not sure about how do it, please contact with Platform Web. + ` + } + }, + create: function (context) { + return { + 'package-lock.json': matches => { + const [packageLock] = matches + let version = packageLock?.parsed?.packages?.['node_modules/react']?.version + + if (!version) { + context.report({ + messageId: 'missingReactDependencie' + }) + return context.monitoring(0) + } + + version = version.split('.')[0] + + if (version !== '18') { + context.report({ + messageId: 'badReactVersion', + data: {version} + }) + } + return context.monitoring(version) + }, + + missmatch: key => { + context.report({ + messageId: 'missingPackageLock' + }) + context.monitoring(0) + } + } + } +} From 07293da8db0823911b3a6f7518d5de4fc1cbf24d Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Wed, 28 Feb 2024 15:47:50 +0100 Subject: [PATCH 147/545] fix(packages/sui-lint): Fix JSReporter import and plugins version --- packages/sui-lint/bin/sui-lint-js.js | 4 ++-- packages/sui-lint/bin/sui-lint.js | 2 +- packages/sui-lint/package.json | 2 ++ 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/sui-lint/bin/sui-lint-js.js b/packages/sui-lint/bin/sui-lint-js.js index 7a566d15a..91a826d04 100755 --- a/packages/sui-lint/bin/sui-lint-js.js +++ b/packages/sui-lint/bin/sui-lint-js.js @@ -55,8 +55,8 @@ const baseConfig = { if (reporter) { console.log('[sui-lint] Sending stats using the reporter ', reporter) - const {Reporter} = await import(reporter) - const reportered = await Reporter.create() + const {JSReporter} = await import(reporter) + const reportered = await JSReporter.create() await reportered.map(results).send() } diff --git a/packages/sui-lint/bin/sui-lint.js b/packages/sui-lint/bin/sui-lint.js index 78c90c0aa..61623f84c 100755 --- a/packages/sui-lint/bin/sui-lint.js +++ b/packages/sui-lint/bin/sui-lint.js @@ -4,6 +4,6 @@ const {version} = require('../package.json') program.version(version, ' --version') -program.command('js', 'lint javascript files').command('sass', 'lint sass files') +program.command('js', 'lint javascript files').command('sass', 'lint sass files').command('repository', 'lint repository structure') program.parse(process.argv) diff --git a/packages/sui-lint/package.json b/packages/sui-lint/package.json index 619497be1..1839a1dbe 100644 --- a/packages/sui-lint/package.json +++ b/packages/sui-lint/package.json @@ -39,6 +39,8 @@ "eslint-plugin-react": "7.30.1", "eslint-plugin-react-hooks": "4.6.0", "eslint-plugin-simple-import-sort": "7.0.0", + "eslint-plugin-sui": "1", + "lint-repository-sui": "1", "postcss-scss": "4.0.4", "prettier": "2.7.1", "stylelint": "14.11.0", From 36a3830f0d0056d0dbc01dbd526ce8261fdb723d Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Wed, 28 Feb 2024 16:01:07 +0100 Subject: [PATCH 148/545] fix(packages/lint-repository-sui): Fix typo in rule --- packages/lint-repository-sui/src/rules/github-action.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/lint-repository-sui/src/rules/github-action.js b/packages/lint-repository-sui/src/rules/github-action.js index 402f83a5a..5ace0db38 100644 --- a/packages/lint-repository-sui/src/rules/github-action.js +++ b/packages/lint-repository-sui/src/rules/github-action.js @@ -32,7 +32,7 @@ module.exports = { }, create: function (context) { return { - '.github/_workflows': matches => { + '.github/workflows': matches => { context.monitoring(true) }, @@ -45,7 +45,7 @@ module.exports = { }, missmatch: key => { - if (key === '.github/_workflows') { + if (key === '.github/workflows') { context.report({ messageId: 'missingGithubFolder' }) From 02cd409e73ac28dc21bda52c1229adcde74fc28d Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Wed, 28 Feb 2024 16:04:21 +0100 Subject: [PATCH 149/545] fix(packages/sui-lint): Fix version --- packages/sui-lint/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/sui-lint/package.json b/packages/sui-lint/package.json index 1839a1dbe..9f4181b1e 100644 --- a/packages/sui-lint/package.json +++ b/packages/sui-lint/package.json @@ -39,8 +39,8 @@ "eslint-plugin-react": "7.30.1", "eslint-plugin-react-hooks": "4.6.0", "eslint-plugin-simple-import-sort": "7.0.0", - "eslint-plugin-sui": "1", - "lint-repository-sui": "1", + "eslint-plugin-sui": "beta", + "lint-repository-sui": "beta", "postcss-scss": "4.0.4", "prettier": "2.7.1", "stylelint": "14.11.0", From e0fd01378a1f3c381d99802d1feb827d55f0eae3 Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Wed, 28 Feb 2024 16:15:01 +0100 Subject: [PATCH 150/545] fix(packages/sui-lint): Fix lint --- packages/sui-lint/bin/sui-lint.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/sui-lint/bin/sui-lint.js b/packages/sui-lint/bin/sui-lint.js index 61623f84c..1f2816297 100755 --- a/packages/sui-lint/bin/sui-lint.js +++ b/packages/sui-lint/bin/sui-lint.js @@ -4,6 +4,8 @@ const {version} = require('../package.json') program.version(version, ' --version') -program.command('js', 'lint javascript files').command('sass', 'lint sass files').command('repository', 'lint repository structure') +program.command('js', 'lint javascript files') + .command('sass', 'lint sass files') + .command('repository', 'lint repository structure') program.parse(process.argv) From 0836810202a370e600fd1cb25250a18595aa7e81 Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Wed, 28 Feb 2024 16:31:01 +0100 Subject: [PATCH 151/545] fix(packages/sui-lint): Fix lint --- packages/sui-lint/bin/sui-lint.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/sui-lint/bin/sui-lint.js b/packages/sui-lint/bin/sui-lint.js index 1f2816297..12bd4bbb9 100755 --- a/packages/sui-lint/bin/sui-lint.js +++ b/packages/sui-lint/bin/sui-lint.js @@ -4,7 +4,8 @@ const {version} = require('../package.json') program.version(version, ' --version') -program.command('js', 'lint javascript files') +program + .command('js', 'lint javascript files') .command('sass', 'lint sass files') .command('repository', 'lint repository structure') From 74751db22552649b6cfb94410c7e4be3194200ed Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Fri, 1 Mar 2024 12:09:57 +0100 Subject: [PATCH 152/545] test(packages/eslint-plugin-sui): Add more tests --- packages/eslint-plugin-sui/package.json | 3 +- .../tests/src/rules/factory-pattern.js | 37 ++++--- .../tests/src/rules/serialize-deserialize.js | 96 +++++++++++++++++++ 3 files changed, 122 insertions(+), 14 deletions(-) create mode 100644 packages/eslint-plugin-sui/tests/src/rules/serialize-deserialize.js diff --git a/packages/eslint-plugin-sui/package.json b/packages/eslint-plugin-sui/package.json index 99d36c4a1..bb67458ac 100644 --- a/packages/eslint-plugin-sui/package.json +++ b/packages/eslint-plugin-sui/package.json @@ -14,7 +14,7 @@ "lint": "npm-run-all \"lint:*\"", "lint:eslint-docs": "npm-run-all \"update:eslint-docs -- --check\"", "lint:js": "eslint .", - "test": "mocha tests --recursive", + "test": "npx sui-test server -P ./tests/**/*.js", "update:eslint-docs": "eslint-doc-generator" }, "dependencies": { @@ -22,6 +22,7 @@ "string-dedent": "^3.0.1" }, "devDependencies": { + "@s-ui/test": "^8.33.0", "eslint": "^8.19.0", "eslint-doc-generator": "^1.0.0", "eslint-plugin-eslint-plugin": "^5.0.0", diff --git a/packages/eslint-plugin-sui/tests/src/rules/factory-pattern.js b/packages/eslint-plugin-sui/tests/src/rules/factory-pattern.js index e04d54faa..9f961d232 100644 --- a/packages/eslint-plugin-sui/tests/src/rules/factory-pattern.js +++ b/packages/eslint-plugin-sui/tests/src/rules/factory-pattern.js @@ -1,30 +1,41 @@ -/** - * @fileoverview Ensure that our classes are using the convetion of has a static create method as factory. - * @author factory pattern - */ -'use strict' - -// ------------------------------------------------------------------------------ -// Requirements -// ------------------------------------------------------------------------------ +import dedent from 'dedent' import {RuleTester} from 'eslint' import rule from '../../../src/rules/factory-pattern' // ------------------------------------------------------------------------------ // Tests +// more info: https://eslint.org/docs/latest/integrate/nodejs-api#ruletester // ------------------------------------------------------------------------------ -const ruleTester = new RuleTester() +const ruleTester = new RuleTester({parserOptions: {ecmaVersion: 6}}) ruleTester.run('factory-pattern', rule, { valid: [ - // give me some code that won't trigger a warning + { + code: dedent` + class User { + static create() { return new User() } + } + ` + } ], invalid: [ { - code: "class Model { constructor() { this.name = 'John Doe' } }", - errors: [{message: 'Fill me in.', type: 'Me too'}] + code: dedent` + class Model { + constructor() { this.name = 'John Doe' } + }`, + errors: [ + { + message: dedent` + You have to define at least one static function that return an instance of your class. + Avoid to use the 'new' keyword directly in your code. + Use always a factory function + `, + type: 'ClassDeclaration' + } + ] } ] }) diff --git a/packages/eslint-plugin-sui/tests/src/rules/serialize-deserialize.js b/packages/eslint-plugin-sui/tests/src/rules/serialize-deserialize.js new file mode 100644 index 000000000..b9d952b68 --- /dev/null +++ b/packages/eslint-plugin-sui/tests/src/rules/serialize-deserialize.js @@ -0,0 +1,96 @@ +import dedent from 'dedent' +import {RuleTester} from 'eslint' + +import rule from '../../../src/rules/serialize-deserialize' + +// ------------------------------------------------------------------------------ +// Tests +// more info: https://eslint.org/docs/latest/integrate/nodejs-api#ruletester +// ------------------------------------------------------------------------------ + +const ruleTester = new RuleTester({parserOptions: {ecmaVersion: 6}}) +ruleTester.run('serialize-deserialize', rule, { + valid: [ + { + code: dedent` + class User { + static create({id, name}) { return new User(id, name) } + constructor(id, name) { + this.id = id + this.name = name + } + toJSON() { + return { + id: this.id, + name: this.name + } + } + } + ` + } + ], + + invalid: [ + { + code: dedent` + class User { + static create({id, name}) { return new User(id, name) } + constructor(id, name) { + this.id = id + this.name = name + } + toJSON() { + return this.id + } + } + `, + errors: [ + { + message: dedent`toJSON should return an object` + } + ] + }, + { + code: dedent` + class User { + constructor(id, name) { + this.id = id + this.name = name + } + toJSON() { + return { + Noid: this.id, + Noname: this.name + } + } + } + `, + errors: [ + { + message: dedent` + If your class has a 'toJSON' method. You have to define a 'static create' method too. + The output of the 'toJSON' should be the same as the input of your 'static create' method + ` + } + ] + }, + { + code: dedent` + class User { + static create({id, name}) { return new User(id, name) } + constructor(id, name) { + this.id = id + this.name = name + } + toJSON() { + return { + Noid: this.id, + Noname: this.name + } + } + } + `, + errors: [{message: 'Missing toJSON properties (id, name)'}] + } + ] +}) From d057f605e68a921a8018c790e7b76d3e94afbdde Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Fri, 1 Mar 2024 12:11:53 +0100 Subject: [PATCH 153/545] test(packages/lint-repository-sui): Add firsts tests Create a custom test runner following the ESLint API --- packages/lint-repository-sui/package.json | 8 +-- .../lint-repository-sui/test/TestHelpers.js | 64 +++++++++++++++++++ .../test/rules/github-actionSpec.js | 53 +++++++++++++++ .../test/rules/node-versionSpec.js | 44 +++++++++++++ .../test/rules/package-lockSpec.js | 25 ++++++++ .../test/rules/react-versionSpec.js | 44 +++++++++++++ 6 files changed, 233 insertions(+), 5 deletions(-) create mode 100644 packages/lint-repository-sui/test/TestHelpers.js create mode 100644 packages/lint-repository-sui/test/rules/github-actionSpec.js create mode 100644 packages/lint-repository-sui/test/rules/node-versionSpec.js create mode 100644 packages/lint-repository-sui/test/rules/package-lockSpec.js create mode 100644 packages/lint-repository-sui/test/rules/react-versionSpec.js diff --git a/packages/lint-repository-sui/package.json b/packages/lint-repository-sui/package.json index 97c8dbcb5..46455cfa6 100644 --- a/packages/lint-repository-sui/package.json +++ b/packages/lint-repository-sui/package.json @@ -2,16 +2,14 @@ "name": "lint-repository-sui", "version": "0.0.0", "description": "Set of sui lint rules to lint a repository", - "keywords": [ - ], + "keywords": [], "author": "Sui", "main": "./src/index.js", "exports": "./src/index.js", "scripts": { - }, - "dependencies": { + "test": "npx sui-test server" }, "devDependencies": { + "@s-ui/test": "^8.33.0" } } - diff --git a/packages/lint-repository-sui/test/TestHelpers.js b/packages/lint-repository-sui/test/TestHelpers.js new file mode 100644 index 000000000..ce34922d1 --- /dev/null +++ b/packages/lint-repository-sui/test/TestHelpers.js @@ -0,0 +1,64 @@ +import {expect} from 'chai' +import {stub} from 'sinon' +export class RuleTester { + id + handler + + static create(id, handler) { + return new RuleTester(id, handler) + } + + constructor(id, handler) { + this.handler = handler + this.id = id + } + + run(assertions) { + const instance = this + + Object.entries(assertions).forEach(([kind, tests]) => { + describe(`[${kind.toUpperCase()}] ${this.id}`, function () { + beforeEach(function () { + this.ctxt = { + report: stub(), + monitoring: stub() + } + }) + afterEach(function () { + this.ctxt.report.reset() + this.ctxt.monitoring.reset() + }) + + tests.forEach(assertion => { + const {monitoring, report, name, ...rest} = assertion + Object.entries(rest).forEach(([FSPattern, matches]) => { + it(name ?? FSPattern, function () { + instance.handler.create(this.ctxt)[FSPattern](matches) + monitoring && expect(this.ctxt.monitoring.calledWith(monitoring)).to.be.eql(true) + report && expect(instance._formatMessages(this.ctxt.report)).to.be.eqls(report) + expect(true).to.be.eql(true) + }) + }) + }) + }) + }) + } + + _formatMessages(stub) { + const report = stub.firstCall.firstArg + return Object.entries(report.data ?? {}).reduce((acc, [key, value]) => { + return acc.replaceAll(`{{${key}}}`, value) + }, this.handler.meta.messages[report.messageId]) + } +} + +export class MatchStub { + static create({parsed, raw}) { + return new MatchStub(parsed, raw) + } + + constructor(parsed, raw) { + this.parsed = parsed + this.raw = raw + } +} diff --git a/packages/lint-repository-sui/test/rules/github-actionSpec.js b/packages/lint-repository-sui/test/rules/github-actionSpec.js new file mode 100644 index 000000000..17f4ecb5e --- /dev/null +++ b/packages/lint-repository-sui/test/rules/github-actionSpec.js @@ -0,0 +1,53 @@ +import dedent from 'dedent' + +import handler from '../../src/rules/github-action.js' +import {RuleTester} from '../TestHelpers' + +RuleTester.create('github-action', handler).run({ + valid: [ + { + '.github/workflows': [], + name: 'The porject has define a worflows folder', + monitoring: true + }, + { + '.github/**/main.yml': [], + name: 'The porject has define a worflow for the main branch', + monitoring: true + }, + { + '.github/**/pullrequest.yml': [], + name: 'The porject has define a worflow for PRs', + monitoring: true + } + ], + invalid: [ + { + missmatch: '.github/workflows', + name: 'The porject has NOT define a worflows folder', + report: dedent` + Every project needs to have a .github/worflows folder to be able to run CI/CD in GHA. + If you are not sure about how do it, please contact with Platform Web. + `, + monitoring: false + }, + { + missmatch: '.github/**/main.yml', + name: 'The porject has NOT define a worflow for the main branch', + report: dedent` + Every project needs to have a workflow to run on master. + If you are not sure about how do it, please contact with Platform Web. + `, + monitoring: false + }, + { + missmatch: '.github/**/pullrequest.yml', + name: 'The porject has NOT define a worflow for PRs', + report: dedent` + Every project needs to have a workflow to run on every PR. + If you are not sure about how do it, please contact with Platform Web. + `, + monitoring: false + } + ] +}) diff --git a/packages/lint-repository-sui/test/rules/node-versionSpec.js b/packages/lint-repository-sui/test/rules/node-versionSpec.js new file mode 100644 index 000000000..380bfcbd2 --- /dev/null +++ b/packages/lint-repository-sui/test/rules/node-versionSpec.js @@ -0,0 +1,44 @@ +import dedent from 'dedent' + +import handler from '../../src/rules/node-version.js' +import {MatchStub, RuleTester} from '../TestHelpers' + +RuleTester.create('node-version', handler).run({ + valid: [ + { + '.nvmrc': [MatchStub.create({raw: '20'})], + name: 'nvmrc Exists and has setup the version 20', + monitoring: '20' + } + ], + invalid: [ + { + '.nvmrc': [MatchStub.create({raw: '20'}), MatchStub.create({raw: 17})], + name: 'Exits more than one nvmrc file', + report: dedent` + Your project has more than one .nvmrc file. That can be dangerous. + Please, use onle ONE in the root of your project. + If you are not sure about how do it, please contact with Platform Web. + `, + monitoring: 0 + }, + { + '.nvmrc': [MatchStub.create({raw: '16'})], + name: 'Exits more than one nvmrc file', + report: dedent` + Your current Node version is 16. + Please be sure that your repository use the latest Node Version 20. + If you are not sure about how do it, please contact with Platform Web. + `, + monitoring: 0 + }, + { + missmatch: '', + report: dedent` + Every project have to have a .npmrc file to define the node versión. + If you are not sure about how do it, please contact with Platform Web. + `, + monitoring: 0 + } + ] +}) diff --git a/packages/lint-repository-sui/test/rules/package-lockSpec.js b/packages/lint-repository-sui/test/rules/package-lockSpec.js new file mode 100644 index 000000000..dd3cc21a0 --- /dev/null +++ b/packages/lint-repository-sui/test/rules/package-lockSpec.js @@ -0,0 +1,25 @@ +import dedent from 'dedent' + +import handler from '../../src/rules/package-lock.js' +import {RuleTester} from '../TestHelpers' + +RuleTester.create('package-lock', handler).run({ + valid: [ + { + 'package-lock.json': [], + name: 'Project has package-lock.json in the root folder', + monitoring: true + } + ], + invalid: [ + { + missmatch: '', + name: 'Project doesnt has package-lock in the root folder', + report: dedent` + Every project needs to have a package-lock.json file to be used in CI/CD. + If you are not sure about how do it, please contact with Platform Web. + `, + monitoring: false + } + ] +}) diff --git a/packages/lint-repository-sui/test/rules/react-versionSpec.js b/packages/lint-repository-sui/test/rules/react-versionSpec.js new file mode 100644 index 000000000..a7a50ca49 --- /dev/null +++ b/packages/lint-repository-sui/test/rules/react-versionSpec.js @@ -0,0 +1,44 @@ +import dedent from 'dedent' + +import handler from '../../src/rules/react-version.js' +import {MatchStub, RuleTester} from '../TestHelpers' + +RuleTester.create('react-version', handler).run({ + valid: [ + { + 'package-lock.json': [MatchStub.create({parsed: {packages: {'node_modules/react': {version: '18.0.0'}}}})], + name: 'React 18 installed', + monitoring: '18' + } + ], + invalid: [ + { + 'package-lock.json': [MatchStub.create({parsed: {packages: {}}})], + name: 'React not installed', + report: dedent` + Your project doesnt have installed React. + Please install at least the version 18. + If you are not sure about how do it, please contact with Platform Web. + `, + monitoring: 0 + }, + { + 'package-lock.json': [MatchStub.create({parsed: {packages: {'node_modules/react': {version: '17.0.0'}}}})], + name: 'React wrong version', + report: dedent` + Please be sure that your repository use the latest React Version 18. + Your current version is 17. + If you are not sure about how do it, please contact with Platform Web. + `, + monitoring: '17' + }, + { + missmatch: '', + report: dedent` + To calculate the react version first we need to have a package-lock.json in the root + If you are not sure about how do it, please contact with Platform Web. + `, + monitoring: 0 + } + ] +}) From 3a8a6d58955d7f3d4fce97db4cd03223d079ac81 Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Fri, 1 Mar 2024 14:43:16 +0100 Subject: [PATCH 154/545] test(packages/sui-lint): Add firsts tests to the RepositoryLinter --- .../sui-lint/src/RepositoryLinter/Config.js | 12 ++- .../sui-lint/src/RepositoryLinter/Match.js | 22 ++++- .../sui-lint/src/RepositoryLinter/Results.js | 19 ++-- .../sui-lint/src/RepositoryLinter/Runner.js | 12 ++- .../sui-lint/src/RepositoryLinter/index.js | 4 +- .../test/RepositoryLinter/ConfigSpec.js | 38 +++++++ .../test/RepositoryLinter/MatchSpec.js | 99 +++++++++++++++++++ .../test/RepositoryLinter/ResultsSpec.js | 44 +++++++++ .../test/RepositoryLinter/indexSpec.js | 0 9 files changed, 229 insertions(+), 21 deletions(-) create mode 100644 packages/sui-lint/test/RepositoryLinter/ConfigSpec.js create mode 100644 packages/sui-lint/test/RepositoryLinter/MatchSpec.js create mode 100644 packages/sui-lint/test/RepositoryLinter/ResultsSpec.js create mode 100644 packages/sui-lint/test/RepositoryLinter/indexSpec.js diff --git a/packages/sui-lint/src/RepositoryLinter/Config.js b/packages/sui-lint/src/RepositoryLinter/Config.js index 6def2e744..57d09eaf5 100644 --- a/packages/sui-lint/src/RepositoryLinter/Config.js +++ b/packages/sui-lint/src/RepositoryLinter/Config.js @@ -4,10 +4,10 @@ module.exports.Config = class Config { } async load() { - const repositoryConfig = require('../../repository.config.js') + const repositoryConfig = this.requireConfig() const rules = repositoryConfig.plugins.reduce((acc, pkg) => { - const pkgConfig = require(`lint-repository-${pkg}`) + const pkgConfig = this.requirePkg(pkg) const rulesEntries = Object.entries(pkgConfig.rules) .map(([rule, handler]) => { const key = `${pkg}/${rule}` @@ -20,4 +20,12 @@ module.exports.Config = class Config { return rules } + + requireConfig() { + return require('../../repository.config.js') + } + + requirePkg(pkg) { + return require(`lint-repository-${pkg}`) + } } diff --git a/packages/sui-lint/src/RepositoryLinter/Match.js b/packages/sui-lint/src/RepositoryLinter/Match.js index 4dbd19ff5..73c8b6e4a 100644 --- a/packages/sui-lint/src/RepositoryLinter/Match.js +++ b/packages/sui-lint/src/RepositoryLinter/Match.js @@ -2,10 +2,19 @@ const {extname} = require('path') const yaml = require('js-yaml') const fs = require('fs') -module.exports.Match = class Match { +class CustomFileReader { + static create() { return new CustomFileReader() } // eslint-disable-line + + isDirectory(path) { return fs.statSync(process.cwd() + '/' + path).isDirectory() } // eslint-disable-line + parseYML(path) { return yaml.load(fs.readFileSync(process.cwd() + '/' + path, 'utf8')) } // eslint-disable-line + parseJSON(path) { return require(process.cwd() + '/' + path) } // eslint-disable-line + raw(path) { return fs.readFileSync(process.cwd() + '/' + path, 'utf8') } // eslint-disable-line +} + +class Match { static create(path) { const ext = extname(path) - if (!ext && fs.statSync(process.cwd() + '/' + path).isDirectory()) { + if (!ext && CustomFileReader.create().isDirectory(path)) { return new Match(path, undefined, undefined, true) } @@ -13,14 +22,14 @@ module.exports.Match = class Match { let raw switch (ext) { case '.json': - parsed = require(process.cwd() + '/' + path) + parsed = CustomFileReader.create().parseJSON(path) break case '.yml': case '.yaml': - parsed = yaml.load(fs.readFileSync(process.cwd() + '/' + path, 'utf8')) + parsed = CustomFileReader.create().parseYML(path) break default: - raw = fs.readFileSync(process.cwd() + '/' + path, 'utf8') + raw = CustomFileReader.create().raw(path) } return new Match(path, parsed, raw, false) @@ -34,3 +43,6 @@ module.exports.Match = class Match { this.fullPath = process.cwd() + '/' + path } } + +module.exports.CustomFileReader = CustomFileReader +module.exports.Match = Match diff --git a/packages/sui-lint/src/RepositoryLinter/Results.js b/packages/sui-lint/src/RepositoryLinter/Results.js index 079ff3ba6..6b837ca75 100644 --- a/packages/sui-lint/src/RepositoryLinter/Results.js +++ b/packages/sui-lint/src/RepositoryLinter/Results.js @@ -8,6 +8,12 @@ module.exports.Results = class Results { #messages #monitorings + static HAPPY_MESSAGE = dedent` + 🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳 + 🥳 Your repository follow all our internal conventions 🥳 + 🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳 + ` + static create(executions) { return new Results(executions) } @@ -22,13 +28,10 @@ module.exports.Results = class Results { return this.#monitorings } + log(msg) { console.log(msg) } // eslint-disable-line + logTable() { - if (this.#messages.length === 0) - return console.log(dedent` - 🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳 - 🥳 Your repository follow all our internal conventions 🥳 - 🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳 - `) + if (this.#messages.length === 0) return this.log(Results.HAPPY_MESSAGE) const p = new Table({ title: dedent` @@ -42,12 +45,12 @@ module.exports.Results = class Results { } logJSON() { - return console.log(JSON.stringify(this.#messages, null, 2)) + return this.log(JSON.stringify(this.#messages, null, 2)) } logMonitorings() { if (this.#monitorings.length === 0) - return console.log(dedent` + return this.log(dedent` There is not signal to be send to DD. Use 'context.monitoring' to add signals at your execution diff --git a/packages/sui-lint/src/RepositoryLinter/Runner.js b/packages/sui-lint/src/RepositoryLinter/Runner.js index 056d3204f..8c3ffc81f 100644 --- a/packages/sui-lint/src/RepositoryLinter/Runner.js +++ b/packages/sui-lint/src/RepositoryLinter/Runner.js @@ -1,13 +1,17 @@ const {Match} = require('./Match') -const fg = require('fast-glob') +const fastGlob = require('fast-glob') module.exports.Runner = class Runner { - static create() { - return new Runner() + static create(fg) { + return new Runner(fg ?? fastGlob) + } + + constructor(fg) { + this.fg = fg } assertion(key) { - const files = fg.sync(key, {ignore: ['node_modules'], onlyFiles: false}) ?? [] + const files = this.fg.sync(key, {ignore: ['node_modules'], onlyFiles: false}) ?? [] return files.map(Match.create) } } diff --git a/packages/sui-lint/src/RepositoryLinter/index.js b/packages/sui-lint/src/RepositoryLinter/index.js index 0399abc92..0178a72d3 100644 --- a/packages/sui-lint/src/RepositoryLinter/index.js +++ b/packages/sui-lint/src/RepositoryLinter/index.js @@ -5,8 +5,8 @@ const {Results} = require('./Results') module.exports.RepositoryLinter = class RepositoryLinter { #cofig - static create() { - return new RepositoryLinter(Config.create()) + static create(config) { + return new RepositoryLinter(config ?? Config.create()) } constructor(config) { diff --git a/packages/sui-lint/test/RepositoryLinter/ConfigSpec.js b/packages/sui-lint/test/RepositoryLinter/ConfigSpec.js new file mode 100644 index 000000000..2960d8d0a --- /dev/null +++ b/packages/sui-lint/test/RepositoryLinter/ConfigSpec.js @@ -0,0 +1,38 @@ +import {expect} from 'chai' +import {stub} from 'sinon' + +import {Config} from '../../src/RepositoryLinter/Config.js' + +describe('Config', function () { + beforeEach(function () { + this.requireConfigStub = stub(Config.prototype, 'requireConfig') + this.requirePkgStub = stub(Config.prototype, 'requirePkg') + }) + + afterEach(function () { + this.requireConfigStub.reset() + this.requirePkgStub.reset() + }) + + it('Should return a rules object', async function () { + // Given + const handler = { + meta: {messages: {badVersion: 'Your react version is not 20'}}, + create: function () {} + } + this.requireConfigStub.returns({ + plugins: ['tester'], + rules: { + 'tester/react-version': 1 + } + }) + this.requirePkgStub.returns({rules: {'react-version': handler}}) + + // When + const rulesLoaded = await Config.create().load() + + // Then + expect(this.requirePkgStub.calledWith('tester')).to.be.eql(true) + expect(rulesLoaded).to.be.eqls({'tester/react-version': {handler, level: 1}}) + }) +}) diff --git a/packages/sui-lint/test/RepositoryLinter/MatchSpec.js b/packages/sui-lint/test/RepositoryLinter/MatchSpec.js new file mode 100644 index 000000000..5db0c60c7 --- /dev/null +++ b/packages/sui-lint/test/RepositoryLinter/MatchSpec.js @@ -0,0 +1,99 @@ +import {expect} from 'chai' +import {stub} from 'sinon' + +import {CustomFileReader, Match} from '../../src/RepositoryLinter/Match.js' + +describe('Match', function () { + beforeEach(function () { + this.isDirStub = stub(CustomFileReader.prototype, 'isDirectory') + + this.parseYMLStub = stub(CustomFileReader.prototype, 'parseYML') + this.parseJSONStub = stub(CustomFileReader.prototype, 'parseJSON') + this.rawStub = stub(CustomFileReader.prototype, 'raw') + }) + + afterEach(function () { + this.isDirStub.restore() + + this.parseYMLStub.restore() + this.parseJSONStub.restore() + this.rawStub.restore() + }) + + it('Should detect directories', function () { + // Given + this.isDirStub.returns(true) + + // When + const match = Match.create('/dir/path') + + // Then + expect(match.isDir).to.be.eqls(true) + }) + + it('Should detect files w/out extensions', function () { + // Given + this.isDirStub.returns(false) + this.rawStub.returns('20') + + // When + const match = Match.create('/dir/path') + + // Then + expect(match.isDir).to.be.eqls(false) + expect(this.rawStub.calledWith('/dir/path')).to.be.eql(true) + }) + + it('Should parse JSON files', function () { + // Given + this.isDirStub.returns(false) + this.parseJSONStub.returns({a: 1}) + + // When + const match = Match.create('/dir/file.json') + + // Then + expect(match.parsed).to.be.eqls({a: 1}) + expect(this.parseJSONStub.calledWith('/dir/file.json')).to.be.eql(true) + }) + + it('Should parse yml files', function () { + // Given + this.isDirStub.returns(false) + this.parseYMLStub.returns({a: 1}) + + // When + const match = Match.create('/dir/file.yml') + + // Then + expect(match.parsed).to.be.eqls({a: 1}) + expect(this.parseYMLStub.calledWith('/dir/file.yml')).to.be.eql(true) + }) + + it('Should parse yaml files', function () { + // Given + this.isDirStub.returns(false) + this.parseYMLStub.returns({a: 1}) + + // When + const match = Match.create('/dir/file.yaml') + + // Then + expect(match.parsed).to.be.eqls({a: 1}) + expect(this.parseYMLStub.calledWith('/dir/file.yaml')).to.be.eql(true) + }) + + it('Should read unkown files', function () { + // Given + this.isDirStub.returns(false) + this.rawStub.returns('Hello') + + // When + const match = Match.create('/dir/file.txt') + + // Then + expect(match.raw).to.be.eqls('Hello') + expect(match.parsed).to.be.eqls(undefined) + expect(this.rawStub.calledWith('/dir/file.txt')).to.be.eql(true) + }) +}) diff --git a/packages/sui-lint/test/RepositoryLinter/ResultsSpec.js b/packages/sui-lint/test/RepositoryLinter/ResultsSpec.js new file mode 100644 index 000000000..311911f23 --- /dev/null +++ b/packages/sui-lint/test/RepositoryLinter/ResultsSpec.js @@ -0,0 +1,44 @@ +import {expect} from 'chai' +import {Table} from 'console-table-printer' +import {stub} from 'sinon' + +import {Results} from '../../src/RepositoryLinter/Results.js' + +describe('Results', function () { + beforeEach(function () { + this.addRowStub = stub(Table.prototype, 'addRow') + this.printTableStub = stub(Table.prototype, 'printTable') + + this.logStub = stub(Results.prototype, 'log') + }) + + afterEach(function () { + this.addRowStub.restore() + this.printTableStub.restore() + + this.logStub.restore() + }) + + it('Should print Happy Message it there is not messages', function () { + const executions = [ + { + messages: [], + signal: false + } + ] + Results.create(executions).logTable() + + expect(this.logStub.calledWith(Results.HAPPY_MESSAGE)).to.be.eq(true) + }) + + it('Should print a table with all the messages', function () { + const executions = [ + {messages: [{rule: 'tester/node-version', message: 'Node version fail', level: 1}], signal: 12}, + {messages: [{rule: 'tester/react-version', message: 'React version fail', level: 2}], signal: 17}, + {messages: [], signal: true} + ] + Results.create(executions).logTable() + + // expect(this.logStub.calledWith(Results.HAPPY_MESSAGE)).to.be.eq(true) + }) +}) diff --git a/packages/sui-lint/test/RepositoryLinter/indexSpec.js b/packages/sui-lint/test/RepositoryLinter/indexSpec.js new file mode 100644 index 000000000..e69de29bb From 0727399c1a348b3e2d16a0973a82953701683403 Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Mon, 4 Mar 2024 14:45:04 +0100 Subject: [PATCH 155/545] test(packages/sui-lint): Add more unit test for the RepositoryLinter package --- .../sui-lint/src/RepositoryLinter/Context.js | 15 +- .../sui-lint/src/RepositoryLinter/Match.js | 4 + .../test/RepositoryLinter/ContextSpec.js | 206 ++++++++++++++++++ .../test/RepositoryLinter/ResultsSpec.js | 41 +++- .../test/RepositoryLinter/RunnerSpec.js | 26 +++ .../test/RepositoryLinter/indexSpec.js | 0 6 files changed, 284 insertions(+), 8 deletions(-) create mode 100644 packages/sui-lint/test/RepositoryLinter/ContextSpec.js create mode 100644 packages/sui-lint/test/RepositoryLinter/RunnerSpec.js delete mode 100644 packages/sui-lint/test/RepositoryLinter/indexSpec.js diff --git a/packages/sui-lint/src/RepositoryLinter/Context.js b/packages/sui-lint/src/RepositoryLinter/Context.js index 72ceebb04..e04f769f6 100644 --- a/packages/sui-lint/src/RepositoryLinter/Context.js +++ b/packages/sui-lint/src/RepositoryLinter/Context.js @@ -8,8 +8,13 @@ module.exports.Context = class Context { #handler #runner - static create(level, handler, rule) { - return new Context(level, handler, rule, Runner.create()) + static MISSING_REDUCER_MONITORING_MSG = ` + [RepositoryLinter Context#signal] If your has call to 'context.monitoring' more than one time in your rule. + You have to create a function 'reduceMonitoring' to be able reduce all of them to 1 value. + ` + + static create(level, handler, rule, runner) { + return new Context(level, handler, rule, runner ?? Runner.create()) } constructor(level, handler, rule, runner) { @@ -49,11 +54,7 @@ module.exports.Context = class Context { if (this.#monitorings.length === 0) return _signal if (this.#monitorings.length === 1) return {..._signal, value: this.#monitorings[0].value} - if (this.#handler.reduceMonitoring === undefined) - throw new Error(` - [RepositoryLinter Context#signal] If your has call to 'context.monitoring' more than one time in your rule. - You have to create a function 'reduceMonitoring' to be able reduce all of them to 1 value. - `) + if (this.#handler.reduceMonitoring === undefined) throw new Error(Context.MISSING_REDUCER_MONITORING_MSG) return {rule: this.rule, level: this.level, value: this.#handler?.reduceMonitoring(this.#monitorings)} } diff --git a/packages/sui-lint/src/RepositoryLinter/Match.js b/packages/sui-lint/src/RepositoryLinter/Match.js index 73c8b6e4a..ffb826b85 100644 --- a/packages/sui-lint/src/RepositoryLinter/Match.js +++ b/packages/sui-lint/src/RepositoryLinter/Match.js @@ -12,6 +12,10 @@ class CustomFileReader { } class Match { + static empty() { + return new Match(undefined, undefined, undefined, false) + } + static create(path) { const ext = extname(path) if (!ext && CustomFileReader.create().isDirectory(path)) { diff --git a/packages/sui-lint/test/RepositoryLinter/ContextSpec.js b/packages/sui-lint/test/RepositoryLinter/ContextSpec.js new file mode 100644 index 000000000..fd640bcd4 --- /dev/null +++ b/packages/sui-lint/test/RepositoryLinter/ContextSpec.js @@ -0,0 +1,206 @@ +import {expect} from 'chai' +import {spy, stub} from 'sinon' + +import {Context} from '../../src/RepositoryLinter/Context.js' +import {Match} from '../../src/RepositoryLinter/Match.js' + +const LEVELS = { + OFF: 0, + WARNING: 1, + ERROR: 2 +} + +describe('Context', function () { + beforeEach(function () { + this.reportSpy = spy(Context.prototype, 'report') + this.monitoringSpy = spy(Context.prototype, 'monitoring') + this.runnerStub = {assertion: stub()} + this.handlerStub = { + meta: {messages: {badVersion: 'Message for your bad version'}}, + __assertionStub: stub(), + __missmatchStub: stub(), + create() { + return { + 'package.json': this.__assertionStub, + missmatch: this.__missmatchStub + } + } + } + + this.handlerInnerStub = { + meta: {messages: {badVersion: 'Message for your bad version', badKey: 'Message for bad {{key}}'}}, + create(context) { + return { + 'package.json': matches => { + context.report({messageId: 'badVersion'}) + context.monitoring(true) + }, + missmatch: key => { + context.report({messageId: 'badKey', data: {key}}) + context.monitoring(false) + } + } + } + } + + this.handlerReducerMonitoringStub = { + meta: {messages: {badVersion: 'Message for your bad version', badKey: 'Message for bad {{key}}'}}, + reduceMonitoring: stub(), + create(context) { + return { + 'package.json': matches => { + context.monitoring(true) + context.monitoring(false) + } + } + } + } + }) + + afterEach(function () { + this.handlerStub.__assertionStub.reset() + this.handlerStub.__missmatchStub.reset() + + this.monitoringSpy.restore() + this.reportSpy.restore() + + this.runnerStub.assertion.reset() + + this.handlerReducerMonitoringStub.reduceMonitoring?.reset() + }) + + it('Should call to the assertions in the handler when there is Match', function () { + // Given + const emptyMatch = Match.empty() + this.runnerStub.assertion.returns([emptyMatch]) + + // When + Context.create(LEVELS.WARNING, this.handlerStub, 'tests/node-version', this.runnerStub).run() + + // Then + expect(this.handlerStub.__assertionStub.firstCall.firstArg).to.be.instanceof(Array) + expect(this.handlerStub.__assertionStub.firstCall.firstArg[0]).to.be.eql(emptyMatch) + }) + + it('Should call to the missmatch in the handler when there is not Match with the "failing" key', function () { + // Given + this.runnerStub.assertion.returns([]) + + // When + Context.create(LEVELS.WARNING, this.handlerStub, 'tests/node-version', this.runnerStub).run() + + // Then + expect(this.handlerStub.__assertionStub.firstCall).to.be.eql(null) + expect(this.handlerStub.__missmatchStub.firstCall.firstArg).to.be.eql('package.json') + }) + + it('Should create new monitorings and messages from assertion function', function () { + // Given + this.runnerStub.assertion.returns([Match.empty()]) + + // When + Context.create(LEVELS.WARNING, this.handlerInnerStub, 'tests/node-version', this.runnerStub).run() + + // Then + expect(this.reportSpy.firstCall.firstArg).to.be.eql({messageId: 'badVersion'}) + expect(this.monitoringSpy.firstCall.firstArg).to.be.eql(true) + }) + + it('Should create new monitorings and messages from missmatch function', function () { + // Given + this.runnerStub.assertion.returns([]) + + // When + Context.create(LEVELS.WARNING, this.handlerInnerStub, 'tests/node-version', this.runnerStub).run() + + // Then + expect(this.reportSpy.firstCall.firstArg).to.be.eql({messageId: 'badKey', data: {key: 'package.json'}}) + expect(this.monitoringSpy.firstCall.firstArg).to.be.eql(false) + }) + + it('Should properly format the messages', function () { + // Given + this.runnerStub.assertion.returns([]) + + // When + const context = Context.create(LEVELS.WARNING, this.handlerInnerStub, 'tests/node-version', this.runnerStub).run() + + // Then + expect(context.messages).to.be.eql([ + { + rule: 'tests/node-version', + message: 'Message for bad package.json', + level: 1, + messageId: 'badKey', + data: {key: 'package.json'} + } + ]) + }) + + it('Should properly format the monitoring', function () { + // Given + this.runnerStub.assertion.returns([Match.empty()]) + + // When + const context = Context.create(LEVELS.WARNING, this.handlerInnerStub, 'tests/node-version', this.runnerStub).run() + + // Then + expect(context.signal).to.be.eql({ + rule: 'tests/node-version', + value: true, + level: 1 + }) + }) + + it('Should require a reduceMonitoring function when there are more than one monitor', function () { + // Given + this.runnerStub.assertion.returns([Match.empty()]) + this.handlerReducerMonitoringStub.reduceMonitoring.returns(false) + + // When + const context = Context.create( + LEVELS.WARNING, + this.handlerReducerMonitoringStub, + 'tests/node-version', + this.runnerStub + ).run() + + // Then + expect(context.signal).to.be.eql({ + rule: 'tests/node-version', + value: false, + level: 1 + }) + expect(this.handlerReducerMonitoringStub.reduceMonitoring.firstCall.firstArg).to.be.eql([ + { + assertion: 'package.json', + rule: 'tests/node-version', + value: true, + level: 1 + }, + { + assertion: 'package.json', + rule: 'tests/node-version', + value: false, + level: 1 + } + ]) + }) + + it('Should throw an exception if the reduceMonitoring function is undefined', function () { + // Given + this.runnerStub.assertion.returns([Match.empty()]) + delete this.handlerReducerMonitoringStub.reduceMonitoring + + // When + const context = Context.create( + LEVELS.WARNING, + this.handlerReducerMonitoringStub, + 'tests/node-version', + this.runnerStub + ).run() + + // Then + expect(() => context.signal).to.be.throw(Context.MISSING_REDUCER_MONITORING_MSG) + }) +}) diff --git a/packages/sui-lint/test/RepositoryLinter/ResultsSpec.js b/packages/sui-lint/test/RepositoryLinter/ResultsSpec.js index 311911f23..ad9cc62c5 100644 --- a/packages/sui-lint/test/RepositoryLinter/ResultsSpec.js +++ b/packages/sui-lint/test/RepositoryLinter/ResultsSpec.js @@ -39,6 +39,45 @@ describe('Results', function () { ] Results.create(executions).logTable() - // expect(this.logStub.calledWith(Results.HAPPY_MESSAGE)).to.be.eq(true) + expect(this.addRowStub.firstCall.firstArg).to.be.eql({rule: 'tester/node-version', message: 'Node version fail'}) + expect(this.addRowStub.firstCall.lastArg).to.be.eql({color: 'yellow'}) + + expect(this.addRowStub.secondCall.firstArg).to.be.eql({rule: 'tester/react-version', message: 'React version fail'}) + expect(this.addRowStub.secondCall.lastArg).to.be.eql({color: 'red'}) + }) + + it('Should print a table with all the monitorings', function () { + const executions = [ + {messages: [{rule: 'tester/node-version', message: 'Node version fail', level: 1}], signal: 12}, + {messages: [{rule: 'tester/react-version', message: 'React version fail', level: 2}], signal: 17}, + {messages: [], signal: true} + ] + Results.create(executions).logMonitorings() + + expect(this.addRowStub.firstCall.firstArg).to.be.eql(12) + expect(this.addRowStub.secondCall.firstArg).to.be.eql(17) + expect(this.addRowStub.thirdCall.firstArg).to.be.eql(true) + }) + + it('Should print a JSON output', function () { + const executions = [ + {messages: [{rule: 'tester/node-version', message: 'Node version fail', level: 1}], signal: 12}, + {messages: [{rule: 'tester/react-version', message: 'React version fail', level: 2}], signal: 17}, + {messages: [], signal: true} + ] + Results.create(executions).logJSON() + + expect( + this.logStub.calledWith( + JSON.stringify( + [ + {rule: 'tester/node-version', message: 'Node version fail', level: 1}, + {rule: 'tester/react-version', message: 'React version fail', level: 2} + ], + null, + 2 + ) + ) + ).to.be.eq(true) }) }) diff --git a/packages/sui-lint/test/RepositoryLinter/RunnerSpec.js b/packages/sui-lint/test/RepositoryLinter/RunnerSpec.js new file mode 100644 index 000000000..5d69d1e58 --- /dev/null +++ b/packages/sui-lint/test/RepositoryLinter/RunnerSpec.js @@ -0,0 +1,26 @@ +import {expect} from 'chai' +import {stub} from 'sinon' + +import {Match} from '../../src/RepositoryLinter/Match' +import {Runner} from '../../src/RepositoryLinter/Runner.js' + +describe('Runner', function () { + beforeEach(function () { + this.syncStub = stub() + this.matchCreateStub = stub(Match, 'create') + }) + + afterEach(function () { + this.syncStub.reset() + this.matchCreateStub.restore() + }) + + it('Should return a list of matches', function () { + this.syncStub.returns(['path/file.json']) + + Runner.create({sync: this.syncStub}).assertion('**/*.json') + + expect(this.matchCreateStub.firstCall.firstArg).to.be.eql('path/file.json') + expect(this.syncStub.firstCall.firstArg).to.be.eql('**/*.json') + }) +}) diff --git a/packages/sui-lint/test/RepositoryLinter/indexSpec.js b/packages/sui-lint/test/RepositoryLinter/indexSpec.js deleted file mode 100644 index e69de29bb..000000000 From 1fa5d6730d9714e52cfb57a97d883f45ab15083c Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Mon, 4 Mar 2024 17:20:23 +0100 Subject: [PATCH 156/545] test(packages/eslint-plugin-sui): move to test/server folder --- .../test/server/rules/factory-pattern.js | 41 ++++++++ .../server/rules/serialize-deserialize.js | 96 +++++++++++++++++++ 2 files changed, 137 insertions(+) create mode 100644 packages/eslint-plugin-sui/test/server/rules/factory-pattern.js create mode 100644 packages/eslint-plugin-sui/test/server/rules/serialize-deserialize.js diff --git a/packages/eslint-plugin-sui/test/server/rules/factory-pattern.js b/packages/eslint-plugin-sui/test/server/rules/factory-pattern.js new file mode 100644 index 000000000..9f961d232 --- /dev/null +++ b/packages/eslint-plugin-sui/test/server/rules/factory-pattern.js @@ -0,0 +1,41 @@ +import dedent from 'dedent' +import {RuleTester} from 'eslint' + +import rule from '../../../src/rules/factory-pattern' + +// ------------------------------------------------------------------------------ +// Tests +// more info: https://eslint.org/docs/latest/integrate/nodejs-api#ruletester +// ------------------------------------------------------------------------------ + +const ruleTester = new RuleTester({parserOptions: {ecmaVersion: 6}}) +ruleTester.run('factory-pattern', rule, { + valid: [ + { + code: dedent` + class User { + static create() { return new User() } + } + ` + } + ], + + invalid: [ + { + code: dedent` + class Model { + constructor() { this.name = 'John Doe' } + }`, + errors: [ + { + message: dedent` + You have to define at least one static function that return an instance of your class. + Avoid to use the 'new' keyword directly in your code. + Use always a factory function + `, + type: 'ClassDeclaration' + } + ] + } + ] +}) diff --git a/packages/eslint-plugin-sui/test/server/rules/serialize-deserialize.js b/packages/eslint-plugin-sui/test/server/rules/serialize-deserialize.js new file mode 100644 index 000000000..b9d952b68 --- /dev/null +++ b/packages/eslint-plugin-sui/test/server/rules/serialize-deserialize.js @@ -0,0 +1,96 @@ +import dedent from 'dedent' +import {RuleTester} from 'eslint' + +import rule from '../../../src/rules/serialize-deserialize' + +// ------------------------------------------------------------------------------ +// Tests +// more info: https://eslint.org/docs/latest/integrate/nodejs-api#ruletester +// ------------------------------------------------------------------------------ + +const ruleTester = new RuleTester({parserOptions: {ecmaVersion: 6}}) +ruleTester.run('serialize-deserialize', rule, { + valid: [ + { + code: dedent` + class User { + static create({id, name}) { return new User(id, name) } + constructor(id, name) { + this.id = id + this.name = name + } + toJSON() { + return { + id: this.id, + name: this.name + } + } + } + ` + } + ], + + invalid: [ + { + code: dedent` + class User { + static create({id, name}) { return new User(id, name) } + constructor(id, name) { + this.id = id + this.name = name + } + toJSON() { + return this.id + } + } + `, + errors: [ + { + message: dedent`toJSON should return an object` + } + ] + }, + { + code: dedent` + class User { + constructor(id, name) { + this.id = id + this.name = name + } + toJSON() { + return { + Noid: this.id, + Noname: this.name + } + } + } + `, + errors: [ + { + message: dedent` + If your class has a 'toJSON' method. You have to define a 'static create' method too. + The output of the 'toJSON' should be the same as the input of your 'static create' method + ` + } + ] + }, + { + code: dedent` + class User { + static create({id, name}) { return new User(id, name) } + constructor(id, name) { + this.id = id + this.name = name + } + toJSON() { + return { + Noid: this.id, + Noname: this.name + } + } + } + `, + errors: [{message: 'Missing toJSON properties (id, name)'}] + } + ] +}) From 503b1bd7d080944995efa192a241f063c1e53cfa Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Mon, 4 Mar 2024 17:31:43 +0100 Subject: [PATCH 157/545] test(packages/lint-repository-sui): move tests to server --- .../test/{ => server}/rules/github-actionSpec.js | 2 +- .../test/{ => server}/rules/node-versionSpec.js | 2 +- .../test/{ => server}/rules/package-lockSpec.js | 2 +- .../test/{ => server}/rules/react-versionSpec.js | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) rename packages/lint-repository-sui/test/{ => server}/rules/github-actionSpec.js (96%) rename packages/lint-repository-sui/test/{ => server}/rules/node-versionSpec.js (95%) rename packages/lint-repository-sui/test/{ => server}/rules/package-lockSpec.js (92%) rename packages/lint-repository-sui/test/{ => server}/rules/react-versionSpec.js (95%) diff --git a/packages/lint-repository-sui/test/rules/github-actionSpec.js b/packages/lint-repository-sui/test/server/rules/github-actionSpec.js similarity index 96% rename from packages/lint-repository-sui/test/rules/github-actionSpec.js rename to packages/lint-repository-sui/test/server/rules/github-actionSpec.js index 17f4ecb5e..9f78fd091 100644 --- a/packages/lint-repository-sui/test/rules/github-actionSpec.js +++ b/packages/lint-repository-sui/test/server/rules/github-actionSpec.js @@ -1,7 +1,7 @@ import dedent from 'dedent' import handler from '../../src/rules/github-action.js' -import {RuleTester} from '../TestHelpers' +import {RuleTester} from '../../TestHelpers.js' RuleTester.create('github-action', handler).run({ valid: [ diff --git a/packages/lint-repository-sui/test/rules/node-versionSpec.js b/packages/lint-repository-sui/test/server/rules/node-versionSpec.js similarity index 95% rename from packages/lint-repository-sui/test/rules/node-versionSpec.js rename to packages/lint-repository-sui/test/server/rules/node-versionSpec.js index 380bfcbd2..31a46d51a 100644 --- a/packages/lint-repository-sui/test/rules/node-versionSpec.js +++ b/packages/lint-repository-sui/test/server/rules/node-versionSpec.js @@ -1,7 +1,7 @@ import dedent from 'dedent' import handler from '../../src/rules/node-version.js' -import {MatchStub, RuleTester} from '../TestHelpers' +import {MatchStub, RuleTester} from '../../TestHelpers.js' RuleTester.create('node-version', handler).run({ valid: [ diff --git a/packages/lint-repository-sui/test/rules/package-lockSpec.js b/packages/lint-repository-sui/test/server/rules/package-lockSpec.js similarity index 92% rename from packages/lint-repository-sui/test/rules/package-lockSpec.js rename to packages/lint-repository-sui/test/server/rules/package-lockSpec.js index dd3cc21a0..533ccafe7 100644 --- a/packages/lint-repository-sui/test/rules/package-lockSpec.js +++ b/packages/lint-repository-sui/test/server/rules/package-lockSpec.js @@ -1,7 +1,7 @@ import dedent from 'dedent' import handler from '../../src/rules/package-lock.js' -import {RuleTester} from '../TestHelpers' +import {RuleTester} from '../../TestHelpers.js' RuleTester.create('package-lock', handler).run({ valid: [ diff --git a/packages/lint-repository-sui/test/rules/react-versionSpec.js b/packages/lint-repository-sui/test/server/rules/react-versionSpec.js similarity index 95% rename from packages/lint-repository-sui/test/rules/react-versionSpec.js rename to packages/lint-repository-sui/test/server/rules/react-versionSpec.js index a7a50ca49..f890d9a39 100644 --- a/packages/lint-repository-sui/test/rules/react-versionSpec.js +++ b/packages/lint-repository-sui/test/server/rules/react-versionSpec.js @@ -1,7 +1,7 @@ import dedent from 'dedent' import handler from '../../src/rules/react-version.js' -import {MatchStub, RuleTester} from '../TestHelpers' +import {MatchStub, RuleTester} from '../../TestHelpers.js' RuleTester.create('react-version', handler).run({ valid: [ From 29e81668de6b8e6b80782201f5a46ebf25b6fdb6 Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Mon, 4 Mar 2024 17:32:34 +0100 Subject: [PATCH 158/545] test(packages/sui-lint): move to server folder --- .../sui-lint/test/{ => server}/RepositoryLinter/ConfigSpec.js | 0 .../sui-lint/test/{ => server}/RepositoryLinter/ContextSpec.js | 0 packages/sui-lint/test/{ => server}/RepositoryLinter/MatchSpec.js | 0 .../sui-lint/test/{ => server}/RepositoryLinter/ResultsSpec.js | 0 .../sui-lint/test/{ => server}/RepositoryLinter/RunnerSpec.js | 0 5 files changed, 0 insertions(+), 0 deletions(-) rename packages/sui-lint/test/{ => server}/RepositoryLinter/ConfigSpec.js (100%) rename packages/sui-lint/test/{ => server}/RepositoryLinter/ContextSpec.js (100%) rename packages/sui-lint/test/{ => server}/RepositoryLinter/MatchSpec.js (100%) rename packages/sui-lint/test/{ => server}/RepositoryLinter/ResultsSpec.js (100%) rename packages/sui-lint/test/{ => server}/RepositoryLinter/RunnerSpec.js (100%) diff --git a/packages/sui-lint/test/RepositoryLinter/ConfigSpec.js b/packages/sui-lint/test/server/RepositoryLinter/ConfigSpec.js similarity index 100% rename from packages/sui-lint/test/RepositoryLinter/ConfigSpec.js rename to packages/sui-lint/test/server/RepositoryLinter/ConfigSpec.js diff --git a/packages/sui-lint/test/RepositoryLinter/ContextSpec.js b/packages/sui-lint/test/server/RepositoryLinter/ContextSpec.js similarity index 100% rename from packages/sui-lint/test/RepositoryLinter/ContextSpec.js rename to packages/sui-lint/test/server/RepositoryLinter/ContextSpec.js diff --git a/packages/sui-lint/test/RepositoryLinter/MatchSpec.js b/packages/sui-lint/test/server/RepositoryLinter/MatchSpec.js similarity index 100% rename from packages/sui-lint/test/RepositoryLinter/MatchSpec.js rename to packages/sui-lint/test/server/RepositoryLinter/MatchSpec.js diff --git a/packages/sui-lint/test/RepositoryLinter/ResultsSpec.js b/packages/sui-lint/test/server/RepositoryLinter/ResultsSpec.js similarity index 100% rename from packages/sui-lint/test/RepositoryLinter/ResultsSpec.js rename to packages/sui-lint/test/server/RepositoryLinter/ResultsSpec.js diff --git a/packages/sui-lint/test/RepositoryLinter/RunnerSpec.js b/packages/sui-lint/test/server/RepositoryLinter/RunnerSpec.js similarity index 100% rename from packages/sui-lint/test/RepositoryLinter/RunnerSpec.js rename to packages/sui-lint/test/server/RepositoryLinter/RunnerSpec.js From 424b443d9d2d9ce6f3a1fa55b089dc7d23a95734 Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Mon, 4 Mar 2024 17:33:43 +0100 Subject: [PATCH 159/545] test(packages/eslint-plugin-sui): remove tests folder --- .../tests/src/rules/factory-pattern.js | 41 -------- .../tests/src/rules/serialize-deserialize.js | 96 ------------------- 2 files changed, 137 deletions(-) delete mode 100644 packages/eslint-plugin-sui/tests/src/rules/factory-pattern.js delete mode 100644 packages/eslint-plugin-sui/tests/src/rules/serialize-deserialize.js diff --git a/packages/eslint-plugin-sui/tests/src/rules/factory-pattern.js b/packages/eslint-plugin-sui/tests/src/rules/factory-pattern.js deleted file mode 100644 index 9f961d232..000000000 --- a/packages/eslint-plugin-sui/tests/src/rules/factory-pattern.js +++ /dev/null @@ -1,41 +0,0 @@ -import dedent from 'dedent' -import {RuleTester} from 'eslint' - -import rule from '../../../src/rules/factory-pattern' - -// ------------------------------------------------------------------------------ -// Tests -// more info: https://eslint.org/docs/latest/integrate/nodejs-api#ruletester -// ------------------------------------------------------------------------------ - -const ruleTester = new RuleTester({parserOptions: {ecmaVersion: 6}}) -ruleTester.run('factory-pattern', rule, { - valid: [ - { - code: dedent` - class User { - static create() { return new User() } - } - ` - } - ], - - invalid: [ - { - code: dedent` - class Model { - constructor() { this.name = 'John Doe' } - }`, - errors: [ - { - message: dedent` - You have to define at least one static function that return an instance of your class. - Avoid to use the 'new' keyword directly in your code. - Use always a factory function - `, - type: 'ClassDeclaration' - } - ] - } - ] -}) diff --git a/packages/eslint-plugin-sui/tests/src/rules/serialize-deserialize.js b/packages/eslint-plugin-sui/tests/src/rules/serialize-deserialize.js deleted file mode 100644 index b9d952b68..000000000 --- a/packages/eslint-plugin-sui/tests/src/rules/serialize-deserialize.js +++ /dev/null @@ -1,96 +0,0 @@ -import dedent from 'dedent' -import {RuleTester} from 'eslint' - -import rule from '../../../src/rules/serialize-deserialize' - -// ------------------------------------------------------------------------------ -// Tests -// more info: https://eslint.org/docs/latest/integrate/nodejs-api#ruletester -// ------------------------------------------------------------------------------ - -const ruleTester = new RuleTester({parserOptions: {ecmaVersion: 6}}) -ruleTester.run('serialize-deserialize', rule, { - valid: [ - { - code: dedent` - class User { - static create({id, name}) { return new User(id, name) } - constructor(id, name) { - this.id = id - this.name = name - } - toJSON() { - return { - id: this.id, - name: this.name - } - } - } - ` - } - ], - - invalid: [ - { - code: dedent` - class User { - static create({id, name}) { return new User(id, name) } - constructor(id, name) { - this.id = id - this.name = name - } - toJSON() { - return this.id - } - } - `, - errors: [ - { - message: dedent`toJSON should return an object` - } - ] - }, - { - code: dedent` - class User { - constructor(id, name) { - this.id = id - this.name = name - } - toJSON() { - return { - Noid: this.id, - Noname: this.name - } - } - } - `, - errors: [ - { - message: dedent` - If your class has a 'toJSON' method. You have to define a 'static create' method too. - The output of the 'toJSON' should be the same as the input of your 'static create' method - ` - } - ] - }, - { - code: dedent` - class User { - static create({id, name}) { return new User(id, name) } - constructor(id, name) { - this.id = id - this.name = name - } - toJSON() { - return { - Noid: this.id, - Noname: this.name - } - } - } - `, - errors: [{message: 'Missing toJSON properties (id, name)'}] - } - ] -}) From 69c7d64af536cddca4a783febd308a55fd94f4ba Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Mon, 4 Mar 2024 17:53:24 +0100 Subject: [PATCH 160/545] test(packages/eslint-plugin-sui): fix import path --- packages/eslint-plugin-sui/test/server/rules/factory-pattern.js | 2 +- .../test/server/rules/serialize-deserialize.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/eslint-plugin-sui/test/server/rules/factory-pattern.js b/packages/eslint-plugin-sui/test/server/rules/factory-pattern.js index 9f961d232..458134e3d 100644 --- a/packages/eslint-plugin-sui/test/server/rules/factory-pattern.js +++ b/packages/eslint-plugin-sui/test/server/rules/factory-pattern.js @@ -1,7 +1,7 @@ import dedent from 'dedent' import {RuleTester} from 'eslint' -import rule from '../../../src/rules/factory-pattern' +import rule from '../../../src/rules/factory-pattern.js' // ------------------------------------------------------------------------------ // Tests diff --git a/packages/eslint-plugin-sui/test/server/rules/serialize-deserialize.js b/packages/eslint-plugin-sui/test/server/rules/serialize-deserialize.js index b9d952b68..e42234289 100644 --- a/packages/eslint-plugin-sui/test/server/rules/serialize-deserialize.js +++ b/packages/eslint-plugin-sui/test/server/rules/serialize-deserialize.js @@ -1,7 +1,7 @@ import dedent from 'dedent' import {RuleTester} from 'eslint' -import rule from '../../../src/rules/serialize-deserialize' +import rule from '../../../src/rules/serialize-deserialize.js' // ------------------------------------------------------------------------------ // Tests From 6ea3cd7edd2f2dc713f90dd65c5eeacb867831c3 Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Mon, 4 Mar 2024 17:53:58 +0100 Subject: [PATCH 161/545] test(packages/lint-repository-sui): fix path import --- .../lint-repository-sui/test/server/rules/github-actionSpec.js | 2 +- .../lint-repository-sui/test/server/rules/node-versionSpec.js | 2 +- .../lint-repository-sui/test/server/rules/package-lockSpec.js | 2 +- .../lint-repository-sui/test/server/rules/react-versionSpec.js | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/lint-repository-sui/test/server/rules/github-actionSpec.js b/packages/lint-repository-sui/test/server/rules/github-actionSpec.js index 9f78fd091..67f21665a 100644 --- a/packages/lint-repository-sui/test/server/rules/github-actionSpec.js +++ b/packages/lint-repository-sui/test/server/rules/github-actionSpec.js @@ -1,6 +1,6 @@ import dedent from 'dedent' -import handler from '../../src/rules/github-action.js' +import handler from '../../../src/rules/github-action.js' import {RuleTester} from '../../TestHelpers.js' RuleTester.create('github-action', handler).run({ diff --git a/packages/lint-repository-sui/test/server/rules/node-versionSpec.js b/packages/lint-repository-sui/test/server/rules/node-versionSpec.js index 31a46d51a..242ee636d 100644 --- a/packages/lint-repository-sui/test/server/rules/node-versionSpec.js +++ b/packages/lint-repository-sui/test/server/rules/node-versionSpec.js @@ -1,6 +1,6 @@ import dedent from 'dedent' -import handler from '../../src/rules/node-version.js' +import handler from '../../../src/rules/node-version.js' import {MatchStub, RuleTester} from '../../TestHelpers.js' RuleTester.create('node-version', handler).run({ diff --git a/packages/lint-repository-sui/test/server/rules/package-lockSpec.js b/packages/lint-repository-sui/test/server/rules/package-lockSpec.js index 533ccafe7..6684cfc4e 100644 --- a/packages/lint-repository-sui/test/server/rules/package-lockSpec.js +++ b/packages/lint-repository-sui/test/server/rules/package-lockSpec.js @@ -1,6 +1,6 @@ import dedent from 'dedent' -import handler from '../../src/rules/package-lock.js' +import handler from '../../../src/rules/package-lock.js' import {RuleTester} from '../../TestHelpers.js' RuleTester.create('package-lock', handler).run({ diff --git a/packages/lint-repository-sui/test/server/rules/react-versionSpec.js b/packages/lint-repository-sui/test/server/rules/react-versionSpec.js index f890d9a39..abb63b6ca 100644 --- a/packages/lint-repository-sui/test/server/rules/react-versionSpec.js +++ b/packages/lint-repository-sui/test/server/rules/react-versionSpec.js @@ -1,6 +1,6 @@ import dedent from 'dedent' -import handler from '../../src/rules/react-version.js' +import handler from '../../../src/rules/react-version.js' import {MatchStub, RuleTester} from '../../TestHelpers.js' RuleTester.create('react-version', handler).run({ From b01ae7ea6f5f3648f94ec6a73f6de42b063a50ec Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Mon, 4 Mar 2024 17:54:34 +0100 Subject: [PATCH 162/545] test(packages/sui-lint): fix import path --- packages/sui-lint/test/server/RepositoryLinter/ConfigSpec.js | 2 +- packages/sui-lint/test/server/RepositoryLinter/ContextSpec.js | 4 ++-- packages/sui-lint/test/server/RepositoryLinter/MatchSpec.js | 2 +- packages/sui-lint/test/server/RepositoryLinter/ResultsSpec.js | 2 +- packages/sui-lint/test/server/RepositoryLinter/RunnerSpec.js | 4 ++-- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/sui-lint/test/server/RepositoryLinter/ConfigSpec.js b/packages/sui-lint/test/server/RepositoryLinter/ConfigSpec.js index 2960d8d0a..0261735b2 100644 --- a/packages/sui-lint/test/server/RepositoryLinter/ConfigSpec.js +++ b/packages/sui-lint/test/server/RepositoryLinter/ConfigSpec.js @@ -1,7 +1,7 @@ import {expect} from 'chai' import {stub} from 'sinon' -import {Config} from '../../src/RepositoryLinter/Config.js' +import {Config} from '../../../src/RepositoryLinter/Config.js' describe('Config', function () { beforeEach(function () { diff --git a/packages/sui-lint/test/server/RepositoryLinter/ContextSpec.js b/packages/sui-lint/test/server/RepositoryLinter/ContextSpec.js index fd640bcd4..babc8691e 100644 --- a/packages/sui-lint/test/server/RepositoryLinter/ContextSpec.js +++ b/packages/sui-lint/test/server/RepositoryLinter/ContextSpec.js @@ -1,8 +1,8 @@ import {expect} from 'chai' import {spy, stub} from 'sinon' -import {Context} from '../../src/RepositoryLinter/Context.js' -import {Match} from '../../src/RepositoryLinter/Match.js' +import {Context} from '../../../src/RepositoryLinter/Context.js' +import {Match} from '../../../src/RepositoryLinter/Match.js' const LEVELS = { OFF: 0, diff --git a/packages/sui-lint/test/server/RepositoryLinter/MatchSpec.js b/packages/sui-lint/test/server/RepositoryLinter/MatchSpec.js index 5db0c60c7..e609d2e6e 100644 --- a/packages/sui-lint/test/server/RepositoryLinter/MatchSpec.js +++ b/packages/sui-lint/test/server/RepositoryLinter/MatchSpec.js @@ -1,7 +1,7 @@ import {expect} from 'chai' import {stub} from 'sinon' -import {CustomFileReader, Match} from '../../src/RepositoryLinter/Match.js' +import {CustomFileReader, Match} from '../../../src/RepositoryLinter/Match.js' describe('Match', function () { beforeEach(function () { diff --git a/packages/sui-lint/test/server/RepositoryLinter/ResultsSpec.js b/packages/sui-lint/test/server/RepositoryLinter/ResultsSpec.js index ad9cc62c5..3f40cecb6 100644 --- a/packages/sui-lint/test/server/RepositoryLinter/ResultsSpec.js +++ b/packages/sui-lint/test/server/RepositoryLinter/ResultsSpec.js @@ -2,7 +2,7 @@ import {expect} from 'chai' import {Table} from 'console-table-printer' import {stub} from 'sinon' -import {Results} from '../../src/RepositoryLinter/Results.js' +import {Results} from '../../../src/RepositoryLinter/Results.js' describe('Results', function () { beforeEach(function () { diff --git a/packages/sui-lint/test/server/RepositoryLinter/RunnerSpec.js b/packages/sui-lint/test/server/RepositoryLinter/RunnerSpec.js index 5d69d1e58..a1970002f 100644 --- a/packages/sui-lint/test/server/RepositoryLinter/RunnerSpec.js +++ b/packages/sui-lint/test/server/RepositoryLinter/RunnerSpec.js @@ -1,8 +1,8 @@ import {expect} from 'chai' import {stub} from 'sinon' -import {Match} from '../../src/RepositoryLinter/Match' -import {Runner} from '../../src/RepositoryLinter/Runner.js' +import {Match} from '../../../src/RepositoryLinter/Match.js' +import {Runner} from '../../../src/RepositoryLinter/Runner.js' describe('Runner', function () { beforeEach(function () { From df3de9f1daa4ec04f856c8d0812042385b626c81 Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Mon, 4 Mar 2024 18:04:55 +0100 Subject: [PATCH 163/545] test(packages/eslint-plugin-sui): move folder --- .../test/server/rules/factory-pattern.js | 41 -------- .../server/rules/serialize-deserialize.js | 96 ------------------- 2 files changed, 137 deletions(-) delete mode 100644 packages/eslint-plugin-sui/test/server/rules/factory-pattern.js delete mode 100644 packages/eslint-plugin-sui/test/server/rules/serialize-deserialize.js diff --git a/packages/eslint-plugin-sui/test/server/rules/factory-pattern.js b/packages/eslint-plugin-sui/test/server/rules/factory-pattern.js deleted file mode 100644 index 458134e3d..000000000 --- a/packages/eslint-plugin-sui/test/server/rules/factory-pattern.js +++ /dev/null @@ -1,41 +0,0 @@ -import dedent from 'dedent' -import {RuleTester} from 'eslint' - -import rule from '../../../src/rules/factory-pattern.js' - -// ------------------------------------------------------------------------------ -// Tests -// more info: https://eslint.org/docs/latest/integrate/nodejs-api#ruletester -// ------------------------------------------------------------------------------ - -const ruleTester = new RuleTester({parserOptions: {ecmaVersion: 6}}) -ruleTester.run('factory-pattern', rule, { - valid: [ - { - code: dedent` - class User { - static create() { return new User() } - } - ` - } - ], - - invalid: [ - { - code: dedent` - class Model { - constructor() { this.name = 'John Doe' } - }`, - errors: [ - { - message: dedent` - You have to define at least one static function that return an instance of your class. - Avoid to use the 'new' keyword directly in your code. - Use always a factory function - `, - type: 'ClassDeclaration' - } - ] - } - ] -}) diff --git a/packages/eslint-plugin-sui/test/server/rules/serialize-deserialize.js b/packages/eslint-plugin-sui/test/server/rules/serialize-deserialize.js deleted file mode 100644 index e42234289..000000000 --- a/packages/eslint-plugin-sui/test/server/rules/serialize-deserialize.js +++ /dev/null @@ -1,96 +0,0 @@ -import dedent from 'dedent' -import {RuleTester} from 'eslint' - -import rule from '../../../src/rules/serialize-deserialize.js' - -// ------------------------------------------------------------------------------ -// Tests -// more info: https://eslint.org/docs/latest/integrate/nodejs-api#ruletester -// ------------------------------------------------------------------------------ - -const ruleTester = new RuleTester({parserOptions: {ecmaVersion: 6}}) -ruleTester.run('serialize-deserialize', rule, { - valid: [ - { - code: dedent` - class User { - static create({id, name}) { return new User(id, name) } - constructor(id, name) { - this.id = id - this.name = name - } - toJSON() { - return { - id: this.id, - name: this.name - } - } - } - ` - } - ], - - invalid: [ - { - code: dedent` - class User { - static create({id, name}) { return new User(id, name) } - constructor(id, name) { - this.id = id - this.name = name - } - toJSON() { - return this.id - } - } - `, - errors: [ - { - message: dedent`toJSON should return an object` - } - ] - }, - { - code: dedent` - class User { - constructor(id, name) { - this.id = id - this.name = name - } - toJSON() { - return { - Noid: this.id, - Noname: this.name - } - } - } - `, - errors: [ - { - message: dedent` - If your class has a 'toJSON' method. You have to define a 'static create' method too. - The output of the 'toJSON' should be the same as the input of your 'static create' method - ` - } - ] - }, - { - code: dedent` - class User { - static create({id, name}) { return new User(id, name) } - constructor(id, name) { - this.id = id - this.name = name - } - toJSON() { - return { - Noid: this.id, - Noname: this.name - } - } - } - `, - errors: [{message: 'Missing toJSON properties (id, name)'}] - } - ] -}) From a704fc2914965f43229c22f5c1b3cea422173c4a Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Mon, 4 Mar 2024 18:05:28 +0100 Subject: [PATCH 164/545] test(packages/lint-repository-sui): move folder --- .../test/server/rules/github-actionSpec.js | 53 ------------------- .../test/server/rules/node-versionSpec.js | 44 --------------- .../test/server/rules/package-lockSpec.js | 25 --------- .../test/server/rules/react-versionSpec.js | 44 --------------- 4 files changed, 166 deletions(-) delete mode 100644 packages/lint-repository-sui/test/server/rules/github-actionSpec.js delete mode 100644 packages/lint-repository-sui/test/server/rules/node-versionSpec.js delete mode 100644 packages/lint-repository-sui/test/server/rules/package-lockSpec.js delete mode 100644 packages/lint-repository-sui/test/server/rules/react-versionSpec.js diff --git a/packages/lint-repository-sui/test/server/rules/github-actionSpec.js b/packages/lint-repository-sui/test/server/rules/github-actionSpec.js deleted file mode 100644 index 67f21665a..000000000 --- a/packages/lint-repository-sui/test/server/rules/github-actionSpec.js +++ /dev/null @@ -1,53 +0,0 @@ -import dedent from 'dedent' - -import handler from '../../../src/rules/github-action.js' -import {RuleTester} from '../../TestHelpers.js' - -RuleTester.create('github-action', handler).run({ - valid: [ - { - '.github/workflows': [], - name: 'The porject has define a worflows folder', - monitoring: true - }, - { - '.github/**/main.yml': [], - name: 'The porject has define a worflow for the main branch', - monitoring: true - }, - { - '.github/**/pullrequest.yml': [], - name: 'The porject has define a worflow for PRs', - monitoring: true - } - ], - invalid: [ - { - missmatch: '.github/workflows', - name: 'The porject has NOT define a worflows folder', - report: dedent` - Every project needs to have a .github/worflows folder to be able to run CI/CD in GHA. - If you are not sure about how do it, please contact with Platform Web. - `, - monitoring: false - }, - { - missmatch: '.github/**/main.yml', - name: 'The porject has NOT define a worflow for the main branch', - report: dedent` - Every project needs to have a workflow to run on master. - If you are not sure about how do it, please contact with Platform Web. - `, - monitoring: false - }, - { - missmatch: '.github/**/pullrequest.yml', - name: 'The porject has NOT define a worflow for PRs', - report: dedent` - Every project needs to have a workflow to run on every PR. - If you are not sure about how do it, please contact with Platform Web. - `, - monitoring: false - } - ] -}) diff --git a/packages/lint-repository-sui/test/server/rules/node-versionSpec.js b/packages/lint-repository-sui/test/server/rules/node-versionSpec.js deleted file mode 100644 index 242ee636d..000000000 --- a/packages/lint-repository-sui/test/server/rules/node-versionSpec.js +++ /dev/null @@ -1,44 +0,0 @@ -import dedent from 'dedent' - -import handler from '../../../src/rules/node-version.js' -import {MatchStub, RuleTester} from '../../TestHelpers.js' - -RuleTester.create('node-version', handler).run({ - valid: [ - { - '.nvmrc': [MatchStub.create({raw: '20'})], - name: 'nvmrc Exists and has setup the version 20', - monitoring: '20' - } - ], - invalid: [ - { - '.nvmrc': [MatchStub.create({raw: '20'}), MatchStub.create({raw: 17})], - name: 'Exits more than one nvmrc file', - report: dedent` - Your project has more than one .nvmrc file. That can be dangerous. - Please, use onle ONE in the root of your project. - If you are not sure about how do it, please contact with Platform Web. - `, - monitoring: 0 - }, - { - '.nvmrc': [MatchStub.create({raw: '16'})], - name: 'Exits more than one nvmrc file', - report: dedent` - Your current Node version is 16. - Please be sure that your repository use the latest Node Version 20. - If you are not sure about how do it, please contact with Platform Web. - `, - monitoring: 0 - }, - { - missmatch: '', - report: dedent` - Every project have to have a .npmrc file to define the node versión. - If you are not sure about how do it, please contact with Platform Web. - `, - monitoring: 0 - } - ] -}) diff --git a/packages/lint-repository-sui/test/server/rules/package-lockSpec.js b/packages/lint-repository-sui/test/server/rules/package-lockSpec.js deleted file mode 100644 index 6684cfc4e..000000000 --- a/packages/lint-repository-sui/test/server/rules/package-lockSpec.js +++ /dev/null @@ -1,25 +0,0 @@ -import dedent from 'dedent' - -import handler from '../../../src/rules/package-lock.js' -import {RuleTester} from '../../TestHelpers.js' - -RuleTester.create('package-lock', handler).run({ - valid: [ - { - 'package-lock.json': [], - name: 'Project has package-lock.json in the root folder', - monitoring: true - } - ], - invalid: [ - { - missmatch: '', - name: 'Project doesnt has package-lock in the root folder', - report: dedent` - Every project needs to have a package-lock.json file to be used in CI/CD. - If you are not sure about how do it, please contact with Platform Web. - `, - monitoring: false - } - ] -}) diff --git a/packages/lint-repository-sui/test/server/rules/react-versionSpec.js b/packages/lint-repository-sui/test/server/rules/react-versionSpec.js deleted file mode 100644 index abb63b6ca..000000000 --- a/packages/lint-repository-sui/test/server/rules/react-versionSpec.js +++ /dev/null @@ -1,44 +0,0 @@ -import dedent from 'dedent' - -import handler from '../../../src/rules/react-version.js' -import {MatchStub, RuleTester} from '../../TestHelpers.js' - -RuleTester.create('react-version', handler).run({ - valid: [ - { - 'package-lock.json': [MatchStub.create({parsed: {packages: {'node_modules/react': {version: '18.0.0'}}}})], - name: 'React 18 installed', - monitoring: '18' - } - ], - invalid: [ - { - 'package-lock.json': [MatchStub.create({parsed: {packages: {}}})], - name: 'React not installed', - report: dedent` - Your project doesnt have installed React. - Please install at least the version 18. - If you are not sure about how do it, please contact with Platform Web. - `, - monitoring: 0 - }, - { - 'package-lock.json': [MatchStub.create({parsed: {packages: {'node_modules/react': {version: '17.0.0'}}}})], - name: 'React wrong version', - report: dedent` - Please be sure that your repository use the latest React Version 18. - Your current version is 17. - If you are not sure about how do it, please contact with Platform Web. - `, - monitoring: '17' - }, - { - missmatch: '', - report: dedent` - To calculate the react version first we need to have a package-lock.json in the root - If you are not sure about how do it, please contact with Platform Web. - `, - monitoring: 0 - } - ] -}) From 4b029c895841c095a793fe61def8bbb747c526f6 Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Mon, 4 Mar 2024 18:06:10 +0100 Subject: [PATCH 165/545] test(packages/sui-lint): move folder --- .../server/RepositoryLinter/ConfigSpec.js | 38 ---- .../server/RepositoryLinter/ContextSpec.js | 206 ------------------ .../test/server/RepositoryLinter/MatchSpec.js | 99 --------- .../server/RepositoryLinter/ResultsSpec.js | 83 ------- .../server/RepositoryLinter/RunnerSpec.js | 26 --- 5 files changed, 452 deletions(-) delete mode 100644 packages/sui-lint/test/server/RepositoryLinter/ConfigSpec.js delete mode 100644 packages/sui-lint/test/server/RepositoryLinter/ContextSpec.js delete mode 100644 packages/sui-lint/test/server/RepositoryLinter/MatchSpec.js delete mode 100644 packages/sui-lint/test/server/RepositoryLinter/ResultsSpec.js delete mode 100644 packages/sui-lint/test/server/RepositoryLinter/RunnerSpec.js diff --git a/packages/sui-lint/test/server/RepositoryLinter/ConfigSpec.js b/packages/sui-lint/test/server/RepositoryLinter/ConfigSpec.js deleted file mode 100644 index 0261735b2..000000000 --- a/packages/sui-lint/test/server/RepositoryLinter/ConfigSpec.js +++ /dev/null @@ -1,38 +0,0 @@ -import {expect} from 'chai' -import {stub} from 'sinon' - -import {Config} from '../../../src/RepositoryLinter/Config.js' - -describe('Config', function () { - beforeEach(function () { - this.requireConfigStub = stub(Config.prototype, 'requireConfig') - this.requirePkgStub = stub(Config.prototype, 'requirePkg') - }) - - afterEach(function () { - this.requireConfigStub.reset() - this.requirePkgStub.reset() - }) - - it('Should return a rules object', async function () { - // Given - const handler = { - meta: {messages: {badVersion: 'Your react version is not 20'}}, - create: function () {} - } - this.requireConfigStub.returns({ - plugins: ['tester'], - rules: { - 'tester/react-version': 1 - } - }) - this.requirePkgStub.returns({rules: {'react-version': handler}}) - - // When - const rulesLoaded = await Config.create().load() - - // Then - expect(this.requirePkgStub.calledWith('tester')).to.be.eql(true) - expect(rulesLoaded).to.be.eqls({'tester/react-version': {handler, level: 1}}) - }) -}) diff --git a/packages/sui-lint/test/server/RepositoryLinter/ContextSpec.js b/packages/sui-lint/test/server/RepositoryLinter/ContextSpec.js deleted file mode 100644 index babc8691e..000000000 --- a/packages/sui-lint/test/server/RepositoryLinter/ContextSpec.js +++ /dev/null @@ -1,206 +0,0 @@ -import {expect} from 'chai' -import {spy, stub} from 'sinon' - -import {Context} from '../../../src/RepositoryLinter/Context.js' -import {Match} from '../../../src/RepositoryLinter/Match.js' - -const LEVELS = { - OFF: 0, - WARNING: 1, - ERROR: 2 -} - -describe('Context', function () { - beforeEach(function () { - this.reportSpy = spy(Context.prototype, 'report') - this.monitoringSpy = spy(Context.prototype, 'monitoring') - this.runnerStub = {assertion: stub()} - this.handlerStub = { - meta: {messages: {badVersion: 'Message for your bad version'}}, - __assertionStub: stub(), - __missmatchStub: stub(), - create() { - return { - 'package.json': this.__assertionStub, - missmatch: this.__missmatchStub - } - } - } - - this.handlerInnerStub = { - meta: {messages: {badVersion: 'Message for your bad version', badKey: 'Message for bad {{key}}'}}, - create(context) { - return { - 'package.json': matches => { - context.report({messageId: 'badVersion'}) - context.monitoring(true) - }, - missmatch: key => { - context.report({messageId: 'badKey', data: {key}}) - context.monitoring(false) - } - } - } - } - - this.handlerReducerMonitoringStub = { - meta: {messages: {badVersion: 'Message for your bad version', badKey: 'Message for bad {{key}}'}}, - reduceMonitoring: stub(), - create(context) { - return { - 'package.json': matches => { - context.monitoring(true) - context.monitoring(false) - } - } - } - } - }) - - afterEach(function () { - this.handlerStub.__assertionStub.reset() - this.handlerStub.__missmatchStub.reset() - - this.monitoringSpy.restore() - this.reportSpy.restore() - - this.runnerStub.assertion.reset() - - this.handlerReducerMonitoringStub.reduceMonitoring?.reset() - }) - - it('Should call to the assertions in the handler when there is Match', function () { - // Given - const emptyMatch = Match.empty() - this.runnerStub.assertion.returns([emptyMatch]) - - // When - Context.create(LEVELS.WARNING, this.handlerStub, 'tests/node-version', this.runnerStub).run() - - // Then - expect(this.handlerStub.__assertionStub.firstCall.firstArg).to.be.instanceof(Array) - expect(this.handlerStub.__assertionStub.firstCall.firstArg[0]).to.be.eql(emptyMatch) - }) - - it('Should call to the missmatch in the handler when there is not Match with the "failing" key', function () { - // Given - this.runnerStub.assertion.returns([]) - - // When - Context.create(LEVELS.WARNING, this.handlerStub, 'tests/node-version', this.runnerStub).run() - - // Then - expect(this.handlerStub.__assertionStub.firstCall).to.be.eql(null) - expect(this.handlerStub.__missmatchStub.firstCall.firstArg).to.be.eql('package.json') - }) - - it('Should create new monitorings and messages from assertion function', function () { - // Given - this.runnerStub.assertion.returns([Match.empty()]) - - // When - Context.create(LEVELS.WARNING, this.handlerInnerStub, 'tests/node-version', this.runnerStub).run() - - // Then - expect(this.reportSpy.firstCall.firstArg).to.be.eql({messageId: 'badVersion'}) - expect(this.monitoringSpy.firstCall.firstArg).to.be.eql(true) - }) - - it('Should create new monitorings and messages from missmatch function', function () { - // Given - this.runnerStub.assertion.returns([]) - - // When - Context.create(LEVELS.WARNING, this.handlerInnerStub, 'tests/node-version', this.runnerStub).run() - - // Then - expect(this.reportSpy.firstCall.firstArg).to.be.eql({messageId: 'badKey', data: {key: 'package.json'}}) - expect(this.monitoringSpy.firstCall.firstArg).to.be.eql(false) - }) - - it('Should properly format the messages', function () { - // Given - this.runnerStub.assertion.returns([]) - - // When - const context = Context.create(LEVELS.WARNING, this.handlerInnerStub, 'tests/node-version', this.runnerStub).run() - - // Then - expect(context.messages).to.be.eql([ - { - rule: 'tests/node-version', - message: 'Message for bad package.json', - level: 1, - messageId: 'badKey', - data: {key: 'package.json'} - } - ]) - }) - - it('Should properly format the monitoring', function () { - // Given - this.runnerStub.assertion.returns([Match.empty()]) - - // When - const context = Context.create(LEVELS.WARNING, this.handlerInnerStub, 'tests/node-version', this.runnerStub).run() - - // Then - expect(context.signal).to.be.eql({ - rule: 'tests/node-version', - value: true, - level: 1 - }) - }) - - it('Should require a reduceMonitoring function when there are more than one monitor', function () { - // Given - this.runnerStub.assertion.returns([Match.empty()]) - this.handlerReducerMonitoringStub.reduceMonitoring.returns(false) - - // When - const context = Context.create( - LEVELS.WARNING, - this.handlerReducerMonitoringStub, - 'tests/node-version', - this.runnerStub - ).run() - - // Then - expect(context.signal).to.be.eql({ - rule: 'tests/node-version', - value: false, - level: 1 - }) - expect(this.handlerReducerMonitoringStub.reduceMonitoring.firstCall.firstArg).to.be.eql([ - { - assertion: 'package.json', - rule: 'tests/node-version', - value: true, - level: 1 - }, - { - assertion: 'package.json', - rule: 'tests/node-version', - value: false, - level: 1 - } - ]) - }) - - it('Should throw an exception if the reduceMonitoring function is undefined', function () { - // Given - this.runnerStub.assertion.returns([Match.empty()]) - delete this.handlerReducerMonitoringStub.reduceMonitoring - - // When - const context = Context.create( - LEVELS.WARNING, - this.handlerReducerMonitoringStub, - 'tests/node-version', - this.runnerStub - ).run() - - // Then - expect(() => context.signal).to.be.throw(Context.MISSING_REDUCER_MONITORING_MSG) - }) -}) diff --git a/packages/sui-lint/test/server/RepositoryLinter/MatchSpec.js b/packages/sui-lint/test/server/RepositoryLinter/MatchSpec.js deleted file mode 100644 index e609d2e6e..000000000 --- a/packages/sui-lint/test/server/RepositoryLinter/MatchSpec.js +++ /dev/null @@ -1,99 +0,0 @@ -import {expect} from 'chai' -import {stub} from 'sinon' - -import {CustomFileReader, Match} from '../../../src/RepositoryLinter/Match.js' - -describe('Match', function () { - beforeEach(function () { - this.isDirStub = stub(CustomFileReader.prototype, 'isDirectory') - - this.parseYMLStub = stub(CustomFileReader.prototype, 'parseYML') - this.parseJSONStub = stub(CustomFileReader.prototype, 'parseJSON') - this.rawStub = stub(CustomFileReader.prototype, 'raw') - }) - - afterEach(function () { - this.isDirStub.restore() - - this.parseYMLStub.restore() - this.parseJSONStub.restore() - this.rawStub.restore() - }) - - it('Should detect directories', function () { - // Given - this.isDirStub.returns(true) - - // When - const match = Match.create('/dir/path') - - // Then - expect(match.isDir).to.be.eqls(true) - }) - - it('Should detect files w/out extensions', function () { - // Given - this.isDirStub.returns(false) - this.rawStub.returns('20') - - // When - const match = Match.create('/dir/path') - - // Then - expect(match.isDir).to.be.eqls(false) - expect(this.rawStub.calledWith('/dir/path')).to.be.eql(true) - }) - - it('Should parse JSON files', function () { - // Given - this.isDirStub.returns(false) - this.parseJSONStub.returns({a: 1}) - - // When - const match = Match.create('/dir/file.json') - - // Then - expect(match.parsed).to.be.eqls({a: 1}) - expect(this.parseJSONStub.calledWith('/dir/file.json')).to.be.eql(true) - }) - - it('Should parse yml files', function () { - // Given - this.isDirStub.returns(false) - this.parseYMLStub.returns({a: 1}) - - // When - const match = Match.create('/dir/file.yml') - - // Then - expect(match.parsed).to.be.eqls({a: 1}) - expect(this.parseYMLStub.calledWith('/dir/file.yml')).to.be.eql(true) - }) - - it('Should parse yaml files', function () { - // Given - this.isDirStub.returns(false) - this.parseYMLStub.returns({a: 1}) - - // When - const match = Match.create('/dir/file.yaml') - - // Then - expect(match.parsed).to.be.eqls({a: 1}) - expect(this.parseYMLStub.calledWith('/dir/file.yaml')).to.be.eql(true) - }) - - it('Should read unkown files', function () { - // Given - this.isDirStub.returns(false) - this.rawStub.returns('Hello') - - // When - const match = Match.create('/dir/file.txt') - - // Then - expect(match.raw).to.be.eqls('Hello') - expect(match.parsed).to.be.eqls(undefined) - expect(this.rawStub.calledWith('/dir/file.txt')).to.be.eql(true) - }) -}) diff --git a/packages/sui-lint/test/server/RepositoryLinter/ResultsSpec.js b/packages/sui-lint/test/server/RepositoryLinter/ResultsSpec.js deleted file mode 100644 index 3f40cecb6..000000000 --- a/packages/sui-lint/test/server/RepositoryLinter/ResultsSpec.js +++ /dev/null @@ -1,83 +0,0 @@ -import {expect} from 'chai' -import {Table} from 'console-table-printer' -import {stub} from 'sinon' - -import {Results} from '../../../src/RepositoryLinter/Results.js' - -describe('Results', function () { - beforeEach(function () { - this.addRowStub = stub(Table.prototype, 'addRow') - this.printTableStub = stub(Table.prototype, 'printTable') - - this.logStub = stub(Results.prototype, 'log') - }) - - afterEach(function () { - this.addRowStub.restore() - this.printTableStub.restore() - - this.logStub.restore() - }) - - it('Should print Happy Message it there is not messages', function () { - const executions = [ - { - messages: [], - signal: false - } - ] - Results.create(executions).logTable() - - expect(this.logStub.calledWith(Results.HAPPY_MESSAGE)).to.be.eq(true) - }) - - it('Should print a table with all the messages', function () { - const executions = [ - {messages: [{rule: 'tester/node-version', message: 'Node version fail', level: 1}], signal: 12}, - {messages: [{rule: 'tester/react-version', message: 'React version fail', level: 2}], signal: 17}, - {messages: [], signal: true} - ] - Results.create(executions).logTable() - - expect(this.addRowStub.firstCall.firstArg).to.be.eql({rule: 'tester/node-version', message: 'Node version fail'}) - expect(this.addRowStub.firstCall.lastArg).to.be.eql({color: 'yellow'}) - - expect(this.addRowStub.secondCall.firstArg).to.be.eql({rule: 'tester/react-version', message: 'React version fail'}) - expect(this.addRowStub.secondCall.lastArg).to.be.eql({color: 'red'}) - }) - - it('Should print a table with all the monitorings', function () { - const executions = [ - {messages: [{rule: 'tester/node-version', message: 'Node version fail', level: 1}], signal: 12}, - {messages: [{rule: 'tester/react-version', message: 'React version fail', level: 2}], signal: 17}, - {messages: [], signal: true} - ] - Results.create(executions).logMonitorings() - - expect(this.addRowStub.firstCall.firstArg).to.be.eql(12) - expect(this.addRowStub.secondCall.firstArg).to.be.eql(17) - expect(this.addRowStub.thirdCall.firstArg).to.be.eql(true) - }) - - it('Should print a JSON output', function () { - const executions = [ - {messages: [{rule: 'tester/node-version', message: 'Node version fail', level: 1}], signal: 12}, - {messages: [{rule: 'tester/react-version', message: 'React version fail', level: 2}], signal: 17}, - {messages: [], signal: true} - ] - Results.create(executions).logJSON() - - expect( - this.logStub.calledWith( - JSON.stringify( - [ - {rule: 'tester/node-version', message: 'Node version fail', level: 1}, - {rule: 'tester/react-version', message: 'React version fail', level: 2} - ], - null, - 2 - ) - ) - ).to.be.eq(true) - }) -}) diff --git a/packages/sui-lint/test/server/RepositoryLinter/RunnerSpec.js b/packages/sui-lint/test/server/RepositoryLinter/RunnerSpec.js deleted file mode 100644 index a1970002f..000000000 --- a/packages/sui-lint/test/server/RepositoryLinter/RunnerSpec.js +++ /dev/null @@ -1,26 +0,0 @@ -import {expect} from 'chai' -import {stub} from 'sinon' - -import {Match} from '../../../src/RepositoryLinter/Match.js' -import {Runner} from '../../../src/RepositoryLinter/Runner.js' - -describe('Runner', function () { - beforeEach(function () { - this.syncStub = stub() - this.matchCreateStub = stub(Match, 'create') - }) - - afterEach(function () { - this.syncStub.reset() - this.matchCreateStub.restore() - }) - - it('Should return a list of matches', function () { - this.syncStub.returns(['path/file.json']) - - Runner.create({sync: this.syncStub}).assertion('**/*.json') - - expect(this.matchCreateStub.firstCall.firstArg).to.be.eql('path/file.json') - expect(this.syncStub.firstCall.firstArg).to.be.eql('**/*.json') - }) -}) From 176eeafd0f966f834cd9c29fedb2494e708184f0 Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Mon, 4 Mar 2024 18:07:02 +0100 Subject: [PATCH 166/545] test(Root): move folder --- .../test/server/factory-pattern.js | 41 ++++ .../test/server/serialize-deserialize.js | 96 ++++++++ .../test/server/github-actionSpec.js | 53 +++++ .../test/server/node-versionSpec.js | 44 ++++ .../test/server/package-lockSpec.js | 25 +++ .../test/server/react-versionSpec.js | 44 ++++ packages/sui-lint/test/server/ConfigSpec.js | 38 ++++ packages/sui-lint/test/server/ContextSpec.js | 206 ++++++++++++++++++ packages/sui-lint/test/server/MatchSpec.js | 99 +++++++++ packages/sui-lint/test/server/ResultsSpec.js | 83 +++++++ packages/sui-lint/test/server/RunnerSpec.js | 26 +++ 11 files changed, 755 insertions(+) create mode 100644 packages/eslint-plugin-sui/test/server/factory-pattern.js create mode 100644 packages/eslint-plugin-sui/test/server/serialize-deserialize.js create mode 100644 packages/lint-repository-sui/test/server/github-actionSpec.js create mode 100644 packages/lint-repository-sui/test/server/node-versionSpec.js create mode 100644 packages/lint-repository-sui/test/server/package-lockSpec.js create mode 100644 packages/lint-repository-sui/test/server/react-versionSpec.js create mode 100644 packages/sui-lint/test/server/ConfigSpec.js create mode 100644 packages/sui-lint/test/server/ContextSpec.js create mode 100644 packages/sui-lint/test/server/MatchSpec.js create mode 100644 packages/sui-lint/test/server/ResultsSpec.js create mode 100644 packages/sui-lint/test/server/RunnerSpec.js diff --git a/packages/eslint-plugin-sui/test/server/factory-pattern.js b/packages/eslint-plugin-sui/test/server/factory-pattern.js new file mode 100644 index 000000000..2e63d949a --- /dev/null +++ b/packages/eslint-plugin-sui/test/server/factory-pattern.js @@ -0,0 +1,41 @@ +import dedent from 'dedent' +import {RuleTester} from 'eslint' + +import rule from '../../src/rules/factory-pattern.js' + +// ------------------------------------------------------------------------------ +// Tests +// more info: https://eslint.org/docs/latest/integrate/nodejs-api#ruletester +// ------------------------------------------------------------------------------ + +const ruleTester = new RuleTester({parserOptions: {ecmaVersion: 6}}) +ruleTester.run('factory-pattern', rule, { + valid: [ + { + code: dedent` + class User { + static create() { return new User() } + } + ` + } + ], + + invalid: [ + { + code: dedent` + class Model { + constructor() { this.name = 'John Doe' } + }`, + errors: [ + { + message: dedent` + You have to define at least one static function that return an instance of your class. + Avoid to use the 'new' keyword directly in your code. + Use always a factory function + `, + type: 'ClassDeclaration' + } + ] + } + ] +}) diff --git a/packages/eslint-plugin-sui/test/server/serialize-deserialize.js b/packages/eslint-plugin-sui/test/server/serialize-deserialize.js new file mode 100644 index 000000000..e5fd6d925 --- /dev/null +++ b/packages/eslint-plugin-sui/test/server/serialize-deserialize.js @@ -0,0 +1,96 @@ +import dedent from 'dedent' +import {RuleTester} from 'eslint' + +import rule from '../../src/rules/serialize-deserialize.js' + +// ------------------------------------------------------------------------------ +// Tests +// more info: https://eslint.org/docs/latest/integrate/nodejs-api#ruletester +// ------------------------------------------------------------------------------ + +const ruleTester = new RuleTester({parserOptions: {ecmaVersion: 6}}) +ruleTester.run('serialize-deserialize', rule, { + valid: [ + { + code: dedent` + class User { + static create({id, name}) { return new User(id, name) } + constructor(id, name) { + this.id = id + this.name = name + } + toJSON() { + return { + id: this.id, + name: this.name + } + } + } + ` + } + ], + + invalid: [ + { + code: dedent` + class User { + static create({id, name}) { return new User(id, name) } + constructor(id, name) { + this.id = id + this.name = name + } + toJSON() { + return this.id + } + } + `, + errors: [ + { + message: dedent`toJSON should return an object` + } + ] + }, + { + code: dedent` + class User { + constructor(id, name) { + this.id = id + this.name = name + } + toJSON() { + return { + Noid: this.id, + Noname: this.name + } + } + } + `, + errors: [ + { + message: dedent` + If your class has a 'toJSON' method. You have to define a 'static create' method too. + The output of the 'toJSON' should be the same as the input of your 'static create' method + ` + } + ] + }, + { + code: dedent` + class User { + static create({id, name}) { return new User(id, name) } + constructor(id, name) { + this.id = id + this.name = name + } + toJSON() { + return { + Noid: this.id, + Noname: this.name + } + } + } + `, + errors: [{message: 'Missing toJSON properties (id, name)'}] + } + ] +}) diff --git a/packages/lint-repository-sui/test/server/github-actionSpec.js b/packages/lint-repository-sui/test/server/github-actionSpec.js new file mode 100644 index 000000000..346cf8e42 --- /dev/null +++ b/packages/lint-repository-sui/test/server/github-actionSpec.js @@ -0,0 +1,53 @@ +import dedent from 'dedent' + +import handler from '../../src/rules/github-action.js' +import {RuleTester} from '../TestHelpers.js' + +RuleTester.create('github-action', handler).run({ + valid: [ + { + '.github/workflows': [], + name: 'The porject has define a worflows folder', + monitoring: true + }, + { + '.github/**/main.yml': [], + name: 'The porject has define a worflow for the main branch', + monitoring: true + }, + { + '.github/**/pullrequest.yml': [], + name: 'The porject has define a worflow for PRs', + monitoring: true + } + ], + invalid: [ + { + missmatch: '.github/workflows', + name: 'The porject has NOT define a worflows folder', + report: dedent` + Every project needs to have a .github/worflows folder to be able to run CI/CD in GHA. + If you are not sure about how do it, please contact with Platform Web. + `, + monitoring: false + }, + { + missmatch: '.github/**/main.yml', + name: 'The porject has NOT define a worflow for the main branch', + report: dedent` + Every project needs to have a workflow to run on master. + If you are not sure about how do it, please contact with Platform Web. + `, + monitoring: false + }, + { + missmatch: '.github/**/pullrequest.yml', + name: 'The porject has NOT define a worflow for PRs', + report: dedent` + Every project needs to have a workflow to run on every PR. + If you are not sure about how do it, please contact with Platform Web. + `, + monitoring: false + } + ] +}) diff --git a/packages/lint-repository-sui/test/server/node-versionSpec.js b/packages/lint-repository-sui/test/server/node-versionSpec.js new file mode 100644 index 000000000..c113232b9 --- /dev/null +++ b/packages/lint-repository-sui/test/server/node-versionSpec.js @@ -0,0 +1,44 @@ +import dedent from 'dedent' + +import handler from '../../src/rules/node-version.js' +import {MatchStub, RuleTester} from '../TestHelpers.js' + +RuleTester.create('node-version', handler).run({ + valid: [ + { + '.nvmrc': [MatchStub.create({raw: '20'})], + name: 'nvmrc Exists and has setup the version 20', + monitoring: '20' + } + ], + invalid: [ + { + '.nvmrc': [MatchStub.create({raw: '20'}), MatchStub.create({raw: 17})], + name: 'Exits more than one nvmrc file', + report: dedent` + Your project has more than one .nvmrc file. That can be dangerous. + Please, use onle ONE in the root of your project. + If you are not sure about how do it, please contact with Platform Web. + `, + monitoring: 0 + }, + { + '.nvmrc': [MatchStub.create({raw: '16'})], + name: 'Exits more than one nvmrc file', + report: dedent` + Your current Node version is 16. + Please be sure that your repository use the latest Node Version 20. + If you are not sure about how do it, please contact with Platform Web. + `, + monitoring: 0 + }, + { + missmatch: '', + report: dedent` + Every project have to have a .npmrc file to define the node versión. + If you are not sure about how do it, please contact with Platform Web. + `, + monitoring: 0 + } + ] +}) diff --git a/packages/lint-repository-sui/test/server/package-lockSpec.js b/packages/lint-repository-sui/test/server/package-lockSpec.js new file mode 100644 index 000000000..92773f311 --- /dev/null +++ b/packages/lint-repository-sui/test/server/package-lockSpec.js @@ -0,0 +1,25 @@ +import dedent from 'dedent' + +import handler from '../../src/rules/package-lock.js' +import {RuleTester} from '../TestHelpers.js' + +RuleTester.create('package-lock', handler).run({ + valid: [ + { + 'package-lock.json': [], + name: 'Project has package-lock.json in the root folder', + monitoring: true + } + ], + invalid: [ + { + missmatch: '', + name: 'Project doesnt has package-lock in the root folder', + report: dedent` + Every project needs to have a package-lock.json file to be used in CI/CD. + If you are not sure about how do it, please contact with Platform Web. + `, + monitoring: false + } + ] +}) diff --git a/packages/lint-repository-sui/test/server/react-versionSpec.js b/packages/lint-repository-sui/test/server/react-versionSpec.js new file mode 100644 index 000000000..6f3ceded4 --- /dev/null +++ b/packages/lint-repository-sui/test/server/react-versionSpec.js @@ -0,0 +1,44 @@ +import dedent from 'dedent' + +import handler from '../../src/rules/react-version.js' +import {MatchStub, RuleTester} from '../TestHelpers.js' + +RuleTester.create('react-version', handler).run({ + valid: [ + { + 'package-lock.json': [MatchStub.create({parsed: {packages: {'node_modules/react': {version: '18.0.0'}}}})], + name: 'React 18 installed', + monitoring: '18' + } + ], + invalid: [ + { + 'package-lock.json': [MatchStub.create({parsed: {packages: {}}})], + name: 'React not installed', + report: dedent` + Your project doesnt have installed React. + Please install at least the version 18. + If you are not sure about how do it, please contact with Platform Web. + `, + monitoring: 0 + }, + { + 'package-lock.json': [MatchStub.create({parsed: {packages: {'node_modules/react': {version: '17.0.0'}}}})], + name: 'React wrong version', + report: dedent` + Please be sure that your repository use the latest React Version 18. + Your current version is 17. + If you are not sure about how do it, please contact with Platform Web. + `, + monitoring: '17' + }, + { + missmatch: '', + report: dedent` + To calculate the react version first we need to have a package-lock.json in the root + If you are not sure about how do it, please contact with Platform Web. + `, + monitoring: 0 + } + ] +}) diff --git a/packages/sui-lint/test/server/ConfigSpec.js b/packages/sui-lint/test/server/ConfigSpec.js new file mode 100644 index 000000000..0261735b2 --- /dev/null +++ b/packages/sui-lint/test/server/ConfigSpec.js @@ -0,0 +1,38 @@ +import {expect} from 'chai' +import {stub} from 'sinon' + +import {Config} from '../../../src/RepositoryLinter/Config.js' + +describe('Config', function () { + beforeEach(function () { + this.requireConfigStub = stub(Config.prototype, 'requireConfig') + this.requirePkgStub = stub(Config.prototype, 'requirePkg') + }) + + afterEach(function () { + this.requireConfigStub.reset() + this.requirePkgStub.reset() + }) + + it('Should return a rules object', async function () { + // Given + const handler = { + meta: {messages: {badVersion: 'Your react version is not 20'}}, + create: function () {} + } + this.requireConfigStub.returns({ + plugins: ['tester'], + rules: { + 'tester/react-version': 1 + } + }) + this.requirePkgStub.returns({rules: {'react-version': handler}}) + + // When + const rulesLoaded = await Config.create().load() + + // Then + expect(this.requirePkgStub.calledWith('tester')).to.be.eql(true) + expect(rulesLoaded).to.be.eqls({'tester/react-version': {handler, level: 1}}) + }) +}) diff --git a/packages/sui-lint/test/server/ContextSpec.js b/packages/sui-lint/test/server/ContextSpec.js new file mode 100644 index 000000000..fd640bcd4 --- /dev/null +++ b/packages/sui-lint/test/server/ContextSpec.js @@ -0,0 +1,206 @@ +import {expect} from 'chai' +import {spy, stub} from 'sinon' + +import {Context} from '../../src/RepositoryLinter/Context.js' +import {Match} from '../../src/RepositoryLinter/Match.js' + +const LEVELS = { + OFF: 0, + WARNING: 1, + ERROR: 2 +} + +describe('Context', function () { + beforeEach(function () { + this.reportSpy = spy(Context.prototype, 'report') + this.monitoringSpy = spy(Context.prototype, 'monitoring') + this.runnerStub = {assertion: stub()} + this.handlerStub = { + meta: {messages: {badVersion: 'Message for your bad version'}}, + __assertionStub: stub(), + __missmatchStub: stub(), + create() { + return { + 'package.json': this.__assertionStub, + missmatch: this.__missmatchStub + } + } + } + + this.handlerInnerStub = { + meta: {messages: {badVersion: 'Message for your bad version', badKey: 'Message for bad {{key}}'}}, + create(context) { + return { + 'package.json': matches => { + context.report({messageId: 'badVersion'}) + context.monitoring(true) + }, + missmatch: key => { + context.report({messageId: 'badKey', data: {key}}) + context.monitoring(false) + } + } + } + } + + this.handlerReducerMonitoringStub = { + meta: {messages: {badVersion: 'Message for your bad version', badKey: 'Message for bad {{key}}'}}, + reduceMonitoring: stub(), + create(context) { + return { + 'package.json': matches => { + context.monitoring(true) + context.monitoring(false) + } + } + } + } + }) + + afterEach(function () { + this.handlerStub.__assertionStub.reset() + this.handlerStub.__missmatchStub.reset() + + this.monitoringSpy.restore() + this.reportSpy.restore() + + this.runnerStub.assertion.reset() + + this.handlerReducerMonitoringStub.reduceMonitoring?.reset() + }) + + it('Should call to the assertions in the handler when there is Match', function () { + // Given + const emptyMatch = Match.empty() + this.runnerStub.assertion.returns([emptyMatch]) + + // When + Context.create(LEVELS.WARNING, this.handlerStub, 'tests/node-version', this.runnerStub).run() + + // Then + expect(this.handlerStub.__assertionStub.firstCall.firstArg).to.be.instanceof(Array) + expect(this.handlerStub.__assertionStub.firstCall.firstArg[0]).to.be.eql(emptyMatch) + }) + + it('Should call to the missmatch in the handler when there is not Match with the "failing" key', function () { + // Given + this.runnerStub.assertion.returns([]) + + // When + Context.create(LEVELS.WARNING, this.handlerStub, 'tests/node-version', this.runnerStub).run() + + // Then + expect(this.handlerStub.__assertionStub.firstCall).to.be.eql(null) + expect(this.handlerStub.__missmatchStub.firstCall.firstArg).to.be.eql('package.json') + }) + + it('Should create new monitorings and messages from assertion function', function () { + // Given + this.runnerStub.assertion.returns([Match.empty()]) + + // When + Context.create(LEVELS.WARNING, this.handlerInnerStub, 'tests/node-version', this.runnerStub).run() + + // Then + expect(this.reportSpy.firstCall.firstArg).to.be.eql({messageId: 'badVersion'}) + expect(this.monitoringSpy.firstCall.firstArg).to.be.eql(true) + }) + + it('Should create new monitorings and messages from missmatch function', function () { + // Given + this.runnerStub.assertion.returns([]) + + // When + Context.create(LEVELS.WARNING, this.handlerInnerStub, 'tests/node-version', this.runnerStub).run() + + // Then + expect(this.reportSpy.firstCall.firstArg).to.be.eql({messageId: 'badKey', data: {key: 'package.json'}}) + expect(this.monitoringSpy.firstCall.firstArg).to.be.eql(false) + }) + + it('Should properly format the messages', function () { + // Given + this.runnerStub.assertion.returns([]) + + // When + const context = Context.create(LEVELS.WARNING, this.handlerInnerStub, 'tests/node-version', this.runnerStub).run() + + // Then + expect(context.messages).to.be.eql([ + { + rule: 'tests/node-version', + message: 'Message for bad package.json', + level: 1, + messageId: 'badKey', + data: {key: 'package.json'} + } + ]) + }) + + it('Should properly format the monitoring', function () { + // Given + this.runnerStub.assertion.returns([Match.empty()]) + + // When + const context = Context.create(LEVELS.WARNING, this.handlerInnerStub, 'tests/node-version', this.runnerStub).run() + + // Then + expect(context.signal).to.be.eql({ + rule: 'tests/node-version', + value: true, + level: 1 + }) + }) + + it('Should require a reduceMonitoring function when there are more than one monitor', function () { + // Given + this.runnerStub.assertion.returns([Match.empty()]) + this.handlerReducerMonitoringStub.reduceMonitoring.returns(false) + + // When + const context = Context.create( + LEVELS.WARNING, + this.handlerReducerMonitoringStub, + 'tests/node-version', + this.runnerStub + ).run() + + // Then + expect(context.signal).to.be.eql({ + rule: 'tests/node-version', + value: false, + level: 1 + }) + expect(this.handlerReducerMonitoringStub.reduceMonitoring.firstCall.firstArg).to.be.eql([ + { + assertion: 'package.json', + rule: 'tests/node-version', + value: true, + level: 1 + }, + { + assertion: 'package.json', + rule: 'tests/node-version', + value: false, + level: 1 + } + ]) + }) + + it('Should throw an exception if the reduceMonitoring function is undefined', function () { + // Given + this.runnerStub.assertion.returns([Match.empty()]) + delete this.handlerReducerMonitoringStub.reduceMonitoring + + // When + const context = Context.create( + LEVELS.WARNING, + this.handlerReducerMonitoringStub, + 'tests/node-version', + this.runnerStub + ).run() + + // Then + expect(() => context.signal).to.be.throw(Context.MISSING_REDUCER_MONITORING_MSG) + }) +}) diff --git a/packages/sui-lint/test/server/MatchSpec.js b/packages/sui-lint/test/server/MatchSpec.js new file mode 100644 index 000000000..5db0c60c7 --- /dev/null +++ b/packages/sui-lint/test/server/MatchSpec.js @@ -0,0 +1,99 @@ +import {expect} from 'chai' +import {stub} from 'sinon' + +import {CustomFileReader, Match} from '../../src/RepositoryLinter/Match.js' + +describe('Match', function () { + beforeEach(function () { + this.isDirStub = stub(CustomFileReader.prototype, 'isDirectory') + + this.parseYMLStub = stub(CustomFileReader.prototype, 'parseYML') + this.parseJSONStub = stub(CustomFileReader.prototype, 'parseJSON') + this.rawStub = stub(CustomFileReader.prototype, 'raw') + }) + + afterEach(function () { + this.isDirStub.restore() + + this.parseYMLStub.restore() + this.parseJSONStub.restore() + this.rawStub.restore() + }) + + it('Should detect directories', function () { + // Given + this.isDirStub.returns(true) + + // When + const match = Match.create('/dir/path') + + // Then + expect(match.isDir).to.be.eqls(true) + }) + + it('Should detect files w/out extensions', function () { + // Given + this.isDirStub.returns(false) + this.rawStub.returns('20') + + // When + const match = Match.create('/dir/path') + + // Then + expect(match.isDir).to.be.eqls(false) + expect(this.rawStub.calledWith('/dir/path')).to.be.eql(true) + }) + + it('Should parse JSON files', function () { + // Given + this.isDirStub.returns(false) + this.parseJSONStub.returns({a: 1}) + + // When + const match = Match.create('/dir/file.json') + + // Then + expect(match.parsed).to.be.eqls({a: 1}) + expect(this.parseJSONStub.calledWith('/dir/file.json')).to.be.eql(true) + }) + + it('Should parse yml files', function () { + // Given + this.isDirStub.returns(false) + this.parseYMLStub.returns({a: 1}) + + // When + const match = Match.create('/dir/file.yml') + + // Then + expect(match.parsed).to.be.eqls({a: 1}) + expect(this.parseYMLStub.calledWith('/dir/file.yml')).to.be.eql(true) + }) + + it('Should parse yaml files', function () { + // Given + this.isDirStub.returns(false) + this.parseYMLStub.returns({a: 1}) + + // When + const match = Match.create('/dir/file.yaml') + + // Then + expect(match.parsed).to.be.eqls({a: 1}) + expect(this.parseYMLStub.calledWith('/dir/file.yaml')).to.be.eql(true) + }) + + it('Should read unkown files', function () { + // Given + this.isDirStub.returns(false) + this.rawStub.returns('Hello') + + // When + const match = Match.create('/dir/file.txt') + + // Then + expect(match.raw).to.be.eqls('Hello') + expect(match.parsed).to.be.eqls(undefined) + expect(this.rawStub.calledWith('/dir/file.txt')).to.be.eql(true) + }) +}) diff --git a/packages/sui-lint/test/server/ResultsSpec.js b/packages/sui-lint/test/server/ResultsSpec.js new file mode 100644 index 000000000..ad9cc62c5 --- /dev/null +++ b/packages/sui-lint/test/server/ResultsSpec.js @@ -0,0 +1,83 @@ +import {expect} from 'chai' +import {Table} from 'console-table-printer' +import {stub} from 'sinon' + +import {Results} from '../../src/RepositoryLinter/Results.js' + +describe('Results', function () { + beforeEach(function () { + this.addRowStub = stub(Table.prototype, 'addRow') + this.printTableStub = stub(Table.prototype, 'printTable') + + this.logStub = stub(Results.prototype, 'log') + }) + + afterEach(function () { + this.addRowStub.restore() + this.printTableStub.restore() + + this.logStub.restore() + }) + + it('Should print Happy Message it there is not messages', function () { + const executions = [ + { + messages: [], + signal: false + } + ] + Results.create(executions).logTable() + + expect(this.logStub.calledWith(Results.HAPPY_MESSAGE)).to.be.eq(true) + }) + + it('Should print a table with all the messages', function () { + const executions = [ + {messages: [{rule: 'tester/node-version', message: 'Node version fail', level: 1}], signal: 12}, + {messages: [{rule: 'tester/react-version', message: 'React version fail', level: 2}], signal: 17}, + {messages: [], signal: true} + ] + Results.create(executions).logTable() + + expect(this.addRowStub.firstCall.firstArg).to.be.eql({rule: 'tester/node-version', message: 'Node version fail'}) + expect(this.addRowStub.firstCall.lastArg).to.be.eql({color: 'yellow'}) + + expect(this.addRowStub.secondCall.firstArg).to.be.eql({rule: 'tester/react-version', message: 'React version fail'}) + expect(this.addRowStub.secondCall.lastArg).to.be.eql({color: 'red'}) + }) + + it('Should print a table with all the monitorings', function () { + const executions = [ + {messages: [{rule: 'tester/node-version', message: 'Node version fail', level: 1}], signal: 12}, + {messages: [{rule: 'tester/react-version', message: 'React version fail', level: 2}], signal: 17}, + {messages: [], signal: true} + ] + Results.create(executions).logMonitorings() + + expect(this.addRowStub.firstCall.firstArg).to.be.eql(12) + expect(this.addRowStub.secondCall.firstArg).to.be.eql(17) + expect(this.addRowStub.thirdCall.firstArg).to.be.eql(true) + }) + + it('Should print a JSON output', function () { + const executions = [ + {messages: [{rule: 'tester/node-version', message: 'Node version fail', level: 1}], signal: 12}, + {messages: [{rule: 'tester/react-version', message: 'React version fail', level: 2}], signal: 17}, + {messages: [], signal: true} + ] + Results.create(executions).logJSON() + + expect( + this.logStub.calledWith( + JSON.stringify( + [ + {rule: 'tester/node-version', message: 'Node version fail', level: 1}, + {rule: 'tester/react-version', message: 'React version fail', level: 2} + ], + null, + 2 + ) + ) + ).to.be.eq(true) + }) +}) diff --git a/packages/sui-lint/test/server/RunnerSpec.js b/packages/sui-lint/test/server/RunnerSpec.js new file mode 100644 index 000000000..282c75406 --- /dev/null +++ b/packages/sui-lint/test/server/RunnerSpec.js @@ -0,0 +1,26 @@ +import {expect} from 'chai' +import {stub} from 'sinon' + +import {Match} from '../../src/RepositoryLinter/Match.js' +import {Runner} from '../../src/RepositoryLinter/Runner.js' + +describe('Runner', function () { + beforeEach(function () { + this.syncStub = stub() + this.matchCreateStub = stub(Match, 'create') + }) + + afterEach(function () { + this.syncStub.reset() + this.matchCreateStub.restore() + }) + + it('Should return a list of matches', function () { + this.syncStub.returns(['path/file.json']) + + Runner.create({sync: this.syncStub}).assertion('**/*.json') + + expect(this.matchCreateStub.firstCall.firstArg).to.be.eql('path/file.json') + expect(this.syncStub.firstCall.firstArg).to.be.eql('**/*.json') + }) +}) From 1c34ef239558f8d4106fbbfdfd9b8c31f1a12eb8 Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Tue, 5 Mar 2024 10:52:40 +0100 Subject: [PATCH 167/545] Update packages/sui-lint/bin/sui-lint-js.js Co-authored-by: Kiko Ruiz Lloret --- packages/sui-lint/bin/sui-lint-js.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sui-lint/bin/sui-lint-js.js b/packages/sui-lint/bin/sui-lint-js.js index 91a826d04..65aca8901 100755 --- a/packages/sui-lint/bin/sui-lint-js.js +++ b/packages/sui-lint/bin/sui-lint-js.js @@ -14,7 +14,7 @@ program .option('--fix', 'fix automatically problems with js files') .option('--ignore-patterns ', 'Path patterns to ignore for linting') .option('--reporter ', 'Send results to DD using sui-logger') - .option('--pattern ', 'Patter of files to lint') + .option('--pattern ', 'Pattern of files to lint') .parse(process.argv) const {addFixes, fix, ignorePatterns = [], staged, pattern, reporter} = program.opts() From ab16dc574dd55c05ba032fd6db2b2b327cb00767 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Tue, 5 Mar 2024 13:12:36 +0100 Subject: [PATCH 168/545] feat(packages/lint-repository-sui): add typescript lint repository rule --- packages/lint-repository-sui/src/index.js | 4 +- .../src/rules/typescript.js | 80 +++++++++++++++++++ .../test/server/typescriptSpec.js | 49 ++++++++++++ 3 files changed, 132 insertions(+), 1 deletion(-) create mode 100644 packages/lint-repository-sui/src/rules/typescript.js create mode 100644 packages/lint-repository-sui/test/server/typescriptSpec.js diff --git a/packages/lint-repository-sui/src/index.js b/packages/lint-repository-sui/src/index.js index 3ec72031b..d1f8a51d1 100644 --- a/packages/lint-repository-sui/src/index.js +++ b/packages/lint-repository-sui/src/index.js @@ -2,6 +2,7 @@ const NodeVersion = require('./rules/node-version.js') const ReactVersion = require('./rules/react-version.js') const PackageLock = require('./rules/package-lock.js') const GithubAction = require('./rules/github-action.js') +const TypeScript = require('./rules/typescript.js') // ------------------------------------------------------------------------------ // Plugin Definition @@ -13,6 +14,7 @@ module.exports = { 'node-version': NodeVersion, 'react-version': ReactVersion, 'package-lock': PackageLock, - 'github-action': GithubAction + 'github-action': GithubAction, + typescript: TypeScript } } diff --git a/packages/lint-repository-sui/src/rules/typescript.js b/packages/lint-repository-sui/src/rules/typescript.js new file mode 100644 index 000000000..a2a4dba4e --- /dev/null +++ b/packages/lint-repository-sui/src/rules/typescript.js @@ -0,0 +1,80 @@ +const dedent = require('string-dedent') + +const MIN_TYPESCRIPT_VERSION = 5 + +module.exports = { + meta: { + type: 'problem', + docs: { + description: 'Check that your repository has a `tsconfig.json` file', + recommended: true, + url: null + }, + fixable: null, + schema: [], + messages: { + missingTypescriptDependency: dedent` + Your project doesn't have installed TypeScript. + Please install at least the version ${MIN_TYPESCRIPT_VERSION}. + If you are not sure about it, please contact Web Platform. + `, + badTypescriptVersion: dedent` + Please be sure that your repository use the latest TypeScript version ${MIN_TYPESCRIPT_VERSION}. + Your current version is {{version}}. + If you are not sure about it, please contact Web Platform. + `, + noTSConfigFile: dedent` + Every project must have a \`tsconfig.json\` file to setup TypeScript in the project. + If you are not sure about how do it, please contact with Web Platform team. + ` + } + }, + create: function (context) { + return { + 'tsconfig.json': () => { + // TO-DO: Check TypeScript configuration is the one we expect. + + return context.monitoring(true) + }, + 'package-lock.json': matches => { + const [packageLock] = matches + let version = packageLock?.parsed?.packages?.['node_modules/typescript']?.version + + // Check if repository is defining TS as dependency. + if (!version) { + context.report({ + messageId: 'missingTypescriptDependency' + }) + + return context.monitoring(false) + } + + version = version.split('.')[0] + + // Check if repository is using minimum expected version. + if (Number.parseInt(version) < MIN_TYPESCRIPT_VERSION) { + context.report({ + messageId: 'badTypescriptVersion', + data: {version} + }) + + return context.monitoring(false) + } + + return context.monitoring(true) + }, + missmatch: () => { + context.report({ + messageId: 'noTSConfigFile' + }) + + return context.monitoring(false) + } + } + }, + reduceMonitoring: function (monitorings) { + return monitorings.reduce((acc, signal) => { + return acc && signal.value + }, true) + } +} diff --git a/packages/lint-repository-sui/test/server/typescriptSpec.js b/packages/lint-repository-sui/test/server/typescriptSpec.js new file mode 100644 index 000000000..41d63d86b --- /dev/null +++ b/packages/lint-repository-sui/test/server/typescriptSpec.js @@ -0,0 +1,49 @@ +import dedent from 'dedent' + +import handler from '../../src/rules/typescript.js' +import {MatchStub, RuleTester} from '../TestHelpers.js' + +RuleTester.create('typescript', handler).run({ + valid: [ + { + 'tsconfig.json': [], + name: 'File `tsconfig.json` exists', + monitoring: true + }, + { + 'package-lock.json': [MatchStub.create({parsed: {packages: {'node_modules/typescript': {version: '5.0.4'}}}})], + name: 'TypeScript version is correct', + monitoring: true + } + ], + invalid: [ + { + 'package-lock.json': [MatchStub.create({parsed: {packages: {'node_modules/typescript': {version: '4.2.0'}}}})], + name: 'TypeScript version is not correct', + report: dedent` + Please be sure that your repository use the latest TypeScript version 5. + Your current version is 4. + If you are not sure about it, please contact Web Platform. + `, + monitoring: false + }, + { + 'package-lock.json': [MatchStub.create({parsed: {packages: {}}})], + name: 'TypeScript dependency is not installed', + report: dedent` + Your project doesn't have installed TypeScript. + Please install at least the version 5. + If you are not sure about it, please contact Web Platform. + `, + monitoring: false + }, + { + missmatch: '', + report: dedent` + Every project must have a \`tsconfig.json\` file to setup TypeScript in the project. + If you are not sure about how do it, please contact with Web Platform team. + `, + monitoring: false + } + ] +}) From 508fd8493180bbd6bab63e710e47fd2a6396f166 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Tue, 5 Mar 2024 13:12:43 +0100 Subject: [PATCH 169/545] feat(packages/sui-lint): add typescript lint repository rule --- packages/sui-lint/package.json | 4 ++-- packages/sui-lint/repository.config.js | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/sui-lint/package.json b/packages/sui-lint/package.json index 9f4181b1e..32926f790 100644 --- a/packages/sui-lint/package.json +++ b/packages/sui-lint/package.json @@ -39,8 +39,8 @@ "eslint-plugin-react": "7.30.1", "eslint-plugin-react-hooks": "4.6.0", "eslint-plugin-simple-import-sort": "7.0.0", - "eslint-plugin-sui": "beta", - "lint-repository-sui": "beta", + "eslint-plugin-sui": "../eslint-plugin-sui", + "lint-repository-sui": "../lint-repository-sui", "postcss-scss": "4.0.4", "prettier": "2.7.1", "stylelint": "14.11.0", diff --git a/packages/sui-lint/repository.config.js b/packages/sui-lint/repository.config.js index a4f0bf935..bd8ef0308 100644 --- a/packages/sui-lint/repository.config.js +++ b/packages/sui-lint/repository.config.js @@ -10,6 +10,7 @@ module.exports = { 'sui/node-version': RULES.WARNING, 'sui/react-version': RULES.WARNING, 'sui/package-lock': RULES.WARNING, - 'sui/github-action': RULES.WARNING + 'sui/github-action': RULES.WARNING, + 'sui/typescript': RULES.WARNING } } From 17c5f5e792dcefeae3a24b5e4c6da827d267b9ce Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Tue, 5 Mar 2024 14:56:08 +0100 Subject: [PATCH 170/545] refactor(packages/eslint-plugin-sui): avoid magic string add url to aggrements --- packages/eslint-plugin-sui/package.json | 10 ++++------ .../eslint-plugin-sui/src/rules/factory-pattern.js | 2 +- .../eslint-plugin-sui/src/rules/forbidden-require.js | 2 +- .../src/rules/function-named-parameters.js | 2 +- .../eslint-plugin-sui/src/rules/naming-convention.js | 2 +- .../src/rules/serialize-deserialize.js | 2 +- 6 files changed, 9 insertions(+), 11 deletions(-) diff --git a/packages/eslint-plugin-sui/package.json b/packages/eslint-plugin-sui/package.json index bb67458ac..4bab4403e 100644 --- a/packages/eslint-plugin-sui/package.json +++ b/packages/eslint-plugin-sui/package.json @@ -18,17 +18,15 @@ "update:eslint-docs": "eslint-doc-generator" }, "dependencies": { - "requireindex": "^1.2.0", - "string-dedent": "^3.0.1" + "requireindex": "1.2.0", + "string-dedent": "3.0.1" }, "devDependencies": { - "@s-ui/test": "^8.33.0", + "@s-ui/test": "8", "eslint": "^8.19.0", "eslint-doc-generator": "^1.0.0", "eslint-plugin-eslint-plugin": "^5.0.0", - "eslint-plugin-node": "^11.1.0", - "mocha": "^10.0.0", - "npm-run-all": "^4.1.5" + "eslint-plugin-node": "^11.1.0" }, "engines": { "node": "^14.17.0 || ^16.0.0 || >= 18.0.0" diff --git a/packages/eslint-plugin-sui/src/rules/factory-pattern.js b/packages/eslint-plugin-sui/src/rules/factory-pattern.js index 97cf15290..23a13c446 100644 --- a/packages/eslint-plugin-sui/src/rules/factory-pattern.js +++ b/packages/eslint-plugin-sui/src/rules/factory-pattern.js @@ -17,7 +17,7 @@ module.exports = { docs: { description: 'ensure to define at least one factory function', recommended: true, - url: 'https://github.mpi-internal.com/scmspain/es-td-agreements/blob/master/30-Frontend/00-agreements/02-project-structure.md' + url: 'https://github.mpi-internal.com/scmspain/es-td-agreements/blob/master/30-Frontend/00-agreements' }, fixable: null, schema: [], diff --git a/packages/eslint-plugin-sui/src/rules/forbidden-require.js b/packages/eslint-plugin-sui/src/rules/forbidden-require.js index ec3dbe74e..5e31b845b 100644 --- a/packages/eslint-plugin-sui/src/rules/forbidden-require.js +++ b/packages/eslint-plugin-sui/src/rules/forbidden-require.js @@ -17,7 +17,7 @@ module.exports = { docs: { description: 'ensure to use only ESM (import) style', recommended: true, - url: null + url: 'https://github.mpi-internal.com/scmspain/es-td-agreements/blob/master/30-Frontend/00-agreements' }, fixable: null, schema: [], diff --git a/packages/eslint-plugin-sui/src/rules/function-named-parameters.js b/packages/eslint-plugin-sui/src/rules/function-named-parameters.js index d7fcd975a..e4327df59 100644 --- a/packages/eslint-plugin-sui/src/rules/function-named-parameters.js +++ b/packages/eslint-plugin-sui/src/rules/function-named-parameters.js @@ -17,7 +17,7 @@ module.exports = { docs: { description: 'ensure to use named parameters', recommended: true, - url: null + url: 'https://github.mpi-internal.com/scmspain/es-td-agreements/blob/master/30-Frontend/00-agreements' }, fixable: null, schema: [], diff --git a/packages/eslint-plugin-sui/src/rules/naming-convention.js b/packages/eslint-plugin-sui/src/rules/naming-convention.js index 68477031f..7da81c742 100644 --- a/packages/eslint-plugin-sui/src/rules/naming-convention.js +++ b/packages/eslint-plugin-sui/src/rules/naming-convention.js @@ -17,7 +17,7 @@ module.exports = { docs: { description: 'ensure to use a proper naming convention', recommended: true, - url: null + url: 'https://github.mpi-internal.com/scmspain/es-td-agreements/blob/master/30-Frontend/00-agreements' }, fixable: null, schema: [], diff --git a/packages/eslint-plugin-sui/src/rules/serialize-deserialize.js b/packages/eslint-plugin-sui/src/rules/serialize-deserialize.js index 82232e19a..0a62ac3be 100644 --- a/packages/eslint-plugin-sui/src/rules/serialize-deserialize.js +++ b/packages/eslint-plugin-sui/src/rules/serialize-deserialize.js @@ -16,7 +16,7 @@ module.exports = { docs: { description: 'ensure entity create - toJSON', recommended: false, - url: null + url: 'https://github.mpi-internal.com/scmspain/es-td-agreements/blob/master/30-Frontend/00-agreements' }, fixable: null, schema: [], From 9d51b66cf99ecbfefa8861920a3ec23a0446cb22 Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Tue, 5 Mar 2024 14:57:56 +0100 Subject: [PATCH 171/545] feat(packages/lint-repository-sui): Avoid magic strings --- packages/lint-repository-sui/package.json | 2 +- packages/lint-repository-sui/src/rules/node-version.js | 6 ++++-- packages/lint-repository-sui/src/rules/react-version.js | 8 +++++--- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/packages/lint-repository-sui/package.json b/packages/lint-repository-sui/package.json index 46455cfa6..8bbd986c7 100644 --- a/packages/lint-repository-sui/package.json +++ b/packages/lint-repository-sui/package.json @@ -10,6 +10,6 @@ "test": "npx sui-test server" }, "devDependencies": { - "@s-ui/test": "^8.33.0" + "@s-ui/test": "8" } } diff --git a/packages/lint-repository-sui/src/rules/node-version.js b/packages/lint-repository-sui/src/rules/node-version.js index 0e53b0f68..802bc7f80 100644 --- a/packages/lint-repository-sui/src/rules/node-version.js +++ b/packages/lint-repository-sui/src/rules/node-version.js @@ -1,5 +1,7 @@ const dedent = require('string-dedent') +const REACT_VERSION = '20' + module.exports = { meta: { type: 'problem', @@ -18,7 +20,7 @@ module.exports = { `, badNodeVersion: dedent` Your current Node version is {{version}}. - Please be sure that your repository use the latest Node Version 20. + Please be sure that your repository use the latest Node Version ${REACT_VERSION}. If you are not sure about how do it, please contact with Platform Web. `, noNMVRCFile: dedent` @@ -39,7 +41,7 @@ module.exports = { const [nvmrcMatch] = matches const version = nvmrcMatch.raw.trim() - if (version !== '20') { + if (version !== REACT_VERSION) { context.report({ messageId: 'badNodeVersion', data: {version} diff --git a/packages/lint-repository-sui/src/rules/react-version.js b/packages/lint-repository-sui/src/rules/react-version.js index 38411eb7f..acca08e0c 100644 --- a/packages/lint-repository-sui/src/rules/react-version.js +++ b/packages/lint-repository-sui/src/rules/react-version.js @@ -1,5 +1,7 @@ const dedent = require('string-dedent') +const REACT_VERSION = '18' + module.exports = { meta: { type: 'problem', @@ -12,13 +14,13 @@ module.exports = { schema: [], messages: { badReactVersion: dedent` - Please be sure that your repository use the latest React Version 18. + Please be sure that your repository use the latest React Version ${REACT_VERSION}. Your current version is {{version}}. If you are not sure about how do it, please contact with Platform Web. `, missingReactDependencie: dedent` Your project doesnt have installed React. - Please install at least the version 18. + Please install at least the version ${REACT_VERSION}. If you are not sure about how do it, please contact with Platform Web. `, missingPackageLock: dedent` @@ -42,7 +44,7 @@ module.exports = { version = version.split('.')[0] - if (version !== '18') { + if (version !== REACT_VERSION) { context.report({ messageId: 'badReactVersion', data: {version} From de098d69d5cfa0bf3e26bd4eaac21b4ed9d25902 Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Tue, 5 Mar 2024 14:58:30 +0100 Subject: [PATCH 172/545] refactor(packages/sui-lint): refactor copies --- packages/sui-lint/bin/sui-lint-js.js | 3 ++- packages/sui-lint/src/RepositoryLinter/Results.js | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/sui-lint/bin/sui-lint-js.js b/packages/sui-lint/bin/sui-lint-js.js index 65aca8901..e4445b543 100755 --- a/packages/sui-lint/bin/sui-lint-js.js +++ b/packages/sui-lint/bin/sui-lint-js.js @@ -13,7 +13,7 @@ program .option('--staged') .option('--fix', 'fix automatically problems with js files') .option('--ignore-patterns ', 'Path patterns to ignore for linting') - .option('--reporter ', 'Send results to DD using sui-logger') + .option('--reporter ', 'Send results using a custom reporter') .option('--pattern ', 'Pattern of files to lint') .parse(process.argv) @@ -58,6 +58,7 @@ const baseConfig = { const {JSReporter} = await import(reporter) const reportered = await JSReporter.create() await reportered.map(results).send() + console.log('[sui-lint] All your stats has been sent', reporter) } if (fix) { diff --git a/packages/sui-lint/src/RepositoryLinter/Results.js b/packages/sui-lint/src/RepositoryLinter/Results.js index 6b837ca75..00de9d780 100644 --- a/packages/sui-lint/src/RepositoryLinter/Results.js +++ b/packages/sui-lint/src/RepositoryLinter/Results.js @@ -52,7 +52,7 @@ module.exports.Results = class Results { if (this.#monitorings.length === 0) return this.log(dedent` - There is not signal to be send to DD. Use 'context.monitoring' to add signals at your execution + There is not signal to be send. Use 'context.monitoring' to add signals at your execution `) From 369b096faf6ff77791d41eac9b136ff68ff814b8 Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Fri, 8 Mar 2024 12:03:25 +0100 Subject: [PATCH 173/545] feat(packages/eslint-plugin-sui): Improve rules to be more resilient --- packages/eslint-plugin-sui/package.json | 10 ++-- .../src/rules/factory-pattern.js | 4 +- .../src/rules/serialize-deserialize.js | 22 ++++++-- .../test/server/factory-pattern.js | 53 ++++++++++++++++++- .../test/server/serialize-deserialize.js | 23 +++++++- 5 files changed, 97 insertions(+), 15 deletions(-) diff --git a/packages/eslint-plugin-sui/package.json b/packages/eslint-plugin-sui/package.json index 4bab4403e..0bfb0bedb 100644 --- a/packages/eslint-plugin-sui/package.json +++ b/packages/eslint-plugin-sui/package.json @@ -14,7 +14,7 @@ "lint": "npm-run-all \"lint:*\"", "lint:eslint-docs": "npm-run-all \"update:eslint-docs -- --check\"", "lint:js": "eslint .", - "test": "npx sui-test server -P ./tests/**/*.js", + "test": "npx sui-test server", "update:eslint-docs": "eslint-doc-generator" }, "dependencies": { @@ -23,10 +23,10 @@ }, "devDependencies": { "@s-ui/test": "8", - "eslint": "^8.19.0", - "eslint-doc-generator": "^1.0.0", - "eslint-plugin-eslint-plugin": "^5.0.0", - "eslint-plugin-node": "^11.1.0" + "eslint": "8.19.0", + "eslint-doc-generator": "1.0.0", + "eslint-plugin-eslint-plugin": "5.0.0", + "eslint-plugin-node": "11.1.0" }, "engines": { "node": "^14.17.0 || ^16.0.0 || >= 18.0.0" diff --git a/packages/eslint-plugin-sui/src/rules/factory-pattern.js b/packages/eslint-plugin-sui/src/rules/factory-pattern.js index 23a13c446..51168657b 100644 --- a/packages/eslint-plugin-sui/src/rules/factory-pattern.js +++ b/packages/eslint-plugin-sui/src/rules/factory-pattern.js @@ -48,14 +48,14 @@ module.exports = { node.body?.body?.find(methodDefinition => { return ( methodDefinition.static && - methodDefinition.value?.body?.body?.find(body => body.type === 'ReturnStatement')?.argument?.callee.name === node.id.name // eslint-disable-line + methodDefinition.value?.body?.body?.find?.(body => body.type === 'ReturnStatement')?.argument?.callee?.name === node?.id?.name // eslint-disable-line ) }) ) if (!hasStaticFactoryMethod) { context.report({ - node, + node: node?.id ?? node.superClass ?? node, messageId: 'notFoundFactoryFunction' }) } diff --git a/packages/eslint-plugin-sui/src/rules/serialize-deserialize.js b/packages/eslint-plugin-sui/src/rules/serialize-deserialize.js index 0a62ac3be..c8faadbf8 100644 --- a/packages/eslint-plugin-sui/src/rules/serialize-deserialize.js +++ b/packages/eslint-plugin-sui/src/rules/serialize-deserialize.js @@ -30,6 +30,10 @@ module.exports = { missingCreateMethod: dedent` If your class has a 'toJSON' method. You have to define a 'static create' method too. The output of the 'toJSON' should be the same as the input of your 'static create' method + `, + forbiddenSpreadElements: dedent` + Spread operation are not allowed as part of the toJSON function. + The output of the 'toJSON' should be the same as the input of your 'static create' method ` } }, @@ -39,7 +43,7 @@ module.exports = { ClassDeclaration(node) { const create = node.body.body.find(i => i.key.name === 'create') const toJSON = node.body.body.find(i => i.key.name === 'toJSON') - const className = node.id.name + const className = node?.id?.name ?? '' if (['UseCase', 'Service', 'Repository'].some(allowWord => className.includes(allowWord))) return // eslint-disable-line @@ -47,13 +51,13 @@ module.exports = { if (create && !toJSON) return context.report({ - node: create, + node: create.key, messageId: 'missingToJSONMethod' }) if (toJSON && !create) return context.report({ - node: toJSON, + node: toJSON.key, messageId: 'missingCreateMethod' }) @@ -65,9 +69,17 @@ module.exports = { const createProperties = createParams.properties const toJSONProperties = toJSON.value.body.body[0].argument.properties + const spreadElement = toJSONProperties?.find(node => node.type === 'SpreadElement') + if(spreadElement) { + return context.report({ + node: spreadElement, + messageId: 'forbiddenSpreadElements' + }) + } + if (!toJSONProperties) { return context.report({ - node: toJSON, + node: toJSON.key, messageId: 'invalidTOJSONProperties' }) } @@ -78,7 +90,7 @@ module.exports = { const missingToJSONProps = createProps.filter(p => !toJSONProps.find(e => e === p)) if (missingToJSONProps.length) { context.report({ - node: toJSON, + node: toJSON.key, messageId: 'toJSONProperties', data: { props: missingToJSONProps.join(', ') diff --git a/packages/eslint-plugin-sui/test/server/factory-pattern.js b/packages/eslint-plugin-sui/test/server/factory-pattern.js index 2e63d949a..2adf1d6f6 100644 --- a/packages/eslint-plugin-sui/test/server/factory-pattern.js +++ b/packages/eslint-plugin-sui/test/server/factory-pattern.js @@ -8,7 +8,7 @@ import rule from '../../src/rules/factory-pattern.js' // more info: https://eslint.org/docs/latest/integrate/nodejs-api#ruletester // ------------------------------------------------------------------------------ -const ruleTester = new RuleTester({parserOptions: {ecmaVersion: 6}}) +const ruleTester = new RuleTester({parserOptions: {ecmaVersion: 2018, sourceType: 'module'}}) ruleTester.run('factory-pattern', rule, { valid: [ { @@ -33,7 +33,56 @@ ruleTester.run('factory-pattern', rule, { Avoid to use the 'new' keyword directly in your code. Use always a factory function `, - type: 'ClassDeclaration' + } + ] + }, + { + code: dedent` + class Config { + static create() { + return {API_URL: 'google.com'} + } + } + `, + errors: [ + { + message: dedent` + You have to define at least one static function that return an instance of your class. + Avoid to use the 'new' keyword directly in your code. + Use always a factory function + `, + } + ] + }, + { + code: dedent` + class Config { + static create() { + return () => {} + } + } + `, + errors: [ + { + message: dedent` + You have to define at least one static function that return an instance of your class. + Avoid to use the 'new' keyword directly in your code. + Use always a factory function + `, + } + ] + }, + { + code: dedent` + export default class extends Model {} + `, + errors: [ + { + message: dedent` + You have to define at least one static function that return an instance of your class. + Avoid to use the 'new' keyword directly in your code. + Use always a factory function + `, } ] } diff --git a/packages/eslint-plugin-sui/test/server/serialize-deserialize.js b/packages/eslint-plugin-sui/test/server/serialize-deserialize.js index e5fd6d925..ea8ea49b5 100644 --- a/packages/eslint-plugin-sui/test/server/serialize-deserialize.js +++ b/packages/eslint-plugin-sui/test/server/serialize-deserialize.js @@ -8,7 +8,7 @@ import rule from '../../src/rules/serialize-deserialize.js' // more info: https://eslint.org/docs/latest/integrate/nodejs-api#ruletester // ------------------------------------------------------------------------------ -const ruleTester = new RuleTester({parserOptions: {ecmaVersion: 6}}) +const ruleTester = new RuleTester({parserOptions: {ecmaVersion: 2018}}) ruleTester.run('serialize-deserialize', rule, { valid: [ { @@ -91,6 +91,27 @@ ruleTester.run('serialize-deserialize', rule, { } `, errors: [{message: 'Missing toJSON properties (id, name)'}] + }, + { + code: dedent` + class User { + static create({id, name}) { return new User(id, name) } + constructor(id, name) { + this.id = id + this.name = name + } + toJSON() { + return { + Noid: this.id, + ...this.user.toJSON() + } + } + } + `, + errors: [{message: dedent` + Spread operation are not allowed as part of the toJSON function. + The output of the 'toJSON' should be the same as the input of your 'static create' method + `}] } ] }) From 164ddf24f3bf05010c8f125f2e97f25031667a6f Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Fri, 8 Mar 2024 12:04:31 +0100 Subject: [PATCH 174/545] feat(packages/lint-repository-sui): Use only the major version of Node --- packages/lint-repository-sui/src/rules/node-version.js | 8 ++++---- .../lint-repository-sui/test/server/node-versionSpec.js | 4 +++- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/packages/lint-repository-sui/src/rules/node-version.js b/packages/lint-repository-sui/src/rules/node-version.js index 802bc7f80..5b15ebbda 100644 --- a/packages/lint-repository-sui/src/rules/node-version.js +++ b/packages/lint-repository-sui/src/rules/node-version.js @@ -1,6 +1,6 @@ const dedent = require('string-dedent') -const REACT_VERSION = '20' +const NODE_VERSION = '20' module.exports = { meta: { @@ -20,7 +20,7 @@ module.exports = { `, badNodeVersion: dedent` Your current Node version is {{version}}. - Please be sure that your repository use the latest Node Version ${REACT_VERSION}. + Please be sure that your repository use the latest Node Version ${NODE_VERSION}. If you are not sure about how do it, please contact with Platform Web. `, noNMVRCFile: dedent` @@ -40,8 +40,8 @@ module.exports = { } const [nvmrcMatch] = matches - const version = nvmrcMatch.raw.trim() - if (version !== REACT_VERSION) { + const [version] = nvmrcMatch.raw.trim().split('.') + if (version !== NODE_VERSION) { context.report({ messageId: 'badNodeVersion', data: {version} diff --git a/packages/lint-repository-sui/test/server/node-versionSpec.js b/packages/lint-repository-sui/test/server/node-versionSpec.js index c113232b9..7314dd4e0 100644 --- a/packages/lint-repository-sui/test/server/node-versionSpec.js +++ b/packages/lint-repository-sui/test/server/node-versionSpec.js @@ -3,6 +3,8 @@ import dedent from 'dedent' import handler from '../../src/rules/node-version.js' import {MatchStub, RuleTester} from '../TestHelpers.js' + + RuleTester.create('node-version', handler).run({ valid: [ { @@ -23,7 +25,7 @@ RuleTester.create('node-version', handler).run({ monitoring: 0 }, { - '.nvmrc': [MatchStub.create({raw: '16'})], + '.nvmrc': [MatchStub.create({raw: '16.1.3'})], name: 'Exits more than one nvmrc file', report: dedent` Your current Node version is 16. From c42244c87d7e38392458751c1bfea9dbfa5e2809 Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Fri, 8 Mar 2024 12:06:08 +0100 Subject: [PATCH 175/545] feat(packages/sui-lint): Allow relative path in reporter flag and select TS or JS eslint config --- packages/sui-lint/bin/sui-lint-js.js | 8 +- packages/sui-lint/bin/sui-lint-repository.js | 6 +- .../sui-lint/{eslintrc.js => eslintrc.js.js} | 10 +- packages/sui-lint/eslintrc.ts.js | 231 ++++++++++++++++++ packages/sui-lint/package.json | 4 +- 5 files changed, 249 insertions(+), 10 deletions(-) rename packages/sui-lint/{eslintrc.js => eslintrc.js.js} (97%) create mode 100644 packages/sui-lint/eslintrc.ts.js diff --git a/packages/sui-lint/bin/sui-lint-js.js b/packages/sui-lint/bin/sui-lint-js.js index e4445b543..55b884dc2 100755 --- a/packages/sui-lint/bin/sui-lint-js.js +++ b/packages/sui-lint/bin/sui-lint-js.js @@ -2,11 +2,13 @@ /* eslint-disable no-console */ // @ts-check +const path = require('path') +const fs = require("fs") const program = require('commander') const {checkFilesToLint, getFilesToLint, getGitIgnoredFiles, stageFilesIfRequired} = require('../src/helpers.js') const {ESLint} = require('eslint') -const config = require('../eslintrc.js') +const config = fs.existsSync(process.cwd() + '/tsconfig.json') ? require('../eslintrc.ts') : require('../eslintrc.js') program .option('--add-fixes') @@ -55,7 +57,9 @@ const baseConfig = { if (reporter) { console.log('[sui-lint] Sending stats using the reporter ', reporter) - const {JSReporter} = await import(reporter) + const reporterPath = path.isAbsolute(reporter) ? reporter : path.join(process.cwd() + '/' + reporter) + console.log({reporter, isAbsolute: path.isAbsolute(reporter), reporterPath}) + const {JSReporter} = await import(reporterPath) const reportered = await JSReporter.create() await reportered.map(results).send() console.log('[sui-lint] All your stats has been sent', reporter) diff --git a/packages/sui-lint/bin/sui-lint-repository.js b/packages/sui-lint/bin/sui-lint-repository.js index e8d845225..86f96d144 100755 --- a/packages/sui-lint/bin/sui-lint-repository.js +++ b/packages/sui-lint/bin/sui-lint-repository.js @@ -1,5 +1,6 @@ #!/usr/bin/env node /* eslint-disable no-console */ +const path = require('path') const program = require('commander') const {RepositoryLinter} = require('../src/RepositoryLinter') @@ -25,7 +26,10 @@ const {reporter, outputJson} = program.opts() if (reporter) { console.log('\n[sui-lint] Sending stats using the reporter\n\n', reporter) - const {RepositoryReporter} = await import(reporter) + const reporterPath = path.isAbsolute(reporter) ? reporter : path.join(process.cwd() + '/' + reporter) + console.log({reporter, isAbsolute: path.isAbsolute(reporter), reporterPath}) + const {RepositoryReporter} = await import(reporterPath) + const reportered = RepositoryReporter.create() await reportered.map(results).send() results.logMonitorings() diff --git a/packages/sui-lint/eslintrc.js b/packages/sui-lint/eslintrc.js.js similarity index 97% rename from packages/sui-lint/eslintrc.js rename to packages/sui-lint/eslintrc.js.js index 7f089f0e2..5eeb20833 100644 --- a/packages/sui-lint/eslintrc.js +++ b/packages/sui-lint/eslintrc.js.js @@ -175,8 +175,8 @@ module.exports = { 'react-hooks', 'simple-import-sort', 'jest', - 'jest-dom' - // 'sui' + 'jest-dom', + 'sui' ], rules: { ...REACT_RULES, @@ -199,9 +199,9 @@ module.exports = { 'prefer-regex-literals': RULES.WARNING, 'prettier/prettier': [RULES.ERROR, prettierOptions], 'simple-import-sort/imports': [RULES.WARNING, {groups: IMPORT_SORT_GROUPS}], - 'react/jsx-no-bind': RULES.OFF - // 'sui/factory-pattern': RULES.ERROR, - // 'sui/serialize-deserialize': RULES.ERROR + 'react/jsx-no-bind': RULES.OFF, + 'sui/factory-pattern': RULES.WARNING, + 'sui/serialize-deserialize': RULES.WARNING }, overrides: [ { diff --git a/packages/sui-lint/eslintrc.ts.js b/packages/sui-lint/eslintrc.ts.js new file mode 100644 index 000000000..9f4b2658e --- /dev/null +++ b/packages/sui-lint/eslintrc.ts.js @@ -0,0 +1,231 @@ +const prettierOptions = require('./.prettierrc.js') + +const RULES = { + OFF: 0, + WARNING: 1, + ERROR: 2 +} + +const REACT_RULES = { + 'react-hooks/exhaustive-deps': RULES.WARNING, // Checks effect dependencies + 'react-hooks/rules-of-hooks': RULES.ERROR, // Checks rules of Hooks + 'react/default-props-match-prop-types': RULES.WARNING, + 'react/jsx-handler-names': RULES.WARNING, + 'react/jsx-no-bind': RULES.WARNING, + 'react/jsx-no-duplicate-props': [RULES.WARNING, {ignoreCase: true}], + 'react/jsx-no-undef': RULES.WARNING, + 'react/jsx-pascal-case': [ + RULES.WARNING, + { + allowAllCaps: true, + ignore: [] + } + ], + 'react/jsx-uses-react': RULES.OFF, + 'react/jsx-uses-vars': RULES.WARNING, + 'react/no-deprecated': RULES.WARNING, + 'react/no-did-update-set-state': RULES.ERROR, + 'react/no-direct-mutation-state': RULES.ERROR, + 'react/no-is-mounted': RULES.WARNING, + 'react/no-multi-comp': [RULES.WARNING, {ignoreStateless: true}], + 'react/no-unused-prop-types': RULES.WARNING, + 'react/no-unknown-property': RULES.ERROR, + 'react/prop-types': RULES.ERROR, + 'react/react-in-jsx-scope': RULES.OFF, + 'react/require-render-return': RULES.WARNING, + 'react/no-unstable-nested-components': RULES.WARNING +} + +const TESTING_RULES = { + 'chai-friendly/no-unused-expressions': [RULES.ERROR, {allowShortCircuit: true, allowTernary: true}], + 'no-only-tests/no-only-tests': RULES.ERROR +} + +const JEST_TESTING_RULES = { + 'react/display-name': RULES.OFF, + 'jest/consistent-test-it': RULES.OFF, + 'jest/expect-expect': RULES.OFF, + 'jest/max-expects': RULES.OFF, + 'jest/max-nested-describe': RULES.ERROR, + 'jest/no-alias-methods': RULES.OFF, + 'jest/no-commented-out-tests': RULES.WARNING, + 'jest/no-conditional-expect': RULES.ERROR, + 'jest/no-conditional-in-test': RULES.ERROR, + 'jest/no-deprecated-functions': RULES.ERROR, + 'jest/no-disabled-tests': RULES.WARNING, + 'jest/no-done-callback': RULES.ERROR, + 'jest/no-duplicate-hooks': RULES.OFF, + 'jest/no-export': RULES.ERROR, + 'jest/no-focused-tests': RULES.ERROR, + 'jest/no-hooks': RULES.OFF, + 'jest/no-identical-title': RULES.ERROR, + 'jest/no-if': RULES.ERROR, + 'jest/no-interpolation-in-snapshots': RULES.ERROR, + 'jest/no-jasmine-globals': RULES.OFF, + 'jest/no-large-snapshots': [RULES.WARNING, {maxSize: 300}], + 'jest/no-mocks-import': RULES.ERROR, + 'jest/no-restricted-matchers': RULES.OFF, + 'jest/no-standalone-expect': RULES.OFF, + 'jest/no-test-prefixes': RULES.ERROR, + 'jest/no-test-return-statement': RULES.OFF, + 'jest/prefer-called-with': RULES.ERROR, + 'jest/prefer-comparison-matcher': RULES.ERROR, + 'jest/prefer-each': RULES.ERROR, + 'jest/prefer-equality-matcher': RULES.ERROR, + 'jest/prefer-expect-assertions': RULES.OFF, + 'jest/prefer-expect-resolves': RULES.OFF, + 'jest/prefer-hooks-in-order': RULES.ERROR, + 'jest/prefer-hooks-on-top': RULES.ERROR, + 'jest/prefer-lowercase-title': RULES.OFF, + 'jest/prefer-mock-promise-shorthand': RULES.ERROR, + 'jest/prefer-snapshot-hint': RULES.ERROR, + 'jest/prefer-spy-on': RULES.OFF, + 'jest/prefer-strict-equal': RULES.OFF, + 'jest/prefer-to-be': RULES.OFF, + 'jest/prefer-to-contain': RULES.WARNING, + 'jest/prefer-to-have-length': RULES.WARNING, + 'jest/prefer-todo': RULES.WARNING, + 'jest/require-hook': RULES.OFF, + 'jest/require-to-throw-message': RULES.OFF, + 'jest/require-top-level-describe': RULES.OFF, + 'jest/unbound-method': RULES.OFF, + 'jest/valid-describe-callback': RULES.ERROR, + 'jest/valid-expect': RULES.ERROR, + 'jest/valid-expect-in-promise': RULES.ERROR, + 'jest/valid-title': RULES.WARNING, + 'jest-dom/prefer-checked': RULES.ERROR, + 'jest-dom/prefer-empty': RULES.ERROR, + 'jest-dom/prefer-enabled-disabled': RULES.ERROR, + 'jest-dom/prefer-focus': RULES.ERROR, + 'jest-dom/prefer-in-document': RULES.ERROR, + 'jest-dom/prefer-required': RULES.ERROR, + 'jest-dom/prefer-to-have-attribute': RULES.ERROR, + 'jest-dom/prefer-to-have-class': RULES.ERROR, + 'jest-dom/prefer-to-have-style': RULES.ERROR, + 'jest-dom/prefer-to-have-text-content': RULES.ERROR, + 'jest-dom/prefer-to-have-value': RULES.ERROR +} + +const IMPORT_SORT_GROUPS = [ + // Side effect and polyfill imports. + ['^\\u0000'], + // Built-in node dependencies + [ + '^(assert|buffer|child_process|cluster|console|constants|crypto|dgram|dns|domain|events|fs|http|https|module|net|os|path|punycode|querystring|readline|repl|stream|string_decoder|sys|timers|tls|tty|url|util|vm|zlib|freelist|v8|process|async_hooks|http2|perf_hooks)(/.*|$)' + ], + // Packages. `react` related packages come first. + ['^react'], + // Standalone packages. + ['^\\w'], + // Generic organization packages. + ['^@'], + // S-UI & ADV-UI organization packages. + ['^@s-ui', '^@adv-ui'], + // Relative imports. Put `./` last. + ['^\\.\\.(?!/?$)', '^\\.\\./?$', '^\\./(?=.*/)(?!/?$)', '^\\.(?!/?$)', '^\\./?$'], + // Style imports. + ['^.+\\.s?css$'] +] + +let resolvedBabelPresetSui +try { + resolvedBabelPresetSui = require.resolve('babel-preset-sui') +} catch {} + +const parser = resolvedBabelPresetSui ? '@babel/eslint-parser' : undefined + +module.exports = { + parser, + + env: { + es6: true, + mocha: true, + 'jest/globals': true + }, + + globals: { + 'cypress/globals': true, + preval: 'readonly' + }, + + parserOptions: { + ecmaFeatures: { + jsx: true + }, + ecmaVersion: 12, + babelOptions: { + configFile: resolvedBabelPresetSui + } + }, + + settings: { + react: { + version: 'detect' + } + }, + + extends: ['standard', 'plugin:cypress/recommended', 'prettier'], + + plugins: [ + '@babel', + 'chai-friendly', + 'no-only-tests', + 'prettier', + 'react', + 'react-hooks', + 'simple-import-sort', + 'jest', + 'jest-dom', + 'sui' + ], + rules: { + ...REACT_RULES, + ...TESTING_RULES, + '@babel/no-unused-expressions': RULES.OFF, + 'accessor-pairs': RULES.OFF, + 'array-callback-return': RULES.WARNING, + 'import/no-webpack-loader-syntax': RULES.WARNING, + 'import/extensions': [RULES.WARNING, 'always', {ignorePackages: true}], + 'n/no-path-concat': RULES.WARNING, + 'no-console': RULES.WARNING, + 'no-debugger': RULES.ERROR, + 'no-nested-ternary': RULES.WARNING, + 'no-prototype-builtins': RULES.OFF, + 'no-return-await': RULES.WARNING, + 'no-unused-expressions': RULES.OFF, + 'no-unused-vars': [RULES.ERROR, {args: 'none', ignoreRestSiblings: true, varsIgnorePattern: 'React'}], + 'no-var': RULES.WARNING, + strict: RULES.OFF, + 'prefer-regex-literals': RULES.WARNING, + 'prettier/prettier': [RULES.ERROR, prettierOptions], + 'simple-import-sort/imports': [RULES.WARNING, {groups: IMPORT_SORT_GROUPS}], + 'react/jsx-no-bind': RULES.OFF, + 'sui/factory-pattern': RULES.WARNING, + 'sui/serialize-deserialize': RULES.WARNING + }, + overrides: [ + { + files: ['**/*.+(ts|tsx)'], + extends: ['standard-with-typescript', 'standard-react', 'prettier'], + parser: '@typescript-eslint/parser', + parserOptions: { + project: './tsconfig.json' + }, + rules: { + 'import/extensions': RULES.OFF, + 'no-return-await': RULES.OFF, + 'prettier/prettier': [RULES.ERROR, prettierOptions], + 'react/react-in-jsx-scope': RULES.OFF, + 'react/no-unused-prop-types': RULES.OFF, + '@typescript-eslint/explicit-function-return-type': [RULES.OFF, {allowTypedFunctionExpressions: false}], + 'chai-friendly/no-unused-expressions': RULES.ERROR, + '@typescript-eslint/no-unused-expressions': RULES.OFF, + '@typescript-eslint/return-await': RULES.OFF + } + }, + { + files: ['**/__tests__/**/*.js'], + rules: JEST_TESTING_RULES + } + ] +} diff --git a/packages/sui-lint/package.json b/packages/sui-lint/package.json index 32926f790..9f4181b1e 100644 --- a/packages/sui-lint/package.json +++ b/packages/sui-lint/package.json @@ -39,8 +39,8 @@ "eslint-plugin-react": "7.30.1", "eslint-plugin-react-hooks": "4.6.0", "eslint-plugin-simple-import-sort": "7.0.0", - "eslint-plugin-sui": "../eslint-plugin-sui", - "lint-repository-sui": "../lint-repository-sui", + "eslint-plugin-sui": "beta", + "lint-repository-sui": "beta", "postcss-scss": "4.0.4", "prettier": "2.7.1", "stylelint": "14.11.0", From 48b4ef65b0d7d24adf934f9ca5ec54357f170047 Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Fri, 8 Mar 2024 13:50:05 +0100 Subject: [PATCH 176/545] feat(packages/sui-lint): Add flag to force lint all files --- packages/sui-lint/bin/sui-lint-js.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/sui-lint/bin/sui-lint-js.js b/packages/sui-lint/bin/sui-lint-js.js index 55b884dc2..a5cce7a1c 100755 --- a/packages/sui-lint/bin/sui-lint-js.js +++ b/packages/sui-lint/bin/sui-lint-js.js @@ -13,13 +13,14 @@ const config = fs.existsSync(process.cwd() + '/tsconfig.json') ? require('../esl program .option('--add-fixes') .option('--staged') + .option('--force-full-lint', 'force to lint all the JS files') .option('--fix', 'fix automatically problems with js files') .option('--ignore-patterns ', 'Path patterns to ignore for linting') .option('--reporter ', 'Send results using a custom reporter') .option('--pattern ', 'Pattern of files to lint') .parse(process.argv) -const {addFixes, fix, ignorePatterns = [], staged, pattern, reporter} = program.opts() +const {addFixes, fix, ignorePatterns = [], staged, pattern, reporter, forceFullLint} = program.opts() const {CI} = process.env const EXTENSIONS = ['js', 'jsx', 'ts', 'tsx'] @@ -53,7 +54,11 @@ const baseConfig = { useEslintrc: false }) - const results = await eslint.lintFiles(files) + if (forceFullLint) { + console.log('[sui-lint] force to lint all our JS files') + } + + const results = await eslint.lintFiles(!forceFullLint ? files : DEFAULT_PATTERN) if (reporter) { console.log('[sui-lint] Sending stats using the reporter ', reporter) From 3865416ff0553fb36593a9cb138bd15c4cc29775 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joan=20Leo=CC=81n?= Date: Fri, 8 Mar 2024 13:51:07 +0100 Subject: [PATCH 177/545] feat(packages/eslint-plugin-sui): fix more than one line in toJson --- packages/eslint-plugin-sui/package.json | 2 +- .../src/rules/serialize-deserialize.js | 3 +- .../test/server/serialize-deserialize.js | 28 +++++++++++++++++-- 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/packages/eslint-plugin-sui/package.json b/packages/eslint-plugin-sui/package.json index 0bfb0bedb..d33ba7133 100644 --- a/packages/eslint-plugin-sui/package.json +++ b/packages/eslint-plugin-sui/package.json @@ -1,6 +1,6 @@ { "name": "eslint-plugin-sui", - "version": "0.0.0", + "version": "1.0.0-beta.9", "description": "Set of sui lint rules", "keywords": [ "eslint", diff --git a/packages/eslint-plugin-sui/src/rules/serialize-deserialize.js b/packages/eslint-plugin-sui/src/rules/serialize-deserialize.js index c8faadbf8..9d1bf68a9 100644 --- a/packages/eslint-plugin-sui/src/rules/serialize-deserialize.js +++ b/packages/eslint-plugin-sui/src/rules/serialize-deserialize.js @@ -67,7 +67,8 @@ module.exports = { } const createProperties = createParams.properties - const toJSONProperties = toJSON.value.body.body[0].argument.properties + const toJSONProperties = toJSON.value.body.body?.find(node => node.type === 'ReturnStatement')?.argument + ?.properties const spreadElement = toJSONProperties?.find(node => node.type === 'SpreadElement') if(spreadElement) { diff --git a/packages/eslint-plugin-sui/test/server/serialize-deserialize.js b/packages/eslint-plugin-sui/test/server/serialize-deserialize.js index ea8ea49b5..6ff0e8dbb 100644 --- a/packages/eslint-plugin-sui/test/server/serialize-deserialize.js +++ b/packages/eslint-plugin-sui/test/server/serialize-deserialize.js @@ -20,6 +20,26 @@ ruleTester.run('serialize-deserialize', rule, { this.name = name } toJSON() { + return { + id: this.id, + name: this.name + } + } + } + ` + }, + { + code: dedent` + class User { + static create({id, name}) { return new User(id, name) } + constructor(id, name) { + this.id = id + this.name = name + } + toJSON() { + const name="John" + const surname="Doe" + return { id: this.id, name: this.name @@ -108,10 +128,14 @@ ruleTester.run('serialize-deserialize', rule, { } } `, - errors: [{message: dedent` + errors: [ + { + message: dedent` Spread operation are not allowed as part of the toJSON function. The output of the 'toJSON' should be the same as the input of your 'static create' method - `}] + ` + } + ] } ] }) From 75d31c62190d715a9281f3be7e461251e877a440 Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Thu, 14 Mar 2024 10:38:28 +0100 Subject: [PATCH 178/545] feat(packages/sui-lint): add new dependency --- packages/sui-lint/package.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/sui-lint/package.json b/packages/sui-lint/package.json index 9f4181b1e..fa6ab1976 100644 --- a/packages/sui-lint/package.json +++ b/packages/sui-lint/package.json @@ -21,11 +21,10 @@ "@typescript-eslint/eslint-plugin": "5.62.0", "commander": "8.3.0", "console-table-printer": "2.12.0", - "js-yaml": "4.1.0", - "fast-glob": "3.3.2", "eslint": "8.56.0", "eslint-config-prettier": "8.5.0", "eslint-config-standard": "17.0.0", + "eslint-config-standard-react": "^13.0.0", "eslint-config-standard-with-typescript": "22.0.0", "eslint-plugin-chai-friendly": "0.7.2", "eslint-plugin-cypress": "2.12.1", @@ -40,6 +39,8 @@ "eslint-plugin-react-hooks": "4.6.0", "eslint-plugin-simple-import-sort": "7.0.0", "eslint-plugin-sui": "beta", + "fast-glob": "3.3.2", + "js-yaml": "4.1.0", "lint-repository-sui": "beta", "postcss-scss": "4.0.4", "prettier": "2.7.1", From 0324821fc9dc0d57dbdc78db86d587439650f85e Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Thu, 14 Mar 2024 11:09:16 +0100 Subject: [PATCH 179/545] feat(packages/sui-lint): add new dependency --- packages/lint-repository-sui/test/server/node-versionSpec.js | 2 -- packages/sui-lint/bin/sui-lint-js.js | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/lint-repository-sui/test/server/node-versionSpec.js b/packages/lint-repository-sui/test/server/node-versionSpec.js index 7314dd4e0..daf20325d 100644 --- a/packages/lint-repository-sui/test/server/node-versionSpec.js +++ b/packages/lint-repository-sui/test/server/node-versionSpec.js @@ -3,8 +3,6 @@ import dedent from 'dedent' import handler from '../../src/rules/node-version.js' import {MatchStub, RuleTester} from '../TestHelpers.js' - - RuleTester.create('node-version', handler).run({ valid: [ { diff --git a/packages/sui-lint/bin/sui-lint-js.js b/packages/sui-lint/bin/sui-lint-js.js index a5cce7a1c..7d2c6735c 100755 --- a/packages/sui-lint/bin/sui-lint-js.js +++ b/packages/sui-lint/bin/sui-lint-js.js @@ -3,7 +3,7 @@ // @ts-check const path = require('path') -const fs = require("fs") +const fs = require('fs') const program = require('commander') const {checkFilesToLint, getFilesToLint, getGitIgnoredFiles, stageFilesIfRequired} = require('../src/helpers.js') From 27c6e29eed1b33f2fb5a06cff53413717a88a856 Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Thu, 14 Mar 2024 11:14:49 +0100 Subject: [PATCH 180/545] feat(packages/sui-lint): add new dependency --- .../eslint-plugin-sui/src/rules/serialize-deserialize.js | 2 +- packages/eslint-plugin-sui/test/server/factory-pattern.js | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/eslint-plugin-sui/src/rules/serialize-deserialize.js b/packages/eslint-plugin-sui/src/rules/serialize-deserialize.js index 9d1bf68a9..33c6c2232 100644 --- a/packages/eslint-plugin-sui/src/rules/serialize-deserialize.js +++ b/packages/eslint-plugin-sui/src/rules/serialize-deserialize.js @@ -71,7 +71,7 @@ module.exports = { ?.properties const spreadElement = toJSONProperties?.find(node => node.type === 'SpreadElement') - if(spreadElement) { + if (spreadElement) { return context.report({ node: spreadElement, messageId: 'forbiddenSpreadElements' diff --git a/packages/eslint-plugin-sui/test/server/factory-pattern.js b/packages/eslint-plugin-sui/test/server/factory-pattern.js index 2adf1d6f6..cbde9a821 100644 --- a/packages/eslint-plugin-sui/test/server/factory-pattern.js +++ b/packages/eslint-plugin-sui/test/server/factory-pattern.js @@ -32,7 +32,7 @@ ruleTester.run('factory-pattern', rule, { You have to define at least one static function that return an instance of your class. Avoid to use the 'new' keyword directly in your code. Use always a factory function - `, + ` } ] }, @@ -50,7 +50,7 @@ ruleTester.run('factory-pattern', rule, { You have to define at least one static function that return an instance of your class. Avoid to use the 'new' keyword directly in your code. Use always a factory function - `, + ` } ] }, @@ -68,7 +68,7 @@ ruleTester.run('factory-pattern', rule, { You have to define at least one static function that return an instance of your class. Avoid to use the 'new' keyword directly in your code. Use always a factory function - `, + ` } ] }, @@ -82,7 +82,7 @@ ruleTester.run('factory-pattern', rule, { You have to define at least one static function that return an instance of your class. Avoid to use the 'new' keyword directly in your code. Use always a factory function - `, + ` } ] } From b66fd7dfae0c3eeeecd6f1d034259defddd24090 Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Thu, 14 Mar 2024 11:20:55 +0100 Subject: [PATCH 181/545] feat(packages/sui-lint): disable sui checks --- packages/sui-lint/eslintrc.js.js | 10 +++++----- packages/sui-lint/eslintrc.ts.js | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/sui-lint/eslintrc.js.js b/packages/sui-lint/eslintrc.js.js index 5eeb20833..3681f04a3 100644 --- a/packages/sui-lint/eslintrc.js.js +++ b/packages/sui-lint/eslintrc.js.js @@ -175,8 +175,8 @@ module.exports = { 'react-hooks', 'simple-import-sort', 'jest', - 'jest-dom', - 'sui' + 'jest-dom' + // 'sui' ], rules: { ...REACT_RULES, @@ -199,9 +199,9 @@ module.exports = { 'prefer-regex-literals': RULES.WARNING, 'prettier/prettier': [RULES.ERROR, prettierOptions], 'simple-import-sort/imports': [RULES.WARNING, {groups: IMPORT_SORT_GROUPS}], - 'react/jsx-no-bind': RULES.OFF, - 'sui/factory-pattern': RULES.WARNING, - 'sui/serialize-deserialize': RULES.WARNING + 'react/jsx-no-bind': RULES.OFF + // 'sui/factory-pattern': RULES.WARNING, + // 'sui/serialize-deserialize': RULES.WARNING }, overrides: [ { diff --git a/packages/sui-lint/eslintrc.ts.js b/packages/sui-lint/eslintrc.ts.js index 9f4b2658e..985ac0dda 100644 --- a/packages/sui-lint/eslintrc.ts.js +++ b/packages/sui-lint/eslintrc.ts.js @@ -175,8 +175,8 @@ module.exports = { 'react-hooks', 'simple-import-sort', 'jest', - 'jest-dom', - 'sui' + 'jest-dom' + // 'sui' ], rules: { ...REACT_RULES, @@ -199,9 +199,9 @@ module.exports = { 'prefer-regex-literals': RULES.WARNING, 'prettier/prettier': [RULES.ERROR, prettierOptions], 'simple-import-sort/imports': [RULES.WARNING, {groups: IMPORT_SORT_GROUPS}], - 'react/jsx-no-bind': RULES.OFF, - 'sui/factory-pattern': RULES.WARNING, - 'sui/serialize-deserialize': RULES.WARNING + 'react/jsx-no-bind': RULES.OFF + // 'sui/factory-pattern': RULES.WARNING, + // 'sui/serialize-deserialize': RULES.WARNING }, overrides: [ { From 57e55cfeba74087b2da535cadbe85e07190cdf8d Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Thu, 14 Mar 2024 11:42:29 +0100 Subject: [PATCH 182/545] feat(packages/sui-lint): disable sui checks --- package.json | 2 +- packages/sui-lint/bin/sui-lint-js.js | 2 +- packages/sui-lint/{eslintrc.js.js => eslintrc.js} | 0 3 files changed, 2 insertions(+), 2 deletions(-) rename packages/sui-lint/{eslintrc.js.js => eslintrc.js} (100%) diff --git a/package.json b/package.json index f0951fa56..e41587415 100644 --- a/package.json +++ b/package.json @@ -79,4 +79,4 @@ "stylelint": { "extends": "./node_modules/@s-ui/lint/stylelint.config.js" } -} \ No newline at end of file +} diff --git a/packages/sui-lint/bin/sui-lint-js.js b/packages/sui-lint/bin/sui-lint-js.js index 7d2c6735c..cdef41c06 100755 --- a/packages/sui-lint/bin/sui-lint-js.js +++ b/packages/sui-lint/bin/sui-lint-js.js @@ -8,7 +8,7 @@ const program = require('commander') const {checkFilesToLint, getFilesToLint, getGitIgnoredFiles, stageFilesIfRequired} = require('../src/helpers.js') const {ESLint} = require('eslint') -const config = fs.existsSync(process.cwd() + '/tsconfig.json') ? require('../eslintrc.ts') : require('../eslintrc.js') +const config = fs.existsSync(process.cwd() + '/tsconfig.json') ? require('../eslintrc.ts.js') : require('../eslintrc.js') program .option('--add-fixes') diff --git a/packages/sui-lint/eslintrc.js.js b/packages/sui-lint/eslintrc.js similarity index 100% rename from packages/sui-lint/eslintrc.js.js rename to packages/sui-lint/eslintrc.js From c18ca58092cca64e4eff22c53ccfd4fef07af9b0 Mon Sep 17 00:00:00 2001 From: "david.nieto" Date: Thu, 14 Mar 2024 16:05:06 +0100 Subject: [PATCH 183/545] feat(packages/sui-bundler): add flag for creating libs with css chunks --- packages/sui-bundler/bin/sui-bundler-lib.js | 5 +- packages/sui-bundler/webpack.config.lib.js | 110 +++++++++++--------- 2 files changed, 65 insertions(+), 50 deletions(-) diff --git a/packages/sui-bundler/bin/sui-bundler-lib.js b/packages/sui-bundler/bin/sui-bundler-lib.js index a0a9f8ae9..773133df9 100755 --- a/packages/sui-bundler/bin/sui-bundler-lib.js +++ b/packages/sui-bundler/bin/sui-bundler-lib.js @@ -17,6 +17,7 @@ program .option('-u, --umd [libraryName]', 'Whether to output library as umb') .option('-r, --root', 'Create build in root dir instead of version subdir') .option('-p, --path [path]', 'Absolute public path where files will be located.') + .option('--chunk-css', 'Bundle css in chunks') .on('--help', () => console.log(`Examples: $ sui-bundler lib src/index.js -o umd/my-lib -p http://my-cdn.com/my-lib -C' @@ -27,7 +28,7 @@ program const [entry] = program.args const options = program.opts() -const {clean = false, output, umd = false, root = false} = options +const {clean = false, output, umd = false, root = false, chunkCss = false} = options const publicPath = options.path if (!output) { @@ -46,7 +47,7 @@ process.env.NODE_ENV = process.env.NODE_ENV || 'production' const version = getPackageJson(process.cwd()).version const outputFolder = path.join(process.cwd(), output, path.sep, root ? '' : version) -const webpackConfig = {...config, entry: path.resolve(process.cwd(), entry)} +const webpackConfig = {...config({chunkCss}), entry: path.resolve(process.cwd(), entry)} webpackConfig.output.publicPath = publicPath + (root ? '' : version + '/') webpackConfig.output.path = outputFolder diff --git a/packages/sui-bundler/webpack.config.lib.js b/packages/sui-bundler/webpack.config.lib.js index e8d8d846c..322d21140 100644 --- a/packages/sui-bundler/webpack.config.lib.js +++ b/packages/sui-bundler/webpack.config.lib.js @@ -1,6 +1,11 @@ const webpack = require('webpack') const MiniCssExtractPlugin = require('mini-css-extract-plugin') -const {cleanList, envVars, MAIN_ENTRY_POINT, config} = require('./shared/index.js') +const { + cleanList, + envVars, + MAIN_ENTRY_POINT, + config +} = require('./shared/index.js') const path = require('path') const minifyJs = require('./shared/minify-js.js') const definePlugin = require('./shared/define.js') @@ -9,55 +14,64 @@ const sassRules = require('./shared/module-rules-sass.js') const {extractComments, sourceMap, supportLegacyBrowsers} = require('./shared/config.js') const {aliasFromConfig} = require('./shared/resolve-alias.js') -const cssFileName = 'styles.css' +const CWD = process.cwd() +const PUBLIC_PATH = process.env.CDN || config.cdn || '/' +const PWD = process.env.PWD ?? '' -module.exports = { - mode: 'production', - resolve: { - alias: { - ...aliasFromConfig +module.exports = ({ + chunkCss +} = {}) => { + const chunkCssName = config.onlyHash ? '[contenthash:8].css' : '[name].[contenthash:8].css' + const cssFileName = chunkCss ? chunkCssName : 'styles.css' + return { + mode: 'production', + context: path.resolve(CWD, 'src'), + resolve: { + alias: { + ...aliasFromConfig + }, + fallback: { + assert: false, + fs: false, + http: require.resolve('stream-http'), + https: require.resolve('https-browserify'), + path: false + }, + extensions: ['.js', '.json'], + modules: ['node_modules', path.resolve(process.cwd())] }, - fallback: { - assert: false, - fs: false, - http: require.resolve('stream-http'), - https: require.resolve('https-browserify'), - path: false - }, - extensions: ['.js', '.json'], - modules: ['node_modules', path.resolve(process.cwd())] - }, - entry: config.vendor - ? { + entry: config.vendor ? + { app: MAIN_ENTRY_POINT, vendor: config.vendor - } - : MAIN_ENTRY_POINT, - target: 'web', - output: { - filename: 'index.js' - }, - optimization: { - // avoid looping over all the modules after the compilation - checkWasmTypes: false, - minimize: true, - minimizer: [minifyJs({extractComments, sourceMap})] - }, - plugins: cleanList([ - new webpack.ProvidePlugin({ - process: 'process/browser' - }), - new MiniCssExtractPlugin({ - filename: cssFileName, - chunkFilename: cssFileName - }), - new webpack.optimize.LimitChunkCountPlugin({ - maxChunks: 1 - }), - new webpack.EnvironmentPlugin(envVars(config.env)), - definePlugin() - ]), - module: { - rules: [createBabelRules({supportLegacyBrowsers}), sassRules] + } : + MAIN_ENTRY_POINT, + target: 'web', + output: { + filename: 'index.js' + }, + optimization: { + // avoid looping over all the modules after the compilation + checkWasmTypes: false, + minimize: true, + minimizer: [minifyJs({extractComments, sourceMap})] + }, + plugins: cleanList([ + new webpack.ProvidePlugin({ + process: 'process/browser' + }), + new MiniCssExtractPlugin({ + filename: cssFileName, + chunkFilename: cssFileName + }), + !chunkCss && new webpack.optimize.LimitChunkCountPlugin({ + maxChunks: 1 + }), + new webpack.EnvironmentPlugin(envVars(config.env)), + definePlugin() + ]), + module: { + rules: [createBabelRules({supportLegacyBrowsers}), sassRules] + } } -} +} \ No newline at end of file From bf11deeee5862cf534c38d69e99a5cc1331a474b Mon Sep 17 00:00:00 2001 From: "david.nieto" Date: Thu, 14 Mar 2024 17:17:55 +0100 Subject: [PATCH 184/545] refactor(packages/sui-bundler): lint --- packages/sui-bundler/webpack.config.lib.js | 48 +++++++++++----------- 1 file changed, 25 insertions(+), 23 deletions(-) diff --git a/packages/sui-bundler/webpack.config.lib.js b/packages/sui-bundler/webpack.config.lib.js index 322d21140..5c519e4c5 100644 --- a/packages/sui-bundler/webpack.config.lib.js +++ b/packages/sui-bundler/webpack.config.lib.js @@ -1,11 +1,6 @@ const webpack = require('webpack') const MiniCssExtractPlugin = require('mini-css-extract-plugin') -const { - cleanList, - envVars, - MAIN_ENTRY_POINT, - config -} = require('./shared/index.js') +const {cleanList, envVars, MAIN_ENTRY_POINT, config} = require('./shared/index.js') const path = require('path') const minifyJs = require('./shared/minify-js.js') const definePlugin = require('./shared/define.js') @@ -15,12 +10,8 @@ const {extractComments, sourceMap, supportLegacyBrowsers} = require('./shared/co const {aliasFromConfig} = require('./shared/resolve-alias.js') const CWD = process.cwd() -const PUBLIC_PATH = process.env.CDN || config.cdn || '/' -const PWD = process.env.PWD ?? '' -module.exports = ({ - chunkCss -} = {}) => { +module.exports = ({chunkCss} = {}) => { const chunkCssName = config.onlyHash ? '[contenthash:8].css' : '[name].[contenthash:8].css' const cssFileName = chunkCss ? chunkCssName : 'styles.css' return { @@ -40,12 +31,12 @@ module.exports = ({ extensions: ['.js', '.json'], modules: ['node_modules', path.resolve(process.cwd())] }, - entry: config.vendor ? - { - app: MAIN_ENTRY_POINT, - vendor: config.vendor - } : - MAIN_ENTRY_POINT, + entry: config.vendor + ? { + app: MAIN_ENTRY_POINT, + vendor: config.vendor + } + : MAIN_ENTRY_POINT, target: 'web', output: { filename: 'index.js' @@ -54,7 +45,12 @@ module.exports = ({ // avoid looping over all the modules after the compilation checkWasmTypes: false, minimize: true, - minimizer: [minifyJs({extractComments, sourceMap})] + minimizer: [ + minifyJs({ + extractComments, + sourceMap + }) + ] }, plugins: cleanList([ new webpack.ProvidePlugin({ @@ -64,14 +60,20 @@ module.exports = ({ filename: cssFileName, chunkFilename: cssFileName }), - !chunkCss && new webpack.optimize.LimitChunkCountPlugin({ - maxChunks: 1 - }), + !chunkCss && + new webpack.optimize.LimitChunkCountPlugin({ + maxChunks: 1 + }), new webpack.EnvironmentPlugin(envVars(config.env)), definePlugin() ]), module: { - rules: [createBabelRules({supportLegacyBrowsers}), sassRules] + rules: [ + createBabelRules({ + supportLegacyBrowsers + }), + sassRules + ] } } -} \ No newline at end of file +} From 55a0749d10186ffb1b1c9f954710a596f32f14db Mon Sep 17 00:00:00 2001 From: "david.nieto" Date: Thu, 14 Mar 2024 17:35:03 +0100 Subject: [PATCH 185/545] feat(packages/sui-bundler): remove context --- packages/sui-bundler/webpack.config.lib.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/packages/sui-bundler/webpack.config.lib.js b/packages/sui-bundler/webpack.config.lib.js index 5c519e4c5..df15681ce 100644 --- a/packages/sui-bundler/webpack.config.lib.js +++ b/packages/sui-bundler/webpack.config.lib.js @@ -9,14 +9,11 @@ const sassRules = require('./shared/module-rules-sass.js') const {extractComments, sourceMap, supportLegacyBrowsers} = require('./shared/config.js') const {aliasFromConfig} = require('./shared/resolve-alias.js') -const CWD = process.cwd() - module.exports = ({chunkCss} = {}) => { const chunkCssName = config.onlyHash ? '[contenthash:8].css' : '[name].[contenthash:8].css' const cssFileName = chunkCss ? chunkCssName : 'styles.css' return { mode: 'production', - context: path.resolve(CWD, 'src'), resolve: { alias: { ...aliasFromConfig From 28e1a788a380dc7029aad4d07fc33dfe5d58b0f8 Mon Sep 17 00:00:00 2001 From: "david.nieto" Date: Thu, 14 Mar 2024 17:40:30 +0100 Subject: [PATCH 186/545] docs(packages/sui-bundler): add chunk css readme --- packages/sui-bundler/README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/packages/sui-bundler/README.md b/packages/sui-bundler/README.md index d32bf8c9d..225e9270a 100644 --- a/packages/sui-bundler/README.md +++ b/packages/sui-bundler/README.md @@ -151,6 +151,14 @@ $ sui-bundler lib src/index.js -o umd/fancy -p http://my-cdn.com/fancy --umd="My Then you can find your library directly in the provided namespace variable: `window.MyFancyLibraryNamespace` or `window.MyFancyLibraryNamespace.default` for ES6 exports. +#### Split css files with + +You can use `--chunk-css` option for creating different chunks for each css file + +``` +$ sui-bundler lib src/index.js -o umd/fancy -p http://my-cdn.com/fancy --chunk-css +``` + ## Configuration This tool works with zero configuration out the box but you could use some configuration in order to optimize or adapt the output to your needs. For that, you need to add a property `sui-bundler` inside a `config` property in the package.json of your project. From dc87bfc55611e622587a891444da2c237086f329 Mon Sep 17 00:00:00 2001 From: "david.nieto" Date: Fri, 15 Mar 2024 09:27:04 +0100 Subject: [PATCH 187/545] feat(packages/sui-bundler): update readme --- packages/sui-bundler/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sui-bundler/README.md b/packages/sui-bundler/README.md index 225e9270a..27f6fc05b 100644 --- a/packages/sui-bundler/README.md +++ b/packages/sui-bundler/README.md @@ -151,7 +151,7 @@ $ sui-bundler lib src/index.js -o umd/fancy -p http://my-cdn.com/fancy --umd="My Then you can find your library directly in the provided namespace variable: `window.MyFancyLibraryNamespace` or `window.MyFancyLibraryNamespace.default` for ES6 exports. -#### Split css files with +#### Use css chunks You can use `--chunk-css` option for creating different chunks for each css file From d2c4be0dd28a648edb28a59f77d4cf1f1cf04ccd Mon Sep 17 00:00:00 2001 From: "jordi.munoz@adevinta.com" Date: Fri, 15 Mar 2024 13:36:40 +0100 Subject: [PATCH 188/545] chore(packages/sui-bundler): add hydration overlay and webpack inject attributes plugin deps --- packages/sui-bundler/package.json | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/sui-bundler/package.json b/packages/sui-bundler/package.json index 3b3aac52a..d952b1484 100644 --- a/packages/sui-bundler/package.json +++ b/packages/sui-bundler/package.json @@ -22,6 +22,8 @@ "homepage": "https://github.com/SUI-Components/sui/tree/master/packages/sui-bundler#readme", "dependencies": { "@babel/core": "7.18.10", + "@builder.io/react-hydration-overlay": "0.0.8", + "@pmmmwh/react-refresh-webpack-plugin": "0.5.10", "@s-ui/helpers": "1", "@s-ui/sass-loader": "1", "address": "1.2.2", @@ -36,22 +38,22 @@ "escape-string-regexp": "4.0.0", "fast-glob": "3.2.11", "find-free-ports": "3.0.0", + "html-webpack-inject-attributes-plugin": "1.0.6", "html-webpack-plugin": "5.5.0", "https-browserify": "1.0.0", "mini-css-extract-plugin": "2.7.7", - "postcss": "8.4.31", "postcss-loader": "7.3.4", + "postcss": "8.4.31", "process": "0.11.10", + "react-refresh": "0.14.0", "sass": "1.54.5", "stream-http": "3.2.0", "strip-ansi": "6.0.1", "style-loader": "3.3.1", "url": "0.11.0", - "webpack": "5.82.1", "webpack-dev-server": "4.10.0", "webpack-manifest-plugin": "5.0.0", "webpack-node-externals": "3.0.0", - "@pmmmwh/react-refresh-webpack-plugin": "0.5.10", - "react-refresh": "0.14.0" + "webpack": "5.82.1" } } From f69fb9f60f45efc7fde32e9a46c6f172b5b6cbb2 Mon Sep 17 00:00:00 2001 From: "jordi.munoz@adevinta.com" Date: Fri, 15 Mar 2024 13:38:11 +0100 Subject: [PATCH 189/545] feat(packages/sui-bundler): add hydration overlay on webpack.config.client.dev.js --- packages/sui-bundler/webpack.config.client.dev.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/sui-bundler/webpack.config.client.dev.js b/packages/sui-bundler/webpack.config.client.dev.js index cd23dbe80..3f57be464 100644 --- a/packages/sui-bundler/webpack.config.client.dev.js +++ b/packages/sui-bundler/webpack.config.client.dev.js @@ -6,6 +6,7 @@ const HtmlWebpackPlugin = require('html-webpack-plugin') const {WebpackManifestPlugin} = require('webpack-manifest-plugin') const ReactRefreshWebpackPlugin = require('@pmmmwh/react-refresh-webpack-plugin') const MiniCssExtractPlugin = require('mini-css-extract-plugin') +const {withHydrationOverlayWebpack} = require('@builder.io/react-hydration-overlay/webpack') const {envVars, MAIN_ENTRY_POINT, config, cleanList, when} = require('./shared/index.js') const definePlugin = require('./shared/define.js') @@ -122,4 +123,7 @@ const webpackConfig = { devtool: config.sourcemaps && config.sourcemaps.dev ? config.sourcemaps.dev : false } -module.exports = webpackConfig +module.exports = withHydrationOverlayWebpack({ + appRootSelector: '#root', + isMainAppEntryPoint: entryPointName => entryPointName === 'app' +})(webpackConfig) From bfc20371dec312708222e22b7a44830a736a0732 Mon Sep 17 00:00:00 2001 From: "jordi.munoz@adevinta.com" Date: Fri, 15 Mar 2024 13:39:33 +0100 Subject: [PATCH 190/545] feat(packages/sui-bundler): add crossorigin=anonymous attribute to script tags on client dev --- packages/sui-bundler/webpack.config.client.dev.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/sui-bundler/webpack.config.client.dev.js b/packages/sui-bundler/webpack.config.client.dev.js index 3f57be464..5b7681975 100644 --- a/packages/sui-bundler/webpack.config.client.dev.js +++ b/packages/sui-bundler/webpack.config.client.dev.js @@ -6,6 +6,7 @@ const HtmlWebpackPlugin = require('html-webpack-plugin') const {WebpackManifestPlugin} = require('webpack-manifest-plugin') const ReactRefreshWebpackPlugin = require('@pmmmwh/react-refresh-webpack-plugin') const MiniCssExtractPlugin = require('mini-css-extract-plugin') +const HtmlWebpackInjectAttributesPlugin = require('html-webpack-inject-attributes-plugin') const {withHydrationOverlayWebpack} = require('@builder.io/react-hydration-overlay/webpack') const {envVars, MAIN_ENTRY_POINT, config, cleanList, when} = require('./shared/index.js') @@ -84,7 +85,10 @@ const webpackConfig = { }), new WebpackManifestPlugin({fileName: 'asset-manifest.json'}), new webpack.HotModuleReplacementPlugin(), - new ReactRefreshWebpackPlugin({overlay: false}) + new ReactRefreshWebpackPlugin({overlay: false}), + new HtmlWebpackInjectAttributesPlugin({ + crossorigin: 'anonymous' + }) ], resolveLoader, module: { From c071d2a7aa6f6f1a5e8f89c8d808547f5a21c0b3 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Mon, 18 Mar 2024 13:48:40 +0000 Subject: [PATCH 191/545] release(packages/sui-bundler): v9.57.0 [skip ci] --- packages/sui-bundler/CHANGELOG.md | 10 ++++++++++ packages/sui-bundler/package.json | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/sui-bundler/CHANGELOG.md b/packages/sui-bundler/CHANGELOG.md index c480da741..d745c76a8 100644 --- a/packages/sui-bundler/CHANGELOG.md +++ b/packages/sui-bundler/CHANGELOG.md @@ -1,5 +1,15 @@ # CHANGELOG +# 9.57.0 (2024-03-18) + + +### Features + +* add crossorigin=anonymous attribute to script tags on client dev ([bfc2037](https://github.com/SUI-Components/sui/commit/bfc20371dec312708222e22b7a44830a736a0732)) +* add hydration overlay on webpack.config.client.dev.js ([f69fb9f](https://github.com/SUI-Components/sui/commit/f69fb9f60f45efc7fde32e9a46c6f172b5b6cbb2)) + + + # 9.56.0 (2024-02-07) diff --git a/packages/sui-bundler/package.json b/packages/sui-bundler/package.json index d952b1484..45eb8fd6d 100644 --- a/packages/sui-bundler/package.json +++ b/packages/sui-bundler/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/bundler", - "version": "9.56.0", + "version": "9.57.0", "description": "Config-free bundler for ES6 React apps.", "bin": { "sui-bundler": "./bin/sui-bundler.js" From 958cfc6b858eae5cfea94bc51f32fb6806531675 Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Thu, 21 Mar 2024 12:18:48 +0100 Subject: [PATCH 192/545] feat(packages/sui-lint): fix lint --- packages/sui-lint/bin/sui-lint-js.js | 4 +++- packages/sui-lint/eslintrc.js | 11 ++++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/packages/sui-lint/bin/sui-lint-js.js b/packages/sui-lint/bin/sui-lint-js.js index cdef41c06..68bd23484 100755 --- a/packages/sui-lint/bin/sui-lint-js.js +++ b/packages/sui-lint/bin/sui-lint-js.js @@ -8,7 +8,9 @@ const program = require('commander') const {checkFilesToLint, getFilesToLint, getGitIgnoredFiles, stageFilesIfRequired} = require('../src/helpers.js') const {ESLint} = require('eslint') -const config = fs.existsSync(process.cwd() + '/tsconfig.json') ? require('../eslintrc.ts.js') : require('../eslintrc.js') +const config = fs.existsSync(process.cwd() + '/tsconfig.json') + ? require('../eslintrc.ts.js') + : require('../eslintrc.js') program .option('--add-fixes') diff --git a/packages/sui-lint/eslintrc.js b/packages/sui-lint/eslintrc.js index 3681f04a3..02ee6aa3c 100644 --- a/packages/sui-lint/eslintrc.js +++ b/packages/sui-lint/eslintrc.js @@ -176,7 +176,6 @@ module.exports = { 'simple-import-sort', 'jest', 'jest-dom' - // 'sui' ], rules: { ...REACT_RULES, @@ -200,10 +199,16 @@ module.exports = { 'prettier/prettier': [RULES.ERROR, prettierOptions], 'simple-import-sort/imports': [RULES.WARNING, {groups: IMPORT_SORT_GROUPS}], 'react/jsx-no-bind': RULES.OFF - // 'sui/factory-pattern': RULES.WARNING, - // 'sui/serialize-deserialize': RULES.WARNING }, overrides: [ + // { + // files: ['**/domain/src/**'], + // plugins: ['sui'], + // rules: { + // 'sui/factory-pattern': RULES.WARNING, + // 'sui/serialize-deserialize': RULES.WARNING + // } + // }, { files: ['**/*.+(ts|tsx)'], extends: ['standard-with-typescript'], From 19dfdd6f7cec7ff50f246864f3fe1e4e05a2d8d4 Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Thu, 21 Mar 2024 12:37:55 +0100 Subject: [PATCH 193/545] chore(packages/eslint-plugin-sui): add npx --- packages/eslint-plugin-sui/package.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/eslint-plugin-sui/package.json b/packages/eslint-plugin-sui/package.json index d33ba7133..e6f9ccb1b 100644 --- a/packages/eslint-plugin-sui/package.json +++ b/packages/eslint-plugin-sui/package.json @@ -11,11 +11,11 @@ "main": "./src/index.js", "exports": "./src/index.js", "scripts": { - "lint": "npm-run-all \"lint:*\"", - "lint:eslint-docs": "npm-run-all \"update:eslint-docs -- --check\"", - "lint:js": "eslint .", + "lint": "npx npm-run-all \"lint:*\"", + "lint:eslint-docs": "npx npm-run-all \"update:eslint-docs -- --check\"", + "lint:js": "npx eslint .", "test": "npx sui-test server", - "update:eslint-docs": "eslint-doc-generator" + "update:eslint-docs": "npx eslint-doc-generator" }, "dependencies": { "requireindex": "1.2.0", From 956d039e3066c7f75d71fa9e9b93b30ab20521be Mon Sep 17 00:00:00 2001 From: sui-bot Date: Thu, 21 Mar 2024 11:55:58 +0000 Subject: [PATCH 194/545] release(packages/eslint-plugin-sui): v1.0.0 [skip ci] --- packages/eslint-plugin-sui/CHANGELOG.md | 16 ++++++++++++++++ packages/eslint-plugin-sui/package.json | 2 +- 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 packages/eslint-plugin-sui/CHANGELOG.md diff --git a/packages/eslint-plugin-sui/CHANGELOG.md b/packages/eslint-plugin-sui/CHANGELOG.md new file mode 100644 index 000000000..561eac100 --- /dev/null +++ b/packages/eslint-plugin-sui/CHANGELOG.md @@ -0,0 +1,16 @@ +# CHANGELOG + +# 1.0.0 (2024-03-21) + + +### Features + +* add empty rule ([e2cef86](https://github.com/SUI-Components/sui/commit/e2cef862c94d6c0e8d8ea3f67df5e33a1dbaa6ae)) +* add new dependency ([27c6e29](https://github.com/SUI-Components/sui/commit/27c6e29eed1b33f2fb5a06cff53413717a88a856)) +* create few rules ([7e41dc7](https://github.com/SUI-Components/sui/commit/7e41dc7323cbe9dc782d3eb78a90fef651b72e19)) +* fix more than one line in toJson ([3865416](https://github.com/SUI-Components/sui/commit/3865416ff0553fb36593a9cb138bd15c4cc29775)) +* Improve rules to be more resilient ([369b096](https://github.com/SUI-Components/sui/commit/369b096faf6ff77791d41eac9b136ff68ff814b8)) +* make warning ([c6ffa98](https://github.com/SUI-Components/sui/commit/c6ffa98cea6b262be5d203eaa91de5b82444aa46)) + + + diff --git a/packages/eslint-plugin-sui/package.json b/packages/eslint-plugin-sui/package.json index e6f9ccb1b..608cbdcca 100644 --- a/packages/eslint-plugin-sui/package.json +++ b/packages/eslint-plugin-sui/package.json @@ -1,6 +1,6 @@ { "name": "eslint-plugin-sui", - "version": "1.0.0-beta.9", + "version": "1.0.0", "description": "Set of sui lint rules", "keywords": [ "eslint", From c77f8a0a2077ffd8a244a9b23e2f0bcc922a8fd6 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Thu, 21 Mar 2024 11:56:02 +0000 Subject: [PATCH 195/545] release(packages/lint-repository-sui): v0.1.0 [skip ci] --- packages/lint-repository-sui/CHANGELOG.md | 20 ++++++++++++++++++++ packages/lint-repository-sui/package.json | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 packages/lint-repository-sui/CHANGELOG.md diff --git a/packages/lint-repository-sui/CHANGELOG.md b/packages/lint-repository-sui/CHANGELOG.md new file mode 100644 index 000000000..fc812bbb5 --- /dev/null +++ b/packages/lint-repository-sui/CHANGELOG.md @@ -0,0 +1,20 @@ +# CHANGELOG + +# 0.1.0 (2024-03-21) + + +### Bug Fixes + +* Fix typo in rule ([36a3830](https://github.com/SUI-Components/sui/commit/36a3830f0d0056d0dbc01dbd526ce8261fdb723d)) + + +### Features + +* add new dependency ([0324821](https://github.com/SUI-Components/sui/commit/0324821fc9dc0d57dbdc78db86d587439650f85e)) +* add typescript lint repository rule ([ab16dc5](https://github.com/SUI-Components/sui/commit/ab16dc574dd55c05ba032fd6db2b2b327cb00767)) +* Avoid magic strings ([9d51b66](https://github.com/SUI-Components/sui/commit/9d51b66cf99ecbfefa8861920a3ec23a0446cb22)) +* Create first version of the Golden Path Rules ([836098d](https://github.com/SUI-Components/sui/commit/836098d30de4fe2f5420530bd10902d2d2d278cb)) +* Use only the major version of Node ([164ddf2](https://github.com/SUI-Components/sui/commit/164ddf24f3bf05010c8f125f2e97f25031667a6f)) + + + diff --git a/packages/lint-repository-sui/package.json b/packages/lint-repository-sui/package.json index 8bbd986c7..35e2c5e93 100644 --- a/packages/lint-repository-sui/package.json +++ b/packages/lint-repository-sui/package.json @@ -1,6 +1,6 @@ { "name": "lint-repository-sui", - "version": "0.0.0", + "version": "0.1.0", "description": "Set of sui lint rules to lint a repository", "keywords": [], "author": "Sui", From e849656c468fbecd5613ac2de0a573983b5eb52b Mon Sep 17 00:00:00 2001 From: sui-bot Date: Thu, 21 Mar 2024 11:56:06 +0000 Subject: [PATCH 196/545] release(packages/sui-lint): v4.37.0 [skip ci] --- packages/sui-lint/CHANGELOG.md | 33 +++++++++++++++++++++++++++++---- packages/sui-lint/package.json | 2 +- 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/packages/sui-lint/CHANGELOG.md b/packages/sui-lint/CHANGELOG.md index 1d655d448..b4ef11ef6 100644 --- a/packages/sui-lint/CHANGELOG.md +++ b/packages/sui-lint/CHANGELOG.md @@ -1,5 +1,33 @@ # CHANGELOG +# 4.37.0 (2024-03-21) + + +### Bug Fixes + +* Fix JSReporter import and plugins version ([07293da](https://github.com/SUI-Components/sui/commit/07293da8db0823911b3a6f7518d5de4fc1cbf24d)) +* Fix lint ([0836810](https://github.com/SUI-Components/sui/commit/0836810202a370e600fd1cb25250a18595aa7e81)) +* Fix lint ([e0fd013](https://github.com/SUI-Components/sui/commit/e0fd01378a1f3c381d99802d1feb827d55f0eae3)) +* Fix version ([02cd409](https://github.com/SUI-Components/sui/commit/02cd409e73ac28dc21bda52c1229adcde74fc28d)) + + +### Features + +* Add flag to force lint all files ([48b4ef6](https://github.com/SUI-Components/sui/commit/48b4ef65b0d7d24adf934f9ca5ec54357f170047)) +* add new dependency ([0324821](https://github.com/SUI-Components/sui/commit/0324821fc9dc0d57dbdc78db86d587439650f85e)) +* add new dependency ([75d31c6](https://github.com/SUI-Components/sui/commit/75d31c62190d715a9281f3be7e461251e877a440)) +* Add send method to the reporter ([7d34092](https://github.com/SUI-Components/sui/commit/7d34092f0c083bdb8daefb3c254603196839b7b2)) +* Add send method to the reporter ([1ce2585](https://github.com/SUI-Components/sui/commit/1ce2585af0a11d9dd11a21fc9cd9e7366a3122c3)) +* add typescript lint repository rule ([508fd84](https://github.com/SUI-Components/sui/commit/508fd8493180bbd6bab63e710e47fd2a6396f166)) +* Allow relative path in reporter flag and select TS or JS eslint config ([c42244c](https://github.com/SUI-Components/sui/commit/c42244c87d7e38392458751c1bfea9dbfa5e2809)) +* Create reporter flag ([0a2563e](https://github.com/SUI-Components/sui/commit/0a2563ee0809c2e348684fdf72134cdc085e6060)) +* Create RepositoryLinter and desactivate eslint-preset-sui rules ([ed4035f](https://github.com/SUI-Components/sui/commit/ed4035f8b503c9c7eea41e762115fe4e6339ee51)) +* disable sui checks ([57e55cf](https://github.com/SUI-Components/sui/commit/57e55cfeba74087b2da535cadbe85e07190cdf8d)) +* disable sui checks ([b66fd7d](https://github.com/SUI-Components/sui/commit/b66fd7dfae0c3eeeecd6f1d034259defddd24090)) +* fix lint ([958cfc6](https://github.com/SUI-Components/sui/commit/958cfc6b858eae5cfea94bc51f32fb6806531675)) + + + # 4.36.0 (2024-01-12) @@ -1089,7 +1117,4 @@ ### BREAKING CHANGES -* **sui-lint:** CLI has changed and not compatible to previous version - - - +* **sui-lint:** CLI has changed and not compatible to previous version \ No newline at end of file diff --git a/packages/sui-lint/package.json b/packages/sui-lint/package.json index fa6ab1976..a9eb8a005 100644 --- a/packages/sui-lint/package.json +++ b/packages/sui-lint/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/lint", - "version": "4.36.0", + "version": "4.37.0", "description": "Linting CLI for sui packages", "main": "./bin/sui-lint.js", "bin": { From 1d832f4b3efc651910a9b339286e5ac9693100bc Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Thu, 21 Mar 2024 13:00:43 +0100 Subject: [PATCH 197/545] feat(packages/eslint-plugin-sui): bump version --- packages/eslint-plugin-sui/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/eslint-plugin-sui/package.json b/packages/eslint-plugin-sui/package.json index 608cbdcca..431103c3d 100644 --- a/packages/eslint-plugin-sui/package.json +++ b/packages/eslint-plugin-sui/package.json @@ -1,6 +1,6 @@ { "name": "eslint-plugin-sui", - "version": "1.0.0", + "version": "1.1.0", "description": "Set of sui lint rules", "keywords": [ "eslint", From 7c8b1bd740eb99e3ef1530ca17e7ea77e3749063 Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Thu, 21 Mar 2024 13:01:04 +0100 Subject: [PATCH 198/545] feat(packages/lint-repository-sui): bump version --- packages/lint-repository-sui/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/lint-repository-sui/package.json b/packages/lint-repository-sui/package.json index 35e2c5e93..82939afd3 100644 --- a/packages/lint-repository-sui/package.json +++ b/packages/lint-repository-sui/package.json @@ -1,6 +1,6 @@ { "name": "lint-repository-sui", - "version": "0.1.0", + "version": "1.1.0", "description": "Set of sui lint rules to lint a repository", "keywords": [], "author": "Sui", From eaa25a26ac0337b6739c9b058d11942af895ae09 Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Thu, 21 Mar 2024 13:01:40 +0100 Subject: [PATCH 199/545] feat(packages/sui-lint): bump version --- packages/sui-lint/package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/sui-lint/package.json b/packages/sui-lint/package.json index a9eb8a005..477965849 100644 --- a/packages/sui-lint/package.json +++ b/packages/sui-lint/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/lint", - "version": "4.37.0", + "version": "4.39.0", "description": "Linting CLI for sui packages", "main": "./bin/sui-lint.js", "bin": { @@ -38,10 +38,10 @@ "eslint-plugin-react": "7.30.1", "eslint-plugin-react-hooks": "4.6.0", "eslint-plugin-simple-import-sort": "7.0.0", - "eslint-plugin-sui": "beta", + "eslint-plugin-sui": "1", "fast-glob": "3.3.2", "js-yaml": "4.1.0", - "lint-repository-sui": "beta", + "lint-repository-sui": "1", "postcss-scss": "4.0.4", "prettier": "2.7.1", "stylelint": "14.11.0", From f66023b7c228232282bed64885f75b1150b76e95 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Thu, 21 Mar 2024 12:04:21 +0000 Subject: [PATCH 200/545] release(packages/eslint-plugin-sui): v1.2.0 [skip ci] --- packages/eslint-plugin-sui/CHANGELOG.md | 14 ++++++++++---- packages/eslint-plugin-sui/package.json | 2 +- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/packages/eslint-plugin-sui/CHANGELOG.md b/packages/eslint-plugin-sui/CHANGELOG.md index 561eac100..f19d1542a 100644 --- a/packages/eslint-plugin-sui/CHANGELOG.md +++ b/packages/eslint-plugin-sui/CHANGELOG.md @@ -1,5 +1,14 @@ # CHANGELOG +# 1.2.0 (2024-03-21) + + +### Features + +* bump version ([1d832f4](https://github.com/SUI-Components/sui/commit/1d832f4b3efc651910a9b339286e5ac9693100bc)) + + + # 1.0.0 (2024-03-21) @@ -10,7 +19,4 @@ * create few rules ([7e41dc7](https://github.com/SUI-Components/sui/commit/7e41dc7323cbe9dc782d3eb78a90fef651b72e19)) * fix more than one line in toJson ([3865416](https://github.com/SUI-Components/sui/commit/3865416ff0553fb36593a9cb138bd15c4cc29775)) * Improve rules to be more resilient ([369b096](https://github.com/SUI-Components/sui/commit/369b096faf6ff77791d41eac9b136ff68ff814b8)) -* make warning ([c6ffa98](https://github.com/SUI-Components/sui/commit/c6ffa98cea6b262be5d203eaa91de5b82444aa46)) - - - +* make warning ([c6ffa98](https://github.com/SUI-Components/sui/commit/c6ffa98cea6b262be5d203eaa91de5b82444aa46)) \ No newline at end of file diff --git a/packages/eslint-plugin-sui/package.json b/packages/eslint-plugin-sui/package.json index 431103c3d..7eee2a9ec 100644 --- a/packages/eslint-plugin-sui/package.json +++ b/packages/eslint-plugin-sui/package.json @@ -1,6 +1,6 @@ { "name": "eslint-plugin-sui", - "version": "1.1.0", + "version": "1.2.0", "description": "Set of sui lint rules", "keywords": [ "eslint", From 1e5050086f9ecda35580b41e5553194c970ef1a2 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Thu, 21 Mar 2024 12:04:24 +0000 Subject: [PATCH 201/545] release(packages/lint-repository-sui): v1.2.0 [skip ci] --- packages/lint-repository-sui/CHANGELOG.md | 14 ++++++++++---- packages/lint-repository-sui/package.json | 2 +- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/packages/lint-repository-sui/CHANGELOG.md b/packages/lint-repository-sui/CHANGELOG.md index fc812bbb5..05da8d137 100644 --- a/packages/lint-repository-sui/CHANGELOG.md +++ b/packages/lint-repository-sui/CHANGELOG.md @@ -1,5 +1,14 @@ # CHANGELOG +# 1.2.0 (2024-03-21) + + +### Features + +* bump version ([7c8b1bd](https://github.com/SUI-Components/sui/commit/7c8b1bd740eb99e3ef1530ca17e7ea77e3749063)) + + + # 0.1.0 (2024-03-21) @@ -14,7 +23,4 @@ * add typescript lint repository rule ([ab16dc5](https://github.com/SUI-Components/sui/commit/ab16dc574dd55c05ba032fd6db2b2b327cb00767)) * Avoid magic strings ([9d51b66](https://github.com/SUI-Components/sui/commit/9d51b66cf99ecbfefa8861920a3ec23a0446cb22)) * Create first version of the Golden Path Rules ([836098d](https://github.com/SUI-Components/sui/commit/836098d30de4fe2f5420530bd10902d2d2d278cb)) -* Use only the major version of Node ([164ddf2](https://github.com/SUI-Components/sui/commit/164ddf24f3bf05010c8f125f2e97f25031667a6f)) - - - +* Use only the major version of Node ([164ddf2](https://github.com/SUI-Components/sui/commit/164ddf24f3bf05010c8f125f2e97f25031667a6f)) \ No newline at end of file diff --git a/packages/lint-repository-sui/package.json b/packages/lint-repository-sui/package.json index 82939afd3..8b1b23090 100644 --- a/packages/lint-repository-sui/package.json +++ b/packages/lint-repository-sui/package.json @@ -1,6 +1,6 @@ { "name": "lint-repository-sui", - "version": "1.1.0", + "version": "1.2.0", "description": "Set of sui lint rules to lint a repository", "keywords": [], "author": "Sui", From d7e882c1b21cdcd896cf0a1124a526ad658b1303 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Thu, 21 Mar 2024 12:04:28 +0000 Subject: [PATCH 202/545] release(packages/sui-lint): v4.40.0 [skip ci] --- packages/sui-lint/CHANGELOG.md | 9 +++++++++ packages/sui-lint/package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/sui-lint/CHANGELOG.md b/packages/sui-lint/CHANGELOG.md index b4ef11ef6..94eefb9aa 100644 --- a/packages/sui-lint/CHANGELOG.md +++ b/packages/sui-lint/CHANGELOG.md @@ -1,5 +1,14 @@ # CHANGELOG +# 4.40.0 (2024-03-21) + + +### Features + +* bump version ([eaa25a2](https://github.com/SUI-Components/sui/commit/eaa25a26ac0337b6739c9b058d11942af895ae09)) + + + # 4.37.0 (2024-03-21) diff --git a/packages/sui-lint/package.json b/packages/sui-lint/package.json index 477965849..c5cbff008 100644 --- a/packages/sui-lint/package.json +++ b/packages/sui-lint/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/lint", - "version": "4.39.0", + "version": "4.40.0", "description": "Linting CLI for sui packages", "main": "./bin/sui-lint.js", "bin": { From dd18e41fc448a27d09cfe7e7c255efa7297880ac Mon Sep 17 00:00:00 2001 From: "jordi.munoz@adevinta.com" Date: Thu, 21 Mar 2024 14:52:44 +0100 Subject: [PATCH 203/545] feat(packages/sui-js): using a pure js function to make this utility hashing function isomorphic --- packages/sui-js/src/hash/index.js | 150 ++++++++++++++++++++++++++++-- 1 file changed, 140 insertions(+), 10 deletions(-) diff --git a/packages/sui-js/src/hash/index.js b/packages/sui-js/src/hash/index.js index 9c2877e8a..c5276b1a8 100644 --- a/packages/sui-js/src/hash/index.js +++ b/packages/sui-js/src/hash/index.js @@ -1,14 +1,144 @@ // extracted from https://github.com/jbt/tiny-hashes/blob/master/md5/md5.js -const m = [-680876936,-389564586,606105819,-1044525330,-176418897,1200080426,-1473231341,-45705983,1770035416,-1958414417,-42063,-1990404162,1804603682,-40341101,-1502002290,1236535329,-165796510,-1069501632,643717713,-373897302,-701558691,38016083,-660478335,-405537848,568446438,-1019803690,-187363961,1163531501,-1444681467,-51403784,1735328473,-1926607734,-378558,-2022574463,1839030562,-35309556,-1530992060,1272893353,-155497632,-1094730640,681279174,-358537222,-722521979,76029189,-640364487,-421815835,530742520,-995338651,-198630844,1126891415,-1416354905,-57434055,1700485571,-1894986606,-1051523,-2054922799,1873313359,-30611744,-1560198380,1309151649,-145523070,-1120210379,718787259,-343485551] // eslint-disable-line -const md5=function(c){var e,g,f,a,h=[];c=unescape(encodeURI(c));for(var b=c.length,k=[e=1732584193,g=-271733879,~e,~g],d=0;d<=b;)h[d>>2]|=(c.charCodeAt(d)||128)<<8*(d++%4);h[c=16*(b+8>>6)+14]=8*b;for(d=0;da;)b=[f=b[3],(e=b[1]|0)+((f=b[0]+[e&(g=b[2])|~e&f,f&e|~f&g,e^g^f,g^(e|~f)][b=a>>4]+(m[a]+(h[[a,5*a+1,3*a+5,7*a][b]%16+d]|0)))<<(b=[7,12,17,22,5,9,14,20,4,11,16,23,6,10,15,21][4*b+a++%4])|f>>>32-b),e,g];for(a=4;a;)k[--a]=k[a]+b[a]}for(c="";32>a;)c+=(k[a>>3]>>4*(1^a++&7)&15).toString(16);return c} // eslint-disable-line - -// extracted from https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/digest#converting_a_digest_to_a_hex_string -const sha256 = async value => { - const msgUint8 = new TextEncoder().encode(value) - const hashBuffer = await crypto.subtle.digest('SHA-256', msgUint8) - const hashArray = Array.from(new Uint8Array(hashBuffer)) - const hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('') - return hashHex +const m = [ + -680876936, -389564586, 606105819, -1044525330, -176418897, 1200080426, -1473231341, -45705983, 1770035416, + -1958414417, -42063, -1990404162, 1804603682, -40341101, -1502002290, 1236535329, -165796510, -1069501632, 643717713, + -373897302, -701558691, 38016083, -660478335, -405537848, 568446438, -1019803690, -187363961, 1163531501, -1444681467, + -51403784, 1735328473, -1926607734, -378558, -2022574463, 1839030562, -35309556, -1530992060, 1272893353, -155497632, + -1094730640, 681279174, -358537222, -722521979, 76029189, -640364487, -421815835, 530742520, -995338651, -198630844, + 1126891415, -1416354905, -57434055, 1700485571, -1894986606, -1051523, -2054922799, 1873313359, -30611744, + -1560198380, 1309151649, -145523070, -1120210379, 718787259, -343485551 +] // eslint-disable-line +const md5 = function (c) { + let e + let g + let f + let a + const h = [] + c = unescape(encodeURI(c)) + for (var b = c.length, k = [(e = 1732584193), (g = -271733879), ~e, ~g], d = 0; d <= b; ) + h[d >> 2] |= (c.charCodeAt(d) || 128) << (8 * (d++ % 4)) + h[(c = 16 * ((b + 8) >> 6) + 14)] = 8 * b + for (d = 0; d < c; d += 16) { + b = k + for (a = 0; a < 64; ) + b = [ + (f = b[3]), + (e = b[1] | 0) + + (((f = + b[0] + + [(e & (g = b[2])) | (~e & f), (f & e) | (~f & g), e ^ g ^ f, g ^ (e | ~f)][(b = a >> 4)] + + (m[a] + (h[([a, 5 * a + 1, 3 * a + 5, 7 * a][b] % 16) + d] | 0))) << + (b = [7, 12, 17, 22, 5, 9, 14, 20, 4, 11, 16, 23, 6, 10, 15, 21][4 * b + (a++ % 4)])) | + (f >>> (32 - b))), + e, + g + ] + for (a = 4; a; ) k[--a] = k[a] + b[a] + } + for (c = ''; a < 32; ) c += ((k[a >> 3] >> (4 * (1 ^ (a++ & 7)))) & 15).toString(16) + return c +} // eslint-disable-line + +// extracted from https://geraintluff.github.io/sha256/ +const sha256 = async ascii => { + function rightRotate(value, amount) { + return (value >>> amount) | (value << (32 - amount)) + } + + const mathPow = Math.pow + const maxWord = mathPow(2, 32) + const lengthProperty = 'length' + let i, j // Used as a counter across the whole file + let result = '' + + const words = [] + const asciiBitLength = ascii[lengthProperty] * 8 + + //* caching results is optional - remove/add slash from front of this line to toggle + // Initial hash value: first 32 bits of the fractional parts of the square roots of the first 8 primes + // (we actually calculate the first 64, but extra values are just ignored) + let hash = (sha256.h = sha256.h || []) + // Round constants: first 32 bits of the fractional parts of the cube roots of the first 64 primes + const k = (sha256.k = sha256.k || []) + let primeCounter = k[lengthProperty] + /* / + var hash = [], k = []; + var primeCounter = 0; + // */ + + const isComposite = {} + for (let candidate = 2; primeCounter < 64; candidate++) { + if (!isComposite[candidate]) { + for (i = 0; i < 313; i += candidate) { + isComposite[i] = candidate + } + hash[primeCounter] = (mathPow(candidate, 0.5) * maxWord) | 0 + k[primeCounter++] = (mathPow(candidate, 1 / 3) * maxWord) | 0 + } + } + + ascii += '\x80' // Append Ƈ' bit (plus zero padding) + while ((ascii[lengthProperty] % 64) - 56) ascii += '\x00' // More zero padding + for (i = 0; i < ascii[lengthProperty]; i++) { + j = ascii.charCodeAt(i) + if (j >> 8) return // ASCII check: only accept characters in range 0-255 + words[i >> 2] |= j << (((3 - i) % 4) * 8) + } + words[words[lengthProperty]] = (asciiBitLength / maxWord) | 0 + words[words[lengthProperty]] = asciiBitLength + + // process each chunk + for (j = 0; j < words[lengthProperty]; ) { + const w = words.slice(j, (j += 16)) // The message is expanded into 64 words as part of the iteration + const oldHash = hash + // This is now the undefinedworking hash", often labelled as variables a...g + // (we have to truncate as well, otherwise extra entries at the end accumulate + hash = hash.slice(0, 8) + + for (i = 0; i < 64; i++) { + // Expand the message into 64 words + // Used below if + const w15 = w[i - 15] + const w2 = w[i - 2] + + // Iterate + const a = hash[0] + const e = hash[4] + const temp1 = + hash[7] + + (rightRotate(e, 6) ^ rightRotate(e, 11) ^ rightRotate(e, 25)) + // S1 + ((e & hash[5]) ^ (~e & hash[6])) + // ch + k[i] + + // Expand the message schedule if needed + (w[i] = + i < 16 + ? w[i] + : (w[i - 16] + + (rightRotate(w15, 7) ^ rightRotate(w15, 18) ^ (w15 >>> 3)) + // s0 + w[i - 7] + + (rightRotate(w2, 17) ^ rightRotate(w2, 19) ^ (w2 >>> 10))) | // s1 + 0) + // This is only used once, so *could* be moved below, but it only saves 4 bytes and makes things unreadble + const temp2 = + (rightRotate(a, 2) ^ rightRotate(a, 13) ^ rightRotate(a, 22)) + // S0 + ((a & hash[1]) ^ (a & hash[2]) ^ (hash[1] & hash[2])) // maj + + hash = [(temp1 + temp2) | 0].concat(hash) // We don't bother trimming off the extra ones, they're harmless as long as we're truncating when we do the slice() + hash[4] = (hash[4] + temp1) | 0 + } + + for (i = 0; i < 8; i++) { + hash[i] = (hash[i] + oldHash[i]) | 0 + } + } + + for (i = 0; i < 8; i++) { + for (j = 3; j + 1; j--) { + const b = (hash[i] >> (j * 8)) & 255 + result += (b < 16 ? 0 : '') + b.toString(16) + } + } + return result } export const createHash = md5 From a43f5687fbe42ac970b18a1d1ecd918605a17234 Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Thu, 21 Mar 2024 15:43:15 +0100 Subject: [PATCH 204/545] feat(packages/eslint-plugin-sui): make public --- packages/eslint-plugin-sui/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/eslint-plugin-sui/package.json b/packages/eslint-plugin-sui/package.json index 7eee2a9ec..a43b8192a 100644 --- a/packages/eslint-plugin-sui/package.json +++ b/packages/eslint-plugin-sui/package.json @@ -1,6 +1,7 @@ { "name": "eslint-plugin-sui", "version": "1.2.0", + "access": "public", "description": "Set of sui lint rules", "keywords": [ "eslint", From b261c3bb2f24601924757cc594a23bea5cee074a Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Thu, 21 Mar 2024 15:43:48 +0100 Subject: [PATCH 205/545] feat(packages/lint-repository-sui): make public --- packages/lint-repository-sui/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/lint-repository-sui/package.json b/packages/lint-repository-sui/package.json index 8b1b23090..8e34b53dd 100644 --- a/packages/lint-repository-sui/package.json +++ b/packages/lint-repository-sui/package.json @@ -1,5 +1,6 @@ { "name": "lint-repository-sui", + "access": "public", "version": "1.2.0", "description": "Set of sui lint rules to lint a repository", "keywords": [], From aaf4851add1f58b2b36daf9f138b419fa192e603 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Thu, 21 Mar 2024 14:46:33 +0000 Subject: [PATCH 206/545] release(packages/eslint-plugin-sui): v1.3.0 [skip ci] --- packages/eslint-plugin-sui/CHANGELOG.md | 9 +++++++++ packages/eslint-plugin-sui/package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/eslint-plugin-sui/CHANGELOG.md b/packages/eslint-plugin-sui/CHANGELOG.md index f19d1542a..17d7c7508 100644 --- a/packages/eslint-plugin-sui/CHANGELOG.md +++ b/packages/eslint-plugin-sui/CHANGELOG.md @@ -1,5 +1,14 @@ # CHANGELOG +# 1.3.0 (2024-03-21) + + +### Features + +* make public ([a43f568](https://github.com/SUI-Components/sui/commit/a43f5687fbe42ac970b18a1d1ecd918605a17234)) + + + # 1.2.0 (2024-03-21) diff --git a/packages/eslint-plugin-sui/package.json b/packages/eslint-plugin-sui/package.json index a43b8192a..bfb860bd7 100644 --- a/packages/eslint-plugin-sui/package.json +++ b/packages/eslint-plugin-sui/package.json @@ -1,6 +1,6 @@ { "name": "eslint-plugin-sui", - "version": "1.2.0", + "version": "1.3.0", "access": "public", "description": "Set of sui lint rules", "keywords": [ From ee4e1f51b3f4871f14dfed6db443b8f172533bdb Mon Sep 17 00:00:00 2001 From: sui-bot Date: Thu, 21 Mar 2024 14:46:36 +0000 Subject: [PATCH 207/545] release(packages/lint-repository-sui): v1.3.0 [skip ci] --- packages/lint-repository-sui/CHANGELOG.md | 9 +++++++++ packages/lint-repository-sui/package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/lint-repository-sui/CHANGELOG.md b/packages/lint-repository-sui/CHANGELOG.md index 05da8d137..1db18171d 100644 --- a/packages/lint-repository-sui/CHANGELOG.md +++ b/packages/lint-repository-sui/CHANGELOG.md @@ -1,5 +1,14 @@ # CHANGELOG +# 1.3.0 (2024-03-21) + + +### Features + +* make public ([b261c3b](https://github.com/SUI-Components/sui/commit/b261c3bb2f24601924757cc594a23bea5cee074a)) + + + # 1.2.0 (2024-03-21) diff --git a/packages/lint-repository-sui/package.json b/packages/lint-repository-sui/package.json index 8e34b53dd..661cf9603 100644 --- a/packages/lint-repository-sui/package.json +++ b/packages/lint-repository-sui/package.json @@ -1,7 +1,7 @@ { "name": "lint-repository-sui", "access": "public", - "version": "1.2.0", + "version": "1.3.0", "description": "Set of sui lint rules to lint a repository", "keywords": [], "author": "Sui", From 760b85427c5240c56dbd140b3cf42f46051143fd Mon Sep 17 00:00:00 2001 From: "jordi.munoz@adevinta.com" Date: Fri, 22 Mar 2024 17:44:43 +0100 Subject: [PATCH 208/545] feat(packages/sui-js): use a more solid hashing function --- packages/sui-js/src/hash/index.js | 105 +---------------- packages/sui-js/src/hash/sha256.js | 180 +++++++++++++++++++++++++++++ 2 files changed, 185 insertions(+), 100 deletions(-) create mode 100644 packages/sui-js/src/hash/sha256.js diff --git a/packages/sui-js/src/hash/index.js b/packages/sui-js/src/hash/index.js index c5276b1a8..6ece388b7 100644 --- a/packages/sui-js/src/hash/index.js +++ b/packages/sui-js/src/hash/index.js @@ -1,3 +1,5 @@ +import Sha256 from "./sha256.js"; + // extracted from https://github.com/jbt/tiny-hashes/blob/master/md5/md5.js const m = [ -680876936, -389564586, 606105819, -1044525330, -176418897, 1200080426, -1473231341, -45705983, 1770035416, @@ -39,106 +41,9 @@ const md5 = function (c) { return c } // eslint-disable-line -// extracted from https://geraintluff.github.io/sha256/ -const sha256 = async ascii => { - function rightRotate(value, amount) { - return (value >>> amount) | (value << (32 - amount)) - } - - const mathPow = Math.pow - const maxWord = mathPow(2, 32) - const lengthProperty = 'length' - let i, j // Used as a counter across the whole file - let result = '' - - const words = [] - const asciiBitLength = ascii[lengthProperty] * 8 - - //* caching results is optional - remove/add slash from front of this line to toggle - // Initial hash value: first 32 bits of the fractional parts of the square roots of the first 8 primes - // (we actually calculate the first 64, but extra values are just ignored) - let hash = (sha256.h = sha256.h || []) - // Round constants: first 32 bits of the fractional parts of the cube roots of the first 64 primes - const k = (sha256.k = sha256.k || []) - let primeCounter = k[lengthProperty] - /* / - var hash = [], k = []; - var primeCounter = 0; - // */ - - const isComposite = {} - for (let candidate = 2; primeCounter < 64; candidate++) { - if (!isComposite[candidate]) { - for (i = 0; i < 313; i += candidate) { - isComposite[i] = candidate - } - hash[primeCounter] = (mathPow(candidate, 0.5) * maxWord) | 0 - k[primeCounter++] = (mathPow(candidate, 1 / 3) * maxWord) | 0 - } - } - - ascii += '\x80' // Append Ƈ' bit (plus zero padding) - while ((ascii[lengthProperty] % 64) - 56) ascii += '\x00' // More zero padding - for (i = 0; i < ascii[lengthProperty]; i++) { - j = ascii.charCodeAt(i) - if (j >> 8) return // ASCII check: only accept characters in range 0-255 - words[i >> 2] |= j << (((3 - i) % 4) * 8) - } - words[words[lengthProperty]] = (asciiBitLength / maxWord) | 0 - words[words[lengthProperty]] = asciiBitLength - - // process each chunk - for (j = 0; j < words[lengthProperty]; ) { - const w = words.slice(j, (j += 16)) // The message is expanded into 64 words as part of the iteration - const oldHash = hash - // This is now the undefinedworking hash", often labelled as variables a...g - // (we have to truncate as well, otherwise extra entries at the end accumulate - hash = hash.slice(0, 8) - - for (i = 0; i < 64; i++) { - // Expand the message into 64 words - // Used below if - const w15 = w[i - 15] - const w2 = w[i - 2] - - // Iterate - const a = hash[0] - const e = hash[4] - const temp1 = - hash[7] + - (rightRotate(e, 6) ^ rightRotate(e, 11) ^ rightRotate(e, 25)) + // S1 - ((e & hash[5]) ^ (~e & hash[6])) + // ch - k[i] + - // Expand the message schedule if needed - (w[i] = - i < 16 - ? w[i] - : (w[i - 16] + - (rightRotate(w15, 7) ^ rightRotate(w15, 18) ^ (w15 >>> 3)) + // s0 - w[i - 7] + - (rightRotate(w2, 17) ^ rightRotate(w2, 19) ^ (w2 >>> 10))) | // s1 - 0) - // This is only used once, so *could* be moved below, but it only saves 4 bytes and makes things unreadble - const temp2 = - (rightRotate(a, 2) ^ rightRotate(a, 13) ^ rightRotate(a, 22)) + // S0 - ((a & hash[1]) ^ (a & hash[2]) ^ (hash[1] & hash[2])) // maj - - hash = [(temp1 + temp2) | 0].concat(hash) // We don't bother trimming off the extra ones, they're harmless as long as we're truncating when we do the slice() - hash[4] = (hash[4] + temp1) | 0 - } - - for (i = 0; i < 8; i++) { - hash[i] = (hash[i] + oldHash[i]) | 0 - } - } - - for (i = 0; i < 8; i++) { - for (j = 3; j + 1; j--) { - const b = (hash[i] >> (j * 8)) & 255 - result += (b < 16 ? 0 : '') + b.toString(16) - } - } - return result +// extracted from https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/digest#converting_a_digest_to_a_hex_string +const sha256 = async value => { + return Sha256.hash(value) } export const createHash = md5 diff --git a/packages/sui-js/src/hash/sha256.js b/packages/sui-js/src/hash/sha256.js new file mode 100644 index 000000000..fae665281 --- /dev/null +++ b/packages/sui-js/src/hash/sha256.js @@ -0,0 +1,180 @@ +/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ +/* SHA-256 (FIPS 180-4) implementation in JavaScript (c) Chris Veness 2002-2019 */ +/* MIT Licence */ +/* www.movable-type.co.uk/scripts/sha256.html */ +/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ + + +/** + * SHA-256 hash function reference implementation. + * + * This is an annotated direct implementation of FIPS 180-4, without any optimisations. It is + * intended to aid understanding of the algorithm rather than for production use. + * + * While it could be used where performance is not critical, I would recommend using the ‘Web + * Cryptography API’ (developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/digest) for the browser, + * or the ‘crypto’ library (nodejs.org/api/crypto.html#crypto_class_hash) in Node.js. + * + * See csrc.nist.gov/groups/ST/toolkit/secure_hashing.html + * csrc.nist.gov/groups/ST/toolkit/examples.html + */ +class Sha256 { + + /** + * Generates SHA-256 hash of string. + * + * @param {string} msg - (Unicode) string to be hashed. + * @param {Object} [options] + * @param {string} [options.msgFormat=string] - Message format: 'string' for JavaScript string + * (gets converted to UTF-8 for hashing); 'hex-bytes' for string of hex bytes ('616263' ≡ 'abc') . + * @param {string} [options.outFormat=hex] - Output format: 'hex' for string of contiguous + * hex bytes; 'hex-w' for grouping hex bytes into groups of (4 byte / 8 character) words. + * @returns {string} Hash of msg as hex character string. + * + * @example + * import Sha256 from './sha256.js'; + * const hash = Sha256.hash('abc'); // 'ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad' + */ + static hash(msg, options) { + const defaults = { msgFormat: 'string', outFormat: 'hex' }; + const opt = Object.assign(defaults, options); + + // note use throughout this routine of 'n >>> 0' to coerce Number 'n' to unsigned 32-bit integer + + switch (opt.msgFormat) { + default: // default is to convert string to UTF-8, as SHA only deals with byte-streams + case 'string': msg = utf8Encode(msg); break; + case 'hex-bytes':msg = hexBytesToString(msg); break; // mostly for running tests + } + + // constants [§4.2.2] + const K = [ + 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, + 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, + 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, + 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, + 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, + 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, + 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, + 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 ]; + + // initial hash value [§5.3.3] + const H = [ + 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19 ]; + + // PREPROCESSING [§6.2.1] + + msg += String.fromCharCode(0x80); // add trailing '1' bit (+ 0's padding) to string [§5.1.1] + + // convert string msg into 512-bit blocks (array of 16 32-bit integers) [§5.2.1] + const l = msg.length/4 + 2; // length (in 32-bit integers) of msg + ‘1’ + appended length + const N = Math.ceil(l/16); // number of 16-integer (512-bit) blocks required to hold 'l' ints + const M = new Array(N); // message M is N×16 array of 32-bit integers + + for (let i=0; i>> 32, but since JS converts + // bitwise-op args to 32 bits, we need to simulate this by arithmetic operators + const lenHi = ((msg.length-1)*8) / Math.pow(2, 32); + const lenLo = ((msg.length-1)*8) >>> 0; + M[N-1][14] = Math.floor(lenHi); + M[N-1][15] = lenLo; + + + // HASH COMPUTATION [§6.2.2] + + for (let i=0; i>> 0; + } + + // 2 - initialise working variables a, b, c, d, e, f, g, h with previous hash value + let a = H[0], b = H[1], c = H[2], d = H[3], e = H[4], f = H[5], g = H[6], h = H[7]; + + // 3 - main loop (note '>>> 0' for 'addition modulo 2^32') + for (let t=0; t<64; t++) { + const T1 = h + Sha256.Σ1(e) + Sha256.Ch(e, f, g) + K[t] + W[t]; + const T2 = Sha256.Σ0(a) + Sha256.Maj(a, b, c); + h = g; + g = f; + f = e; + e = (d + T1) >>> 0; + d = c; + c = b; + b = a; + a = (T1 + T2) >>> 0; + } + + // 4 - compute the new intermediate hash value (note '>>> 0' for 'addition modulo 2^32') + H[0] = (H[0]+a) >>> 0; + H[1] = (H[1]+b) >>> 0; + H[2] = (H[2]+c) >>> 0; + H[3] = (H[3]+d) >>> 0; + H[4] = (H[4]+e) >>> 0; + H[5] = (H[5]+f) >>> 0; + H[6] = (H[6]+g) >>> 0; + H[7] = (H[7]+h) >>> 0; + } + + // convert H0..H7 to hex strings (with leading zeros) + for (let h=0; h prev + String.fromCharCode(curr), ''); + } catch (e) { // no TextEncoder available? + return unescape(encodeURIComponent(str)); // monsur.hossa.in/2012/07/20/utf-8-in-javascript.html + } + } + + function hexBytesToString(hexStr) { // convert string of hex numbers to a string of chars (eg '616263' -> 'abc'). + const str = hexStr.replace(' ', ''); // allow space-separated groups + return str=='' ? '' : str.match(/.{2}/g).map(byte => String.fromCharCode(parseInt(byte, 16))).join(''); + } + } + + + + /** + * Rotates right (circular right shift) value x by n positions [§3.2.4]. + * @private + */ + static ROTR(n, x) { + return (x >>> n) | (x << (32-n)); + } + + + /** + * Logical functions [§4.1.2]. + * @private + */ + static Σ0(x) { return Sha256.ROTR(2, x) ^ Sha256.ROTR(13, x) ^ Sha256.ROTR(22, x); } + static Σ1(x) { return Sha256.ROTR(6, x) ^ Sha256.ROTR(11, x) ^ Sha256.ROTR(25, x); } + static σ0(x) { return Sha256.ROTR(7, x) ^ Sha256.ROTR(18, x) ^ (x>>>3); } + static σ1(x) { return Sha256.ROTR(17, x) ^ Sha256.ROTR(19, x) ^ (x>>>10); } + static Ch(x, y, z) { return (x & y) ^ (~x & z); } // 'choice' + static Maj(x, y, z) { return (x & y) ^ (x & z) ^ (y & z); } // 'majority' + +} + + +/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ + +export default Sha256; \ No newline at end of file From 33ce701612b68f0d3da03a9408b48985f9c10fa0 Mon Sep 17 00:00:00 2001 From: "jordi.munoz@adevinta.com" Date: Fri, 22 Mar 2024 18:04:27 +0100 Subject: [PATCH 209/545] docs(packages/sui-js): remove reference to old function --- packages/sui-js/src/hash/index.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/sui-js/src/hash/index.js b/packages/sui-js/src/hash/index.js index 6ece388b7..16209627b 100644 --- a/packages/sui-js/src/hash/index.js +++ b/packages/sui-js/src/hash/index.js @@ -1,4 +1,4 @@ -import Sha256 from "./sha256.js"; +import Sha256 from './sha256.js'; // extracted from https://github.com/jbt/tiny-hashes/blob/master/md5/md5.js const m = [ @@ -10,6 +10,7 @@ const m = [ 1126891415, -1416354905, -57434055, 1700485571, -1894986606, -1051523, -2054922799, 1873313359, -30611744, -1560198380, 1309151649, -145523070, -1120210379, 718787259, -343485551 ] // eslint-disable-line + const md5 = function (c) { let e let g @@ -41,7 +42,7 @@ const md5 = function (c) { return c } // eslint-disable-line -// extracted from https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/digest#converting_a_digest_to_a_hex_string +// extracted from https://www.movable-type.co.uk/scripts/sha256.html const sha256 = async value => { return Sha256.hash(value) } From c0671da40352c4196d31fe2dd834f07f8dce4863 Mon Sep 17 00:00:00 2001 From: "jordi.munoz@adevinta.com" Date: Fri, 22 Mar 2024 18:13:41 +0100 Subject: [PATCH 210/545] refactor(packages/sui-js): make code linter friendly --- packages/sui-js/src/hash/index.js | 3 +- packages/sui-js/src/hash/sha256.js | 274 ++++++++++++++++------------- 2 files changed, 155 insertions(+), 122 deletions(-) diff --git a/packages/sui-js/src/hash/index.js b/packages/sui-js/src/hash/index.js index 16209627b..0aa8120f3 100644 --- a/packages/sui-js/src/hash/index.js +++ b/packages/sui-js/src/hash/index.js @@ -1,4 +1,4 @@ -import Sha256 from './sha256.js'; +import Sha256 from './sha256.js' // extracted from https://github.com/jbt/tiny-hashes/blob/master/md5/md5.js const m = [ @@ -18,6 +18,7 @@ const md5 = function (c) { let a const h = [] c = unescape(encodeURI(c)) + // eslint-disable-next-line no-var for (var b = c.length, k = [(e = 1732584193), (g = -271733879), ~e, ~g], d = 0; d <= b; ) h[d >> 2] |= (c.charCodeAt(d) || 128) << (8 * (d++ % 4)) h[(c = 16 * ((b + 8) >> 6) + 14)] = 8 * b diff --git a/packages/sui-js/src/hash/sha256.js b/packages/sui-js/src/hash/sha256.js index fae665281..e6dc15bc4 100644 --- a/packages/sui-js/src/hash/sha256.js +++ b/packages/sui-js/src/hash/sha256.js @@ -4,7 +4,6 @@ /* www.movable-type.co.uk/scripts/sha256.html */ /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - /** * SHA-256 hash function reference implementation. * @@ -19,7 +18,6 @@ * csrc.nist.gov/groups/ST/toolkit/examples.html */ class Sha256 { - /** * Generates SHA-256 hash of string. * @@ -36,145 +34,179 @@ class Sha256 { * const hash = Sha256.hash('abc'); // 'ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad' */ static hash(msg, options) { - const defaults = { msgFormat: 'string', outFormat: 'hex' }; - const opt = Object.assign(defaults, options); - - // note use throughout this routine of 'n >>> 0' to coerce Number 'n' to unsigned 32-bit integer - - switch (opt.msgFormat) { - default: // default is to convert string to UTF-8, as SHA only deals with byte-streams - case 'string': msg = utf8Encode(msg); break; - case 'hex-bytes':msg = hexBytesToString(msg); break; // mostly for running tests - } - - // constants [§4.2.2] - const K = [ - 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, - 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, - 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, - 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, - 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, - 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, - 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, - 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 ]; - - // initial hash value [§5.3.3] - const H = [ - 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19 ]; - - // PREPROCESSING [§6.2.1] - - msg += String.fromCharCode(0x80); // add trailing '1' bit (+ 0's padding) to string [§5.1.1] - - // convert string msg into 512-bit blocks (array of 16 32-bit integers) [§5.2.1] - const l = msg.length/4 + 2; // length (in 32-bit integers) of msg + ‘1’ + appended length - const N = Math.ceil(l/16); // number of 16-integer (512-bit) blocks required to hold 'l' ints - const M = new Array(N); // message M is N×16 array of 32-bit integers - - for (let i=0; i>> 0' to coerce Number 'n' to unsigned 32-bit integer + + switch (opt.msgFormat) { + case 'hex-bytes': + msg = hexBytesToString(msg) + break // mostly for running tests + case 'string': + default: // default is to convert string to UTF-8, as SHA only deals with byte-streams + msg = utf8Encode(msg) + } + + // constants [§4.2.2] + const K = [ + 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, + 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, + 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, + 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, + 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, + 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, + 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, + 0xc67178f2 + ] + + // initial hash value [§5.3.3] + const H = [0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19] + + // PREPROCESSING [§6.2.1] + + msg += String.fromCharCode(0x80) // add trailing '1' bit (+ 0's padding) to string [§5.1.1] + + // convert string msg into 512-bit blocks (array of 16 32-bit integers) [§5.2.1] + const l = msg.length / 4 + 2 // length (in 32-bit integers) of msg + ‘1’ + appended length + const N = Math.ceil(l / 16) // number of 16-integer (512-bit) blocks required to hold 'l' ints + const M = new Array(N) // message M is N×16 array of 32-bit integers + + for (let i = 0; i < N; i++) { + M[i] = new Array(16) + for (let j = 0; j < 16; j++) { + // encode 4 chars per integer (64 per block), big-endian encoding + M[i][j] = + (msg.charCodeAt(i * 64 + j * 4 + 0) << 24) | + (msg.charCodeAt(i * 64 + j * 4 + 1) << 16) | + (msg.charCodeAt(i * 64 + j * 4 + 2) << 8) | + (msg.charCodeAt(i * 64 + j * 4 + 3) << 0) + } // note running off the end of msg is ok 'cos bitwise ops on NaN return 0 + } + // add length (in bits) into final pair of 32-bit integers (big-endian) [§5.1.1] + // note: most significant word would be (len-1)*8 >>> 32, but since JS converts + // bitwise-op args to 32 bits, we need to simulate this by arithmetic operators + const lenHi = ((msg.length - 1) * 8) / Math.pow(2, 32) + const lenLo = ((msg.length - 1) * 8) >>> 0 + M[N - 1][14] = Math.floor(lenHi) + M[N - 1][15] = lenLo + + // HASH COMPUTATION [§6.2.2] + + for (let i = 0; i < N; i++) { + const W = new Array(64) + + // 1 - prepare message schedule 'W' + for (let t = 0; t < 16; t++) W[t] = M[i][t] + for (let t = 16; t < 64; t++) { + W[t] = (Sha256.σ1(W[t - 2]) + W[t - 7] + Sha256.σ0(W[t - 15]) + W[t - 16]) >>> 0 } - // add length (in bits) into final pair of 32-bit integers (big-endian) [§5.1.1] - // note: most significant word would be (len-1)*8 >>> 32, but since JS converts - // bitwise-op args to 32 bits, we need to simulate this by arithmetic operators - const lenHi = ((msg.length-1)*8) / Math.pow(2, 32); - const lenLo = ((msg.length-1)*8) >>> 0; - M[N-1][14] = Math.floor(lenHi); - M[N-1][15] = lenLo; - - - // HASH COMPUTATION [§6.2.2] - - for (let i=0; i>> 0; - } - - // 2 - initialise working variables a, b, c, d, e, f, g, h with previous hash value - let a = H[0], b = H[1], c = H[2], d = H[3], e = H[4], f = H[5], g = H[6], h = H[7]; - - // 3 - main loop (note '>>> 0' for 'addition modulo 2^32') - for (let t=0; t<64; t++) { - const T1 = h + Sha256.Σ1(e) + Sha256.Ch(e, f, g) + K[t] + W[t]; - const T2 = Sha256.Σ0(a) + Sha256.Maj(a, b, c); - h = g; - g = f; - f = e; - e = (d + T1) >>> 0; - d = c; - c = b; - b = a; - a = (T1 + T2) >>> 0; - } - - // 4 - compute the new intermediate hash value (note '>>> 0' for 'addition modulo 2^32') - H[0] = (H[0]+a) >>> 0; - H[1] = (H[1]+b) >>> 0; - H[2] = (H[2]+c) >>> 0; - H[3] = (H[3]+d) >>> 0; - H[4] = (H[4]+e) >>> 0; - H[5] = (H[5]+f) >>> 0; - H[6] = (H[6]+g) >>> 0; - H[7] = (H[7]+h) >>> 0; - } - - // convert H0..H7 to hex strings (with leading zeros) - for (let h=0; h prev + String.fromCharCode(curr), ''); - } catch (e) { // no TextEncoder available? - return unescape(encodeURIComponent(str)); // monsur.hossa.in/2012/07/20/utf-8-in-javascript.html - } + // 2 - initialise working variables a, b, c, d, e, f, g, h with previous hash value + let a = H[0] + let b = H[1] + let c = H[2] + let d = H[3] + let e = H[4] + let f = H[5] + let g = H[6] + let h = H[7] + + // 3 - main loop (note '>>> 0' for 'addition modulo 2^32') + for (let t = 0; t < 64; t++) { + const T1 = h + Sha256.Σ1(e) + Sha256.Ch(e, f, g) + K[t] + W[t] + const T2 = Sha256.Σ0(a) + Sha256.Maj(a, b, c) + h = g + g = f + f = e + e = (d + T1) >>> 0 + d = c + c = b + b = a + a = (T1 + T2) >>> 0 } - function hexBytesToString(hexStr) { // convert string of hex numbers to a string of chars (eg '616263' -> 'abc'). - const str = hexStr.replace(' ', ''); // allow space-separated groups - return str=='' ? '' : str.match(/.{2}/g).map(byte => String.fromCharCode(parseInt(byte, 16))).join(''); + // 4 - compute the new intermediate hash value (note '>>> 0' for 'addition modulo 2^32') + H[0] = (H[0] + a) >>> 0 + H[1] = (H[1] + b) >>> 0 + H[2] = (H[2] + c) >>> 0 + H[3] = (H[3] + d) >>> 0 + H[4] = (H[4] + e) >>> 0 + H[5] = (H[5] + f) >>> 0 + H[6] = (H[6] + g) >>> 0 + H[7] = (H[7] + h) >>> 0 + } + + // convert H0..H7 to hex strings (with leading zeros) + for (let h = 0; h < H.length; h++) H[h] = ('00000000' + H[h].toString(16)).slice(-8) + + // concatenate H0..H7, with separator if required + // eslint-disable-next-line eqeqeq + const separator = opt.outFormat == 'hex-w' ? ' ' : '' + + return H.join(separator) + + /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ + + function utf8Encode(str) { + try { + return new TextEncoder().encode(str, 'utf-8').reduce((prev, curr) => prev + String.fromCharCode(curr), '') + } catch (e) { + // no TextEncoder available? + return unescape(encodeURIComponent(str)) // monsur.hossa.in/2012/07/20/utf-8-in-javascript.html } + } + + function hexBytesToString(hexStr) { + // convert string of hex numbers to a string of chars (eg '616263' -> 'abc'). + const str = hexStr.replace(' ', '') // allow space-separated groups + // eslint-disable-next-line eqeqeq + return str == '' + ? '' + : str + .match(/.{2}/g) + .map(byte => String.fromCharCode(parseInt(byte, 16))) + .join('') + } } - - /** * Rotates right (circular right shift) value x by n positions [§3.2.4]. * @private */ static ROTR(n, x) { - return (x >>> n) | (x << (32-n)); + return (x >>> n) | (x << (32 - n)) } - /** * Logical functions [§4.1.2]. * @private */ - static Σ0(x) { return Sha256.ROTR(2, x) ^ Sha256.ROTR(13, x) ^ Sha256.ROTR(22, x); } - static Σ1(x) { return Sha256.ROTR(6, x) ^ Sha256.ROTR(11, x) ^ Sha256.ROTR(25, x); } - static σ0(x) { return Sha256.ROTR(7, x) ^ Sha256.ROTR(18, x) ^ (x>>>3); } - static σ1(x) { return Sha256.ROTR(17, x) ^ Sha256.ROTR(19, x) ^ (x>>>10); } - static Ch(x, y, z) { return (x & y) ^ (~x & z); } // 'choice' - static Maj(x, y, z) { return (x & y) ^ (x & z) ^ (y & z); } // 'majority' + static Σ0(x) { + return Sha256.ROTR(2, x) ^ Sha256.ROTR(13, x) ^ Sha256.ROTR(22, x) + } -} + static Σ1(x) { + return Sha256.ROTR(6, x) ^ Sha256.ROTR(11, x) ^ Sha256.ROTR(25, x) + } + static σ0(x) { + return Sha256.ROTR(7, x) ^ Sha256.ROTR(18, x) ^ (x >>> 3) + } + + static σ1(x) { + return Sha256.ROTR(17, x) ^ Sha256.ROTR(19, x) ^ (x >>> 10) + } + + static Ch(x, y, z) { + return (x & y) ^ (~x & z) + } // 'choice' + + static Maj(x, y, z) { + return (x & y) ^ (x & z) ^ (y & z) + } // 'majority' +} /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ -export default Sha256; \ No newline at end of file +export default Sha256 From c1b65847a7adb466c24f20c922fdd17cd55b521e Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Fri, 22 Mar 2024 19:24:14 +0100 Subject: [PATCH 211/545] fix(packages/sui-react-context): fix json wrong character --- packages/sui-react-context/tsconfig.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/sui-react-context/tsconfig.json b/packages/sui-react-context/tsconfig.json index e64ed44cf..c69f8270e 100644 --- a/packages/sui-react-context/tsconfig.json +++ b/packages/sui-react-context/tsconfig.json @@ -2,6 +2,6 @@ "extends": "../../tsconfig.json", "compilerOptions": { "outDir": "./lib", - "rootDir": "./src", + "rootDir": "./src" } -} \ No newline at end of file +} From 04a9988ad5daa55bccf4c925d986bc46b348cb53 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Fri, 22 Mar 2024 19:28:22 +0100 Subject: [PATCH 212/545] fix(packages/sui-react-context): fix compilation --- packages/sui-react-context/package.json | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/sui-react-context/package.json b/packages/sui-react-context/package.json index 4fab32f5d..3bcfcae32 100644 --- a/packages/sui-react-context/package.json +++ b/packages/sui-react-context/package.json @@ -3,14 +3,17 @@ "version": "1.8.0", "description": "", "main": "lib/index", - "types": "src/index.tsx", + "types": "lib/index.d.ts", "scripts": { - "lib": "rm -rf ./lib && tsc", + "lib": "sui-js-compiler", "prepublishOnly": "npm run lib" }, "keywords": [], "author": "", "license": "MIT", + "devDependencies": { + "@s-ui/js-compiler": "1" + }, "dependencies": { "hoist-non-react-statics": "3.3.2" } From b76fb6ca4f9eeab69a7f3cc7d19175bc1a03430b Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Fri, 22 Mar 2024 19:28:54 +0100 Subject: [PATCH 213/545] fix(packages/sui-react-context): fix linting problems --- packages/sui-react-context/src/index.tsx | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/packages/sui-react-context/src/index.tsx b/packages/sui-react-context/src/index.tsx index 1c1f0bbd0..0fea4a34b 100644 --- a/packages/sui-react-context/src/index.tsx +++ b/packages/sui-react-context/src/index.tsx @@ -2,8 +2,7 @@ import * as React from 'react' import hoistNonReactStatics from 'hoist-non-react-statics' -type SUIContextType = React.Context -& { +type SUIContextType = React.Context & { wrapper?: (Component: React.ComponentType, displayName: string) => React.ComponentType } @@ -11,19 +10,15 @@ const SUIContext: SUIContextType = React.createContext({}) SUIContext.wrapper = (Component, displayName): React.ComponentType => { const WrappedComponent = (props: any): JSX.Element => ( - - {context => } - + {context => } ) - WrappedComponent.displayName = Component.displayName !== undefined - ? Component.displayName - : displayName + WrappedComponent.displayName = Component.displayName !== undefined ? Component.displayName : displayName return hoistNonReactStatics(WrappedComponent, Component) } -export function useSuiContext (): React.Context { +export const useSuiContext = (): React.Context => { return React.useContext(SUIContext) } From c8049b77c45ca0cf28d3f9769e4b88ed7783b965 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Fri, 22 Mar 2024 18:41:16 +0000 Subject: [PATCH 214/545] release(packages/sui-react-context): v1.9.0 [skip ci] --- packages/sui-react-context/CHANGELOG.md | 16 ++++++++++++---- packages/sui-react-context/package.json | 2 +- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/packages/sui-react-context/CHANGELOG.md b/packages/sui-react-context/CHANGELOG.md index 8caad04ca..c994df2d6 100644 --- a/packages/sui-react-context/CHANGELOG.md +++ b/packages/sui-react-context/CHANGELOG.md @@ -1,5 +1,16 @@ # CHANGELOG +# 1.9.0 (2024-03-22) + + +### Bug Fixes + +* fix compilation ([04a9988](https://github.com/SUI-Components/sui/commit/04a9988ad5daa55bccf4c925d986bc46b348cb53)) +* fix json wrong character ([c1b6584](https://github.com/SUI-Components/sui/commit/c1b65847a7adb466c24f20c922fdd17cd55b521e)) +* fix linting problems ([b76fb6c](https://github.com/SUI-Components/sui/commit/b76fb6ca4f9eeab69a7f3cc7d19175bc1a03430b)) + + + # 1.8.0 (2022-08-12) @@ -67,7 +78,4 @@ * **sui-react-context:** bump Beta version ([0a31ada](https://github.com/SUI-Components/sui/commit/0a31ada0ae1933886d2891ad3408c391765d6b40)) * **sui-react-context:** create wrapper HoC ([b11bde9](https://github.com/SUI-Components/sui/commit/b11bde911a7726d6e5c929010ea92d229f96190e)) * **sui-react-context:** first commit ([c4524ef](https://github.com/SUI-Components/sui/commit/c4524ef0274e92ca97ad5637ded76bee7d0f282d)) -* **sui-react-context:** update deps ([2fa9a28](https://github.com/SUI-Components/sui/commit/2fa9a285225117117b81847e88513ec96d9ecc60)) - - - +* **sui-react-context:** update deps ([2fa9a28](https://github.com/SUI-Components/sui/commit/2fa9a285225117117b81847e88513ec96d9ecc60)) \ No newline at end of file diff --git a/packages/sui-react-context/package.json b/packages/sui-react-context/package.json index 3bcfcae32..93c13ab2d 100644 --- a/packages/sui-react-context/package.json +++ b/packages/sui-react-context/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-context", - "version": "1.8.0", + "version": "1.9.0", "description": "", "main": "lib/index", "types": "lib/index.d.ts", From 3cd74f3965dba469fceefc1ce8c2cb327c268161 Mon Sep 17 00:00:00 2001 From: "jordi.munoz@adevinta.com" Date: Sat, 23 Mar 2024 11:05:44 +0100 Subject: [PATCH 215/545] test(packages/sui-js): added tests for sha256 hashing function --- packages/sui-js/test/hashSpec.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 packages/sui-js/test/hashSpec.js diff --git a/packages/sui-js/test/hashSpec.js b/packages/sui-js/test/hashSpec.js new file mode 100644 index 000000000..b0892fc22 --- /dev/null +++ b/packages/sui-js/test/hashSpec.js @@ -0,0 +1,21 @@ +/* eslint-env mocha */ +import {expect} from 'chai' + +import {createAsyncSha256} from '../src/hash/index.js' + +describe('@s-ui/js', () => { + describe('string:sha256', () => { + it('should hash a specific string to something known', async () => { + const hashedString = await createAsyncSha256('abc') + expect(hashedString).to.equal('ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad') + }) + it('should hash a specific email string to something known', async () => { + const hashedString = await createAsyncSha256('firstname.lastname@example.com') + expect(hashedString).to.equal('4a0a303e33c11f496a9312a77309133325af1527a26d9d95cf74b81feba9c955') + }) + it('should hash a specific unicode string to something known', async () => { + const hashedString = await createAsyncSha256('Barça') + expect(hashedString).to.equal('d7bbc6d46128ea3a0fe95c744899f7724ce15600e3e6bf2d93bc319b1252cd9b') + }) + }) +}) From 1630cd92d124b746af02cad5f5b74f5d2d294488 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Sat, 23 Mar 2024 10:50:34 +0000 Subject: [PATCH 216/545] release(packages/sui-js): v2.31.0 [skip ci] --- packages/sui-js/CHANGELOG.md | 10 ++++++++++ packages/sui-js/package.json | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/sui-js/CHANGELOG.md b/packages/sui-js/CHANGELOG.md index 581c5c5b5..9e5a4b3e7 100644 --- a/packages/sui-js/CHANGELOG.md +++ b/packages/sui-js/CHANGELOG.md @@ -1,5 +1,15 @@ # CHANGELOG +# 2.31.0 (2024-03-23) + + +### Features + +* use a more solid hashing function ([760b854](https://github.com/SUI-Components/sui/commit/760b85427c5240c56dbd140b3cf42f46051143fd)) +* using a pure js function to make this utility hashing function isomorphic ([dd18e41](https://github.com/SUI-Components/sui/commit/dd18e41fc448a27d09cfe7e7c255efa7297880ac)) + + + # 2.30.0 (2024-03-07) diff --git a/packages/sui-js/package.json b/packages/sui-js/package.json index 5b958d3b5..dcb7e22ca 100644 --- a/packages/sui-js/package.json +++ b/packages/sui-js/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/js", - "version": "2.30.0", + "version": "2.31.0", "description": "Set of JS utilities", "type": "module", "scripts": { From 06c29f5b27a2a9bb240f558b602b471b77e24eb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joan=20Leo=CC=81n?= Date: Tue, 26 Mar 2024 16:54:24 +0100 Subject: [PATCH 217/545] feat(packages/sui-react-web-vitals): upgrade web vitals package --- packages/sui-react-web-vitals/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sui-react-web-vitals/package.json b/packages/sui-react-web-vitals/package.json index 1395b868f..74c9ac8d1 100644 --- a/packages/sui-react-web-vitals/package.json +++ b/packages/sui-react-web-vitals/package.json @@ -17,7 +17,7 @@ "author": "", "license": "MIT", "dependencies": { - "web-vitals": "3.5.0", + "web-vitals": "3.5.2", "@s-ui/react-hooks": "1" }, "peerDependencies": { From ddde93fdebbde6595dd1e19a5654794610fc4bd6 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Tue, 26 Mar 2024 17:05:14 +0000 Subject: [PATCH 218/545] release(packages/sui-react-web-vitals): v2.4.0 [skip ci] --- packages/sui-react-web-vitals/CHANGELOG.md | 9 +++++++++ packages/sui-react-web-vitals/package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/sui-react-web-vitals/CHANGELOG.md b/packages/sui-react-web-vitals/CHANGELOG.md index 235a5d750..3388a1cdd 100644 --- a/packages/sui-react-web-vitals/CHANGELOG.md +++ b/packages/sui-react-web-vitals/CHANGELOG.md @@ -1,5 +1,14 @@ # CHANGELOG +# 2.4.0 (2024-03-26) + + +### Features + +* upgrade web vitals package ([06c29f5](https://github.com/SUI-Components/sui/commit/06c29f5b27a2a9bb240f558b602b471b77e24eb6)) + + + # 2.3.0 (2024-02-12) diff --git a/packages/sui-react-web-vitals/package.json b/packages/sui-react-web-vitals/package.json index 74c9ac8d1..251d76083 100644 --- a/packages/sui-react-web-vitals/package.json +++ b/packages/sui-react-web-vitals/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-web-vitals", - "version": "2.3.0", + "version": "2.4.0", "description": "", "type": "module", "main": "lib/index.js", From f1776ac105a423d3dc774ffcd869b3bae41d8fbb Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Tue, 2 Apr 2024 15:23:42 +0200 Subject: [PATCH 219/545] feat(packages/lint-repository-sui): Create Repository Structure rule --- packages/lint-repository-sui/src/index.js | 4 +- .../src/rules/structure.js | 80 +++++++++++++++++++ .../test/server/node-versionSpec.js | 2 +- .../test/server/structureSpec.js | 26 ++++++ 4 files changed, 110 insertions(+), 2 deletions(-) create mode 100644 packages/lint-repository-sui/src/rules/structure.js create mode 100644 packages/lint-repository-sui/test/server/structureSpec.js diff --git a/packages/lint-repository-sui/src/index.js b/packages/lint-repository-sui/src/index.js index d1f8a51d1..10bed5dc8 100644 --- a/packages/lint-repository-sui/src/index.js +++ b/packages/lint-repository-sui/src/index.js @@ -3,6 +3,7 @@ const ReactVersion = require('./rules/react-version.js') const PackageLock = require('./rules/package-lock.js') const GithubAction = require('./rules/github-action.js') const TypeScript = require('./rules/typescript.js') +const Structure = require('./rules/structure.js') // ------------------------------------------------------------------------------ // Plugin Definition @@ -15,6 +16,7 @@ module.exports = { 'react-version': ReactVersion, 'package-lock': PackageLock, 'github-action': GithubAction, - typescript: TypeScript + typescript: TypeScript, + structure: Structure } } diff --git a/packages/lint-repository-sui/src/rules/structure.js b/packages/lint-repository-sui/src/rules/structure.js new file mode 100644 index 000000000..729d7a70a --- /dev/null +++ b/packages/lint-repository-sui/src/rules/structure.js @@ -0,0 +1,80 @@ +const dedent = require('string-dedent') + +const FILES_AND_FOLDERS = [ + '.docker', + '.github', + 'Makefile', + 'package.json', + 'package-lock.json', + '.nvmrc', + '.dockerignore', + '.gitignore', + 'tsconfig.json', + 'README.md', + + 'app/src', + 'app/test', + 'app/Makefile', + 'app/package.json', + 'app/tsconfig.json', + 'app/CHANGELOG.md', + + 'app/src/pages', + 'app/src/app.(t|j)s(x)?', + 'app/src/contextFactory.(t|j)s(x)?', + 'app/src/hooks.(t|j)s(x)?', + 'app/src/index.html', + 'app/src/index.(s)?css', + 'app/src/routes.(t|j)s(x)?', + 'pacakges/**/src', + 'pacakges/**/test', + 'pacakges/**/Makefile', + 'pacakges/**/package.json', + 'pacakges/**/tsconfig.json', + 'pacakges/**/CHANGELOG.md', + + 'deploy/config-(pre|pro).yml', + 'deploy/*-(pre|pro)-paas.yml', + 'deploy/tags.yml', + + 'qa/e2e' +] + +module.exports = { + FILES_AND_FOLDERS, + meta: { + type: 'problem', + docs: { + description: 'Check that your repository follow the structure define', + recommended: true, + url: 'https://github.mpi-internal.com/scmspain/es-td-agreements/blob/master/30-Frontend/00-agreements/02-project-structure.md' + }, + fixable: null, + schema: [], + messages: { + missingFileOrFolder: dedent` + The file or folder {{pattern}} is missing. + This repository should follow the Golden Path file Structure. + If you are not sure about how do it, please contact with Platform Web. + ` + } + }, + create: function (context) { + return { + ...Object.fromEntries(FILES_AND_FOLDERS.map(pattern => [pattern, () => context.monitoring(true)])), + + missmatch: key => { + context.monitoring(false) + context.report({ + messageId: 'missingFileOrFolder', + data: {pattern: key} + }) + } + } + }, + reduceMonitoring: function (monitorings) { + return monitorings.reduce((acc, signal) => { + return acc && signal.value + }, true) + } +} diff --git a/packages/lint-repository-sui/test/server/node-versionSpec.js b/packages/lint-repository-sui/test/server/node-versionSpec.js index daf20325d..db1c118b6 100644 --- a/packages/lint-repository-sui/test/server/node-versionSpec.js +++ b/packages/lint-repository-sui/test/server/node-versionSpec.js @@ -24,7 +24,7 @@ RuleTester.create('node-version', handler).run({ }, { '.nvmrc': [MatchStub.create({raw: '16.1.3'})], - name: 'Exits more than one nvmrc file', + name: 'nvmrc exists, but has an invalid Node version 🫠', report: dedent` Your current Node version is 16. Please be sure that your repository use the latest Node Version 20. diff --git a/packages/lint-repository-sui/test/server/structureSpec.js b/packages/lint-repository-sui/test/server/structureSpec.js new file mode 100644 index 000000000..78a5f8bbe --- /dev/null +++ b/packages/lint-repository-sui/test/server/structureSpec.js @@ -0,0 +1,26 @@ +import dedent from 'dedent' + +import handler from '../../src/rules/structure.js' +import {RuleTester} from '../TestHelpers.js' + +RuleTester.create('structure', handler).run({ + valid: handler.FILES_AND_FOLDERS.map(pattern => { + return { + [pattern]: [], + name: `Testing ${pattern}`, + monitoring: true + } + }), + invalid: handler.FILES_AND_FOLDERS.map(pattern => { + return { + missmatch: pattern, + name: `Failed ${pattern}`, + report: dedent` + The file or folder ${pattern} is missing. + This repository should follow the Golden Path file Structure. + If you are not sure about how do it, please contact with Platform Web. + `, + monitoring: false + } + }) +}) From 8dd7c14e4a63d36403e6c4c775a39d424d1c3b33 Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Tue, 2 Apr 2024 15:24:14 +0200 Subject: [PATCH 220/545] feat(packages/sui-lint): enable repository structure rule --- packages/sui-lint/repository.config.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/sui-lint/repository.config.js b/packages/sui-lint/repository.config.js index bd8ef0308..13238617e 100644 --- a/packages/sui-lint/repository.config.js +++ b/packages/sui-lint/repository.config.js @@ -11,6 +11,7 @@ module.exports = { 'sui/react-version': RULES.WARNING, 'sui/package-lock': RULES.WARNING, 'sui/github-action': RULES.WARNING, - 'sui/typescript': RULES.WARNING + 'sui/typescript': RULES.WARNING, + 'sui/structure': RULES.WARNING } } From 7f6f0bf0a7d8ce70e0b936fd1afe524f15ba84a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joan=20Leo=CC=81n?= Date: Tue, 2 Apr 2024 17:04:42 +0200 Subject: [PATCH 221/545] feat(packages/lint-repository-sui): add sui-tools-version rule --- packages/lint-repository-sui/src/index.js | 4 +- .../src/rules/sui-tools-version.js | 86 +++++++++++++++++++ .../test/server/sui-tools-versionSepec.js | 51 +++++++++++ 3 files changed, 140 insertions(+), 1 deletion(-) create mode 100644 packages/lint-repository-sui/src/rules/sui-tools-version.js create mode 100644 packages/lint-repository-sui/test/server/sui-tools-versionSepec.js diff --git a/packages/lint-repository-sui/src/index.js b/packages/lint-repository-sui/src/index.js index 10bed5dc8..8e2780b23 100644 --- a/packages/lint-repository-sui/src/index.js +++ b/packages/lint-repository-sui/src/index.js @@ -4,6 +4,7 @@ const PackageLock = require('./rules/package-lock.js') const GithubAction = require('./rules/github-action.js') const TypeScript = require('./rules/typescript.js') const Structure = require('./rules/structure.js') +const SuiToolsVersion = require('./rules/sui-tools-version.js') // ------------------------------------------------------------------------------ // Plugin Definition @@ -17,6 +18,7 @@ module.exports = { 'package-lock': PackageLock, 'github-action': GithubAction, typescript: TypeScript, - structure: Structure + structure: Structure, + 'sui-tools-version': SuiToolsVersion } } diff --git a/packages/lint-repository-sui/src/rules/sui-tools-version.js b/packages/lint-repository-sui/src/rules/sui-tools-version.js new file mode 100644 index 000000000..fbd24017d --- /dev/null +++ b/packages/lint-repository-sui/src/rules/sui-tools-version.js @@ -0,0 +1,86 @@ +const dedent = require('string-dedent') + +const SUI_TOOLS_VERSIONS = { + bundler: '9', + lint: '4', + studio: '11', + ssr: '8', + mono: '2', + 'test-e2e': '1', + pde: '2', + test: '8', + theme: '8', + domain: '2' +} + +module.exports = { + SUI_TOOLS_VERSIONS, + meta: { + type: 'problem', + docs: { + description: 'Check that your repository use the latest SUI Tools version', + recommended: true, + url: null + }, + fixable: null, + schema: [], + messages: { + badVersion: dedent` + Please be sure that your repository use the latest {{name}}. Version {{spectedVersion}}. + Your current version is {{version}}. + If you are not sure about how do it, please contact with Platform Web. + `, + missingDependencie: dedent` + Your project doesnt have installed {{name}}. + Please install at least the version {{spectedVersion}}. + If you are not sure about how do it, please contact with Platform Web. + `, + missingPackageLock: dedent` + To calculate the SUI Tool version first we need to have a package-lock.json in the root + If you are not sure about how do it, please contact with Platform Web. + ` + } + }, + create: function (context) { + return { + 'package-lock.json': matches => { + const [packageLock] = matches + + Object.entries(SUI_TOOLS_VERSIONS).forEach(([name, spectedVersion]) => { + let version = packageLock?.parsed?.packages?.[`node_modules/@s-ui/${name}`]?.version + + if (!version) { + context.report({ + messageId: 'missingDependencie', + data: {name, spectedVersion} + }) + return context.monitoring(false) + } + + version = version.split('.')[0] + + if (version !== spectedVersion) { + context.report({ + messageId: 'badVersion', + data: {name, version, spectedVersion} + }) + return context.monitoring(false) + } + return context.monitoring(true) + }) + }, + + missmatch: () => { + context.report({ + messageId: 'missingPackageLock' + }) + context.monitoring(0) + } + } + }, + reduceMonitoring: function (monitorings) { + return monitorings.reduce((acc, signal) => { + return acc && signal.value + }, true) + } +} diff --git a/packages/lint-repository-sui/test/server/sui-tools-versionSepec.js b/packages/lint-repository-sui/test/server/sui-tools-versionSepec.js new file mode 100644 index 000000000..a4945d821 --- /dev/null +++ b/packages/lint-repository-sui/test/server/sui-tools-versionSepec.js @@ -0,0 +1,51 @@ +import dedent from 'dedent' + +import handler from '../../src/rules/sui-tools-version.js' +import {MatchStub, RuleTester} from '../TestHelpers.js' + +const SUI_TOOLS_ENTRIES = Object.entries(handler.SUI_TOOLS_VERSIONS) + +// MatchStub.create({parsed: {packages: {[`node_modules/@s-ui/${name}`]: {version: spectedVersion}}}}) +RuleTester.create('sui-tools-version', handler).run({ + valid: [ + { + 'package-lock.json': SUI_TOOLS_ENTRIES.map(([name, spectedVersion]) => { + return MatchStub.create({parsed: {packages: {[`node_modules/@s-ui/${name}`]: {version: spectedVersion}}}}) + }), + name: 'Testing all SUI Tools packages', + monitoring: true + } + ], + invalid: [ + { + 'package-lock.json': [MatchStub.create({parsed: {packages: {}}})], + name: `SUI Bundler not installed`, + report: dedent` + Your project doesnt have installed bundler. + Please install at least the version ${SUI_TOOLS_ENTRIES[0][1]}. + If you are not sure about how do it, please contact with Platform Web. + `, + monitoring: false + }, + { + 'package-lock.json': SUI_TOOLS_ENTRIES.map(([name]) => { + return MatchStub.create({parsed: {packages: {[`node_modules/@s-ui/${name}`]: {version: '100'}}}}) + }), + name: `SUI Bundler wrong version`, + report: dedent` + Please be sure that your repository use the latest bundler. Version ${SUI_TOOLS_ENTRIES[0][1]}. + Your current version is 100. + If you are not sure about how do it, please contact with Platform Web. + `, + monitoring: false + }, + { + missmatch: '', + report: dedent` + To calculate the SUI Tool version first we need to have a package-lock.json in the root + If you are not sure about how do it, please contact with Platform Web. + `, + monitoring: 0 + } + ] +}) From 1932c1dc795a450b88573ff381aa04a8d9fc5262 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joan=20Leo=CC=81n?= Date: Tue, 2 Apr 2024 17:05:50 +0200 Subject: [PATCH 222/545] feat(packages/sui-lint): add sui-tools-version rule --- packages/sui-lint/repository.config.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/sui-lint/repository.config.js b/packages/sui-lint/repository.config.js index 13238617e..679a88a49 100644 --- a/packages/sui-lint/repository.config.js +++ b/packages/sui-lint/repository.config.js @@ -12,6 +12,7 @@ module.exports = { 'sui/package-lock': RULES.WARNING, 'sui/github-action': RULES.WARNING, 'sui/typescript': RULES.WARNING, - 'sui/structure': RULES.WARNING + 'sui/structure': RULES.WARNING, + 'sui/sui-tools-version': RULES.WARNING } } From 48937153d2a043df94d362eb49b06bfa2bcd3448 Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Wed, 3 Apr 2024 11:50:26 +0200 Subject: [PATCH 223/545] feat(packages/lint-repository-sui): Add check for ADV tools version --- packages/lint-repository-sui/src/index.js | 4 +- .../src/rules/adv-tools-version.js | 78 +++++++++++++++++++ .../test/server/adv-tools-versionSpec.js | 50 ++++++++++++ .../test/server/sui-tools-versionSepec.js | 1 - 4 files changed, 131 insertions(+), 2 deletions(-) create mode 100644 packages/lint-repository-sui/src/rules/adv-tools-version.js create mode 100644 packages/lint-repository-sui/test/server/adv-tools-versionSpec.js diff --git a/packages/lint-repository-sui/src/index.js b/packages/lint-repository-sui/src/index.js index 8e2780b23..92feca32a 100644 --- a/packages/lint-repository-sui/src/index.js +++ b/packages/lint-repository-sui/src/index.js @@ -5,6 +5,7 @@ const GithubAction = require('./rules/github-action.js') const TypeScript = require('./rules/typescript.js') const Structure = require('./rules/structure.js') const SuiToolsVersion = require('./rules/sui-tools-version.js') +const ADVToolsVersion = require('./rules/adv-tools-version.js') // ------------------------------------------------------------------------------ // Plugin Definition @@ -19,6 +20,7 @@ module.exports = { 'github-action': GithubAction, typescript: TypeScript, structure: Structure, - 'sui-tools-version': SuiToolsVersion + 'sui-tools-version': SuiToolsVersion, + 'adv-tools-version': ADVToolsVersion } } diff --git a/packages/lint-repository-sui/src/rules/adv-tools-version.js b/packages/lint-repository-sui/src/rules/adv-tools-version.js new file mode 100644 index 000000000..d81f3d7a5 --- /dev/null +++ b/packages/lint-repository-sui/src/rules/adv-tools-version.js @@ -0,0 +1,78 @@ +const dedent = require('string-dedent') + +const ADV_TOOLS_VERSIONS = { + logger: '2', + 'lint-reporters': '1' +} + +module.exports = { + ADV_TOOLS_VERSIONS, + meta: { + type: 'problem', + docs: { + description: 'Check that your repository use the latest ADV Tools version', + recommended: true, + url: null + }, + fixable: null, + schema: [], + messages: { + badVersion: dedent` + Please be sure that your repository use the latest {{name}}. Version {{spectedVersion}}. + Your current version is {{version}}. + If you are not sure about how do it, please contact with Platform Web. + `, + missingDependencie: dedent` + Your project doesnt have installed {{name}}. + Please install at least the version {{spectedVersion}}. + If you are not sure about how do it, please contact with Platform Web. + `, + missingPackageLock: dedent` + To calculate the ADV Tool version first we need to have a package-lock.json in the root + If you are not sure about how do it, please contact with Platform Web. + ` + } + }, + create: function (context) { + return { + 'package-lock.json': matches => { + const [packageLock] = matches + + Object.entries(ADV_TOOLS_VERSIONS).forEach(([name, spectedVersion]) => { + let version = packageLock?.parsed?.packages?.[`node_modules/@adv-ui/${name}`]?.version + + if (!version) { + context.report({ + messageId: 'missingDependencie', + data: {name, spectedVersion} + }) + return context.monitoring(false) + } + + version = version.split('.')[0] + + if (version !== spectedVersion) { + context.report({ + messageId: 'badVersion', + data: {name, version, spectedVersion} + }) + return context.monitoring(false) + } + return context.monitoring(true) + }) + }, + + missmatch: () => { + context.report({ + messageId: 'missingPackageLock' + }) + context.monitoring(0) + } + } + }, + reduceMonitoring: function (monitorings) { + return monitorings.reduce((acc, signal) => { + return acc && signal.value + }, true) + } +} diff --git a/packages/lint-repository-sui/test/server/adv-tools-versionSpec.js b/packages/lint-repository-sui/test/server/adv-tools-versionSpec.js new file mode 100644 index 000000000..8d61e3596 --- /dev/null +++ b/packages/lint-repository-sui/test/server/adv-tools-versionSpec.js @@ -0,0 +1,50 @@ +import dedent from 'dedent' + +import handler from '../../src/rules/adv-tools-version.js' +import {MatchStub, RuleTester} from '../TestHelpers.js' + +const ADV_TOOLS_ENTRIES = Object.entries(handler.ADV_TOOLS_VERSIONS) + +RuleTester.create('adv-tools-version', handler).run({ + valid: [ + { + 'package-lock.json': ADV_TOOLS_ENTRIES.map(([name, spectedVersion]) => { + return MatchStub.create({parsed: {packages: {[`node_modules/@adv-ui/${name}`]: {version: spectedVersion}}}}) + }), + name: 'Testing all ADV Tools packages', + monitoring: true + } + ], + invalid: [ + { + 'package-lock.json': [MatchStub.create({parsed: {packages: {}}})], + name: `ADV logger not installed`, + report: dedent` + Your project doesnt have installed logger. + Please install at least the version ${ADV_TOOLS_ENTRIES[0][1]}. + If you are not sure about how do it, please contact with Platform Web. + `, + monitoring: false + }, + { + 'package-lock.json': ADV_TOOLS_ENTRIES.map(([name]) => { + return MatchStub.create({parsed: {packages: {[`node_modules/@adv-ui/${name}`]: {version: '100'}}}}) + }), + name: `ADV logger wrong version`, + report: dedent` + Please be sure that your repository use the latest logger. Version ${ADV_TOOLS_ENTRIES[0][1]}. + Your current version is 100. + If you are not sure about how do it, please contact with Platform Web. + `, + monitoring: false + }, + { + missmatch: '', + report: dedent` + To calculate the ADV Tool version first we need to have a package-lock.json in the root + If you are not sure about how do it, please contact with Platform Web. + `, + monitoring: 0 + } + ] +}) diff --git a/packages/lint-repository-sui/test/server/sui-tools-versionSepec.js b/packages/lint-repository-sui/test/server/sui-tools-versionSepec.js index a4945d821..b283d8094 100644 --- a/packages/lint-repository-sui/test/server/sui-tools-versionSepec.js +++ b/packages/lint-repository-sui/test/server/sui-tools-versionSepec.js @@ -5,7 +5,6 @@ import {MatchStub, RuleTester} from '../TestHelpers.js' const SUI_TOOLS_ENTRIES = Object.entries(handler.SUI_TOOLS_VERSIONS) -// MatchStub.create({parsed: {packages: {[`node_modules/@s-ui/${name}`]: {version: spectedVersion}}}}) RuleTester.create('sui-tools-version', handler).run({ valid: [ { From 6394545857204b80f8e6f80d5abaa77899f63400 Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Wed, 3 Apr 2024 11:51:03 +0200 Subject: [PATCH 224/545] feat(packages/sui-lint): enable test for ADV packages version --- packages/sui-lint/repository.config.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/sui-lint/repository.config.js b/packages/sui-lint/repository.config.js index 679a88a49..0f4c0fde3 100644 --- a/packages/sui-lint/repository.config.js +++ b/packages/sui-lint/repository.config.js @@ -13,6 +13,7 @@ module.exports = { 'sui/github-action': RULES.WARNING, 'sui/typescript': RULES.WARNING, 'sui/structure': RULES.WARNING, - 'sui/sui-tools-version': RULES.WARNING + 'sui/sui-tools-version': RULES.WARNING, + 'sui/adv-tools-version': RULES.WARNING } } From a4bbed90ded5d414ce52e02b677e2a79fb0fc4f8 Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Wed, 3 Apr 2024 12:03:54 +0200 Subject: [PATCH 225/545] feat(packages/sui-lint): enable check for cypress version --- packages/sui-lint/repository.config.js | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/sui-lint/repository.config.js b/packages/sui-lint/repository.config.js index 0f4c0fde3..f7b2b740b 100644 --- a/packages/sui-lint/repository.config.js +++ b/packages/sui-lint/repository.config.js @@ -9,6 +9,7 @@ module.exports = { rules: { 'sui/node-version': RULES.WARNING, 'sui/react-version': RULES.WARNING, + 'sui/cypress-version': RULES.WARNING, 'sui/package-lock': RULES.WARNING, 'sui/github-action': RULES.WARNING, 'sui/typescript': RULES.WARNING, From 852df2e4c83039a1acae7a39433f1f8b90afa206 Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Wed, 3 Apr 2024 12:04:58 +0200 Subject: [PATCH 226/545] feat(packages/lint-repository-sui): Create rule to check the Cypress version --- packages/lint-repository-sui/src/index.js | 2 + .../src/rules/adv-tools-version.js | 3 +- .../src/rules/cypress-version.js | 64 +++++++++++++++++++ .../src/rules/sui-tools-version.js | 4 +- .../test/server/cypress-versionSpec.js | 44 +++++++++++++ 5 files changed, 115 insertions(+), 2 deletions(-) create mode 100644 packages/lint-repository-sui/src/rules/cypress-version.js create mode 100644 packages/lint-repository-sui/test/server/cypress-versionSpec.js diff --git a/packages/lint-repository-sui/src/index.js b/packages/lint-repository-sui/src/index.js index 92feca32a..2f6411552 100644 --- a/packages/lint-repository-sui/src/index.js +++ b/packages/lint-repository-sui/src/index.js @@ -1,5 +1,6 @@ const NodeVersion = require('./rules/node-version.js') const ReactVersion = require('./rules/react-version.js') +const CypressVersion = require('./rules/cypress-version.js') const PackageLock = require('./rules/package-lock.js') const GithubAction = require('./rules/github-action.js') const TypeScript = require('./rules/typescript.js') @@ -16,6 +17,7 @@ module.exports = { rules: { 'node-version': NodeVersion, 'react-version': ReactVersion, + 'cypress-version': CypressVersion, 'package-lock': PackageLock, 'github-action': GithubAction, typescript: TypeScript, diff --git a/packages/lint-repository-sui/src/rules/adv-tools-version.js b/packages/lint-repository-sui/src/rules/adv-tools-version.js index d81f3d7a5..ff7f96fd3 100644 --- a/packages/lint-repository-sui/src/rules/adv-tools-version.js +++ b/packages/lint-repository-sui/src/rules/adv-tools-version.js @@ -2,7 +2,8 @@ const dedent = require('string-dedent') const ADV_TOOLS_VERSIONS = { logger: '2', - 'lint-reporters': '1' + 'lint-reporters': '1', + 'vendor-by-consents-loader': '1' } module.exports = { diff --git a/packages/lint-repository-sui/src/rules/cypress-version.js b/packages/lint-repository-sui/src/rules/cypress-version.js new file mode 100644 index 000000000..e01a7b3ec --- /dev/null +++ b/packages/lint-repository-sui/src/rules/cypress-version.js @@ -0,0 +1,64 @@ +const dedent = require('string-dedent') + +const CYPRESS_VERSION = '10' + +module.exports = { + meta: { + type: 'problem', + docs: { + description: 'Check that your repository use the latest Cypress version', + recommended: true, + url: null + }, + fixable: null, + schema: [], + messages: { + badCypressVersion: dedent` + Please be sure that your repository use the latest Cypress Version ${CYPRESS_VERSION}. + Your current version is {{version}}. + If you are not sure about how do it, please contact with Platform Web. + `, + missingCypressDependencie: dedent` + Your project doesnt have installed Cypress. + Please install at least the version ${CYPRESS_VERSION}. + If you are not sure about how do it, please contact with Platform Web. + `, + missingPackageLock: dedent` + To calculate the cypress version first we need to have a package-lock.json in the root + If you are not sure about how do it, please contact with Platform Web. + ` + } + }, + create: function (context) { + return { + 'package-lock.json': matches => { + const [packageLock] = matches + let version = packageLock?.parsed?.packages?.['node_modules/cypress']?.version + + if (!version) { + context.report({ + messageId: 'missingCypressDependencie' + }) + return context.monitoring(0) + } + + version = version.split('.')[0] + + if (version !== CYPRESS_VERSION) { + context.report({ + messageId: 'badCypressVersion', + data: {version} + }) + } + return context.monitoring(version) + }, + + missmatch: key => { + context.report({ + messageId: 'missingPackageLock' + }) + context.monitoring(0) + } + } + } +} diff --git a/packages/lint-repository-sui/src/rules/sui-tools-version.js b/packages/lint-repository-sui/src/rules/sui-tools-version.js index fbd24017d..8473d95a9 100644 --- a/packages/lint-repository-sui/src/rules/sui-tools-version.js +++ b/packages/lint-repository-sui/src/rules/sui-tools-version.js @@ -10,7 +10,9 @@ const SUI_TOOLS_VERSIONS = { pde: '2', test: '8', theme: '8', - domain: '2' + domain: '2', + 'react-web-vitals': '2', + 'segment-wrapper': '3' } module.exports = { diff --git a/packages/lint-repository-sui/test/server/cypress-versionSpec.js b/packages/lint-repository-sui/test/server/cypress-versionSpec.js new file mode 100644 index 000000000..1b2a7356b --- /dev/null +++ b/packages/lint-repository-sui/test/server/cypress-versionSpec.js @@ -0,0 +1,44 @@ +import dedent from 'dedent' + +import handler from '../../src/rules/cypress-version.js' +import {MatchStub, RuleTester} from '../TestHelpers.js' + +RuleTester.create('cypress-version', handler).run({ + valid: [ + { + 'package-lock.json': [MatchStub.create({parsed: {packages: {'node_modules/cypress': {version: '10.0.0'}}}})], + name: 'Cypress 10 installed', + monitoring: '10' + } + ], + invalid: [ + { + 'package-lock.json': [MatchStub.create({parsed: {packages: {}}})], + name: 'Cypress not installed', + report: dedent` + Your project doesnt have installed Cypress. + Please install at least the version 10. + If you are not sure about how do it, please contact with Platform Web. + `, + monitoring: 0 + }, + { + 'package-lock.json': [MatchStub.create({parsed: {packages: {'node_modules/cypress': {version: '17.0.0'}}}})], + name: 'Cypress wrong version', + report: dedent` + Please be sure that your repository use the latest Cypress Version 10. + Your current version is 17. + If you are not sure about how do it, please contact with Platform Web. + `, + monitoring: '17' + }, + { + missmatch: '', + report: dedent` + To calculate the cypress version first we need to have a package-lock.json in the root + If you are not sure about how do it, please contact with Platform Web. + `, + monitoring: 0 + } + ] +}) From e06acb9ca221abc0619cd2f09d1c0468a9aeeb68 Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Wed, 3 Apr 2024 17:03:09 +0200 Subject: [PATCH 227/545] Update packages/lint-repository-sui/src/rules/sui-tools-version.js Co-authored-by: Jordi --- packages/lint-repository-sui/src/rules/sui-tools-version.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/lint-repository-sui/src/rules/sui-tools-version.js b/packages/lint-repository-sui/src/rules/sui-tools-version.js index 8473d95a9..843a7eb56 100644 --- a/packages/lint-repository-sui/src/rules/sui-tools-version.js +++ b/packages/lint-repository-sui/src/rules/sui-tools-version.js @@ -32,7 +32,7 @@ module.exports = { Your current version is {{version}}. If you are not sure about how do it, please contact with Platform Web. `, - missingDependencie: dedent` + missingDependency: dedent` Your project doesnt have installed {{name}}. Please install at least the version {{spectedVersion}}. If you are not sure about how do it, please contact with Platform Web. From c543ae63adfa79e95cc5bdd6245a1741c131e547 Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Wed, 3 Apr 2024 17:03:14 +0200 Subject: [PATCH 228/545] Update packages/lint-repository-sui/src/rules/sui-tools-version.js Co-authored-by: Jordi --- packages/lint-repository-sui/src/rules/sui-tools-version.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/lint-repository-sui/src/rules/sui-tools-version.js b/packages/lint-repository-sui/src/rules/sui-tools-version.js index 843a7eb56..4c50cb070 100644 --- a/packages/lint-repository-sui/src/rules/sui-tools-version.js +++ b/packages/lint-repository-sui/src/rules/sui-tools-version.js @@ -33,7 +33,7 @@ module.exports = { If you are not sure about how do it, please contact with Platform Web. `, missingDependency: dedent` - Your project doesnt have installed {{name}}. + Your project does not have installed {{name}}. Please install at least the version {{spectedVersion}}. If you are not sure about how do it, please contact with Platform Web. `, From bec81a76ee1438c521687c84ec1ed75ba0c5d807 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Alvarez?= Date: Thu, 4 Apr 2024 11:02:06 +0200 Subject: [PATCH 229/545] feat(packages/lint-repository-sui): add dependabot rules --- .../src/rules/adv-tools-version.js | 4 +- .../src/rules/structure.js | 32 ++++++++--- .../src/rules/sui-tools-version.js | 2 +- .../test/server/structureSpec.js | 53 ++++++++++++++----- .../test/server/sui-tools-versionSepec.js | 2 +- 5 files changed, 71 insertions(+), 22 deletions(-) diff --git a/packages/lint-repository-sui/src/rules/adv-tools-version.js b/packages/lint-repository-sui/src/rules/adv-tools-version.js index ff7f96fd3..fd573d67c 100644 --- a/packages/lint-repository-sui/src/rules/adv-tools-version.js +++ b/packages/lint-repository-sui/src/rules/adv-tools-version.js @@ -23,7 +23,7 @@ module.exports = { Your current version is {{version}}. If you are not sure about how do it, please contact with Platform Web. `, - missingDependencie: dedent` + missingDependency: dedent` Your project doesnt have installed {{name}}. Please install at least the version {{spectedVersion}}. If you are not sure about how do it, please contact with Platform Web. @@ -44,7 +44,7 @@ module.exports = { if (!version) { context.report({ - messageId: 'missingDependencie', + messageId: 'missingDependency', data: {name, spectedVersion} }) return context.monitoring(false) diff --git a/packages/lint-repository-sui/src/rules/structure.js b/packages/lint-repository-sui/src/rules/structure.js index 729d7a70a..6609b2ab6 100644 --- a/packages/lint-repository-sui/src/rules/structure.js +++ b/packages/lint-repository-sui/src/rules/structure.js @@ -26,12 +26,12 @@ const FILES_AND_FOLDERS = [ 'app/src/index.html', 'app/src/index.(s)?css', 'app/src/routes.(t|j)s(x)?', - 'pacakges/**/src', - 'pacakges/**/test', - 'pacakges/**/Makefile', - 'pacakges/**/package.json', - 'pacakges/**/tsconfig.json', - 'pacakges/**/CHANGELOG.md', + 'packages/**/src', + 'packages/**/test', + 'packages/**/Makefile', + 'packages/**/package.json', + 'packages/**/tsconfig.json', + 'packages/**/CHANGELOG.md', 'deploy/config-(pre|pro).yml', 'deploy/*-(pre|pro)-paas.yml', @@ -56,6 +56,9 @@ module.exports = { The file or folder {{pattern}} is missing. This repository should follow the Golden Path file Structure. If you are not sure about how do it, please contact with Platform Web. + `, + automergeDisabled: dedent` + The dependabot automerge feature is disabled. ` } }, @@ -63,6 +66,23 @@ module.exports = { return { ...Object.fromEntries(FILES_AND_FOLDERS.map(pattern => [pattern, () => context.monitoring(true)])), + '.github/dependabot.yml': matches => { + const [match] = matches + const json = match.parsed + const labels = json?.updates[0]?.labels || [] + const isAutomergeEnabled = labels.find(key => key === 'skynet:merge') + + if (!isAutomergeEnabled) { + context.monitoring(false) + context.report({ + messageId: 'automergeDisabled' + }) + return + } + + context.monitoring(true) + }, + missmatch: key => { context.monitoring(false) context.report({ diff --git a/packages/lint-repository-sui/src/rules/sui-tools-version.js b/packages/lint-repository-sui/src/rules/sui-tools-version.js index 4c50cb070..ac16370b9 100644 --- a/packages/lint-repository-sui/src/rules/sui-tools-version.js +++ b/packages/lint-repository-sui/src/rules/sui-tools-version.js @@ -53,7 +53,7 @@ module.exports = { if (!version) { context.report({ - messageId: 'missingDependencie', + messageId: 'missingDependency', data: {name, spectedVersion} }) return context.monitoring(false) diff --git a/packages/lint-repository-sui/test/server/structureSpec.js b/packages/lint-repository-sui/test/server/structureSpec.js index 78a5f8bbe..b06b76a92 100644 --- a/packages/lint-repository-sui/test/server/structureSpec.js +++ b/packages/lint-repository-sui/test/server/structureSpec.js @@ -1,26 +1,55 @@ import dedent from 'dedent' import handler from '../../src/rules/structure.js' -import {RuleTester} from '../TestHelpers.js' +import {MatchStub, RuleTester} from '../TestHelpers.js' RuleTester.create('structure', handler).run({ - valid: handler.FILES_AND_FOLDERS.map(pattern => { - return { - [pattern]: [], - name: `Testing ${pattern}`, + valid: [ + ...handler.FILES_AND_FOLDERS.map(pattern => { + return { + [pattern]: [], + name: `Testing ${pattern}`, + monitoring: true + } + }), + { + '.github/dependabot.yml': [ + MatchStub.create({parsed: {updates: [{labels: ['skynet:update:rebase', 'skynet:merge']}]}}) + ], + name: 'Dependabot automerge enabled', monitoring: true } - }), - invalid: handler.FILES_AND_FOLDERS.map(pattern => { - return { - missmatch: pattern, - name: `Failed ${pattern}`, - report: dedent` + ], + invalid: [ + ...handler.FILES_AND_FOLDERS.map(pattern => { + return { + missmatch: pattern, + name: `Failed ${pattern}`, + report: dedent` The file or folder ${pattern} is missing. This repository should follow the Golden Path file Structure. If you are not sure about how do it, please contact with Platform Web. + `, + monitoring: false + } + }), + { + missmatch: '.github/dependabot.yml', + name: 'Dependabot file does not exist', + report: dedent` + The file or folder .github/dependabot.yml is missing. + This repository should follow the Golden Path file Structure. + If you are not sure about how do it, please contact with Platform Web. + `, + monitoring: false + }, + { + '.github/dependabot.yml': [MatchStub.create({parsed: {updates: [{labels: []}]}})], + name: 'Dependabot automerge disabled', + report: dedent` + The dependabot automerge feature is disabled. `, monitoring: false } - }) + ] }) diff --git a/packages/lint-repository-sui/test/server/sui-tools-versionSepec.js b/packages/lint-repository-sui/test/server/sui-tools-versionSepec.js index b283d8094..6e57a0480 100644 --- a/packages/lint-repository-sui/test/server/sui-tools-versionSepec.js +++ b/packages/lint-repository-sui/test/server/sui-tools-versionSepec.js @@ -20,7 +20,7 @@ RuleTester.create('sui-tools-version', handler).run({ 'package-lock.json': [MatchStub.create({parsed: {packages: {}}})], name: `SUI Bundler not installed`, report: dedent` - Your project doesnt have installed bundler. + Your project does not have installed bundler. Please install at least the version ${SUI_TOOLS_ENTRIES[0][1]}. If you are not sure about how do it, please contact with Platform Web. `, From 8081d54fe5f159ed2af348f6ec8e1fbe36bab2b5 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Fri, 5 Apr 2024 08:54:17 +0000 Subject: [PATCH 230/545] release(packages/lint-repository-sui): v1.4.0 [skip ci] --- packages/lint-repository-sui/CHANGELOG.md | 13 +++++++++++++ packages/lint-repository-sui/package.json | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/packages/lint-repository-sui/CHANGELOG.md b/packages/lint-repository-sui/CHANGELOG.md index 1db18171d..437387780 100644 --- a/packages/lint-repository-sui/CHANGELOG.md +++ b/packages/lint-repository-sui/CHANGELOG.md @@ -1,5 +1,18 @@ # CHANGELOG +# 1.4.0 (2024-04-05) + + +### Features + +* Add check for ADV tools version ([4893715](https://github.com/SUI-Components/sui/commit/48937153d2a043df94d362eb49b06bfa2bcd3448)) +* add dependabot rules ([bec81a7](https://github.com/SUI-Components/sui/commit/bec81a76ee1438c521687c84ec1ed75ba0c5d807)) +* add sui-tools-version rule ([7f6f0bf](https://github.com/SUI-Components/sui/commit/7f6f0bf0a7d8ce70e0b936fd1afe524f15ba84a6)) +* Create Repository Structure rule ([f1776ac](https://github.com/SUI-Components/sui/commit/f1776ac105a423d3dc774ffcd869b3bae41d8fbb)) +* Create rule to check the Cypress version ([852df2e](https://github.com/SUI-Components/sui/commit/852df2e4c83039a1acae7a39433f1f8b90afa206)) + + + # 1.3.0 (2024-03-21) diff --git a/packages/lint-repository-sui/package.json b/packages/lint-repository-sui/package.json index 661cf9603..5f5f1835b 100644 --- a/packages/lint-repository-sui/package.json +++ b/packages/lint-repository-sui/package.json @@ -1,7 +1,7 @@ { "name": "lint-repository-sui", "access": "public", - "version": "1.3.0", + "version": "1.4.0", "description": "Set of sui lint rules to lint a repository", "keywords": [], "author": "Sui", From cd2a08e42717c52b2e7ed0cb69aa4e2250602652 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Fri, 5 Apr 2024 08:54:21 +0000 Subject: [PATCH 231/545] release(packages/sui-lint): v4.41.0 [skip ci] --- packages/sui-lint/CHANGELOG.md | 12 ++++++++++++ packages/sui-lint/package.json | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/packages/sui-lint/CHANGELOG.md b/packages/sui-lint/CHANGELOG.md index 94eefb9aa..5b813e887 100644 --- a/packages/sui-lint/CHANGELOG.md +++ b/packages/sui-lint/CHANGELOG.md @@ -1,5 +1,17 @@ # CHANGELOG +# 4.41.0 (2024-04-05) + + +### Features + +* add sui-tools-version rule ([1932c1d](https://github.com/SUI-Components/sui/commit/1932c1dc795a450b88573ff381aa04a8d9fc5262)) +* enable check for cypress version ([a4bbed9](https://github.com/SUI-Components/sui/commit/a4bbed90ded5d414ce52e02b677e2a79fb0fc4f8)) +* enable repository structure rule ([8dd7c14](https://github.com/SUI-Components/sui/commit/8dd7c14e4a63d36403e6c4c775a39d424d1c3b33)) +* enable test for ADV packages version ([6394545](https://github.com/SUI-Components/sui/commit/6394545857204b80f8e6f80d5abaa77899f63400)) + + + # 4.40.0 (2024-03-21) diff --git a/packages/sui-lint/package.json b/packages/sui-lint/package.json index c5cbff008..053c305ff 100644 --- a/packages/sui-lint/package.json +++ b/packages/sui-lint/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/lint", - "version": "4.40.0", + "version": "4.41.0", "description": "Linting CLI for sui packages", "main": "./bin/sui-lint.js", "bin": { From c7e252499ada037c4c2d887863378cde192e1c24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Alvarez?= Date: Fri, 5 Apr 2024 11:43:44 +0200 Subject: [PATCH 232/545] fix(packages/sui-ssr): internal error --- packages/sui-ssr/server/hooksFactory/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/sui-ssr/server/hooksFactory/index.js b/packages/sui-ssr/server/hooksFactory/index.js index 6910b9883..aaa8da2e5 100644 --- a/packages/sui-ssr/server/hooksFactory/index.js +++ b/packages/sui-ssr/server/hooksFactory/index.js @@ -133,7 +133,7 @@ export const hooksFactory = async () => { [TYPES.NOT_FOUND]: async (req, res) => { res.status(NOT_FOUND_CODE).send(await getStaticErrorPageContent(NOT_FOUND_CODE, req)) }, - [TYPES.INTERNAL_ERROR]: async (err, req, res) => { + [TYPES.INTERNAL_ERROR]: async (err, req, res, next) => { // getInitialProps could throw a 404 error or any other error req.log && req.log.error && req.log.error((' ' + err.message).slice(1)) const status = @@ -144,7 +144,7 @@ export const hooksFactory = async () => { res.status(status) } - res.end(await getStaticErrorPageContent(status, req)) + res.send(await getStaticErrorPageContent(status, req)) }, ..._userHooks } From 27ae05b0a335f2ca146bc5d46d2f39a394d54234 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Alvarez?= Date: Fri, 5 Apr 2024 11:59:20 +0200 Subject: [PATCH 233/545] fix(packages/sui-ssr): copy ssr dev 404 and 500 html --- packages/sui-ssr/bin/sui-ssr-dev.js | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/packages/sui-ssr/bin/sui-ssr-dev.js b/packages/sui-ssr/bin/sui-ssr-dev.js index 5650c4da1..2b2cc6e9b 100644 --- a/packages/sui-ssr/bin/sui-ssr-dev.js +++ b/packages/sui-ssr/bin/sui-ssr-dev.js @@ -3,6 +3,7 @@ const program = require('commander') const {exec} = require('child_process') +const {copyFile} = require('fs/promises') const path = require('path') const fs = require('fs') const express = require('express') @@ -19,6 +20,8 @@ const log = require('@s-ui/bundler/shared/log.js') const serverConfigFactory = require('../compiler/server.js') const TMP_PATH = '.sui' +const SRC_PATH = path.join(process.cwd(), 'src') +const PUBLIC_OUTPUT_PATH = path.join(process.cwd(), `${TMP_PATH}/server`) const SERVER_OUTPUT_PATH = path.join(process.cwd(), `${TMP_PATH}/server`) const STATICS_PATH = path.join(process.cwd(), './statics') const STATICS_OUTPUT_PATH = path.join(process.cwd(), `${TMP_PATH}/statics`) @@ -63,6 +66,13 @@ const linkStatics = () => { ) } +const copyStatics = () => { + return Promise.allSettled([ + copyFile(path.join(SRC_PATH, '404.html'), path.join(PUBLIC_OUTPUT_PATH, '404.html')), + copyFile(path.join(SRC_PATH, '500.html'), path.join(PUBLIC_OUTPUT_PATH, '500.html')) + ]) +} + const initMSW = () => { return exec(`npx msw init ${STATICS_PATH}`) } @@ -153,7 +163,13 @@ const start = async ({packagesToLink, linkAll}) => { fs.mkdirSync(TMP_PATH) } - Promise.all([linkStatics(), initMSW(), compile('client', clientCompiler), compile('server', serverCompiler)]) + Promise.all([ + linkStatics(), + initMSW(), + copyStatics(), + compile('client', clientCompiler), + compile('server', serverCompiler) + ]) .then(() => { const script = nodemon({ script: `${SERVER_OUTPUT_PATH}/index.js`, From b692c3ead33bb81198e15bd69ff01b3a6a5a4fcb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Alvarez?= Date: Fri, 5 Apr 2024 12:08:29 +0200 Subject: [PATCH 234/545] fix(packages/sui-ssr): copy files --- packages/sui-ssr/bin/sui-ssr-dev.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/sui-ssr/bin/sui-ssr-dev.js b/packages/sui-ssr/bin/sui-ssr-dev.js index 2b2cc6e9b..305a92699 100644 --- a/packages/sui-ssr/bin/sui-ssr-dev.js +++ b/packages/sui-ssr/bin/sui-ssr-dev.js @@ -3,7 +3,7 @@ const program = require('commander') const {exec} = require('child_process') -const {copyFile} = require('fs/promises') +const {cp} = require('fs/promises') const path = require('path') const fs = require('fs') const express = require('express') @@ -21,7 +21,7 @@ const serverConfigFactory = require('../compiler/server.js') const TMP_PATH = '.sui' const SRC_PATH = path.join(process.cwd(), 'src') -const PUBLIC_OUTPUT_PATH = path.join(process.cwd(), `${TMP_PATH}/server`) +const PUBLIC_OUTPUT_PATH = path.join(process.cwd(), `${TMP_PATH}/public`) const SERVER_OUTPUT_PATH = path.join(process.cwd(), `${TMP_PATH}/server`) const STATICS_PATH = path.join(process.cwd(), './statics') const STATICS_OUTPUT_PATH = path.join(process.cwd(), `${TMP_PATH}/statics`) @@ -68,8 +68,8 @@ const linkStatics = () => { const copyStatics = () => { return Promise.allSettled([ - copyFile(path.join(SRC_PATH, '404.html'), path.join(PUBLIC_OUTPUT_PATH, '404.html')), - copyFile(path.join(SRC_PATH, '500.html'), path.join(PUBLIC_OUTPUT_PATH, '500.html')) + cp(path.join(SRC_PATH, '404.html'), path.join(PUBLIC_OUTPUT_PATH, '404.html'), {recursive: true}), + cp(path.join(SRC_PATH, '500.html'), path.join(PUBLIC_OUTPUT_PATH, '500.html'), {recursive: true}) ]) } From 5ceed50f0b30aa75d9be4b35008965aab0bed8a4 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Fri, 5 Apr 2024 10:17:43 +0000 Subject: [PATCH 235/545] release(packages/sui-ssr): v8.26.0 [skip ci] --- packages/sui-ssr/CHANGELOG.md | 14 ++++++++++---- packages/sui-ssr/package.json | 2 +- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/packages/sui-ssr/CHANGELOG.md b/packages/sui-ssr/CHANGELOG.md index cabb5cf97..b819a8032 100644 --- a/packages/sui-ssr/CHANGELOG.md +++ b/packages/sui-ssr/CHANGELOG.md @@ -1,5 +1,14 @@ # CHANGELOG +# 8.26.0 (2024-04-05) + + +### Bug Fixes + +* internal error ([c7e2524](https://github.com/SUI-Components/sui/commit/c7e252499ada037c4c2d887863378cde192e1c24)) + + + # 8.25.0 (2024-01-11) @@ -1534,7 +1543,4 @@ ### Features -* **sui-ssr:** add package.json ([d1495ce](https://github.com/SUI-Components/sui/commit/d1495ce76b02d906ca512f59518737411a67acc1)), closes [#67](https://github.com/SUI-Components/sui/issues/67) - - - +* **sui-ssr:** add package.json ([d1495ce](https://github.com/SUI-Components/sui/commit/d1495ce76b02d906ca512f59518737411a67acc1)), closes [#67](https://github.com/SUI-Components/sui/issues/67) \ No newline at end of file diff --git a/packages/sui-ssr/package.json b/packages/sui-ssr/package.json index a70c4fb6f..77c4cc08f 100644 --- a/packages/sui-ssr/package.json +++ b/packages/sui-ssr/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/ssr", - "version": "8.25.0", + "version": "8.26.0", "description": "> Plug SSR to you SUI SPA.", "main": "index.js", "bin": { From eb6082382ccd51825f2c0f0aca3118df1f2800df Mon Sep 17 00:00:00 2001 From: sui-bot Date: Fri, 5 Apr 2024 10:23:22 +0000 Subject: [PATCH 236/545] release(packages/sui-ssr): v8.27.0 [skip ci] --- packages/sui-ssr/CHANGELOG.md | 10 ++++++++++ packages/sui-ssr/package.json | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/sui-ssr/CHANGELOG.md b/packages/sui-ssr/CHANGELOG.md index b819a8032..16fa12f6b 100644 --- a/packages/sui-ssr/CHANGELOG.md +++ b/packages/sui-ssr/CHANGELOG.md @@ -1,5 +1,15 @@ # CHANGELOG +# 8.27.0 (2024-04-05) + + +### Bug Fixes + +* copy files ([b692c3e](https://github.com/SUI-Components/sui/commit/b692c3ead33bb81198e15bd69ff01b3a6a5a4fcb)) +* copy ssr dev 404 and 500 html ([27ae05b](https://github.com/SUI-Components/sui/commit/27ae05b0a335f2ca146bc5d46d2f39a394d54234)) + + + # 8.26.0 (2024-04-05) diff --git a/packages/sui-ssr/package.json b/packages/sui-ssr/package.json index 77c4cc08f..06a335303 100644 --- a/packages/sui-ssr/package.json +++ b/packages/sui-ssr/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/ssr", - "version": "8.26.0", + "version": "8.27.0", "description": "> Plug SSR to you SUI SPA.", "main": "index.js", "bin": { From 566fea3824726a3ce1ec0db9d5a612ea9da7d6e8 Mon Sep 17 00:00:00 2001 From: Giorgio de la Barrera Date: Fri, 19 Apr 2024 11:26:47 +0200 Subject: [PATCH 237/545] feat(packages/sui-studio): add __tests__ to npmignore --- packages/sui-studio/bin/sui-studio-generate.js | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/sui-studio/bin/sui-studio-generate.js b/packages/sui-studio/bin/sui-studio-generate.js index 186aabac7..53d99dc90 100755 --- a/packages/sui-studio/bin/sui-studio-generate.js +++ b/packages/sui-studio/bin/sui-studio-generate.js @@ -168,6 +168,7 @@ node_modules` demo src test +__tests__ ` ), From b8092855ade35401b2c0cc58dd93f6b7e32a27ff Mon Sep 17 00:00:00 2001 From: sui-bot Date: Fri, 19 Apr 2024 09:52:02 +0000 Subject: [PATCH 238/545] release(packages/sui-studio): v11.40.0 [skip ci] --- packages/sui-studio/CHANGELOG.md | 14 ++++++++++---- packages/sui-studio/package.json | 2 +- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/packages/sui-studio/CHANGELOG.md b/packages/sui-studio/CHANGELOG.md index 20df622b1..aff8d0526 100644 --- a/packages/sui-studio/CHANGELOG.md +++ b/packages/sui-studio/CHANGELOG.md @@ -1,5 +1,14 @@ # CHANGELOG +# 11.40.0 (2024-04-19) + + +### Features + +* add __tests__ to npmignore ([566fea3](https://github.com/SUI-Components/sui/commit/566fea3824726a3ce1ec0db9d5a612ea9da7d6e8)) + + + # 11.39.0 (2024-01-15) @@ -2628,7 +2637,4 @@ ### BREAKING CHANGES -* **sui-studio:** API is now named sui-studio instead of suistudio - - - +* **sui-studio:** API is now named sui-studio instead of suistudio \ No newline at end of file diff --git a/packages/sui-studio/package.json b/packages/sui-studio/package.json index 4e597cfb4..99e9edc45 100644 --- a/packages/sui-studio/package.json +++ b/packages/sui-studio/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/studio", - "version": "11.39.0", + "version": "11.40.0", "description": "Develop, maintain and publish your SUI components.", "main": "index.js", "bin": { From f210c46717117b4132a3586a2e2fe2548a4a51d2 Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Tue, 23 Apr 2024 15:45:14 +0200 Subject: [PATCH 239/545] feat(packages/eslint-plugin-sui): Add rule to mark any uso off commonjs syntax in our code --- packages/eslint-plugin-sui/src/index.js | 4 +- .../eslint-plugin-sui/src/rules/commonjs.js | 110 ++++++++++++++ .../src/rules/forbidden-require.js | 46 ------ .../eslint-plugin-sui/test/server/commonjs.js | 141 ++++++++++++++++++ 4 files changed, 254 insertions(+), 47 deletions(-) create mode 100644 packages/eslint-plugin-sui/src/rules/commonjs.js delete mode 100644 packages/eslint-plugin-sui/src/rules/forbidden-require.js create mode 100644 packages/eslint-plugin-sui/test/server/commonjs.js diff --git a/packages/eslint-plugin-sui/src/index.js b/packages/eslint-plugin-sui/src/index.js index 84d25af60..daefc476c 100644 --- a/packages/eslint-plugin-sui/src/index.js +++ b/packages/eslint-plugin-sui/src/index.js @@ -1,5 +1,6 @@ const FactoryPattern = require('./rules/factory-pattern.js') const SerializeDeserialize = require('./rules/serialize-deserialize.js') +const CommonJS = require('./rules/commonjs.js') // ------------------------------------------------------------------------------ // Plugin Definition @@ -9,6 +10,7 @@ const SerializeDeserialize = require('./rules/serialize-deserialize.js') module.exports = { rules: { 'factory-pattern': FactoryPattern, - 'serialize-deserialize': SerializeDeserialize + 'serialize-deserialize': SerializeDeserialize, + commonjs: CommonJS } } diff --git a/packages/eslint-plugin-sui/src/rules/commonjs.js b/packages/eslint-plugin-sui/src/rules/commonjs.js new file mode 100644 index 000000000..2e3820d8e --- /dev/null +++ b/packages/eslint-plugin-sui/src/rules/commonjs.js @@ -0,0 +1,110 @@ +/** + * @fileoverview Ensure your code is not using CommonJS signatures like module.exports or moduel.exports.foo or require() or require.resolve() + */ +'use strict' + +const dedent = require('string-dedent') + +// ------------------------------------------------------------------------------ +// Rule Definition +// ------------------------------------------------------------------------------ + +/** @type {import('eslint').Rule.RuleModule} */ +module.exports = { + meta: { + type: 'problem', + docs: { + description: 'Ensure that your code is using ems over commonjs modules', + recommended: true, + url: 'https://github.mpi-internal.com/scmspain/es-td-agreements/blob/master/30-Frontend/00-agreements' + }, + fixable: null, + schema: [], + messages: { + forbiddenExports: dedent` + Use module.* should be avoid. + `, + forbiddenRequires: dedent` + Use require function should be avoid. + `, + forbiddenModuleRequire: dedent` + Use module.require function should be avoid. + `, + forbiddenRequiresObjects: dedent` + Use require.cache or require.extensions or require.main should be avoid. + `, + forbiddenRequireResolve: dedent` + Use require.resolve function should be avoid. + `, + forbidden__filename: dedent` + __filename should be avoid + `, + forbidden__dirname: dedent` + __dirname should be avoid + ` + } + }, + create: function (context) { + return { + CallExpression(node) { + const isRequire = node.callee?.name === 'require' + const isResolve = node.callee?.object?.name === 'require' && node.callee?.property?.name === 'resolve' + const isModule = node.callee?.object?.name === 'module' && node.callee?.property?.name === 'require' + + isRequire && + context.report({ + node, + messageId: 'forbiddenRequires' + }) + + isResolve && + context.report({ + node, + messageId: 'forbiddenRequireResolve' + }) + + isModule && + context.report({ + node, + messageId: 'forbiddenModuleRequire' + }) + }, + MemberExpression(node) { + const isModule = + node.object?.name === 'module' && + ['children', 'exports', 'filename', 'id', 'isPreloading', 'loaded', 'parent', 'path', 'paths'].some( + property => node.property?.name === property + ) + + const isRequire = + node.object?.name === 'require' && + ['cache', 'extensions', 'main'].some(property => node.property?.name === property) + + isModule && + context.report({ + node, + messageId: 'forbiddenExports' + }) + + isRequire && + context.report({ + node, + messageId: 'forbiddenRequiresObjects' + }) + }, + Identifier(node) { + node.name === '__filename' && + context.report({ + node, + messageId: 'forbidden__filename' + }) + + node.name === '__dirname' && + context.report({ + node, + messageId: 'forbidden__dirname' + }) + } + } + } +} diff --git a/packages/eslint-plugin-sui/src/rules/forbidden-require.js b/packages/eslint-plugin-sui/src/rules/forbidden-require.js deleted file mode 100644 index 5e31b845b..000000000 --- a/packages/eslint-plugin-sui/src/rules/forbidden-require.js +++ /dev/null @@ -1,46 +0,0 @@ -/** - * @fileoverview Ensure that our coda doesnt have require (CJS) styles - * @author factory pattern - */ -'use strict' - -const dedent = require('string-dedent') - -// ------------------------------------------------------------------------------ -// Rule Definition -// ------------------------------------------------------------------------------ - -/** @type {import('eslint').Rule.RuleModule} */ -module.exports = { - meta: { - type: 'problem', - docs: { - description: 'ensure to use only ESM (import) style', - recommended: true, - url: 'https://github.mpi-internal.com/scmspain/es-td-agreements/blob/master/30-Frontend/00-agreements' - }, - fixable: null, - schema: [], - messages: { - badFileName: dedent``, - badClassName: dedent`` - } - }, - create: function (context) { - // variables should be defined here - - // ---------------------------------------------------------------------- - // Helpers - // ---------------------------------------------------------------------- - - // any helper functions should go here or else delete this section - - // ---------------------------------------------------------------------- - // Public - // ---------------------------------------------------------------------- - - return { - ClassDeclaration(node) {} - } - } -} diff --git a/packages/eslint-plugin-sui/test/server/commonjs.js b/packages/eslint-plugin-sui/test/server/commonjs.js new file mode 100644 index 000000000..24f87559b --- /dev/null +++ b/packages/eslint-plugin-sui/test/server/commonjs.js @@ -0,0 +1,141 @@ +import dedent from 'dedent' +import {RuleTester} from 'eslint' + +import rule from '../../src/rules/commonjs.js' + +// ------------------------------------------------------------------------------ +// Tests +// more info: https://eslint.org/docs/latest/integrate/nodejs-api#ruletester +// ------------------------------------------------------------------------------ + +const ruleTester = new RuleTester({parserOptions: {ecmaVersion: 2018, sourceType: 'module'}}) +ruleTester.run('esm', rule, { + valid: [ + { + code: dedent` + class User { + static create() { return new User() } + } + ` + } + ], + + invalid: [ + { + code: dedent` + class Model { + constructor() { this.name = 'John Doe' } + } + module.exports = Model + `, + errors: [ + { + message: dedent` + Use module.* should be avoid. + ` + } + ] + }, + { + code: dedent` + const deps = require('my-dep') + class Config { + static create() { + return {API_URL: 'google.com'} + } + } + `, + errors: [ + { + message: dedent` + Use require function should be avoid. + ` + } + ] + }, + { + code: dedent` + const path = require.resolve('my-dep') + `, + errors: [ + { + message: dedent` + Use require.resolve function should be avoid. + ` + } + ] + }, + { + code: dedent` + console.log(require.main) + `, + errors: [ + { + message: dedent` + Use require.cache or require.extensions or require.main should be avoid. + ` + } + ] + }, + { + code: dedent` + console.log(require.cache) + `, + errors: [ + { + message: dedent` + Use require.cache or require.extensions or require.main should be avoid. + ` + } + ] + }, + { + code: dedent` + console.log(require.extensions) + `, + errors: [ + { + message: dedent` + Use require.cache or require.extensions or require.main should be avoid. + ` + } + ] + }, + { + code: dedent` + console.log(__dirname) + `, + errors: [ + { + message: dedent` + __dirname should be avoid + ` + } + ] + }, + { + code: dedent` + console.log(__filename) + `, + errors: [ + { + message: dedent` + __filename should be avoid + ` + } + ] + }, + { + code: dedent` + module.require(id) + `, + errors: [ + { + message: dedent` + Use module.require function should be avoid. + ` + } + ] + } + ] +}) From 86ef4a25ee642b6a1fe2cdb134958a342f13edcf Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Thu, 25 Apr 2024 11:50:52 +0200 Subject: [PATCH 240/545] feat(packages/eslint-plugin-sui): add basic decorators rules for UseCases --- packages/eslint-plugin-sui/src/index.js | 4 +- .../eslint-plugin-sui/src/rules/decorators.js | 86 ++++++++++++++ .../test/server/decorators.js | 109 ++++++++++++++++++ 3 files changed, 198 insertions(+), 1 deletion(-) create mode 100644 packages/eslint-plugin-sui/src/rules/decorators.js create mode 100644 packages/eslint-plugin-sui/test/server/decorators.js diff --git a/packages/eslint-plugin-sui/src/index.js b/packages/eslint-plugin-sui/src/index.js index daefc476c..3e33063fa 100644 --- a/packages/eslint-plugin-sui/src/index.js +++ b/packages/eslint-plugin-sui/src/index.js @@ -1,6 +1,7 @@ const FactoryPattern = require('./rules/factory-pattern.js') const SerializeDeserialize = require('./rules/serialize-deserialize.js') const CommonJS = require('./rules/commonjs.js') +const Decorators = require('./rules/decorators.js') // ------------------------------------------------------------------------------ // Plugin Definition @@ -11,6 +12,7 @@ module.exports = { rules: { 'factory-pattern': FactoryPattern, 'serialize-deserialize': SerializeDeserialize, - commonjs: CommonJS + commonjs: CommonJS, + decorators: Decorators } } diff --git a/packages/eslint-plugin-sui/src/rules/decorators.js b/packages/eslint-plugin-sui/src/rules/decorators.js new file mode 100644 index 000000000..9c524de80 --- /dev/null +++ b/packages/eslint-plugin-sui/src/rules/decorators.js @@ -0,0 +1,86 @@ +/** + * @fileoverview Ensure that at least all your UseCases are using @inlineError and @tracer decorator from sui + */ +'use strict' + +const dedent = require('string-dedent') + +// ------------------------------------------------------------------------------ +// Rule Definition +// ------------------------------------------------------------------------------ + +/** @type {import('eslint').Rule.RuleModule} */ +module.exports = { + meta: { + type: 'problem', + docs: { + description: 'Ensure that at least all your UseCases are using @inlineError and @tracer decorator from sui', + recommended: true, + url: 'https://github.mpi-internal.com/scmspain/es-td-agreements/blob/master/30-Frontend/00-agreements' + }, + fixable: 'code', + schema: [], + messages: { + missingInlineError: dedent` + All our UseCases must have an @inlineError decorator. + `, + missingTracer: dedent` + All our UseCases must have a @tracer() decorator. + `, + tracerMissCall: dedent` + Your tracer decorator should be call always with the name of your class + `, + inlineErrorMissplace: dedent` + the inlineError decorator should be always the first + ` + } + }, + create: function (context) { + return { + MethodDefinition(node) { + const className = node.parent?.parent?.id?.name + const shouldExtendFromUseCase = node.parent?.parent?.superClass?.name === 'UseCase' + const isExecute = node.key?.name === 'execute' && shouldExtendFromUseCase + const hasInlineError = node.decorators?.some(node => node.expression?.name === 'inlineError') + const tracerNode = node.decorators?.find(node => node.expression?.callee?.name === 'tracer') + const isTracerCalledWithClassName = + tracerNode?.expression?.callee?.name === 'tracer' && + className + '#' + node.key?.name === tracerNode?.expression?.arguments[0]?.properties[0]?.value?.value && + tracerNode?.expression?.arguments[0]?.properties[0]?.key?.name === 'metric' + const isInlineErrorTheFirst = node.decorators?.at(-1)?.expression?.name === 'inlineError' + + isExecute && + !hasInlineError && + context.report({ + node: node.key, + messageId: 'missingInlineError' + }) + + isExecute && + hasInlineError && + !isInlineErrorTheFirst && + context.report({ + node: node.key, + messageId: 'inlineErrorMissplace' + }) + + isExecute && + !tracerNode && + context.report({ + node: node.key, + messageId: 'missingTracer' + }) + + tracerNode && + !isTracerCalledWithClassName && + context.report({ + node: tracerNode, + messageId: 'tracerMissCall', + fix(fixer) { + return fixer.replaceText(tracerNode.expression, `tracer({metric: '${className}#${node.key?.name}'})`) + } + }) + } + } + } +} diff --git a/packages/eslint-plugin-sui/test/server/decorators.js b/packages/eslint-plugin-sui/test/server/decorators.js new file mode 100644 index 000000000..d52ea4ee0 --- /dev/null +++ b/packages/eslint-plugin-sui/test/server/decorators.js @@ -0,0 +1,109 @@ +import dedent from 'dedent' +import {RuleTester} from 'eslint' + +import rule from '../../src/rules/decorators.js' + +// ------------------------------------------------------------------------------ +// Tests +// more info: https://eslint.org/docs/latest/integrate/nodejs-api#ruletester +// ------------------------------------------------------------------------------ + +const resolvedBabelPresetSui = require.resolve('babel-preset-sui') +const parser = require.resolve('@babel/eslint-parser') + +const ruleTester = new RuleTester({parser, parserOptions: {babelOptions: {configFile: resolvedBabelPresetSui}}}) +ruleTester.run('decorators', rule, { + valid: [ + { + code: dedent` + class MyUseCase extends UseCase { + + @tracer({metric: 'MyUseCase#execute'}) + @inlineError + execute(){} + } + ` + } + ], + + invalid: [ + { + code: dedent` + class MyUseCase extends UseCase { + + execute(){} + } + `, + errors: [ + { + message: dedent` + All our UseCases must have an @inlineError decorator. + ` + }, + { + message: dedent` + All our UseCases must have a @tracer() decorator. + ` + } + ] + }, + { + code: dedent` + class MyUseCase extends UseCase { + + @inlineError + execute(){} + } + `, + errors: [ + { + message: dedent` + All our UseCases must have a @tracer() decorator. + ` + } + ] + }, + { + code: dedent` + class MyUseCase extends UseCase { + + @tracer() + @inlineError + execute(){} + } + `, + output: dedent` + class MyUseCase extends UseCase { + + @tracer({metric: 'MyUseCase#execute'}) + @inlineError + execute(){} + } + `, + errors: [ + { + message: dedent` + Your tracer decorator should be call always with the name of your class + ` + } + ] + }, + { + code: dedent` + class MyUseCase extends UseCase { + + @inlineError + @tracer({metric: 'MyUseCase#execute'}) + execute(){} + } + `, + errors: [ + { + message: dedent` + the inlineError decorator should be always the first + ` + } + ] + } + ] +}) From ea666e0495246e15d209aac2a8ad1acc477430a1 Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Thu, 25 Apr 2024 14:23:17 +0200 Subject: [PATCH 241/545] feat(packages/eslint-plugin-sui): Allow require from ESM module --- .../eslint-plugin-sui/src/rules/commonjs.js | 8 ++++++++ .../eslint-plugin-sui/test/server/commonjs.js | 17 ++++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/packages/eslint-plugin-sui/src/rules/commonjs.js b/packages/eslint-plugin-sui/src/rules/commonjs.js index 2e3820d8e..88d6dacf0 100644 --- a/packages/eslint-plugin-sui/src/rules/commonjs.js +++ b/packages/eslint-plugin-sui/src/rules/commonjs.js @@ -51,7 +51,15 @@ module.exports = { const isResolve = node.callee?.object?.name === 'require' && node.callee?.property?.name === 'resolve' const isModule = node.callee?.object?.name === 'module' && node.callee?.property?.name === 'require' + const isRequireFormCreateRequire = node.parent?.parent?.body + ?.filter(node => node.type === 'ImportDeclaration') + ?.some( + node => + node.source?.value === 'module' && node.specifiers?.some(spec => spec.imported?.name === 'createRequire') + ) + isRequire && + !isRequireFormCreateRequire && context.report({ node, messageId: 'forbiddenRequires' diff --git a/packages/eslint-plugin-sui/test/server/commonjs.js b/packages/eslint-plugin-sui/test/server/commonjs.js index 24f87559b..a527b088b 100644 --- a/packages/eslint-plugin-sui/test/server/commonjs.js +++ b/packages/eslint-plugin-sui/test/server/commonjs.js @@ -3,16 +3,31 @@ import {RuleTester} from 'eslint' import rule from '../../src/rules/commonjs.js' +const resolvedBabelPresetSui = require.resolve('babel-preset-sui') +const parser = require.resolve('@babel/eslint-parser') + // ------------------------------------------------------------------------------ // Tests // more info: https://eslint.org/docs/latest/integrate/nodejs-api#ruletester // ------------------------------------------------------------------------------ -const ruleTester = new RuleTester({parserOptions: {ecmaVersion: 2018, sourceType: 'module'}}) +const ruleTester = new RuleTester({parser, parserOptions: {babelOptions: {configFile: resolvedBabelPresetSui}}}) ruleTester.run('esm', rule, { valid: [ { code: dedent` + class User { + static create() { return new User() } + } + ` + }, + { + code: dedent` + import { createRequire } from "module" + const require = createRequire(import.meta.url) + + require('whatever') + class User { static create() { return new User() } } From b35b3084549573b00882db3025960e3a5ceda048 Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Mon, 29 Apr 2024 13:07:06 +0200 Subject: [PATCH 242/545] Update packages/sui-jest/package.json --- packages/sui-jest/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sui-jest/package.json b/packages/sui-jest/package.json index 64acf7b84..fd7cf7240 100644 --- a/packages/sui-jest/package.json +++ b/packages/sui-jest/package.json @@ -12,7 +12,7 @@ "author": "", "license": "MIT", "dependencies": { - "@swc/jest": "0.2.31", + "@swc/jest": "0.2.24", "@types/jest": "29.2.4", "jest": "29.3.1", "jest-environment-jsdom": "29.3.1", From 41445982968d7908d5cb63148e603801b343e2ed Mon Sep 17 00:00:00 2001 From: xavi-murcia Date: Mon, 29 Apr 2024 16:14:56 +0200 Subject: [PATCH 243/545] feat(packages/sui-bundler): update to patched version to avoid vulnerabilities --- packages/sui-bundler/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sui-bundler/package.json b/packages/sui-bundler/package.json index 45eb8fd6d..bee60fee3 100644 --- a/packages/sui-bundler/package.json +++ b/packages/sui-bundler/package.json @@ -51,7 +51,7 @@ "strip-ansi": "6.0.1", "style-loader": "3.3.1", "url": "0.11.0", - "webpack-dev-server": "4.10.0", + "webpack-dev-server": "5.0.4", "webpack-manifest-plugin": "5.0.0", "webpack-node-externals": "3.0.0", "webpack": "5.82.1" From 6873ee468b9b26810feb63e6d7aca99ed469def7 Mon Sep 17 00:00:00 2001 From: xavi-murcia Date: Mon, 29 Apr 2024 16:15:14 +0200 Subject: [PATCH 244/545] feat(packages/sui-ssr): update to patched version to avoid vulnerabilities --- packages/sui-ssr/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sui-ssr/package.json b/packages/sui-ssr/package.json index 06a335303..837fe7064 100644 --- a/packages/sui-ssr/package.json +++ b/packages/sui-ssr/package.json @@ -38,7 +38,7 @@ "noop-console": "0.8.0", "parse5": "6.0.1", "ua-parser-js": "0.7.33", - "webpack-dev-middleware": "6.1.1", + "webpack-dev-middleware": "6.1.2", "webpack-hot-middleware": "2.25.4", "nodemon": "3.0.1" } From 5af5a0b69dcd33a9f5e9c55654c92eec68f4a7b5 Mon Sep 17 00:00:00 2001 From: xavi-murcia Date: Mon, 29 Apr 2024 16:15:27 +0200 Subject: [PATCH 245/545] feat(packages/sui-widget-embedder): update to patched version to avoid vulnerabilities --- packages/sui-widget-embedder/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sui-widget-embedder/package.json b/packages/sui-widget-embedder/package.json index 0b6af3717..ea5b55d4a 100644 --- a/packages/sui-widget-embedder/package.json +++ b/packages/sui-widget-embedder/package.json @@ -19,6 +19,6 @@ "@s-ui/react-hooks": "1", "commander": "8.3.0", "copy-paste": "1.3.0", - "webpack-dev-middleware": "5.3.3" + "webpack-dev-middleware": "5.3.4" } } From e24f3e123a6c7377e43e17d006dcc1d76717c024 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Tue, 30 Apr 2024 09:49:22 +0000 Subject: [PATCH 246/545] release(packages/eslint-plugin-sui): v1.4.0 [skip ci] --- packages/eslint-plugin-sui/CHANGELOG.md | 11 +++++++++++ packages/eslint-plugin-sui/package.json | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/eslint-plugin-sui/CHANGELOG.md b/packages/eslint-plugin-sui/CHANGELOG.md index 17d7c7508..b6d4ef7a7 100644 --- a/packages/eslint-plugin-sui/CHANGELOG.md +++ b/packages/eslint-plugin-sui/CHANGELOG.md @@ -1,5 +1,16 @@ # CHANGELOG +# 1.4.0 (2024-04-30) + + +### Features + +* add basic decorators rules for UseCases ([86ef4a2](https://github.com/SUI-Components/sui/commit/86ef4a25ee642b6a1fe2cdb134958a342f13edcf)) +* Add rule to mark any uso off commonjs syntax in our code ([f210c46](https://github.com/SUI-Components/sui/commit/f210c46717117b4132a3586a2e2fe2548a4a51d2)) +* Allow require from ESM module ([ea666e0](https://github.com/SUI-Components/sui/commit/ea666e0495246e15d209aac2a8ad1acc477430a1)) + + + # 1.3.0 (2024-03-21) diff --git a/packages/eslint-plugin-sui/package.json b/packages/eslint-plugin-sui/package.json index bfb860bd7..05e122a4c 100644 --- a/packages/eslint-plugin-sui/package.json +++ b/packages/eslint-plugin-sui/package.json @@ -1,6 +1,6 @@ { "name": "eslint-plugin-sui", - "version": "1.3.0", + "version": "1.4.0", "access": "public", "description": "Set of sui lint rules", "keywords": [ From 5a291c0ba1ee4f737f2a0b1578d66a2d9306cb36 Mon Sep 17 00:00:00 2001 From: xavi-murcia Date: Thu, 2 May 2024 09:25:14 +0200 Subject: [PATCH 247/545] feat(packages/sui-bundler): move webpack dev server to patched version 4.15.2 --- packages/sui-bundler/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sui-bundler/package.json b/packages/sui-bundler/package.json index bee60fee3..366cfca6a 100644 --- a/packages/sui-bundler/package.json +++ b/packages/sui-bundler/package.json @@ -51,7 +51,7 @@ "strip-ansi": "6.0.1", "style-loader": "3.3.1", "url": "0.11.0", - "webpack-dev-server": "5.0.4", + "webpack-dev-server": "4.15.2", "webpack-manifest-plugin": "5.0.0", "webpack-node-externals": "3.0.0", "webpack": "5.82.1" From d60ebf3c5c2313a4aeaff4b52ec70a012fa0ef3f Mon Sep 17 00:00:00 2001 From: sui-bot Date: Thu, 2 May 2024 08:21:03 +0000 Subject: [PATCH 248/545] release(packages/sui-bundler): v9.58.0 [skip ci] --- packages/sui-bundler/CHANGELOG.md | 10 ++++++++++ packages/sui-bundler/package.json | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/sui-bundler/CHANGELOG.md b/packages/sui-bundler/CHANGELOG.md index d745c76a8..4c87473ce 100644 --- a/packages/sui-bundler/CHANGELOG.md +++ b/packages/sui-bundler/CHANGELOG.md @@ -1,5 +1,15 @@ # CHANGELOG +# 9.58.0 (2024-05-02) + + +### Features + +* move webpack dev server to patched version 4.15.2 ([5a291c0](https://github.com/SUI-Components/sui/commit/5a291c0ba1ee4f737f2a0b1578d66a2d9306cb36)) +* update to patched version to avoid vulnerabilities ([4144598](https://github.com/SUI-Components/sui/commit/41445982968d7908d5cb63148e603801b343e2ed)) + + + # 9.57.0 (2024-03-18) diff --git a/packages/sui-bundler/package.json b/packages/sui-bundler/package.json index 366cfca6a..1d21107d2 100644 --- a/packages/sui-bundler/package.json +++ b/packages/sui-bundler/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/bundler", - "version": "9.57.0", + "version": "9.58.0", "description": "Config-free bundler for ES6 React apps.", "bin": { "sui-bundler": "./bin/sui-bundler.js" From a3440a48682d5441eb2b4cc1ccbc9e1ddcd08be9 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Thu, 2 May 2024 08:21:06 +0000 Subject: [PATCH 249/545] release(packages/sui-ssr): v8.28.0 [skip ci] --- packages/sui-ssr/CHANGELOG.md | 9 +++++++++ packages/sui-ssr/package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/sui-ssr/CHANGELOG.md b/packages/sui-ssr/CHANGELOG.md index 16fa12f6b..0b5971147 100644 --- a/packages/sui-ssr/CHANGELOG.md +++ b/packages/sui-ssr/CHANGELOG.md @@ -1,5 +1,14 @@ # CHANGELOG +# 8.28.0 (2024-05-02) + + +### Features + +* update to patched version to avoid vulnerabilities ([6873ee4](https://github.com/SUI-Components/sui/commit/6873ee468b9b26810feb63e6d7aca99ed469def7)) + + + # 8.27.0 (2024-04-05) diff --git a/packages/sui-ssr/package.json b/packages/sui-ssr/package.json index 837fe7064..820ff501b 100644 --- a/packages/sui-ssr/package.json +++ b/packages/sui-ssr/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/ssr", - "version": "8.27.0", + "version": "8.28.0", "description": "> Plug SSR to you SUI SPA.", "main": "index.js", "bin": { From f309b082d499d3ec1c01c80c4802efe836f41095 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Thu, 2 May 2024 08:21:10 +0000 Subject: [PATCH 250/545] release(packages/sui-widget-embedder): v6.3.0 [skip ci] --- packages/sui-widget-embedder/CHANGELOG.md | 14 ++++++++++---- packages/sui-widget-embedder/package.json | 2 +- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/packages/sui-widget-embedder/CHANGELOG.md b/packages/sui-widget-embedder/CHANGELOG.md index 95dd3fdcd..1ec95b465 100644 --- a/packages/sui-widget-embedder/CHANGELOG.md +++ b/packages/sui-widget-embedder/CHANGELOG.md @@ -1,5 +1,14 @@ # CHANGELOG +# 6.3.0 (2024-05-02) + + +### Features + +* update to patched version to avoid vulnerabilities ([5af5a0b](https://github.com/SUI-Components/sui/commit/5af5a0b69dcd33a9f5e9c55654c92eec68f4a7b5)) + + + # 6.2.0 (2023-08-21) @@ -703,7 +712,4 @@ export sintaxis is not used anymore. If you're using it, check it in order to ge * **sui-widget-embedder:** build all pages automagicaly ([daf3ddc](https://github.com/SUI-Components/sui/commit/daf3ddcac1eda9476ff96c82a72f5d5da98f2bbb)) * **sui-widget-embedder:** create donwloader.js with the manifests of the assets ([856eae3](https://github.com/SUI-Components/sui/commit/856eae37ee6fedc0869f1fe51e4b64c3aab6cf8c)) * **sui-widget-embedder:** created Widgets components ([2a929fd](https://github.com/SUI-Components/sui/commit/2a929fd63c2e9ae81ae2bfcbfeef4fc7506501c2)) -* **sui-widget-embedder:** first commit ([447917f](https://github.com/SUI-Components/sui/commit/447917fc8579152571a479a62b27453e6802ad85)) - - - +* **sui-widget-embedder:** first commit ([447917f](https://github.com/SUI-Components/sui/commit/447917fc8579152571a479a62b27453e6802ad85)) \ No newline at end of file diff --git a/packages/sui-widget-embedder/package.json b/packages/sui-widget-embedder/package.json index ea5b55d4a..fab57ea78 100644 --- a/packages/sui-widget-embedder/package.json +++ b/packages/sui-widget-embedder/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/widget-embedder", - "version": "6.2.0", + "version": "6.3.0", "description": "Embed React components to your app as widgets", "bin": { "sui-widget-embedder": "./bin/sui-widget-embedder.js" From f392aa8e4520ac49224d3d6fc86325654e27160a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jenifer=20L=C3=B3pez?= Date: Fri, 3 May 2024 12:28:50 +0200 Subject: [PATCH 251/545] feat(packages/sui-studio): Add jest command and template to sui-studio generate script --- .../sui-studio/bin/sui-studio-generate.js | 23 ++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/packages/sui-studio/bin/sui-studio-generate.js b/packages/sui-studio/bin/sui-studio-generate.js index 53d99dc90..61b8eb781 100755 --- a/packages/sui-studio/bin/sui-studio-generate.js +++ b/packages/sui-studio/bin/sui-studio-generate.js @@ -17,6 +17,7 @@ program .option('-P, --prefix ', 'add prefix for this component') .option('-S, --scope ', 'add scope for this component') .option('-W, --swc', 'Use the new SWC compiler', false) + .option('-J, --jest', 'Generate jest tests', false) .on('--help', () => { console.log(' Examples:') console.log('') @@ -32,6 +33,7 @@ program const BASE_DIR = process.cwd() const [category, component] = program.args +const {context, scope, prefix = 'sui', swc, jest} = program.opts() if (!component) showError('component must be defined') if (!category) showError('category must be defined') @@ -61,10 +63,9 @@ const DEMO_PACKAGE_JSON_FILE = `${DEMO_DIR}package.json` const COMPONENT_PLAYGROUND_FILE = `${DEMO_DIR}index.js` const COMPONENT_CONTEXT_FILE = `${DEMO_DIR}context.js` -const TEST_DIR = `${COMPONENT_PATH}/test/` +const TEST_DIR = jest ? `${COMPONENT_PATH}/__tests__/` : `${COMPONENT_PATH}/test/` const COMPONENT_TEST_FILE = `${TEST_DIR}index.test.js` -const {context, scope, prefix = 'sui', swc} = program.opts() const packageScope = scope ? `@${scope}/` : '' const packageCategory = category ? `${toKebabCase(category)}-` : '' const packageName = `${packageScope}${prefix}-${packageCategory}${toKebabCase(component)}` @@ -133,6 +134,22 @@ describe${context ? '.context.default' : ''}('${componentInPascal}', ${context ? }) ` +const testJestTemplate = ` +import {render, screen} from 'test/utils/render/index.js' +import Component from '../src/index.js' + +describe('${componentInPascal}', () => { + it('should render a h1', async () => { + const props = {} + + render() + + const title = await screen.findByRole('heading', {name: '${componentInPascal}', level: 1}) + expect(title).toBeInTheDocument() + }) +}) +` + const defaultContext = `module.exports = { default: { i18n: { @@ -297,7 +314,7 @@ export default () => <${componentInPascal} /> isBooleanContext ? defaultContext : fs.readFileSync(`${BASE_DIR}${context}`).toString() ) })(), - writeFile(COMPONENT_TEST_FILE, removeRepeatedNewLines(testTemplate)) + writeFile(COMPONENT_TEST_FILE, removeRepeatedNewLines(jest ? testJestTemplate : testTemplate)) ]).then(() => { console.log(colors.gray(`[${packageName}]: Installing the dependencies`)) const install = spawn('npm', ['install', '--legacy-peer-deps', '--no-audit', '--no-fund', '--production=false']) From 2eb98657c56102029137e10029dca961a0fcdf9b Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Mon, 6 May 2024 10:35:00 +0200 Subject: [PATCH 252/545] chore(Root): fix install step --- .github/workflows/main.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 5b311f84b..a639d2542 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -65,6 +65,9 @@ jobs: registry-url: 'https://registry.npmjs.org' node-version-file: '.nvmrc' + - name: Install + run: npm install --no-save --no-fund --no-audit --legacy-peer-deps + - name: Publish Packages if: github.ref == 'refs/heads/master' run: | From a07280a1c1f1ee6dc98d1ee7f9554a2142cf2f88 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Mon, 6 May 2024 08:40:37 +0000 Subject: [PATCH 253/545] release(packages/sui-compiler-config): v1.1.0 [skip ci] --- packages/sui-compiler-config/CHANGELOG.md | 12 ++++++++++++ packages/sui-compiler-config/package.json | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 packages/sui-compiler-config/CHANGELOG.md diff --git a/packages/sui-compiler-config/CHANGELOG.md b/packages/sui-compiler-config/CHANGELOG.md new file mode 100644 index 000000000..51bd9c96b --- /dev/null +++ b/packages/sui-compiler-config/CHANGELOG.md @@ -0,0 +1,12 @@ +# CHANGELOG + +# 1.1.0 (2024-05-06) + + +### Features + +* add more changes ([0af1a4f](https://github.com/SUI-Components/sui/commit/0af1a4f478796ea657fb6cfe0ee16b935c45bd04)) +* restore original versions ([80db5eb](https://github.com/SUI-Components/sui/commit/80db5eb485dc1caa81b9e3211b04dd410389b566)) + + + diff --git a/packages/sui-compiler-config/package.json b/packages/sui-compiler-config/package.json index 24cdef292..05a67abfe 100644 --- a/packages/sui-compiler-config/package.json +++ b/packages/sui-compiler-config/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/compiler-config", - "version": "1.0.0", + "version": "1.1.0", "description": "Compilers config (SWC, TS...) for SUI projects.", "main": "src/index.js", "scripts": {}, From e22b16b48e98bfac25cd3b10c82eeda07883804d Mon Sep 17 00:00:00 2001 From: sui-bot Date: Mon, 6 May 2024 08:40:41 +0000 Subject: [PATCH 254/545] release(packages/sui-consents): v1.6.0 [skip ci] --- packages/sui-consents/CHANGELOG.md | 22 ++++++++++++++++++---- packages/sui-consents/package.json | 2 +- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/packages/sui-consents/CHANGELOG.md b/packages/sui-consents/CHANGELOG.md index 012f27fa0..261b70807 100644 --- a/packages/sui-consents/CHANGELOG.md +++ b/packages/sui-consents/CHANGELOG.md @@ -1,5 +1,22 @@ # CHANGELOG +# 1.6.0 (2024-05-06) + + +### Bug Fixes + +* fix linting issues ([e7eabfd](https://github.com/SUI-Components/sui/commit/e7eabfd5a610357c258234bc0ea16afb3e63bcd0)) +* fix linting issues ([1b4541b](https://github.com/SUI-Components/sui/commit/1b4541bbbc6211bdd8f636b540f6655556cacc01)) +* update deps ([02b592c](https://github.com/SUI-Components/sui/commit/02b592c407dbb5c6ce9ad8e5665e61b7557877aa)) + + +### Features + +* use latest version of swc ([018c890](https://github.com/SUI-Components/sui/commit/018c890ac15b3b6e79a235174c3b895677783eda)) +* Use single @s-ui/test across packages ([1d8b926](https://github.com/SUI-Components/sui/commit/1d8b926e727cab44d599767ee13076bc451663bc)) + + + # 1.5.0 (2021-07-01) @@ -42,7 +59,4 @@ ### Features * **sui-consents:** first commit ([573419a](https://github.com/SUI-Components/sui/commit/573419af9eb62330c783a5a7a806dce1c30bf8db)) -* **sui-consents:** return empty object on error ([8c54590](https://github.com/SUI-Components/sui/commit/8c54590ed7de61bd892dbaa7f4cf443e38a6b057)) - - - +* **sui-consents:** return empty object on error ([8c54590](https://github.com/SUI-Components/sui/commit/8c54590ed7de61bd892dbaa7f4cf443e38a6b057)) \ No newline at end of file diff --git a/packages/sui-consents/package.json b/packages/sui-consents/package.json index 74ce96328..f3a22b92e 100644 --- a/packages/sui-consents/package.json +++ b/packages/sui-consents/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/consents", - "version": "1.5.0", + "version": "1.6.0", "main": "lib/index", "description": "iab consents handler", "types": "lib/index", From dbd64e10cec03ed9546154b6c9e15204aaf4dcf6 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Mon, 6 May 2024 08:40:45 +0000 Subject: [PATCH 255/545] release(packages/sui-decorators): v3.26.0 [skip ci] --- packages/sui-decorators/CHANGELOG.md | 19 +++++++++++++++---- packages/sui-decorators/package.json | 2 +- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/packages/sui-decorators/CHANGELOG.md b/packages/sui-decorators/CHANGELOG.md index b1124898d..4928b87bd 100644 --- a/packages/sui-decorators/CHANGELOG.md +++ b/packages/sui-decorators/CHANGELOG.md @@ -1,5 +1,19 @@ # CHANGELOG +# 3.26.0 (2024-05-06) + + +### Bug Fixes + +* update deps ([038cfef](https://github.com/SUI-Components/sui/commit/038cfefd6e71cd2d42ca3e1ed6fef636c2172793)) + + +### Features + +* use latest version of swc ([9986b23](https://github.com/SUI-Components/sui/commit/9986b236f3b8251b77ae8d6c7e2adef2c55d64d6)) + + + # 3.25.0 (2022-10-03) @@ -381,7 +395,4 @@ ### Features -* **sui-decorators:** add package.json ([63e3529](https://github.com/SUI-Components/sui/commit/63e35294cd033324ef4e1aa18b22f0857211c90f)), closes [#67](https://github.com/SUI-Components/sui/issues/67) - - - +* **sui-decorators:** add package.json ([63e3529](https://github.com/SUI-Components/sui/commit/63e35294cd033324ef4e1aa18b22f0857211c90f)), closes [#67](https://github.com/SUI-Components/sui/issues/67) \ No newline at end of file diff --git a/packages/sui-decorators/package.json b/packages/sui-decorators/package.json index 02dc788b9..d80a707a8 100644 --- a/packages/sui-decorators/package.json +++ b/packages/sui-decorators/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/decorators", - "version": "3.25.0", + "version": "3.26.0", "description": "> Set of ES6 decorators to improve your apps", "main": "lib/", "scripts": { From fad252fd0014959e6dca4e3fdde50d12ff9d81a6 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Mon, 6 May 2024 08:40:50 +0000 Subject: [PATCH 256/545] release(packages/sui-domain): v2.15.0 [skip ci] --- packages/sui-domain/CHANGELOG.md | 15 +++++++++++++++ packages/sui-domain/package.json | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/packages/sui-domain/CHANGELOG.md b/packages/sui-domain/CHANGELOG.md index 99a022161..92a08bd9f 100644 --- a/packages/sui-domain/CHANGELOG.md +++ b/packages/sui-domain/CHANGELOG.md @@ -1,5 +1,20 @@ # CHANGELOG +# 2.15.0 (2024-05-06) + + +### Bug Fixes + +* fix linting issues ([6b639a8](https://github.com/SUI-Components/sui/commit/6b639a8b8250ac7702bcac29e4ee9b19e9b88673)) +* update deps ([f57199f](https://github.com/SUI-Components/sui/commit/f57199fbdac2b3cc69d8403a0f109db44f69d312)) + + +### Features + +* use latest version of swc ([e574610](https://github.com/SUI-Components/sui/commit/e5746101f509d1a516d1cee814318a3e2cbbea33)) + + + # 2.14.0 (2024-02-07) diff --git a/packages/sui-domain/package.json b/packages/sui-domain/package.json index 8dca96d0f..8384f09b9 100644 --- a/packages/sui-domain/package.json +++ b/packages/sui-domain/package.json @@ -1,7 +1,7 @@ { "name": "@s-ui/domain", "type": "module", - "version": "2.14.0", + "version": "2.15.0", "description": "SDK for creating domains", "main": "lib/index.js", "scripts": { From 1d56f23579ac1cb85fe0fc8591f83cb5a10b4977 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Mon, 6 May 2024 08:40:54 +0000 Subject: [PATCH 257/545] release(packages/sui-helpers): v1.39.0 [skip ci] --- packages/sui-helpers/CHANGELOG.md | 23 +++++++++++++++++++---- packages/sui-helpers/package.json | 2 +- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/packages/sui-helpers/CHANGELOG.md b/packages/sui-helpers/CHANGELOG.md index 7a14a2f54..9640b0051 100644 --- a/packages/sui-helpers/CHANGELOG.md +++ b/packages/sui-helpers/CHANGELOG.md @@ -1,5 +1,23 @@ # CHANGELOG +# 1.39.0 (2024-05-06) + + +### Bug Fixes + +* add some fixes ([f4fa3af](https://github.com/SUI-Components/sui/commit/f4fa3af2366897ee0aa72b469f9a6667d8c21822)) + + +### Features + +* Add dynamicPackage ([dbfded8](https://github.com/SUI-Components/sui/commit/dbfded8342e96add990b323337e54b1d34cd6a2b)) +* add more support to typescript ([e8780da](https://github.com/SUI-Components/sui/commit/e8780da793f2c882c5da73bfe19d945c1a87f461)) +* remove not needed function ([6db9f33](https://github.com/SUI-Components/sui/commit/6db9f33e0d6f9bcad657f9eda251946a91684995)) +* Remove not optional from ci install for swc compatibility ([9e214aa](https://github.com/SUI-Components/sui/commit/9e214aa54c323139cd1ee5709289850e33e164dc)) +* restore original versions ([0961a23](https://github.com/SUI-Components/sui/commit/0961a23642b3a5d34c5b5ff332f848e5dd40ccf4)) + + + # 1.38.0 (2022-05-30) @@ -357,7 +375,4 @@ ### Features * **sui-helpers:** add helpers to manage packages of file system ([b8ced10](https://github.com/SUI-Components/sui/commit/b8ced100e66254c14a70cbaeee5efd44888efc95)) -* **sui-helpers:** new package with cli helpers ([e270fa0](https://github.com/SUI-Components/sui/commit/e270fa05e48d5b3b97f5408914989a978585f733)) - - - +* **sui-helpers:** new package with cli helpers ([e270fa0](https://github.com/SUI-Components/sui/commit/e270fa05e48d5b3b97f5408914989a978585f733)) \ No newline at end of file diff --git a/packages/sui-helpers/package.json b/packages/sui-helpers/package.json index 710286d8d..0cff41b1c 100644 --- a/packages/sui-helpers/package.json +++ b/packages/sui-helpers/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/helpers", - "version": "1.38.0", + "version": "1.39.0", "description": "A set of internal helpers used by sui-related packages.", "author": "", "dependencies": { From fa30f64a7c37343f0455695fcef815da0179d936 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Mon, 6 May 2024 08:40:58 +0000 Subject: [PATCH 258/545] release(packages/sui-hoc): v1.37.0 [skip ci] --- packages/sui-hoc/CHANGELOG.md | 20 ++++++++++++++++---- packages/sui-hoc/package.json | 2 +- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/packages/sui-hoc/CHANGELOG.md b/packages/sui-hoc/CHANGELOG.md index d97536982..90e423c6c 100644 --- a/packages/sui-hoc/CHANGELOG.md +++ b/packages/sui-hoc/CHANGELOG.md @@ -1,5 +1,20 @@ # CHANGELOG +# 1.37.0 (2024-05-06) + + +### Bug Fixes + +* update deps ([a9d5998](https://github.com/SUI-Components/sui/commit/a9d5998c4d9fd6e7031ac9b3bef5ea18e80be0e6)) + + +### Features + +* remove type module ([eb68ce2](https://github.com/SUI-Components/sui/commit/eb68ce2570b6c6d11acc7d55362d4d5dd3c36d2b)) +* use latest version of swc ([820adf5](https://github.com/SUI-Components/sui/commit/820adf5c0cf1f460a00979e7f6627d12d394e502)) + + + # 1.36.0 (2022-10-05) @@ -340,7 +355,4 @@ ### Features -* **sui-hoc:** 🌈 First Commit ([b09a168](https://github.com/SUI-Components/sui/commit/b09a168101aaaa4e8d2878b430ecf6490f9673eb)), closes [#71](https://github.com/SUI-Components/sui/issues/71) - - - +* **sui-hoc:** 🌈 First Commit ([b09a168](https://github.com/SUI-Components/sui/commit/b09a168101aaaa4e8d2878b430ecf6490f9673eb)), closes [#71](https://github.com/SUI-Components/sui/issues/71) \ No newline at end of file diff --git a/packages/sui-hoc/package.json b/packages/sui-hoc/package.json index c655d2112..d6c434057 100644 --- a/packages/sui-hoc/package.json +++ b/packages/sui-hoc/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/hoc", - "version": "1.36.0", + "version": "1.37.0", "description": "Set of HoC useful for react", "main": "lib/index.js", "scripts": { From 26d422d4353930668a391da69b78974ba0fcff60 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Mon, 6 May 2024 08:41:03 +0000 Subject: [PATCH 259/545] release(packages/sui-jest): v1.2.0 [skip ci] --- packages/sui-jest/CHANGELOG.md | 7 ++++--- packages/sui-jest/package.json | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/sui-jest/CHANGELOG.md b/packages/sui-jest/CHANGELOG.md index e099ccf43..a8bfd8217 100644 --- a/packages/sui-jest/CHANGELOG.md +++ b/packages/sui-jest/CHANGELOG.md @@ -1,11 +1,12 @@ # CHANGELOG -# 1.1.0 (2023-06-12) +# 1.2.0 (2024-05-06) -### Features -* **packages/sui-jest:** add wrapper for jest ([f15be4c](https://github.com/SUI-Components/sui/commit/f15be4c48d8b1ade07a407c0781c79b181b4a52b)) +# 1.1.0 (2023-06-12) +### Features +* **packages/sui-jest:** add wrapper for jest ([f15be4c](https://github.com/SUI-Components/sui/commit/f15be4c48d8b1ade07a407c0781c79b181b4a52b)) \ No newline at end of file diff --git a/packages/sui-jest/package.json b/packages/sui-jest/package.json index fd7cf7240..29019abe1 100644 --- a/packages/sui-jest/package.json +++ b/packages/sui-jest/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/jest", - "version": "1.1.0", + "version": "1.2.0", "description": "CLI that abstracts away all configuration for Jest", "bin": { "sui-jest": "bin/sui-jest.js" From 79864a5db2aadebb56a247e7ff9cf039d31c09e0 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Mon, 6 May 2024 08:41:07 +0000 Subject: [PATCH 260/545] release(packages/sui-js-compiler): v1.29.0 [skip ci] --- packages/sui-js-compiler/CHANGELOG.md | 21 +++++++++++++++++++++ packages/sui-js-compiler/package.json | 2 +- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/packages/sui-js-compiler/CHANGELOG.md b/packages/sui-js-compiler/CHANGELOG.md index 558dcefd7..63c11933e 100644 --- a/packages/sui-js-compiler/CHANGELOG.md +++ b/packages/sui-js-compiler/CHANGELOG.md @@ -1,5 +1,26 @@ # CHANGELOG +# 1.29.0 (2024-05-06) + + +### Bug Fixes + +* add some fixes ([7001874](https://github.com/SUI-Components/sui/commit/7001874a03c800984e0116cbc98ddcf242f44baa)) +* downgrade swc versions ([20ed77b](https://github.com/SUI-Components/sui/commit/20ed77bea8cea6a6433657e4a6847f5218a5a858)) +* fix types ([c28e283](https://github.com/SUI-Components/sui/commit/c28e283c65cb8f1e3e3541b09bf166caccf53b44)) +* update deps ([b670cc2](https://github.com/SUI-Components/sui/commit/b670cc2513de7dc25c9356556ca1a29e87570001)) + + +### Features + +* add more changes ([c80bcf3](https://github.com/SUI-Components/sui/commit/c80bcf3c1b4daf88970db698b11341d02aadadfa)) +* add more support to typescript ([bbc4336](https://github.com/SUI-Components/sui/commit/bbc43363fe1843c4499b6f792f68af06e692844d)) +* install ts by default ([b2d8f66](https://github.com/SUI-Components/sui/commit/b2d8f6678e270d7b4f88c03f6fa1892e36c600d1)) +* restore original versions ([8dd8cd1](https://github.com/SUI-Components/sui/commit/8dd8cd1cc7e86ba73ba03636b7608a0c070e09fd)) +* use latest version of swc ([b1a0c16](https://github.com/SUI-Components/sui/commit/b1a0c16df6a23ecdba3f837aafdc3e71f966d2d0)) + + + # 1.28.0 (2024-02-07) diff --git a/packages/sui-js-compiler/package.json b/packages/sui-js-compiler/package.json index b4b7fd639..31124f4e5 100644 --- a/packages/sui-js-compiler/package.json +++ b/packages/sui-js-compiler/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/js-compiler", - "version": "1.28.0", + "version": "1.29.0", "description": "JavaScript & TypeScript Compiler", "type": "module", "exports": "./src/index.js", From 1eeeaec02bcd651e5d66926b3092a7e76017d140 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Mon, 6 May 2024 08:41:11 +0000 Subject: [PATCH 261/545] release(packages/sui-mock): v1.6.0 [skip ci] --- packages/sui-mock/CHANGELOG.md | 15 +++++++++++++++ packages/sui-mock/package.json | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/packages/sui-mock/CHANGELOG.md b/packages/sui-mock/CHANGELOG.md index 205f20d7e..f82523a21 100644 --- a/packages/sui-mock/CHANGELOG.md +++ b/packages/sui-mock/CHANGELOG.md @@ -1,5 +1,20 @@ # CHANGELOG +# 1.6.0 (2024-05-06) + + +### Bug Fixes + +* update deps ([d9e7f35](https://github.com/SUI-Components/sui/commit/d9e7f35d6fd0058912113b89bed042f3019ea645)) + + +### Features + +* sync typescript versions ([561bca9](https://github.com/SUI-Components/sui/commit/561bca9df69c96d5a8f6ac3e0b46c73acc5149f7)) +* use latest version of swc ([4b7de4b](https://github.com/SUI-Components/sui/commit/4b7de4b8197644181994db0c3e84f59d1956fbcb)) + + + # 1.5.0 (2024-02-07) diff --git a/packages/sui-mock/package.json b/packages/sui-mock/package.json index 5733ca469..2678965ce 100644 --- a/packages/sui-mock/package.json +++ b/packages/sui-mock/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/mock", - "version": "1.5.0", + "version": "1.6.0", "main": "lib/index.js", "description": "Mock provider", "scripts": { From 6b5a808bf909a6e0f4dbed236725ea01cdb48d00 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Mon, 6 May 2024 08:41:15 +0000 Subject: [PATCH 262/545] release(packages/sui-react-head): v1.14.0 [skip ci] --- packages/sui-react-head/CHANGELOG.md | 22 ++++++++++++++++++---- packages/sui-react-head/package.json | 2 +- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/packages/sui-react-head/CHANGELOG.md b/packages/sui-react-head/CHANGELOG.md index f9b9f30be..48cea8156 100644 --- a/packages/sui-react-head/CHANGELOG.md +++ b/packages/sui-react-head/CHANGELOG.md @@ -1,5 +1,22 @@ # CHANGELOG +# 1.14.0 (2024-05-06) + + +### Bug Fixes + +* fix linting issues ([7f84666](https://github.com/SUI-Components/sui/commit/7f846664dbf6ff73ba9b1456f8819ee03e6a9a0b)) +* fix linting issues ([99d0af8](https://github.com/SUI-Components/sui/commit/99d0af8d741c7243d4a0582665ad4ebb61301402)) +* fix type ([2e05a91](https://github.com/SUI-Components/sui/commit/2e05a91bf74dacc3abed49f506336c00bf71f5ca)) +* update deps ([cf7992d](https://github.com/SUI-Components/sui/commit/cf7992d7ad2173c3c3ce5a8c219b31bb80ca5a21)) + + +### Features + +* use latest version of swc ([c56495d](https://github.com/SUI-Components/sui/commit/c56495ddeb80b1bb2c17bd002e39ec6c95671e71)) + + + # 1.13.0 (2023-05-08) @@ -126,7 +143,4 @@ * **sui-react-head:** add Html attributes and component ([80464f2](https://github.com/SUI-Components/sui/commit/80464f2ebbf7e131524068f1e6ea9fd4a65bcc1c)) * **sui-react-head:** add new react-head ([384b705](https://github.com/SUI-Components/sui/commit/384b705639f61f43a344973f1574b65abe8c1f4c)) * **sui-react-head:** create new sui-react-head ([aef11cb](https://github.com/SUI-Components/sui/commit/aef11cb29ffce59d3d0c71def943d5a0a6ef485b)) -* **sui-react-head:** docs and better exports ([0ac8bef](https://github.com/SUI-Components/sui/commit/0ac8befbd36bb585c2b650a47652453b26c712b5)) - - - +* **sui-react-head:** docs and better exports ([0ac8bef](https://github.com/SUI-Components/sui/commit/0ac8befbd36bb585c2b650a47652453b26c712b5)) \ No newline at end of file diff --git a/packages/sui-react-head/package.json b/packages/sui-react-head/package.json index 46589942b..195306276 100644 --- a/packages/sui-react-head/package.json +++ b/packages/sui-react-head/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-head", - "version": "1.13.0", + "version": "1.14.0", "description": "", "main": "lib/index.js", "types": "lib/index.d.ts", From e1626224ab1e491f7c30b7d69c52b173ced7c4e1 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Mon, 6 May 2024 08:41:19 +0000 Subject: [PATCH 263/545] release(packages/sui-react-initial-props): v2.23.0 [skip ci] --- packages/sui-react-initial-props/CHANGELOG.md | 17 +++++++++++++++++ packages/sui-react-initial-props/package.json | 2 +- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/packages/sui-react-initial-props/CHANGELOG.md b/packages/sui-react-initial-props/CHANGELOG.md index 146f6bd17..0960d27ad 100644 --- a/packages/sui-react-initial-props/CHANGELOG.md +++ b/packages/sui-react-initial-props/CHANGELOG.md @@ -1,5 +1,22 @@ # CHANGELOG +# 2.23.0 (2024-05-06) + + +### Bug Fixes + +* fix linting issues ([d580498](https://github.com/SUI-Components/sui/commit/d580498ec84b7339e87901df30fc989aefe94e7f)) +* fix linting issues ([19c9633](https://github.com/SUI-Components/sui/commit/19c9633f57e3ad4bc9324973cecd959307b42cf1)) +* fix ts config ([b185cc8](https://github.com/SUI-Components/sui/commit/b185cc8ac0f5ae3028d2c85a9234b4d15d25fb3f)) +* update deps ([d55aabc](https://github.com/SUI-Components/sui/commit/d55aabc694c3a8fd70ff0cee49c6e26541406fa8)) + + +### Features + +* use latest version of swc ([3e1a7df](https://github.com/SUI-Components/sui/commit/3e1a7dff8aa073ad3ae13707c150f37562c0614b)) + + + # 2.22.0 (2024-02-07) diff --git a/packages/sui-react-initial-props/package.json b/packages/sui-react-initial-props/package.json index 74f6d6920..602c1f6e3 100644 --- a/packages/sui-react-initial-props/package.json +++ b/packages/sui-react-initial-props/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-initial-props", - "version": "2.22.0", + "version": "2.23.0", "main": "lib/index.js", "types": "lib/index.d.ts", "description": "Provide a way to get initial props for async pages", From e3ccd6355caf7749cb3bc79d1d8f4ccc1f19fed2 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Mon, 6 May 2024 08:41:24 +0000 Subject: [PATCH 264/545] release(packages/sui-test-contract): v2.15.0 [skip ci] --- packages/sui-test-contract/CHANGELOG.md | 20 ++++++++++++++++---- packages/sui-test-contract/package.json | 2 +- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/packages/sui-test-contract/CHANGELOG.md b/packages/sui-test-contract/CHANGELOG.md index 963022f82..0f66441a2 100644 --- a/packages/sui-test-contract/CHANGELOG.md +++ b/packages/sui-test-contract/CHANGELOG.md @@ -1,5 +1,20 @@ # CHANGELOG +# 2.15.0 (2024-05-06) + + +### Bug Fixes + +* update deps ([abb824b](https://github.com/SUI-Components/sui/commit/abb824ba7bc913759abe5d102f4e3eeb6133a1a5)) + + +### Features + +* sync typescript versions ([5c75ada](https://github.com/SUI-Components/sui/commit/5c75ada6b2c6a00f230f84b9d659c10f2b03277c)) +* use latest version of swc ([a133bd7](https://github.com/SUI-Components/sui/commit/a133bd7bf9d598fd2fd7f71010d0af3a59cede34)) + + + # 2.14.0 (2024-01-15) @@ -178,7 +193,4 @@ * **packages/sui-test-contract:** add contract test utils ([3913810](https://github.com/SUI-Components/sui/commit/39138109f3c459fbb6bd5bc0e5243f3d2081c329)) * **packages/sui-test-contract:** bump ([0555f95](https://github.com/SUI-Components/sui/commit/0555f95cf4ba4176231d2d55a5679c49c25ecdab)) * **packages/sui-test-contract:** ignore contract folder from git and test folder from npm ([78732c7](https://github.com/SUI-Components/sui/commit/78732c7e53ad4eea729ad7b3779d565fefb552cb)) -* **packages/sui-test-contract:** publish beta ([ef65af7](https://github.com/SUI-Components/sui/commit/ef65af7d3c4fcc6f89e130ac18de40a1566629d5)) - - - +* **packages/sui-test-contract:** publish beta ([ef65af7](https://github.com/SUI-Components/sui/commit/ef65af7d3c4fcc6f89e130ac18de40a1566629d5)) \ No newline at end of file diff --git a/packages/sui-test-contract/package.json b/packages/sui-test-contract/package.json index 7abbaabb5..519193a21 100644 --- a/packages/sui-test-contract/package.json +++ b/packages/sui-test-contract/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/test-contract", - "version": "2.14.0", + "version": "2.15.0", "description": "Useful tooling for defining contract tests (based on Pact) that will generate contract documents.", "license": "MIT", "main": "src/index.js", From 104e7b91d3c1e905353513ea389c9156e4a94648 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Mon, 6 May 2024 08:41:28 +0000 Subject: [PATCH 265/545] release(packages/sui-test): v8.35.0 [skip ci] --- packages/sui-test/CHANGELOG.md | 4 ++++ packages/sui-test/package.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/sui-test/CHANGELOG.md b/packages/sui-test/CHANGELOG.md index f3e94c567..8185b8272 100644 --- a/packages/sui-test/CHANGELOG.md +++ b/packages/sui-test/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +# 8.35.0 (2024-05-06) + + + # 8.34.0 (2024-02-07) diff --git a/packages/sui-test/package.json b/packages/sui-test/package.json index b5f099b99..7debbda67 100644 --- a/packages/sui-test/package.json +++ b/packages/sui-test/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/test", - "version": "8.34.0", + "version": "8.35.0", "description": "", "bin": { "sui-test": "bin/sui-test.js" From af9f8b300ccc611cb2e4db336c2efc59fdb55bfb Mon Sep 17 00:00:00 2001 From: sui-bot Date: Mon, 6 May 2024 08:41:32 +0000 Subject: [PATCH 266/545] release(packages/sui-theme): v8.127.0 [skip ci] --- packages/sui-theme/CHANGELOG.md | 14 ++++++++++---- packages/sui-theme/package.json | 2 +- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/packages/sui-theme/CHANGELOG.md b/packages/sui-theme/CHANGELOG.md index f0332d5d9..22a7ebefd 100644 --- a/packages/sui-theme/CHANGELOG.md +++ b/packages/sui-theme/CHANGELOG.md @@ -1,5 +1,14 @@ # CHANGELOG +# 8.127.0 (2024-05-06) + + +### Bug Fixes + +* fix linting issues ([37213c0](https://github.com/SUI-Components/sui/commit/37213c085abc6ba99e1d784c88e4b026ec161134)) + + + # 8.126.0 (2023-02-21) @@ -277,7 +286,4 @@ ### Features * **packages/sui-theme:** moved the sui-theme repo here ([654b877](https://github.com/SUI-Components/sui/commit/654b8777a5e2754e1c41e2c1d907630d1c4266df)) -* **packages/sui-theme:** update latest changes ([877866f](https://github.com/SUI-Components/sui/commit/877866f24fe2053f1985b7a558d1527bcbca1e88)) - - - +* **packages/sui-theme:** update latest changes ([877866f](https://github.com/SUI-Components/sui/commit/877866f24fe2053f1985b7a558d1527bcbca1e88)) \ No newline at end of file diff --git a/packages/sui-theme/package.json b/packages/sui-theme/package.json index 745b0a41d..b6c1df90f 100644 --- a/packages/sui-theme/package.json +++ b/packages/sui-theme/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/theme", - "version": "8.126.0", + "version": "8.127.0", "description": "Generic theme to add styles to all SUI components", "main": "lib/index.scss", "scripts": { From 699a1ded5f9e7e5d65f47caf7f0e8c3c53b3910e Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Mon, 6 May 2024 10:44:20 +0200 Subject: [PATCH 267/545] feat(packages/sui-bundler): bump ts versions --- packages/sui-bundler/package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/sui-bundler/package.json b/packages/sui-bundler/package.json index 001cb0614..b2d1470e3 100644 --- a/packages/sui-bundler/package.json +++ b/packages/sui-bundler/package.json @@ -10,7 +10,6 @@ "postinstall": "node ./scripts/postinstall.js", "test": "echo \"Error: no test specified\" && exit 1" }, - "keywords": [], "author": "", "license": "MIT", "repository": { From a5a0be26003d6c58c1b4b370c5f2452aa37d92fa Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Mon, 6 May 2024 10:44:24 +0200 Subject: [PATCH 268/545] feat(packages/sui-studio): bump ts versions --- packages/sui-studio/package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/sui-studio/package.json b/packages/sui-studio/package.json index 99e9edc45..abf504e8a 100644 --- a/packages/sui-studio/package.json +++ b/packages/sui-studio/package.json @@ -7,7 +7,6 @@ "cpx": "./bin/cpx.js", "sui-studio": "./bin/sui-studio.js" }, - "author": "", "license": "MIT", "dependencies": { "@babel/cli": "7", From 18c5ac0e05e50f8a3668e87eaa59cbc0244d1538 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Mon, 6 May 2024 08:50:42 +0000 Subject: [PATCH 269/545] release(packages/sui-bundler): v9.59.0 [skip ci] --- packages/sui-bundler/CHANGELOG.md | 26 ++++++++++++++++++++++++++ packages/sui-bundler/package.json | 2 +- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/packages/sui-bundler/CHANGELOG.md b/packages/sui-bundler/CHANGELOG.md index 4c87473ce..edb0020fe 100644 --- a/packages/sui-bundler/CHANGELOG.md +++ b/packages/sui-bundler/CHANGELOG.md @@ -1,5 +1,31 @@ # CHANGELOG +# 9.59.0 (2024-05-06) + + +### Bug Fixes + +* add some fixes ([b53ee39](https://github.com/SUI-Components/sui/commit/b53ee39213edd2dca80366336d41ea122046fff3)) +* downgrade swc versions ([72ba122](https://github.com/SUI-Components/sui/commit/72ba1229bdc023b35e1d0bb4bc92a751891e84a3)) +* fix plugin extension ([b2487ab](https://github.com/SUI-Components/sui/commit/b2487abed6a1e5a007bf21fc0cd7d3ea3579eb24)) +* fix resolve alias ([173221d](https://github.com/SUI-Components/sui/commit/173221d314accb50288931740eeca16c3cc5509d)) + + +### Features + +* add autoload support for MSW ([aa7d38b](https://github.com/SUI-Components/sui/commit/aa7d38b577aa7a1d45d79cd5499478a6fea774bb)) +* add more changes ([d407c02](https://github.com/SUI-Components/sui/commit/d407c0231bdff12032fbc0f5098404259fbdad76)) +* add more support to typescript ([0bc9fd5](https://github.com/SUI-Components/sui/commit/0bc9fd50006771d5e8c84203854b71b4432b5bfa)) +* add support to typescript ([ca3f4b3](https://github.com/SUI-Components/sui/commit/ca3f4b3b6add3d0464aad407d9100f7ea5992667)) +* Add TS support for dev and build ([12224a5](https://github.com/SUI-Components/sui/commit/12224a58b94649bcbb7c87a519e9a5339d73b42b)) +* bump ts versions ([699a1de](https://github.com/SUI-Components/sui/commit/699a1ded5f9e7e5d65f47caf7f0e8c3c53b3910e)) +* remove dynamic import ([6cab6ff](https://github.com/SUI-Components/sui/commit/6cab6ffdb4161e9904509d561d485a77b528f6f4)) +* rename module rules ([f6c4f96](https://github.com/SUI-Components/sui/commit/f6c4f9607d7054bc5e044b849fe1741473007dfa)) +* restore original versions ([0b2e9b6](https://github.com/SUI-Components/sui/commit/0b2e9b64574214a1cdf442449cd07f70aed40311)) +* use latest version of swc ([698c932](https://github.com/SUI-Components/sui/commit/698c932ef2c5bb2ed0ebbe1b11afd165a3a3f9d9)) + + + # 9.58.0 (2024-05-02) diff --git a/packages/sui-bundler/package.json b/packages/sui-bundler/package.json index b2d1470e3..d03f66f57 100644 --- a/packages/sui-bundler/package.json +++ b/packages/sui-bundler/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/bundler", - "version": "9.58.0", + "version": "9.59.0", "description": "Config-free bundler for ES6 React apps.", "bin": { "sui-bundler": "./bin/sui-bundler.js" From 87d2a25b67a92adf0883ae76689a34f66558c074 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Mon, 6 May 2024 08:50:46 +0000 Subject: [PATCH 270/545] release(packages/sui-studio): v11.41.0 [skip ci] --- packages/sui-studio/CHANGELOG.md | 22 ++++++++++++++++++++++ packages/sui-studio/package.json | 2 +- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/packages/sui-studio/CHANGELOG.md b/packages/sui-studio/CHANGELOG.md index aff8d0526..c8761f6b1 100644 --- a/packages/sui-studio/CHANGELOG.md +++ b/packages/sui-studio/CHANGELOG.md @@ -1,5 +1,27 @@ # CHANGELOG +# 11.41.0 (2024-05-06) + + +### Bug Fixes + +* add some fixes ([09a6949](https://github.com/SUI-Components/sui/commit/09a6949ad393339af331aa13ad5ab6c7783ac29b)) +* fix linting issues ([1904ca2](https://github.com/SUI-Components/sui/commit/1904ca297650c5a7a3f3d6b187ecd9359e9a3d2a)) +* fix require globals.js ([b4cd94c](https://github.com/SUI-Components/sui/commit/b4cd94c8234c4be7d3584c6a784da5ca194f8963)) + + +### Features + +* add more support to typescript ([c75a1f2](https://github.com/SUI-Components/sui/commit/c75a1f280b93c86052b1e6c9e38b27b5ff56681f)) +* add support to typescript ([486ff09](https://github.com/SUI-Components/sui/commit/486ff09111405f3b021b91bda6c11ed7e8823075)) +* bump ts versions ([a5a0be2](https://github.com/SUI-Components/sui/commit/a5a0be26003d6c58c1b4b370c5f2452aa37d92fa)) +* restore original versions ([60e1b77](https://github.com/SUI-Components/sui/commit/60e1b778be153f3a1f8b5135a43a1842d32cdc8f)) +* restore package version ([e022570](https://github.com/SUI-Components/sui/commit/e022570ea7223e4f907222ff271f4faf72d96599)) +* Use MAGIC_STRING to support sui-bundler with TS ([75d6882](https://github.com/SUI-Components/sui/commit/75d688244571731d1ccf9d7eeb128bf30ee09b0b)) +* Use relative paths for monorepos ([dcac529](https://github.com/SUI-Components/sui/commit/dcac5295d2576838541f9879905b4122e8acde9c)) + + + # 11.40.0 (2024-04-19) diff --git a/packages/sui-studio/package.json b/packages/sui-studio/package.json index abf504e8a..4a24df8a6 100644 --- a/packages/sui-studio/package.json +++ b/packages/sui-studio/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/studio", - "version": "11.40.0", + "version": "11.41.0", "description": "Develop, maintain and publish your SUI components.", "main": "index.js", "bin": { From ef141deddcbecf84edb3601750041a6a99aabb75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Alvarez?= Date: Mon, 6 May 2024 12:52:39 +0200 Subject: [PATCH 271/545] fix(packages/sui-bundler): ssr dev --- packages/sui-bundler/webpack.config.client.dev.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/sui-bundler/webpack.config.client.dev.js b/packages/sui-bundler/webpack.config.client.dev.js index 5b7681975..6b0f2a10a 100644 --- a/packages/sui-bundler/webpack.config.client.dev.js +++ b/packages/sui-bundler/webpack.config.client.dev.js @@ -16,7 +16,7 @@ const {aliasFromConfig, defaultAlias} = require('./shared/resolve-alias.js') const {supportLegacyBrowsers, cacheDirectory} = require('./shared/config.js') const {resolveLoader} = require('./shared/resolve-loader.js') -const createBabelRules = require('./shared/module-rules-babel.js') +const createCompilerRules = require('./shared/module-rules-compiler.js') const outputPath = path.join(process.cwd(), '.sui/public') @@ -93,7 +93,7 @@ const webpackConfig = { resolveLoader, module: { rules: cleanList([ - createBabelRules({supportLegacyBrowsers, isDevelopment: true}), + createCompilerRules({supportLegacyBrowsers, isDevelopment: true}), { test: /(\.css|\.scss)$/, use: cleanList([ From 17f655f8a5dc5e43d663f2953d8c81ee9ab4a66d Mon Sep 17 00:00:00 2001 From: sui-bot Date: Mon, 6 May 2024 11:07:34 +0000 Subject: [PATCH 272/545] release(packages/sui-bundler): v9.60.0 [skip ci] --- packages/sui-bundler/CHANGELOG.md | 9 +++++++++ packages/sui-bundler/package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/sui-bundler/CHANGELOG.md b/packages/sui-bundler/CHANGELOG.md index edb0020fe..4ba6fd298 100644 --- a/packages/sui-bundler/CHANGELOG.md +++ b/packages/sui-bundler/CHANGELOG.md @@ -1,5 +1,14 @@ # CHANGELOG +# 9.60.0 (2024-05-06) + + +### Bug Fixes + +* ssr dev ([ef141de](https://github.com/SUI-Components/sui/commit/ef141deddcbecf84edb3601750041a6a99aabb75)) + + + # 9.59.0 (2024-05-06) diff --git a/packages/sui-bundler/package.json b/packages/sui-bundler/package.json index d03f66f57..aee4f558a 100644 --- a/packages/sui-bundler/package.json +++ b/packages/sui-bundler/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/bundler", - "version": "9.59.0", + "version": "9.60.0", "description": "Config-free bundler for ES6 React apps.", "bin": { "sui-bundler": "./bin/sui-bundler.js" From 49b69924ea51edc02a076b918d4d032ed13e788c Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Mon, 6 May 2024 15:36:37 +0200 Subject: [PATCH 273/545] test(packages/sui-test): fix custom studio-utils alias --- packages/sui-test/bin/karma/config.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/sui-test/bin/karma/config.js b/packages/sui-test/bin/karma/config.js index ac5f5f19a..e504a27b0 100644 --- a/packages/sui-test/bin/karma/config.js +++ b/packages/sui-test/bin/karma/config.js @@ -6,7 +6,7 @@ const {envVars} = require('@s-ui/bundler/shared/index.js') const {getSWCConfig} = require('@s-ui/compiler-config') const {bundlerConfig, clientConfig, isWorkspace, isInnerPackage} = require('../../src/config.js') -const {captureConsole = true} = clientConfig +const {captureConsole = true, alias: webpackAlias = {}} = clientConfig const {sep} = path /** @@ -18,6 +18,13 @@ const standardPrefix = isWorkspace() ? '../' : './' const prefix = isInnerPackage() ? '../../' : standardPrefix const pwd = process.env.PWD const swcConfig = getSWCConfig({isTypeScript: true}) +const customAlias = Object.keys(webpackAlias).reduce( + (aliases, aliasKey) => ({ + ...aliases, + [aliasKey]: path.resolve(path.join(pwd, prefix, webpackAlias[aliasKey])) + }), + {} +) const config = { singleRun: true, basePath: '', @@ -47,7 +54,7 @@ const config = { 'react/jsx-dev-runtime': path.resolve(pwd, prefix, 'node_modules/react/jsx-dev-runtime.js'), 'react/jsx-runtime': path.resolve(pwd, prefix, 'node_modules/react/jsx-runtime.js'), '@s-ui/react-context': path.resolve(path.join(pwd, prefix, 'node_modules/@s-ui/react-context')), - 'studio-utils': path.resolve(path.join(pwd, prefix, 'packages/ui/studio-utils')) + ...customAlias }, modules: [path.resolve(process.cwd()), 'node_modules'], extensions: ['.mjs', '.js', '.jsx', '.ts', '.tsx', '.json'], From 1a2f67c1678c861668d9d86a60e08e76b73a51dc Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Mon, 6 May 2024 15:48:47 +0200 Subject: [PATCH 274/545] feat(packages/sui-test): add docs --- packages/sui-test/README.md | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/packages/sui-test/README.md b/packages/sui-test/README.md index 76db2dcec..f687ef65c 100644 --- a/packages/sui-test/README.md +++ b/packages/sui-test/README.md @@ -29,6 +29,26 @@ Your tests must be in a `test` folder in your project root. Each test file shoul npm install @s-ui/test --save-dev ``` +# Config Options + +## Client (Karma) options + +- `alias` You can define the custom aliases you need to resolve in your client-side tests executions, see the following example: + +```json +{ + "config": { + "sui-test": { + "client": { + "alias": { + "my-package": "path/to/my-package" + } + } + } + } +} +``` + # CLI Options ```sh @@ -101,7 +121,7 @@ npm install @s-ui/test --save-dev **describeOnLocal**: It will only run wrapped tests on local environment and won't be executed in CI. ```javascript -import { describeOnLocal } from '@s-ui/test/lib/describers' +import {describeOnLocal} from '@s-ui/test/lib/describers' describeOnLocal(() => { describe('Some test', () => { @@ -112,8 +132,8 @@ describeOnLocal(() => { }) ``` - ## Descriptor by environment patcher + The descriptor by environment is a patch with the purpose of add some extra functionality to our mocha describe and it methods. ### How to import it? @@ -121,10 +141,12 @@ The descriptor by environment is a patch with the purpose of add some extra func First of all, the patcher MUST BE APPLIED on each test that we want to have the extra methods so at the top of `ourExampleSpec.js` we will add the next code: ```javascript -import { descriptorsByEnvironmentPatcher } from '@s-ui/test/lib/descriptor-environment-patcher' +import {descriptorsByEnvironmentPatcher} from '@s-ui/test/lib/descriptor-environment-patcher' descriptorsByEnvironmentPatcher() ``` + And that's it, from that line you will have the next methods added to the base of the mocha lib: + - describe.client - describe.server - describe.client.only @@ -133,7 +155,9 @@ And that's it, from that line you will have the next methods added to the base o - it.server - it.client.only - it.server.only + ### How can I use it? + Just in the same way as you have been using the describe or it functions earlier: ```javascript @@ -173,6 +197,7 @@ describe.client.only('Another use case', () => { }) }) ``` + ## Contributing Please refer to the [main repo contributing info](https://github.com/SUI-Components/sui/blob/master/CONTRIBUTING.md). From 71688418447b820714eabc6e0d50e0fd01c56ffa Mon Sep 17 00:00:00 2001 From: sui-bot Date: Mon, 6 May 2024 13:56:22 +0000 Subject: [PATCH 275/545] release(packages/sui-test): v8.36.0 [skip ci] --- packages/sui-test/CHANGELOG.md | 9 +++++++++ packages/sui-test/package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/sui-test/CHANGELOG.md b/packages/sui-test/CHANGELOG.md index 8185b8272..90d1aff9d 100644 --- a/packages/sui-test/CHANGELOG.md +++ b/packages/sui-test/CHANGELOG.md @@ -1,5 +1,14 @@ # CHANGELOG +# 8.36.0 (2024-05-06) + + +### Features + +* add docs ([1a2f67c](https://github.com/SUI-Components/sui/commit/1a2f67c1678c861668d9d86a60e08e76b73a51dc)) + + + # 8.35.0 (2024-05-06) diff --git a/packages/sui-test/package.json b/packages/sui-test/package.json index 7debbda67..c739e7462 100644 --- a/packages/sui-test/package.json +++ b/packages/sui-test/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/test", - "version": "8.35.0", + "version": "8.36.0", "description": "", "bin": { "sui-test": "bin/sui-test.js" From 2bbae277e7f6353c6d1513fe5a3fd4348357925d Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Tue, 7 May 2024 00:29:47 +0200 Subject: [PATCH 276/545] chore(Root): upgrade node version --- .github/workflows/main.yml | 13 +- .gitignore | 1 - .nvmrc | 2 +- package-lock.json | 25649 +++++++++++++++++++++++++++++++++++ 4 files changed, 25658 insertions(+), 7 deletions(-) create mode 100644 package-lock.json diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index a639d2542..21b2e9f3b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -17,7 +17,7 @@ jobs: access_token: ${{ github.token }} - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v4 with: fetch-depth: 0 persist-credentials: false @@ -27,6 +27,7 @@ jobs: with: registry-url: 'https://registry.npmjs.org' node-version-file: '.nvmrc' + cache: 'npm' - name: Setup Chrome uses: browser-actions/setup-chrome@latest @@ -34,7 +35,7 @@ jobs: - name: Install run: | sudo apt-get install xvfb - npm install --no-save --no-fund --no-audit --legacy-peer-deps + npm ci --no-save --no-fund --no-audit --legacy-peer-deps npx -y ultra-runner --raw --recursive prepublishOnly - name: Lint @@ -54,7 +55,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v4 with: fetch-depth: 0 persist-credentials: false @@ -64,9 +65,10 @@ jobs: with: registry-url: 'https://registry.npmjs.org' node-version-file: '.nvmrc' + cache: 'npm' - name: Install - run: npm install --no-save --no-fund --no-audit --legacy-peer-deps + run: npm ci --no-save --no-fund --no-audit --legacy-peer-deps - name: Publish Packages if: github.ref == 'refs/heads/master' @@ -88,7 +90,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v4 with: fetch-depth: 0 persist-credentials: false @@ -98,6 +100,7 @@ jobs: with: registry-url: 'https://registry.npmjs.org' node-version-file: '.nvmrc' + cache: 'npm' - name: Install run: npm install -D commander execa prettier diff --git a/.gitignore b/.gitignore index 0e3e749e9..f8359cdcc 100644 --- a/.gitignore +++ b/.gitignore @@ -10,7 +10,6 @@ jsconfig.json lib/ node_modules/ npm-debug.log -package-lock.json !packages/sui-sass-loader/test/server/fixtures/**/node_modules packages/sui-codemod/COMMANDS diff --git a/.nvmrc b/.nvmrc index 25bf17fc5..2edeafb09 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -18 \ No newline at end of file +20 \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..cad0b199e --- /dev/null +++ b/package-lock.json @@ -0,0 +1,25649 @@ +{ + "name": "@s-ui/sui", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "@s-ui/sui", + "version": "0.0.0", + "license": "MIT", + "workspaces": [ + "packages/*" + ], + "devDependencies": { + "@babel/cli": "7", + "@s-ui/lint": "4", + "@s-ui/precommit": "3", + "@s-ui/react-context": "1", + "chai": "4.3.6", + "pino-pretty": "10.3.1", + "react": "17", + "sinon": "10.0.0", + "typescript": "5.0.4", + "validate-commit-msg": "2.14.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/cli": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.24.5.tgz", + "integrity": "sha512-2qg1mYtJRsOOWF6IUwLP5jI42P8Cc0hQ5TmnjLrik/4DKouO8dFJN80HEz81VmVeUs97yuuf3vQ/9j7Elrcjlg==", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "commander": "^4.0.1", + "convert-source-map": "^2.0.0", + "fs-readdir-recursive": "^1.1.0", + "glob": "^7.2.0", + "make-dir": "^2.1.0", + "slash": "^2.0.0" + }, + "bin": { + "babel": "bin/babel.js", + "babel-external-helpers": "bin/babel-external-helpers.js" + }, + "engines": { + "node": ">=6.9.0" + }, + "optionalDependencies": { + "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents.3", + "chokidar": "^3.4.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", + "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", + "dependencies": { + "@babel/highlight": "^7.24.2", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz", + "integrity": "sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.21.8", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.8.tgz", + "integrity": "sha512-YeM22Sondbo523Sz0+CirSPnbj9bG3P0CdHcBZdqUuaeOaYEFbOLoGU7lebvGP6P5J/WE9wOn7u7C4J9HvS1xQ==", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.21.4", + "@babel/generator": "^7.21.5", + "@babel/helper-compilation-targets": "^7.21.5", + "@babel/helper-module-transforms": "^7.21.5", + "@babel/helpers": "^7.21.5", + "@babel/parser": "^7.21.8", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.5", + "@babel/types": "^7.21.5", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/eslint-parser": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.18.9.tgz", + "integrity": "sha512-KzSGpMBggz4fKbRbWLNyPVTuQr6cmCcBhOyXTw/fieOVaw5oYAwcAj4a7UKcDYCPxQq+CG1NCDZH9e2JTXquiQ==", + "dependencies": { + "eslint-scope": "^5.1.1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || >=14.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.11.0", + "eslint": "^7.5.0 || ^8.0.0" + } + }, + "node_modules/@babel/eslint-parser/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/eslint-plugin": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/eslint-plugin/-/eslint-plugin-7.18.10.tgz", + "integrity": "sha512-iV1OZj/7eg4wZIcsVEkXS3MUWdhmpLsu2h+9Zr2ppywKWdCRs6VfjxbRzmHHYeurTizrrnaJ9ZkbO8KOv4lauQ==", + "dependencies": { + "eslint-rule-composer": "^0.3.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || >=14.0.0" + }, + "peerDependencies": { + "@babel/eslint-parser": ">=7.11.0", + "eslint": ">=7.5.0" + } + }, + "node_modules/@babel/generator": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.5.tgz", + "integrity": "sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==", + "dependencies": { + "@babel/types": "^7.24.5", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", + "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "dependencies": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.5.tgz", + "integrity": "sha512-uRc4Cv8UQWnE4NXlYTIIdM7wfFkOqlFztcC/gVXDKohKoVB3OyonfelUBaJzSwpBntZ2KYGF/9S7asCHsXwW6g==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-member-expression-to-functions": "^7.24.5", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.24.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.24.5", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", + "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", + "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.5.tgz", + "integrity": "sha512-4owRteeihKWKamtqg4JmWSsEZU445xpFRXPEwp44HbgbxdWlUV1b4Agg4lkA806Lil5XM/e+FJyS0vj5T6vmcA==", + "dependencies": { + "@babel/types": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz", + "integrity": "sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==", + "dependencies": { + "@babel/types": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz", + "integrity": "sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.24.3", + "@babel/helper-simple-access": "^7.24.5", + "@babel/helper-split-export-declaration": "^7.24.5", + "@babel/helper-validator-identifier": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz", + "integrity": "sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", + "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-wrap-function": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz", + "integrity": "sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.23.0", + "@babel/helper-optimise-call-expression": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz", + "integrity": "sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==", + "dependencies": { + "@babel/types": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz", + "integrity": "sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==", + "dependencies": { + "@babel/types": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz", + "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz", + "integrity": "sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.24.5.tgz", + "integrity": "sha512-/xxzuNvgRl4/HLNKvnFwdhdgN3cpLxgLROeLDl83Yx0AJ1SGvq1ak0OszTOjDfiB8Vx03eJbeDWh9r+jCCWttw==", + "dependencies": { + "@babel/helper-function-name": "^7.23.0", + "@babel/template": "^7.24.0", + "@babel/types": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.5.tgz", + "integrity": "sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==", + "dependencies": { + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.5", + "@babel/types": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.5.tgz", + "integrity": "sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.24.5", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.5.tgz", + "integrity": "sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.1.tgz", + "integrity": "sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.1.tgz", + "integrity": "sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.24.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", + "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead.", + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-remap-async-to-generator": "^7.18.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.21.0.tgz", + "integrity": "sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-static-block instead.", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.21.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-proposal-decorators": { + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.23.7.tgz", + "integrity": "sha512-b1s5JyeMvqj7d9m9KhJNHKc18gEJiSyVzVX3bwbiPalQBQpuvfPh6lA9F7Kk/dWH0TIiXRpB9yicwijY6buPng==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.23.7", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-decorators": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-dynamic-import": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", + "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-dynamic-import instead.", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-export-namespace-from": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", + "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-export-namespace-from instead.", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-json-strings": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", + "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-json-strings instead.", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz", + "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-logical-assignment-operators instead.", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead.", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead.", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", + "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead.", + "dependencies": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-catch-binding instead.", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", + "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead.", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead.", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.11.tgz", + "integrity": "sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead.", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.21.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-unicode-property-regex instead.", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-decorators": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.24.1.tgz", + "integrity": "sha512-05RJdO/cCrtVWuAaSn1tS3bH8jbsJa/Y1uD186u6J4C/1mnHFxseeuWpsqr9anvo7TUulev7tm7GDwRV+VuhDw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-default-from": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.18.6.tgz", + "integrity": "sha512-Kr//z3ujSVNx6E9z9ih5xXXMqK07VVTuqPmqGe6Mss/zW5XPeLZeSDZoP9ab/hT4wPKqAgjl2PnhPrcpk8Seew==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.1.tgz", + "integrity": "sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz", + "integrity": "sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz", + "integrity": "sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz", + "integrity": "sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.1.tgz", + "integrity": "sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==", + "dependencies": { + "@babel/helper-module-imports": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-remap-async-to-generator": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.1.tgz", + "integrity": "sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.5.tgz", + "integrity": "sha512-sMfBc3OxghjC95BkYrYocHL3NaOplrcaunblzwXhGmlPwpmfsxr4vK+mBBt49r+S240vahmv+kUxkeKgs+haCw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.5.tgz", + "integrity": "sha512-gWkLP25DFj2dwe9Ck8uwMOpko4YsqyfZJrOmqqcegeDYEbp7rmn4U6UQZNj08UF6MaX39XenSpKRCvpDRBtZ7Q==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.24.5", + "@babel/helper-replace-supers": "^7.24.1", + "@babel/helper-split-export-declaration": "^7.24.5", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.1.tgz", + "integrity": "sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/template": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.5.tgz", + "integrity": "sha512-SZuuLyfxvsm+Ah57I/i1HVjveBENYK9ue8MJ7qkc7ndoNjqquJiElzA7f5yaAXjyW2hKojosOTAQQRX50bPSVg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.1.tgz", + "integrity": "sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.1.tgz", + "integrity": "sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.1.tgz", + "integrity": "sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==", + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.1.tgz", + "integrity": "sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.1.tgz", + "integrity": "sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==", + "dependencies": { + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.1.tgz", + "integrity": "sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.1.tgz", + "integrity": "sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.1.tgz", + "integrity": "sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==", + "dependencies": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz", + "integrity": "sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==", + "dependencies": { + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-simple-access": "^7.18.6", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.1.tgz", + "integrity": "sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==", + "dependencies": { + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.1.tgz", + "integrity": "sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==", + "dependencies": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", + "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.1.tgz", + "integrity": "sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.1.tgz", + "integrity": "sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-replace-supers": "^7.24.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.5.tgz", + "integrity": "sha512-xWCkmwKT+ihmA6l7SSTpk8e4qQl/274iNbSKRRS8mpqFR32ksy36+a+LWY8OXCCEefF8WFlnOHVsaDI2231wBg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.5.tgz", + "integrity": "sha512-9Co00MqZ2aoky+4j2jhofErthm6QVLKbpQrvz20c3CH9KQCLHyNB+t2ya4/UrRpQGR+Wrwjg9foopoeSdnHOkA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.1.tgz", + "integrity": "sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.1.tgz", + "integrity": "sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz", + "integrity": "sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.23.3", + "@babel/types": "^7.23.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz", + "integrity": "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==", + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.1.tgz", + "integrity": "sha512-+pWEAaDJvSm9aFvJNpLiM2+ktl2Sn2U5DdyiWdZBxmLc6+xGt88dvFqsHiAiDS+8WqUwbDfkKz9jRxK3M0k+kA==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.1.tgz", + "integrity": "sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "regenerator-transform": "^0.15.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.1.tgz", + "integrity": "sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.7.tgz", + "integrity": "sha512-fa0hnfmiXc9fq/weK34MUV0drz2pOL/vfKWvN7Qw127hiUPabFCUMgAbYWcchRzMJit4o5ARsK/s+5h0249pLw==", + "dependencies": { + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "babel-plugin-polyfill-corejs2": "^0.4.7", + "babel-plugin-polyfill-corejs3": "^0.8.7", + "babel-plugin-polyfill-regenerator": "^0.5.4", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.1.tgz", + "integrity": "sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.1.tgz", + "integrity": "sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.1.tgz", + "integrity": "sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.1.tgz", + "integrity": "sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.5.tgz", + "integrity": "sha512-UTGnhYVZtTAjdwOTzT+sCyXmTn8AhaxOS/MjG9REclZ6ULHWF9KoCZur0HSGU7hk8PdBFKKbYe6+gqdXWz84Jg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.1.tgz", + "integrity": "sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.1.tgz", + "integrity": "sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.10.tgz", + "integrity": "sha512-wVxs1yjFdW3Z/XkNfXKoblxoHgbtUF7/l3PvvP4m02Qz9TZ6uZGxRVYjSQeR87oQmHco9zWitW5J82DJ7sCjvA==", + "dependencies": { + "@babel/compat-data": "^7.18.8", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-async-generator-functions": "^7.18.10", + "@babel/plugin-proposal-class-properties": "^7.18.6", + "@babel/plugin-proposal-class-static-block": "^7.18.6", + "@babel/plugin-proposal-dynamic-import": "^7.18.6", + "@babel/plugin-proposal-export-namespace-from": "^7.18.9", + "@babel/plugin-proposal-json-strings": "^7.18.6", + "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", + "@babel/plugin-proposal-numeric-separator": "^7.18.6", + "@babel/plugin-proposal-object-rest-spread": "^7.18.9", + "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-private-methods": "^7.18.6", + "@babel/plugin-proposal-private-property-in-object": "^7.18.6", + "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.18.6", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.18.6", + "@babel/plugin-transform-async-to-generator": "^7.18.6", + "@babel/plugin-transform-block-scoped-functions": "^7.18.6", + "@babel/plugin-transform-block-scoping": "^7.18.9", + "@babel/plugin-transform-classes": "^7.18.9", + "@babel/plugin-transform-computed-properties": "^7.18.9", + "@babel/plugin-transform-destructuring": "^7.18.9", + "@babel/plugin-transform-dotall-regex": "^7.18.6", + "@babel/plugin-transform-duplicate-keys": "^7.18.9", + "@babel/plugin-transform-exponentiation-operator": "^7.18.6", + "@babel/plugin-transform-for-of": "^7.18.8", + "@babel/plugin-transform-function-name": "^7.18.9", + "@babel/plugin-transform-literals": "^7.18.9", + "@babel/plugin-transform-member-expression-literals": "^7.18.6", + "@babel/plugin-transform-modules-amd": "^7.18.6", + "@babel/plugin-transform-modules-commonjs": "^7.18.6", + "@babel/plugin-transform-modules-systemjs": "^7.18.9", + "@babel/plugin-transform-modules-umd": "^7.18.6", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.18.6", + "@babel/plugin-transform-new-target": "^7.18.6", + "@babel/plugin-transform-object-super": "^7.18.6", + "@babel/plugin-transform-parameters": "^7.18.8", + "@babel/plugin-transform-property-literals": "^7.18.6", + "@babel/plugin-transform-regenerator": "^7.18.6", + "@babel/plugin-transform-reserved-words": "^7.18.6", + "@babel/plugin-transform-shorthand-properties": "^7.18.6", + "@babel/plugin-transform-spread": "^7.18.9", + "@babel/plugin-transform-sticky-regex": "^7.18.6", + "@babel/plugin-transform-template-literals": "^7.18.9", + "@babel/plugin-transform-typeof-symbol": "^7.18.9", + "@babel/plugin-transform-unicode-escapes": "^7.18.10", + "@babel/plugin-transform-unicode-regex": "^7.18.6", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.18.10", + "babel-plugin-polyfill-corejs2": "^0.3.2", + "babel-plugin-polyfill-corejs3": "^0.5.3", + "babel-plugin-polyfill-regenerator": "^0.4.0", + "core-js-compat": "^3.22.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", + "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", + "dependencies": { + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", + "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", + "dependencies": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.3", + "semver": "^6.1.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz", + "integrity": "sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw==", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.2", + "core-js-compat": "^3.21.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", + "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6.tgz", + "integrity": "sha512-ID2yj6K/4lKfhuU3+EX4UvNbIt7eACFbHmNUjzA+ep+B5971CknnA/9DEWKbRokfbbtblxxxXFJJrH47UEAMVg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-react": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.18.6.tgz", + "integrity": "sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-transform-react-display-name": "^7.18.6", + "@babel/plugin-transform-react-jsx": "^7.18.6", + "@babel/plugin-transform-react-jsx-development": "^7.18.6", + "@babel/plugin-transform-react-pure-annotations": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/register": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.18.9.tgz", + "integrity": "sha512-ZlbnXDcNYHMR25ITwwNKT88JiaukkdVj/nG7r3wnuXkOTHc60Uy05PwMCPre0hSkY68E6zK3xz+vUJSP2jWmcw==", + "dependencies": { + "clone-deep": "^4.0.1", + "find-cache-dir": "^2.0.0", + "make-dir": "^2.1.0", + "pirates": "^4.0.5", + "source-map-support": "^0.5.16" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" + }, + "node_modules/@babel/runtime": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.5.tgz", + "integrity": "sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/runtime-corejs3": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.24.5.tgz", + "integrity": "sha512-GWO0mgzNMLWaSYM4z4NVIuY0Cd1fl8cPnuetuddu5w/qGuvt5Y7oUi/kvvQGK9xgOkFJDQX2heIvTRn/OQ1XTg==", + "dependencies": { + "core-js-pure": "^3.30.2", + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", + "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.5.tgz", + "integrity": "sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==", + "dependencies": { + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.24.5", + "@babel/parser": "^7.24.5", + "@babel/types": "^7.24.5", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.5.tgz", + "integrity": "sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==", + "dependencies": { + "@babel/helper-string-parser": "^7.24.1", + "@babel/helper-validator-identifier": "^7.24.5", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==" + }, + "node_modules/@builder.io/react-hydration-overlay": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/@builder.io/react-hydration-overlay/-/react-hydration-overlay-0.0.8.tgz", + "integrity": "sha512-iybjiiI3b2Fud9H0LWXrBL0V9v9QZ09GY1UjGM1z3q2lzvXutA4YsK+5yXCoJM1rGDGN43MzVG98NLLFIfB+1Q==", + "dependencies": { + "beautify": "^0.0.8", + "react-diff-viewer": "^3.1.1" + }, + "peerDependencies": { + "react": ">=16", + "react-dom": ">=16", + "webpack": ">=4" + } + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@csstools/selector-specificity": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz", + "integrity": "sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==", + "engines": { + "node": "^14 || ^16 || >=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss-selector-parser": "^6.0.10" + } + }, + "node_modules/@cypress/request": { + "version": "2.88.12", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.12.tgz", + "integrity": "sha512-tOn+0mDZxASFM+cuAP9szGUGPI1HwWVSvdzm7V4cCsPdFTx6qMj29CwaQmRAMIEhORIUBFBsYROYJcveK4uOjA==", + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "http-signature": "~1.3.6", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "performance-now": "^2.1.0", + "qs": "~6.10.3", + "safe-buffer": "^5.1.2", + "tough-cookie": "^4.1.3", + "tunnel-agent": "^0.6.0", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@cypress/request/node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/@cypress/request/node_modules/qs": { + "version": "6.10.4", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.4.tgz", + "integrity": "sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@cypress/xvfb": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", + "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", + "dependencies": { + "debug": "^3.1.0", + "lodash.once": "^4.1.1" + } + }, + "node_modules/@cypress/xvfb/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/@emotion/cache": { + "version": "10.0.29", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-10.0.29.tgz", + "integrity": "sha512-fU2VtSVlHiF27empSbxi1O2JFdNWZO+2NFHfwO0pxgTep6Xa3uGb+3pVKfLww2l/IBGLNEZl5Xf/++A4wAYDYQ==", + "dependencies": { + "@emotion/sheet": "0.9.4", + "@emotion/stylis": "0.8.5", + "@emotion/utils": "0.11.3", + "@emotion/weak-memoize": "0.2.5" + } + }, + "node_modules/@emotion/hash": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", + "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==" + }, + "node_modules/@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==" + }, + "node_modules/@emotion/serialize": { + "version": "0.11.16", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-0.11.16.tgz", + "integrity": "sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg==", + "dependencies": { + "@emotion/hash": "0.8.0", + "@emotion/memoize": "0.7.4", + "@emotion/unitless": "0.7.5", + "@emotion/utils": "0.11.3", + "csstype": "^2.5.7" + } + }, + "node_modules/@emotion/serialize/node_modules/csstype": { + "version": "2.6.21", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz", + "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==" + }, + "node_modules/@emotion/sheet": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-0.9.4.tgz", + "integrity": "sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA==" + }, + "node_modules/@emotion/stylis": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz", + "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==" + }, + "node_modules/@emotion/unitless": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" + }, + "node_modules/@emotion/utils": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-0.11.3.tgz", + "integrity": "sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw==" + }, + "node_modules/@emotion/weak-memoize": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz", + "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==" + }, + "node_modules/@esbuild/android-arm": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.18.tgz", + "integrity": "sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.5.tgz", + "integrity": "sha512-UHkDFCfSGTuXq08oQltXxSZmH1TXyWsL+4QhZDWvvLl6mEJQqk3u7/wq1LjhrrAXYIllaTtRSzUXl4Olkf2J8A==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@eslint/js": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", + "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@faker-js/faker": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-8.0.2.tgz", + "integrity": "sha512-Uo3pGspElQW91PCvKSIAXoEgAUlRnH29sX2/p89kg7sP1m2PzCufHINd0FhTXQf6DYGiUlVncdSPa2F9wxed2A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/fakerjs" + } + ], + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0", + "npm": ">=6.14.13" + } + }, + "node_modules/@hapi/bourne": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-2.1.0.tgz", + "integrity": "sha512-i1BpaNDVLJdRBEKeJWkVO6tYX6DMFBuwMhSuWqLsY4ufeTKGVuV5rBsUhxPayXqnnWHgXUAmWK16H/ykO5Wj4Q==" + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==" + }, + "node_modules/@hutson/parse-repository-url": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz", + "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/console/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/console/node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/console/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/core/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/core/node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/core/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/core/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" + }, + "node_modules/@jest/core/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/create-cache-key-function": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-27.5.1.tgz", + "integrity": "sha512-dmH1yW+makpTSURTy8VzdUwFnfQh1G8R+DxO2Ho2FFmBbKFEVm+3jWdvFhE2VqB/LATCTokkP0dotjyQyw5/AQ==", + "dependencies": { + "@jest/types": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/create-cache-key-function/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/create-cache-key-function/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "dependencies": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/environment/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/environment/node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "dependencies": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "dependencies": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers/node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@jest/fake-timers/node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@jest/fake-timers/node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/globals/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/globals/node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/reporters/node_modules/@babel/core": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.5.tgz", + "integrity": "sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.24.5", + "@babel/helpers": "^7.24.5", + "@babel/parser": "^7.24.5", + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.5", + "@babel/types": "^7.24.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@jest/reporters/node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@jest/reporters/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz", + "integrity": "sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==", + "dependencies": { + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@jest/reporters/node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@jest/reporters/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-result/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-result/node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "dependencies": { + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-sequencer/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform/node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/transform/node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@jest/transform/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==" + }, + "node_modules/@mswjs/cookies": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@mswjs/cookies/-/cookies-0.2.2.tgz", + "integrity": "sha512-mlN83YSrcFgk7Dm1Mys40DLssI1KdJji2CMKN8eOlBqsTADYzj2+jWzsANsUTFbxDMWPD5e9bfA1RGqBpS3O1g==", + "dependencies": { + "@types/set-cookie-parser": "^2.4.0", + "set-cookie-parser": "^2.4.6" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@mswjs/interceptors": { + "version": "0.17.10", + "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.17.10.tgz", + "integrity": "sha512-N8x7eSLGcmUFNWZRxT1vsHvypzIRgQYdG0rJey/rZCy6zT/30qDt8Joj7FxzGNLSwXbeZqJOMqDurp7ra4hgbw==", + "dependencies": { + "@open-draft/until": "^1.0.3", + "@types/debug": "^4.1.7", + "@xmldom/xmldom": "^0.8.3", + "debug": "^4.3.3", + "headers-polyfill": "3.2.5", + "outvariant": "^1.2.1", + "strict-event-emitter": "^0.2.4", + "web-encoding": "^1.1.5" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@mswjs/interceptors/node_modules/headers-polyfill": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/headers-polyfill/-/headers-polyfill-3.2.5.tgz", + "integrity": "sha512-tUCGvt191vNSQgttSyJoibR+VO+I6+iCHIUdhzEMJKE+EAL8BwCN7fUOZlY4ofOelNHsK+gEjxB/B+9N3EWtdA==" + }, + "node_modules/@mswjs/interceptors/node_modules/strict-event-emitter": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.2.8.tgz", + "integrity": "sha512-KDf/ujU8Zud3YaLtMCcTI4xkZlZVIYxTLr+XIULexP+77EEVWixeXroLUXQXiVtH4XH2W7jr/3PT1v3zBuvc3A==", + "dependencies": { + "events": "^3.3.0" + } + }, + "node_modules/@nicolo-ribaudo/chokidar-2": { + "version": "2.1.8-no-fsevents.3", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz", + "integrity": "sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==", + "optional": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@one-ini/wasm": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@one-ini/wasm/-/wasm-0.1.1.tgz", + "integrity": "sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==" + }, + "node_modules/@open-draft/until": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@open-draft/until/-/until-1.0.3.tgz", + "integrity": "sha512-Aq58f5HiWdyDlFffbbSjAlv596h/cOnt2DO1w3DOC7OJ5EHs0hd/nycJfiu9RJbT6Yk6F1knnRRXNSpxoIVZ9Q==" + }, + "node_modules/@optimizely/js-sdk-datafile-manager": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@optimizely/js-sdk-datafile-manager/-/js-sdk-datafile-manager-0.9.5.tgz", + "integrity": "sha512-O4ujr1nBBAQBtx8YoKNpzzaEZgsE+aU4dxubT17ePqv/YVUWE+JOY21tSRrqZy/BlbbyzL+ElT8hrGB5ZzVoIQ==", + "dependencies": { + "@optimizely/js-sdk-logging": "^0.3.1", + "@optimizely/js-sdk-utils": "^0.4.0", + "decompress-response": "^4.2.1" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "@react-native-async-storage/async-storage": "^1.2.0" + }, + "peerDependenciesMeta": { + "@react-native-async-storage/async-storage": { + "optional": true + } + } + }, + "node_modules/@optimizely/js-sdk-event-processor": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@optimizely/js-sdk-event-processor/-/js-sdk-event-processor-0.9.5.tgz", + "integrity": "sha512-g5zqAjJuexxgbNvn7dacFkQXQxH3+OtjELfmSswvhxP9EHkyNR0ZdQF/kBxFxr335F2/RRPvAJ9tQBPkwaBg8g==", + "dependencies": { + "@optimizely/js-sdk-logging": "^0.3.1", + "@optimizely/js-sdk-utils": "^0.4.0" + }, + "peerDependencies": { + "@react-native-async-storage/async-storage": "^1.2.0", + "@react-native-community/netinfo": "5.9.4" + }, + "peerDependenciesMeta": { + "@react-native-async-storage/async-storage": { + "optional": true + }, + "@react-native-community/netinfo": { + "optional": true + } + } + }, + "node_modules/@optimizely/js-sdk-logging": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@optimizely/js-sdk-logging/-/js-sdk-logging-0.3.1.tgz", + "integrity": "sha512-K71Jf283FP0E4oXehcXTTM3gvgHZHr7FUrIsw//0mdJlotHJT4Nss4hE0CWPbBxO7LJAtwNnO+VIA/YOcO4vHg==", + "dependencies": { + "@optimizely/js-sdk-utils": "^0.4.0" + } + }, + "node_modules/@optimizely/js-sdk-utils": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@optimizely/js-sdk-utils/-/js-sdk-utils-0.4.0.tgz", + "integrity": "sha512-QG2oytnITW+VKTJK+l0RxjaS5VrA6W+AZMzpeg4LCB4Rn4BEKtF+EcW/5S1fBDLAviGq/0TLpkjM3DlFkJ9/Gw==", + "dependencies": { + "uuid": "^3.3.2" + } + }, + "node_modules/@optimizely/js-sdk-utils/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/@optimizely/optimizely-sdk": { + "version": "4.9.4", + "resolved": "https://registry.npmjs.org/@optimizely/optimizely-sdk/-/optimizely-sdk-4.9.4.tgz", + "integrity": "sha512-aYxndR6RahnLdX7SQR1YO2dklfNjbCGUUvRaYJZ50LIsDqhkAu426vxHwYO+V+QJxqipypPG5SVdG1m32AgDvw==", + "dependencies": { + "@optimizely/js-sdk-datafile-manager": "^0.9.5", + "@optimizely/js-sdk-event-processor": "^0.9.2", + "@optimizely/js-sdk-logging": "^0.3.1", + "json-schema": "^0.4.0", + "murmurhash": "0.0.2", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@optimizely/optimizely-sdk/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/@pact-foundation/pact": { + "version": "9.18.1", + "resolved": "https://registry.npmjs.org/@pact-foundation/pact/-/pact-9.18.1.tgz", + "integrity": "sha512-4AJuFmNCepy622jpu69/JJXmDhePaXBHmMtHu3NMqPOY8st8Xky2cJz+ngyFEDN6pqfy40XwCUBMUkC74RjzrQ==", + "dependencies": { + "@pact-foundation/pact-node": "^10.17.2", + "@types/bluebird": "^3.5.20", + "@types/express": "^4.17.11", + "@types/http-proxy": "^1.17.9", + "axios": "^0.27.2", + "bluebird": "~3.5.1", + "body-parser": "^1.18.2", + "cli-color": "^1.1.0", + "es6-object-assign": "^1.1.0", + "es6-promise": "^4.1.1", + "express": "^4.17.1", + "graphql": "^14.0.0", + "graphql-tag": "^2.9.1", + "http-proxy": "^1.18.1", + "lodash": "^4.17.21", + "lodash.isfunction": "3.0.8", + "lodash.isnil": "4.0.0", + "lodash.isundefined": "3.0.1", + "lodash.omit": "^4.5.0", + "lodash.omitby": "4.6.0", + "pino": "^6.5.1", + "pino-pretty": "^4.1.0", + "pkginfo": "^0.4.1", + "ramda": "^0.27.2", + "randexp": "^0.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@pact-foundation/pact-node": { + "version": "10.18.0", + "resolved": "https://registry.npmjs.org/@pact-foundation/pact-node/-/pact-node-10.18.0.tgz", + "integrity": "sha512-q6b/q0/IbuDSub2rL2pB/Zu5340vWGN+nUIk9I9HhJwbN/xOBv2yK2mve5ygTUUiKFNn4/1M9/YJ8ze/P5Etrw==", + "cpu": [ + "x64", + "ia32", + "arm64" + ], + "hasInstallScript": true, + "os": [ + "darwin", + "linux", + "win32" + ], + "dependencies": { + "@types/needle": "^2.5.3", + "@types/q": "1.5.5", + "@types/request": "2.48.8", + "chalk": "2.4.2", + "check-types": "7.4.0", + "cross-spawn": "^7.0.3", + "libnpmconfig": "^1.2.1", + "mkdirp": "1.0.4", + "needle": "^2.9.1", + "pino": "^8.11.0", + "pino-pretty": "^9.4.0", + "q": "1.5.1", + "rimraf": "2.7.1", + "sumchecker": "^2.0.2", + "tar": "^6.1.13", + "underscore": "1.13.6", + "unixify": "1.0.0", + "unzipper": "^0.10.11", + "url-join": "^4.0.1" + }, + "bin": { + "pact": "bin/pact.js", + "pact-broker": "bin/pact-broker.js", + "pact-message": "bin/pact-message.js", + "pact-mock-service": "bin/pact-mock-service.js", + "pact-provider-verifier": "bin/pact-provider-verifier.js", + "pact-stub-service": "bin/pact-stub-service.js" + } + }, + "node_modules/@pact-foundation/pact-node/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@pact-foundation/pact-node/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@pact-foundation/pact-node/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@pact-foundation/pact-node/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@pact-foundation/pact-node/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/@pact-foundation/pact-node/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@pact-foundation/pact-node/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/@pact-foundation/pact-node/node_modules/help-me": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/help-me/-/help-me-4.2.0.tgz", + "integrity": "sha512-TAOnTB8Tz5Dw8penUuzHVrKNKlCIbwwbHnXraNJxPwf8LRtE2HlM84RYuezMFcwOJmoYOCWVDyJ8TQGxn9PgxA==", + "dependencies": { + "glob": "^8.0.0", + "readable-stream": "^3.6.0" + } + }, + "node_modules/@pact-foundation/pact-node/node_modules/help-me/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@pact-foundation/pact-node/node_modules/help-me/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@pact-foundation/pact-node/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@pact-foundation/pact-node/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@pact-foundation/pact-node/node_modules/pino": { + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-8.21.0.tgz", + "integrity": "sha512-ip4qdzjkAyDDZklUaZkcRFb2iA118H9SgRh8yzTkSQK8HilsOJF7rSY8HoW5+I0M46AZgX/pxbprf2vvzQCE0Q==", + "dependencies": { + "atomic-sleep": "^1.0.0", + "fast-redact": "^3.1.1", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "^1.2.0", + "pino-std-serializers": "^6.0.0", + "process-warning": "^3.0.0", + "quick-format-unescaped": "^4.0.3", + "real-require": "^0.2.0", + "safe-stable-stringify": "^2.3.1", + "sonic-boom": "^3.7.0", + "thread-stream": "^2.6.0" + }, + "bin": { + "pino": "bin.js" + } + }, + "node_modules/@pact-foundation/pact-node/node_modules/pino-pretty": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-9.4.1.tgz", + "integrity": "sha512-loWr5SNawVycvY//hamIzyz3Fh5OSpvkcO13MwdDW+eKIGylobPLqnVGTDwDXkdmpJd1BhEG+qhDw09h6SqJiQ==", + "dependencies": { + "colorette": "^2.0.7", + "dateformat": "^4.6.3", + "fast-copy": "^3.0.0", + "fast-safe-stringify": "^2.1.1", + "help-me": "^4.0.1", + "joycon": "^3.1.1", + "minimist": "^1.2.6", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "^1.0.0", + "pump": "^3.0.0", + "readable-stream": "^4.0.0", + "secure-json-parse": "^2.4.0", + "sonic-boom": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "bin": { + "pino-pretty": "bin.js" + } + }, + "node_modules/@pact-foundation/pact-node/node_modules/pino-std-serializers": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.2.2.tgz", + "integrity": "sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==" + }, + "node_modules/@pact-foundation/pact-node/node_modules/process-warning": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-3.0.0.tgz", + "integrity": "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==" + }, + "node_modules/@pact-foundation/pact-node/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/@pact-foundation/pact-node/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@pact-foundation/pact/node_modules/joycon": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/joycon/-/joycon-2.2.5.tgz", + "integrity": "sha512-YqvUxoOcVPnCp0VU1/56f+iKSdvIRJYPznH22BdXV3xMk75SFXhWeJkZ8C9XxUWt1b5x2X1SxuFygW1U0FmkEQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@pact-foundation/pact/node_modules/pino-pretty": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-4.8.0.tgz", + "integrity": "sha512-mhQfHG4rw5ZFpWL44m0Utjo4GC2+HMfdNvxyA8lLw0sIqn6fCf7uQe6dPckUcW/obly+OQHD7B/MTso6LNizYw==", + "dependencies": { + "@hapi/bourne": "^2.0.0", + "args": "^5.0.1", + "chalk": "^4.0.0", + "dateformat": "^4.5.1", + "fast-safe-stringify": "^2.0.7", + "jmespath": "^0.15.0", + "joycon": "^2.2.5", + "pump": "^3.0.0", + "readable-stream": "^3.6.0", + "rfdc": "^1.3.0", + "split2": "^3.1.1", + "strip-json-comments": "^3.1.1" + }, + "bin": { + "pino-pretty": "bin.js" + } + }, + "node_modules/@pact-foundation/pact/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@pactflow/pact-msw-adapter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@pactflow/pact-msw-adapter/-/pact-msw-adapter-2.0.0.tgz", + "integrity": "sha512-hdx5f/ZoZT2Q/NNMw8otWE7A0s6wYCeMCVDzPb/T/+0FGOBHCP5iOsJhoTs0uSDKB+7pbUOTARP0XzOwJYi4SA==", + "dependencies": { + "lodash": "^4.17.21" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "msw": ">=0.35.0" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@pmmmwh/react-refresh-webpack-plugin": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.10.tgz", + "integrity": "sha512-j0Ya0hCFZPd4x40qLzbhGsh9TMtdb+CJQiso+WxLOPNasohq9cc5SNUcwsZaRH6++Xh91Xkm/xHCkuIiIu0LUA==", + "dependencies": { + "ansi-html-community": "^0.0.8", + "common-path-prefix": "^3.0.0", + "core-js-pure": "^3.23.3", + "error-stack-parser": "^2.0.6", + "find-up": "^5.0.0", + "html-entities": "^2.1.0", + "loader-utils": "^2.0.4", + "schema-utils": "^3.0.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">= 10.13" + }, + "peerDependencies": { + "@types/webpack": "4.x || 5.x", + "react-refresh": ">=0.10.0 <1.0.0", + "sockjs-client": "^1.4.0", + "type-fest": ">=0.17.0 <4.0.0", + "webpack": ">=4.43.0 <6.0.0", + "webpack-dev-server": "3.x || 4.x", + "webpack-hot-middleware": "2.x", + "webpack-plugin-serve": "0.x || 1.x" + }, + "peerDependenciesMeta": { + "@types/webpack": { + "optional": true + }, + "sockjs-client": { + "optional": true + }, + "type-fest": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + }, + "webpack-hot-middleware": { + "optional": true + }, + "webpack-plugin-serve": { + "optional": true + } + } + }, + "node_modules/@pmmmwh/react-refresh-webpack-plugin/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@pmmmwh/react-refresh-webpack-plugin/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@pmmmwh/react-refresh-webpack-plugin/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@pmmmwh/react-refresh-webpack-plugin/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@pmmmwh/react-refresh-webpack-plugin/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@pmmmwh/react-refresh-webpack-plugin/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/@pmmmwh/react-refresh-webpack-plugin/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@s-ui/bundler": { + "resolved": "packages/sui-bundler", + "link": true + }, + "node_modules/@s-ui/ci": { + "resolved": "packages/sui-ci", + "link": true + }, + "node_modules/@s-ui/compiler-config": { + "resolved": "packages/sui-compiler-config", + "link": true + }, + "node_modules/@s-ui/component-dependencies": { + "resolved": "packages/sui-component-dependencies", + "link": true + }, + "node_modules/@s-ui/consents": { + "resolved": "packages/sui-consents", + "link": true + }, + "node_modules/@s-ui/critical-css": { + "resolved": "packages/sui-critical-css", + "link": true + }, + "node_modules/@s-ui/critical-css-middleware": { + "resolved": "packages/sui-critical-css-middleware", + "link": true + }, + "node_modules/@s-ui/dashboard": { + "resolved": "packages/sui-dashboard", + "link": true + }, + "node_modules/@s-ui/decorators": { + "resolved": "packages/sui-decorators", + "link": true + }, + "node_modules/@s-ui/domain": { + "resolved": "packages/sui-domain", + "link": true + }, + "node_modules/@s-ui/helpers": { + "resolved": "packages/sui-helpers", + "link": true + }, + "node_modules/@s-ui/hoc": { + "resolved": "packages/sui-hoc", + "link": true + }, + "node_modules/@s-ui/html-tagger": { + "resolved": "packages/sui-html-tagger", + "link": true + }, + "node_modules/@s-ui/i18n": { + "resolved": "packages/sui-i18n", + "link": true + }, + "node_modules/@s-ui/jest": { + "resolved": "packages/sui-jest", + "link": true + }, + "node_modules/@s-ui/js": { + "resolved": "packages/sui-js", + "link": true + }, + "node_modules/@s-ui/js-compiler": { + "resolved": "packages/sui-js-compiler", + "link": true + }, + "node_modules/@s-ui/lint": { + "resolved": "packages/sui-lint", + "link": true + }, + "node_modules/@s-ui/mock": { + "resolved": "packages/sui-mock", + "link": true + }, + "node_modules/@s-ui/mockmock": { + "resolved": "packages/sui-mockmock", + "link": true + }, + "node_modules/@s-ui/mono": { + "resolved": "packages/sui-mono", + "link": true + }, + "node_modules/@s-ui/pde": { + "resolved": "packages/sui-pde", + "link": true + }, + "node_modules/@s-ui/polyfills": { + "resolved": "packages/sui-polyfills", + "link": true + }, + "node_modules/@s-ui/precommit": { + "resolved": "packages/sui-precommit", + "link": true + }, + "node_modules/@s-ui/react-atom-icon": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/@s-ui/react-atom-icon/-/react-atom-icon-1.18.0.tgz", + "integrity": "sha512-xby2Ro8lwbgAlsCjHxLaF+6v39neGWvT00nvahhgfizKYoOrusA7L4kHe2Olf/2Ej1Q8j60SpsGNV0fAdYWkpA==", + "dependencies": { + "@s-ui/react-hooks": "1", + "@s-ui/react-primitive-polymorphic-element": "1" + }, + "peerDependencies": { + "@s-ui/component-dependencies": "1" + } + }, + "node_modules/@s-ui/react-context": { + "resolved": "packages/sui-react-context", + "link": true + }, + "node_modules/@s-ui/react-head": { + "resolved": "packages/sui-react-head", + "link": true + }, + "node_modules/@s-ui/react-hooks": { + "version": "1.38.0", + "resolved": "https://registry.npmjs.org/@s-ui/react-hooks/-/react-hooks-1.38.0.tgz", + "integrity": "sha512-enOpMa6yfM1sHhqdx2uJMPcrXikYG1Zl/vQZBOr6NWMAyCf5nFoCp0KJPHpTH1oEZb9dDPU5V6a4fy3EvepZ3A==", + "dependencies": { + "@s-ui/component-dependencies": "1", + "intersection-observer": "0.10.0" + } + }, + "node_modules/@s-ui/react-initial-props": { + "resolved": "packages/sui-react-initial-props", + "link": true + }, + "node_modules/@s-ui/react-primitive-polymorphic-element": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@s-ui/react-primitive-polymorphic-element/-/react-primitive-polymorphic-element-1.2.0.tgz", + "integrity": "sha512-qneL/t9Ix2gR3pewNPukrw+Kf2gRVMN94dnURicaqrUfUzRbikFdjKvP768FzbvORrbsgqeTNtwTuDaLFVnYlA==", + "peerDependencies": { + "@s-ui/theme": "8" + } + }, + "node_modules/@s-ui/react-router": { + "resolved": "packages/sui-react-router", + "link": true + }, + "node_modules/@s-ui/react-web-vitals": { + "resolved": "packages/sui-react-web-vitals", + "link": true + }, + "node_modules/@s-ui/sass-loader": { + "resolved": "packages/sui-sass-loader", + "link": true + }, + "node_modules/@s-ui/ssr": { + "resolved": "packages/sui-ssr", + "link": true + }, + "node_modules/@s-ui/studio": { + "resolved": "packages/sui-studio", + "link": true + }, + "node_modules/@s-ui/studio-create": { + "resolved": "packages/sui-studio-create", + "link": true + }, + "node_modules/@s-ui/studio-utils": { + "resolved": "packages/sui-studio-utils", + "link": true + }, + "node_modules/@s-ui/svg": { + "resolved": "packages/sui-svg", + "link": true + }, + "node_modules/@s-ui/test": { + "resolved": "packages/sui-test", + "link": true + }, + "node_modules/@s-ui/test-contract": { + "resolved": "packages/sui-test-contract", + "link": true + }, + "node_modules/@s-ui/test-e2e": { + "resolved": "packages/sui-test-e2e", + "link": true + }, + "node_modules/@s-ui/theme": { + "resolved": "packages/sui-theme", + "link": true + }, + "node_modules/@s-ui/widget-embedder": { + "resolved": "packages/sui-widget-embedder", + "link": true + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==" + }, + "node_modules/@sinonjs/commons": { + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", + "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", + "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } + }, + "node_modules/@sinonjs/samsam": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-5.3.1.tgz", + "integrity": "sha512-1Hc0b1TtyfBu8ixF/tpfSHTVWKwCBLY4QJbkgnE7HcwyvT2xArDxb4K7dMgqRm3szI+LJbzmW/s4xxEhv6hwDg==", + "dependencies": { + "@sinonjs/commons": "^1.6.0", + "lodash.get": "^4.4.2", + "type-detect": "^4.0.8" + } + }, + "node_modules/@sinonjs/text-encoding": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz", + "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==" + }, + "node_modules/@socket.io/component-emitter": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", + "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==" + }, + "node_modules/@swc/core": { + "version": "1.3.14", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.14.tgz", + "integrity": "sha512-LpTTrXOGS7vnbR/rHrAux7GykUWbyVmI5NbICl9iF9yeqFdGm6JjaGBhbanmG8zrQL5aFx2kMxxb92V9D1KUiw==", + "hasInstallScript": true, + "bin": { + "swcx": "run_swcx.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.3.14", + "@swc/core-darwin-x64": "1.3.14", + "@swc/core-linux-arm-gnueabihf": "1.3.14", + "@swc/core-linux-arm64-gnu": "1.3.14", + "@swc/core-linux-arm64-musl": "1.3.14", + "@swc/core-linux-x64-gnu": "1.3.14", + "@swc/core-linux-x64-musl": "1.3.14", + "@swc/core-win32-arm64-msvc": "1.3.14", + "@swc/core-win32-ia32-msvc": "1.3.14", + "@swc/core-win32-x64-msvc": "1.3.14" + } + }, + "node_modules/@swc/core-darwin-arm64": { + "version": "1.3.14", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.14.tgz", + "integrity": "sha512-QFuUq3341uOCrJMIWGuo+CmRC5qZoM2lUo7o2lmv1FO1Dh9njTG85pLD83vz6y4j/F034DBGzvRgSti/Bsoccw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-darwin-x64": { + "version": "1.3.14", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.14.tgz", + "integrity": "sha512-fpAjbjXimJBmxCumRB8zjEtPc0lGUi9Uvu92XH6ww6AyXvg7KQmua5P2R9tnzAm6NwTCXKkgS86cgKysAbbObw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.3.14", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.14.tgz", + "integrity": "sha512-3XSFlgIyDPS+x2c0IFr0AGj4NUbrWGKbkkUCpmAURII0n3YoDsYw8Ux73I8MkWxTTwDGkou8qQOXyA28kAUM4w==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.3.14", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.14.tgz", + "integrity": "sha512-r3fToDRYX76NEptAjvDg5aGrbitOgqooV37RpSTIGYd/CSNuin4cpCNFdca/Vh5lnNfal7mqdGDbG7gMruARtw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.3.14", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.14.tgz", + "integrity": "sha512-IivEUC+3HNSsQNCfaCDzev2CpsvWpgFReitCmj0PKIdXFRsTi78jtJiraLWnYy956j4wwZbKN0OFGkS2ekKAVg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.3.14", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.14.tgz", + "integrity": "sha512-HtwwA1Z0tE2z9fgaR5ehgY5ULbnVLHj3tayyWhIElF4EWsi6aQfCyn/oCZAcjoPKfEnJiSNBYt5gMmfK8l4mJA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.3.14", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.14.tgz", + "integrity": "sha512-RPXilkTD8IVgpou4TNuqZJOB7kMrVJ7sm7GgHF4v1eV3xdIyvy4w5FWjXZRdwMW6iunLgQEckuOmVx0I4mrdNg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.3.14", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.14.tgz", + "integrity": "sha512-H8Ka/ahJRs84hQCHC5ndORujbLBmi1mv+Z/m4CXpOaEX7TmeAo8nA17rrRckNvVkud9fghsKQGjkBQvJ0v7mRw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.3.14", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.14.tgz", + "integrity": "sha512-H3ZmDXrVxrqBzzCFodwYfcXfTHE0xGNLJlLGzJ4haV6RBM3ZYIvRzDtPivDzic/VQncmPj1WpLoEDfx/7KNC8Q==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.3.14", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.14.tgz", + "integrity": "sha512-/D1lhWF/DQi2M7b6jWL35NmTY0mRJ5mwTXdmjqNNWOZ8h8TXQo1A3/FDFnfIIcRUeSNdF7IeB3xInT3BI34E1w==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/helpers": { + "version": "0.4.12", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.12.tgz", + "integrity": "sha512-R6RmwS9Dld5lNvwKlPn62+piU+WDG1sMfsnfJioXCciyko/gZ0DQ4Mqglhq1iGU1nQ/RcGkAwfMH+elMSkJH3Q==", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@swc/jest": { + "version": "0.2.24", + "resolved": "https://registry.npmjs.org/@swc/jest/-/jest-0.2.24.tgz", + "integrity": "sha512-fwgxQbM1wXzyKzl1+IW0aGrRvAA8k0Y3NxFhKigbPjOJ4mCKnWEcNX9HQS3gshflcxq8YKhadabGUVfdwjCr6Q==", + "workspaces": [ + "examples/react" + ], + "dependencies": { + "@jest/create-cache-key-function": "^27.4.2", + "jsonc-parser": "^3.2.0" + }, + "engines": { + "npm": ">= 7.0.0" + }, + "peerDependencies": { + "@swc/core": "*" + } + }, + "node_modules/@swc/register": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/@swc/register/-/register-0.1.10.tgz", + "integrity": "sha512-6STwH/q4dc3pitXLVkV7sP0Hiy+zBsU2wOF1aXpXR95pnH3RYHKIsDC+gvesfyB7jxNT9OOZgcqOp9RPxVTx9A==", + "deprecated": "Use @swc-node/register instead", + "dependencies": { + "lodash.clonedeep": "^4.5.0", + "pirates": "^4.0.1", + "source-map-support": "^0.5.13" + }, + "bin": { + "swc-node": "bin/swc-node" + }, + "peerDependencies": { + "@swc/core": "^1.0.46" + } + }, + "node_modules/@testing-library/cypress": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/@testing-library/cypress/-/cypress-8.0.3.tgz", + "integrity": "sha512-nY2YaSbmuPo5k6kL0iLj/pGPPfka3iwb3kpTx8QN/vOCns92Saz9wfACqB8FJzcR7+lfA4d5HUOWqmTddBzczg==", + "dependencies": { + "@babel/runtime": "^7.14.6", + "@testing-library/dom": "^8.1.0" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + }, + "peerDependencies": { + "cypress": "^2.1.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0" + } + }, + "node_modules/@testing-library/dom": { + "version": "8.20.1", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.20.1.tgz", + "integrity": "sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g==", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.1.3", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@testing-library/react": { + "version": "10.4.9", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-10.4.9.tgz", + "integrity": "sha512-pHZKkqUy0tmiD81afs8xfiuseXfU/N7rAX3iKjeZYje86t9VaB0LrxYVa+OOsvkrveX5jCK3IjajVn2MbePvqA==", + "dependencies": { + "@babel/runtime": "^7.10.3", + "@testing-library/dom": "^7.22.3" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": "*", + "react-dom": "*" + } + }, + "node_modules/@testing-library/react-hooks": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@testing-library/react-hooks/-/react-hooks-4.0.1.tgz", + "integrity": "sha512-DufI8Q2GOM7W2yFEEfz85VNVNaHZL0tPZyBT6ytV7HK+1A4frL1ty+W5NBE0u0K3EFV/Pg5O28HGNEtp9D5EyA==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "@types/react": ">=16.9.0", + "@types/react-test-renderer": ">=16.9.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-test-renderer": ">=16.9.0" + } + }, + "node_modules/@testing-library/react/node_modules/@testing-library/dom": { + "version": "7.31.2", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-7.31.2.tgz", + "integrity": "sha512-3UqjCpey6HiTZT92vODYLPxTBWlM8ZOOjr3LX5F37/VRipW2M1kX6I/Cm4VXzteZqfGfagg8yXywpcOgQBlNsQ==", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^4.2.0", + "aria-query": "^4.2.2", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.6", + "lz-string": "^1.4.4", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@testing-library/react/node_modules/@types/aria-query": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz", + "integrity": "sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==" + }, + "node_modules/@testing-library/react/node_modules/aria-query": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", + "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "dependencies": { + "@babel/runtime": "^7.10.2", + "@babel/runtime-corejs3": "^7.10.2" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/@testing-library/react/node_modules/pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@testing-library/user-event": { + "version": "13.5.0", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-13.5.0.tgz", + "integrity": "sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg==", + "dependencies": { + "@babel/runtime": "^7.12.5" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + }, + "peerDependencies": { + "@testing-library/dom": ">=7.21.4" + } + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@tsconfig/esm": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/esm/-/esm-1.0.4.tgz", + "integrity": "sha512-bix9CWljCxyD06nGQRDYdmTw0wevvEDyrLKjbDocGV31JQYbfqqgMV1yFeJ9aDgorKQ9yDLrak8poiggsB5Liw==", + "deprecated": "Use the tsconfig base for your runtime instead of general 'esm', e.g. 'node18'" + }, + "node_modules/@tsconfig/vite-react": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tsconfig/vite-react/-/vite-react-2.0.0.tgz", + "integrity": "sha512-erT+k9yzjRYnqRn6Fmvz+Y8+AtE+/YE954frGGwwit2ifsoWzRzYaOTlGj9/z0xJyYiaKNnNiFhid312QdC4rw==" + }, + "node_modules/@tunnckocore/execa": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@tunnckocore/execa/-/execa-5.2.7.tgz", + "integrity": "sha512-ysBwYl4vk3q+NT0nEYQPMbg9XxSzFBzvTt96fY+H/AeCYQHMXmiKIIdp+ypTu9plYkWLypWw8GnKNrKLF7P8rg==", + "funding": [ + "https://ko-fi.com/tunnckoCore/commissions", + "https://github.com/sponsors/tunnckoCore", + "https://patreon.com/tunnckoCore" + ], + "dependencies": { + "esm": "^3.2.25", + "execa": "^4.0.0", + "p-map": "^3.0.0" + }, + "engines": { + "node": ">=10.13" + } + }, + "node_modules/@types/aria-query": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==" + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz", + "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==", + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/bluebird": { + "version": "3.5.42", + "resolved": "https://registry.npmjs.org/@types/bluebird/-/bluebird-3.5.42.tgz", + "integrity": "sha512-Jhy+MWRlro6UjVi578V/4ZGNfeCOcNCp0YaFNIUGFKlImowqwb1O/22wDVk3FDGMLqxdpOV3qQHD5fPEH4hK6A==" + }, + "node_modules/@types/body-parser": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", + "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/caseless": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.5.tgz", + "integrity": "sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==" + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", + "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==" + }, + "node_modules/@types/cors": { + "version": "2.8.17", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", + "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.56.10", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", + "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" + }, + "node_modules/@types/express": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.0.tgz", + "integrity": "sha512-bGyep3JqPCRry1wq+O5n7oiBgGWmeIJXPjXXCo8EK0u8duZGSYar7cGqd3ML2JUsLGeB7fmc06KYo9fLGWqPvQ==", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==" + }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==" + }, + "node_modules/@types/http-proxy": { + "version": "1.17.14", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz", + "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "29.2.4", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.2.4.tgz", + "integrity": "sha512-PipFB04k2qTRPePduVLTRiPzQfvMeLwUN3Z21hsAKaB/W9IIzgB2pizCL466ftJlcyZqnHoC9ZHpxLGl3fS86A==", + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "node_modules/@types/jest/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@types/jest/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/jest/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" + }, + "node_modules/@types/js-levenshtein": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@types/js-levenshtein/-/js-levenshtein-1.1.3.tgz", + "integrity": "sha512-jd+Q+sD20Qfu9e2aEXogiO3vpOC1PYJOUdyN9gvs4Qrvkg4wF43L5OhqrPeokdv8TL0/mXoYfpkcoGZMNN2pkQ==" + }, + "node_modules/@types/jsdom": { + "version": "20.0.1", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", + "integrity": "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==", + "dependencies": { + "@types/node": "*", + "@types/tough-cookie": "*", + "parse5": "^7.0.0" + } + }, + "node_modules/@types/jsdom/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/@types/jsdom/node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==" + }, + "node_modules/@types/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==" + }, + "node_modules/@types/ms": { + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" + }, + "node_modules/@types/needle": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/@types/needle/-/needle-2.5.3.tgz", + "integrity": "sha512-RwgTwMRaedfyCBe5SSWMpm1Yqzc5UPZEMw0eAd09OSyV93nLRj9/evMGZmgFeHKzUOd4xxtHvgtc+rjcBjI1Qg==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/node": { + "version": "20.12.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.10.tgz", + "integrity": "sha512-Eem5pH9pmWBHoGAT8Dr5fdc5rYA+4NAovdM4EktRPVAAiJhmWWfQrA0cFhAbOsQdSfIHjAud6YdkbL69+zSKjw==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/node-forge": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", + "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==" + }, + "node_modules/@types/parse-json": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==" + }, + "node_modules/@types/prop-types": { + "version": "15.7.12", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", + "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==" + }, + "node_modules/@types/q": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz", + "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==" + }, + "node_modules/@types/qs": { + "version": "6.9.15", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==" + }, + "node_modules/@types/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.1.tgz", + "integrity": "sha512-V0kuGBX3+prX+DQ/7r2qsv1NsdfnCLnTgnRJ1pYnxykBhGMz+qj+box5lq7XsO5mtZsBqpjwwTu/7wszPfMBcw==", + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-test-renderer": { + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-18.3.0.tgz", + "integrity": "sha512-HW4MuEYxfDbOHQsVlY/XtOvNHftCVEPhJF2pQXXwcUiUF+Oyb0usgp48HSgpK5rt8m9KZb22yqOeZm+rrVG8gw==", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/request": { + "version": "2.48.8", + "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.8.tgz", + "integrity": "sha512-whjk1EDJPcAR2kYHRbFl/lKeeKYTi05A15K9bnLInCVroNDCtXce57xKdI0/rQaA3K+6q0eFyUBPmqfSndUZdQ==", + "dependencies": { + "@types/caseless": "*", + "@types/node": "*", + "@types/tough-cookie": "*", + "form-data": "^2.5.0" + } + }, + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" + }, + "node_modules/@types/semver": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==" + }, + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-index": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", + "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" + } + }, + "node_modules/@types/set-cookie-parser": { + "version": "2.4.7", + "resolved": "https://registry.npmjs.org/@types/set-cookie-parser/-/set-cookie-parser-2.4.7.tgz", + "integrity": "sha512-+ge/loa0oTozxip6zmhRIk8Z/boU51wl9Q6QdLZcokIGMzY5lFXYy/x7Htj2HTC6/KZP1hUbZ1ekx8DYXICvWg==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/sinonjs__fake-timers": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz", + "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==" + }, + "node_modules/@types/sizzle": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.8.tgz", + "integrity": "sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg==" + }, + "node_modules/@types/sockjs": { + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", + "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==" + }, + "node_modules/@types/tough-cookie": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==" + }, + "node_modules/@types/ws": { + "version": "8.5.10", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", + "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yargs": { + "version": "15.0.19", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz", + "integrity": "sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==" + }, + "node_modules/@types/yauzl": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "dependencies": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "dependencies": { + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "dependencies": { + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@ungap/promise-all-settled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", + "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==" + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.12.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xmldom/xmldom": { + "version": "0.8.10", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", + "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + }, + "node_modules/@zxing/text-encoding": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@zxing/text-encoding/-/text-encoding-0.9.0.tgz", + "integrity": "sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==", + "optional": true + }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "deprecated": "Use your platform's native atob() and btoa() methods instead" + }, + "node_modules/abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", + "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", + "dependencies": { + "acorn": "^8.1.0", + "acorn-walk": "^8.0.2" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", + "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/add-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", + "integrity": "sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==" + }, + "node_modules/address": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", + "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz", + "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/archiver": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.2.tgz", + "integrity": "sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw==", + "dependencies": { + "archiver-utils": "^2.1.0", + "async": "^3.2.4", + "buffer-crc32": "^0.2.1", + "readable-stream": "^3.6.0", + "readdir-glob": "^1.1.2", + "tar-stream": "^2.2.0", + "zip-stream": "^4.1.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/archiver-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", + "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", + "dependencies": { + "glob": "^7.1.4", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^2.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/archiver-utils/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/archiver-utils/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/archiver-utils/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/archiver/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/args": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/args/-/args-5.0.3.tgz", + "integrity": "sha512-h6k/zfFgusnv3i5TU08KQkVKuCPBtL/PWQbWkHUxvJrZ2nAyeaUupneemcrgn1xmqxPQsPIzwkUhOpoqPDRZuA==", + "dependencies": { + "camelcase": "5.0.0", + "chalk": "2.4.2", + "leven": "2.1.0", + "mri": "1.1.4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/args/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/args/node_modules/camelcase": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", + "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/args/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/args/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/args/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/args/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/args/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/args/node_modules/leven": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", + "integrity": "sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/args/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/aria-query": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "dependencies": { + "deep-equal": "^2.0.5" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==" + }, + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "engines": { + "node": "*" + } + }, + "node_modules/ast-types": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz", + "integrity": "sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==", + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/atomic-sleep": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", + "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.8", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.8.tgz", + "integrity": "sha512-75Jr6Q/XpTqEf6D2ltS5uMewJIx5irCU1oBYJrWjFenq/m12WRRrz6g15L1EIoYvPLXTbEry7rDOwrcYNj77xw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + } + ], + "dependencies": { + "browserslist": "^4.21.3", + "caniuse-lite": "^1.0.30001373", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", + "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==" + }, + "node_modules/axios": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "dependencies": { + "follow-redirects": "^1.14.9", + "form-data": "^4.0.0" + } + }, + "node_modules/axios/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "dependencies": { + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-jest/node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-jest/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-jest/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-jest/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-loader": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz", + "integrity": "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==", + "dependencies": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "engines": { + "node": ">= 8.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" + } + }, + "node_modules/babel-loader/node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/babel-loader/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-loader/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-loader/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/babel-loader/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/babel-loader/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-loader/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/babel-loader/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-loader/node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-loader/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dependencies": { + "object.assign": "^4.1.0" + } + }, + "node_modules/babel-plugin-emotion": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/babel-plugin-emotion/-/babel-plugin-emotion-10.2.2.tgz", + "integrity": "sha512-SMSkGoqTbTyUTDeuVuPIWifPdUGkTk1Kf9BWRiXIOIcuyMfsdp2EjeiiFvOzX8NOBvEh/ypKYvUh2rkgAJMCLA==", + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "@emotion/hash": "0.8.0", + "@emotion/memoize": "0.7.4", + "@emotion/serialize": "^0.11.16", + "babel-plugin-macros": "^2.0.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^1.0.5", + "find-root": "^1.1.0", + "source-map": "^0.5.7" + } + }, + "node_modules/babel-plugin-emotion/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "node_modules/babel-plugin-emotion/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/babel-plugin-emotion/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz", + "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^4.0.0", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/babel-plugin-macros": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", + "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "cosmiconfig": "^6.0.0", + "resolve": "^1.12.0" + } + }, + "node_modules/babel-plugin-macros/node_modules/cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-macros/node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/babel-plugin-macros/node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", + "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.6.2", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.8.7", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.7.tgz", + "integrity": "sha512-KyDvZYxAzkC0Aj2dAPyDzi2Ym15e5JKZSK+maI7NAwSqofvuFglbSsxE7wUOvTg9oFVnHMzVzBKcqEb4PJgtOA==", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.4", + "core-js-compat": "^3.33.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3/node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.4.tgz", + "integrity": "sha512-QcJMILQCu2jm5TFPGA3lCpJJTeEP+mqeXooG/NZbg/h5FTFi6V0+99ahlRsW8/kRLyb24LZVCCiclDedhLKcBA==", + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz", + "integrity": "sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.5.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator/node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", + "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-preval": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-preval/-/babel-plugin-preval-5.0.0.tgz", + "integrity": "sha512-8DqJq6/LPUjSZ0Qq6bVIFpsj2flCEE0Cbnbut9TvGU6jP9g3dOWEXtQ/sdvsA9d6souza8eNGh04WRXpuH9ThA==", + "dependencies": { + "@babel/runtime": "^7.9.2", + "babel-plugin-macros": "^2.8.0", + "require-from-string": "^2.0.2" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "node_modules/babel-plugin-syntax-jsx": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", + "integrity": "sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==" + }, + "node_modules/babel-plugin-transform-react-remove-prop-types": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", + "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==" + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "dependencies": { + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-sui": { + "resolved": "packages/babel-preset-sui", + "link": true + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "engines": { + "node": "^4.5.0 || >= 5.9" + } + }, + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==" + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/beautify": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/beautify/-/beautify-0.0.8.tgz", + "integrity": "sha512-1iF6Ey2qxDkm6bPgKcoXUmwFDpoRi5IgwefQDDQBRLxlZAAYwcULoQ2IdBArXZuSsuL7AT+KvZI9xZVLeUZPRg==", + "dependencies": { + "cssbeautify": "^0.3.1", + "html": "^1.0.0", + "js-beautify": "^1.6.4" + }, + "bin": { + "beautify": "bin/beautify.js" + } + }, + "node_modules/big-integer": { + "version": "1.6.52", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", + "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "engines": { + "node": "*" + } + }, + "node_modules/binary": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", + "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", + "dependencies": { + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "optional": true, + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/blob-util": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz", + "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==" + }, + "node_modules/bluebird": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz", + "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==" + }, + "node_modules/body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/bonjour-service": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", + "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + }, + "node_modules/bowser": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", + "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==" + }, + "node_modules/browserslist": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "engines": { + "node": "*" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/buffer-indexof-polyfill": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", + "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==", + "engines": { + "node": ">=0.2.0" + } + }, + "node_modules/builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==" + }, + "node_modules/builtins": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz", + "integrity": "sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==", + "dependencies": { + "semver": "^7.0.0" + } + }, + "node_modules/builtins/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cachedir": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.4.0.tgz", + "integrity": "sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "dependencies": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001616", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001616.tgz", + "integrity": "sha512-RHVYKov7IcdNjVHJFNY/78RdG4oGVjbayxv8u5IO74Wv7Hlq4PnJE6mo/OjFijjVFNy5ijnCt6H3IIo4t+wfEw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" + }, + "node_modules/chai": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz", + "integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==", + "dev": true, + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "loupe": "^2.3.1", + "pathval": "^1.1.1", + "type-detect": "^4.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chai-dom": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/chai-dom/-/chai-dom-1.11.0.tgz", + "integrity": "sha512-ZzGlEfk1UhHH5+N0t9bDqstOxPEXmn3EyXvtsok5rfXVDOFDJbHVy12rED6ZwkJAUDs2w7/Da4Hlq2LB63kltg==", + "engines": { + "node": ">= 0.12.0" + }, + "peerDependencies": { + "chai": ">= 3", + "mocha": ">= 2" + } + }, + "node_modules/chainsaw": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", + "dependencies": { + "traverse": ">=0.3.0 <0.4" + }, + "engines": { + "node": "*" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "engines": { + "node": ">=10" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" + }, + "node_modules/check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "dependencies": { + "get-func-name": "^2.0.2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/check-more-types": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", + "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/check-types": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/check-types/-/check-types-7.4.0.tgz", + "integrity": "sha512-YbulWHdfP99UfZ73NcUDlNJhEIDgm9Doq9GhpyXbF+7Aegi3CVV7qqMCKTTqJxlvEvnQBp9IA+dxsGN6xK/nSg==" + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz", + "integrity": "sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==" + }, + "node_modules/classnames": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", + "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==" + }, + "node_modules/clean-css": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-color": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-1.4.0.tgz", + "integrity": "sha512-xu6RvQqqrWEo6MPR1eixqGPywhYBHRs653F9jfXB2Hx4jdM/3WxiNE1vppRmxtMIfl16SFYTpYlrnqH/HsK/2w==", + "dependencies": { + "ansi-regex": "^2.1.1", + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "memoizee": "^0.4.14", + "timers-ext": "^0.1.5" + } + }, + "node_modules/cli-color/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-source-preview": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/cli-source-preview/-/cli-source-preview-1.1.0.tgz", + "integrity": "sha512-n5DpanHecShys8+nhrOrQoPJjvtISsKAaW9abQjbf53X73RMkPwq7JLny5zEAJDdW/PwYr3FehtsIJZhocUULw==", + "dependencies": { + "chalk": "^1.1.3" + } + }, + "node_modules/cli-source-preview/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cli-source-preview/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cli-source-preview/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cli-source-preview/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/cli-source-preview/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cli-source-preview/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-table3": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.4.tgz", + "integrity": "sha512-Lm3L0p+/npIQWNIiyF/nAn7T5dnOwR3xNTHXYEBFBFVPXzCVNZ5lqEC/1eo/EVfpDsQ1I+TX4ORPQgp+UI0CRw==", + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dependencies": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate/node_modules/slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==" + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==" + }, + "node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==" + }, + "node_modules/common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" + }, + "node_modules/compare-func": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", + "dependencies": { + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" + } + }, + "node_modules/compress-commons": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.2.tgz", + "integrity": "sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg==", + "dependencies": { + "buffer-crc32": "^0.2.13", + "crc32-stream": "^4.0.2", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/compress-commons/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/concat-stream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/concat-stream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/concat-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dependencies": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/connect/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/connect/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/console-table-printer": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/console-table-printer/-/console-table-printer-2.12.0.tgz", + "integrity": "sha512-Q/Ax+UOpZw0oPZGmv8bH8/W5NpC2rAYy6cX20BVLGQ45v944oL+srmLTZAse/5a3vWDl0MXR/0GTEdsz2dDTbg==", + "dependencies": { + "simple-wcswidth": "^1.0.1" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-disposition/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/conventional-changelog-angular": { + "version": "5.0.13", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz", + "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==", + "dependencies": { + "compare-func": "^2.0.0", + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-preset-loader": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz", + "integrity": "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==", + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-writer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz", + "integrity": "sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==", + "dependencies": { + "conventional-commits-filter": "^2.0.7", + "dateformat": "^3.0.0", + "handlebars": "^4.7.7", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "semver": "^6.0.0", + "split": "^1.0.0", + "through2": "^4.0.0" + }, + "bin": { + "conventional-changelog-writer": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-writer/node_modules/dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "engines": { + "node": "*" + } + }, + "node_modules/conventional-changelog-writer/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/conventional-commit-types": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/conventional-commit-types/-/conventional-commit-types-2.3.0.tgz", + "integrity": "sha512-6iB39PrcGYdz0n3z31kj6/Km6mK9hm9oMRhwcLnKxE7WNoeRKZbTAobliKrbYZ5jqyCvtcVEfjCiaEzhL3AVmQ==", + "dev": true + }, + "node_modules/conventional-commits-filter": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz", + "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==", + "dependencies": { + "lodash.ismatch": "^4.4.0", + "modify-values": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-commits-parser": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz", + "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==", + "dependencies": { + "is-text-path": "^1.0.1", + "JSONStream": "^1.0.4", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + }, + "bin": { + "conventional-commits-parser": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/copy-paste": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/copy-paste/-/copy-paste-1.3.0.tgz", + "integrity": "sha512-HA6le4vPZW2EuPFixuGUpVRKPdAmZyRlF30x5lTbfX7xXHN9NwX/+Sff7Getowosoe/lZIFwrjn4hvsYGe2vRw==", + "dependencies": { + "iconv-lite": "^0.4.8" + }, + "optionalDependencies": { + "sync-exec": "~0.6.x" + } + }, + "node_modules/core-js": { + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.37.0.tgz", + "integrity": "sha512-fu5vHevQ8ZG4og+LXug8ulUtVxjOcEYvifJr7L5Bfq9GOztVqsKd9/59hUk2ZSbCrS3BqUr3EpaYGIYzq7g3Ug==", + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.0.tgz", + "integrity": "sha512-vYq4L+T8aS5UuFg4UwDhc7YNRWVeVZwltad9C/jV3R2LgVOpS9BDr7l/WL6BN0dbV3k1XejPTHqqEzJgsa0frA==", + "dependencies": { + "browserslist": "^4.23.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-pure": { + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.37.0.tgz", + "integrity": "sha512-d3BrpyFr5eD4KcbRvQ3FTUx/KWmaDesr7+a3+1+P46IUnNoEt+oiLijPINZMEon7w9oGkIINWxrBAU9DEciwFQ==", + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/cosmiconfig/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/cosmiconfig/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/cosmiconfig/node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cosmiconfig/node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/crc32-stream": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.3.tgz", + "integrity": "sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw==", + "dependencies": { + "crc-32": "^1.2.0", + "readable-stream": "^3.4.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/crc32-stream/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/create-emotion": { + "version": "10.0.27", + "resolved": "https://registry.npmjs.org/create-emotion/-/create-emotion-10.0.27.tgz", + "integrity": "sha512-fIK73w82HPPn/RsAij7+Zt8eCE8SptcJ3WoRMfxMtjteYxud8GDTKKld7MYwAX2TVhrw29uR1N/bVGxeStHILg==", + "dependencies": { + "@emotion/cache": "^10.0.27", + "@emotion/serialize": "^0.11.15", + "@emotion/sheet": "0.9.4", + "@emotion/utils": "0.11.3" + } + }, + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, + "bin": { + "create-jest": "bin/create-jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/create-jest/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/create-jest/node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-declaration-sorter": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz", + "integrity": "sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==", + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-functions-list": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.2.tgz", + "integrity": "sha512-c+N0v6wbKVxTu5gOBBFkr9BEdBWaqqjQeiJ8QvSRIJOf+UxlJh930m8e6/WNeODIK0mYLFkoONrnj16i2EcvfQ==", + "engines": { + "node": ">=12 || >=16" + } + }, + "node_modules/css-loader": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.1.tgz", + "integrity": "sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==", + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.7", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.5" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/css-loader/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/css-minimizer-webpack-plugin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-4.0.0.tgz", + "integrity": "sha512-7ZXXRzRHvofv3Uac5Y+RkWRNo0ZMlcg8e9/OtrqUYmwDWJo+qs67GvdeFrXLsFb7czKNwjQhPkM0avlIYl+1nA==", + "dependencies": { + "cssnano": "^5.1.8", + "jest-worker": "^27.5.1", + "postcss": "^8.4.13", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@parcel/css": { + "optional": true + }, + "clean-css": { + "optional": true + }, + "csso": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/ajv": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz", + "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssbeautify": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cssbeautify/-/cssbeautify-0.3.1.tgz", + "integrity": "sha512-ljnSOCOiMbklF+dwPbpooyB78foId02vUrTDogWzu6ca2DCNB7Kc/BHEGBnYOlUYtwXvSW0mWTwaiO2pwFIoRg==", + "bin": { + "cssbeautify": "bin/cssbeautify" + }, + "engines": { + "node": "*" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano": { + "version": "5.1.15", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz", + "integrity": "sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==", + "dependencies": { + "cssnano-preset-default": "^5.2.14", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-preset-default": { + "version": "5.2.14", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz", + "integrity": "sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==", + "dependencies": { + "css-declaration-sorter": "^6.3.1", + "cssnano-utils": "^3.1.0", + "postcss-calc": "^8.2.3", + "postcss-colormin": "^5.3.1", + "postcss-convert-values": "^5.1.3", + "postcss-discard-comments": "^5.1.2", + "postcss-discard-duplicates": "^5.1.0", + "postcss-discard-empty": "^5.1.1", + "postcss-discard-overridden": "^5.1.0", + "postcss-merge-longhand": "^5.1.7", + "postcss-merge-rules": "^5.1.4", + "postcss-minify-font-values": "^5.1.0", + "postcss-minify-gradients": "^5.1.1", + "postcss-minify-params": "^5.1.4", + "postcss-minify-selectors": "^5.2.1", + "postcss-normalize-charset": "^5.1.0", + "postcss-normalize-display-values": "^5.1.0", + "postcss-normalize-positions": "^5.1.1", + "postcss-normalize-repeat-style": "^5.1.1", + "postcss-normalize-string": "^5.1.0", + "postcss-normalize-timing-functions": "^5.1.0", + "postcss-normalize-unicode": "^5.1.1", + "postcss-normalize-url": "^5.1.0", + "postcss-normalize-whitespace": "^5.1.1", + "postcss-ordered-values": "^5.1.3", + "postcss-reduce-initial": "^5.1.2", + "postcss-reduce-transforms": "^5.1.0", + "postcss-svgo": "^5.1.0", + "postcss-unique-selectors": "^5.1.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", + "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dependencies": { + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/cssom": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", + "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==" + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==" + }, + "node_modules/cypress": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-10.4.0.tgz", + "integrity": "sha512-OM7F8MRE01SHQRVVzunid1ZK1m90XTxYnl+7uZfIrB4CYqUDCrZEeSyCXzIbsS6qcaijVCAhqDL60SxG8N6hew==", + "hasInstallScript": true, + "dependencies": { + "@cypress/request": "^2.88.10", + "@cypress/xvfb": "^1.2.4", + "@types/node": "^14.14.31", + "@types/sinonjs__fake-timers": "8.1.1", + "@types/sizzle": "^2.3.2", + "arch": "^2.2.0", + "blob-util": "^2.0.2", + "bluebird": "^3.7.2", + "buffer": "^5.6.0", + "cachedir": "^2.3.0", + "chalk": "^4.1.0", + "check-more-types": "^2.24.0", + "cli-cursor": "^3.1.0", + "cli-table3": "~0.6.1", + "commander": "^5.1.0", + "common-tags": "^1.8.0", + "dayjs": "^1.10.4", + "debug": "^4.3.2", + "enquirer": "^2.3.6", + "eventemitter2": "^6.4.3", + "execa": "4.1.0", + "executable": "^4.1.1", + "extract-zip": "2.0.1", + "figures": "^3.2.0", + "fs-extra": "^9.1.0", + "getos": "^3.2.1", + "is-ci": "^3.0.0", + "is-installed-globally": "~0.4.0", + "lazy-ass": "^1.6.0", + "listr2": "^3.8.3", + "lodash": "^4.17.21", + "log-symbols": "^4.0.0", + "minimist": "^1.2.6", + "ospath": "^1.2.2", + "pretty-bytes": "^5.6.0", + "proxy-from-env": "1.0.0", + "request-progress": "^3.0.0", + "semver": "^7.3.2", + "supports-color": "^8.1.1", + "tmp": "~0.2.1", + "untildify": "^4.0.0", + "yauzl": "^2.10.0" + }, + "bin": { + "cypress": "bin/cypress" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/cypress-file-upload": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/cypress-file-upload/-/cypress-file-upload-5.0.8.tgz", + "integrity": "sha512-+8VzNabRk3zG6x8f8BWArF/xA/W0VK4IZNx3MV0jFWrJS/qKn8eHfa5nU73P9fOQAgwHFJx7zjg4lwOnljMO8g==", + "engines": { + "node": ">=8.2.1" + }, + "peerDependencies": { + "cypress": ">3.0.0" + } + }, + "node_modules/cypress/node_modules/@types/node": { + "version": "14.18.63", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.63.tgz", + "integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==" + }, + "node_modules/cypress/node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, + "node_modules/cypress/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/cypress/node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/cypress/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cypress/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cypress/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/d": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz", + "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", + "dependencies": { + "es5-ext": "^0.10.64", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/dargs": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", + "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/data-urls": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", + "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", + "dependencies": { + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/data-urls/node_modules/tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/data-urls/node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "engines": { + "node": ">=12" + } + }, + "node_modules/data-urls/node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/date-format": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", + "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/dateformat": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", + "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", + "engines": { + "node": "*" + } + }, + "node_modules/dayjs": { + "version": "1.11.11", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.11.tgz", + "integrity": "sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==" + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", + "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", + "dependencies": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decamelize-keys/node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" + }, + "node_modules/decompress-response": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", + "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", + "dependencies": { + "mimic-response": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dedent": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", + "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "dev": true, + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/deep-equal": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", + "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.5", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.2", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/default-gateway/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/default-gateway/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-gateway/node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/denque": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz", + "integrity": "sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" + }, + "node_modules/di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==" + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dir-glob/node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" + }, + "node_modules/dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-accessibility-api": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==" + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", + "dependencies": { + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" + } + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domexception": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", + "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", + "deprecated": "Use your platform's native DOMException instead", + "dependencies": { + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/domexception/node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "engines": { + "node": ">=12" + } + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/drange": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/drange/-/drange-1.1.1.tgz", + "integrity": "sha512-pYxfDYpued//QpnLIm4Avk7rsNtAtQkUES2cwAYSvD/wd2pKD71gN2Ebj3e7klzXwjocvE8c5vx/1fxwpqmSxA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/dset": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.2.tgz", + "integrity": "sha512-g/M9sqy3oHe477Ar4voQxWtaPIFw1jTdKZuomOjhCcBx9nHUNn0pu6NopuFFrTh/TRZIKEj+76vLWFu9BNKk+Q==", + "engines": { + "node": ">=4" + } + }, + "node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "dependencies": { + "readable-stream": "^2.0.2" + } + }, + "node_modules/duplexer2/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/duplexer2/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/duplexer2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/editorconfig": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-1.0.4.tgz", + "integrity": "sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==", + "dependencies": { + "@one-ini/wasm": "0.1.1", + "commander": "^10.0.0", + "minimatch": "9.0.1", + "semver": "^7.5.3" + }, + "bin": { + "editorconfig": "bin/editorconfig" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/editorconfig/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/editorconfig/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "engines": { + "node": ">=14" + } + }, + "node_modules/editorconfig/node_modules/minimatch": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", + "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/editorconfig/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/electron-to-chromium": { + "version": "1.4.757", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.757.tgz", + "integrity": "sha512-jftDaCknYSSt/+KKeXzH3LX5E2CvRLm75P3Hj+J/dv3CL0qUYcOt13d5FN1NiL5IJbbhzHrb3BomeG2tkSlZmw==" + }, + "node_modules/element-polyfill": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/element-polyfill/-/element-polyfill-1.1.0.tgz", + "integrity": "sha512-t+hZSDS8by+uMyFwGXo8cn6Jf5VM7AjY+p2ZGg1s/E7vA3VmuVFJjKJO3GIPAgH3HfUm/9codl8yGo3GgcMH2A==" + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/emotion": { + "version": "10.0.27", + "resolved": "https://registry.npmjs.org/emotion/-/emotion-10.0.27.tgz", + "integrity": "sha512-2xdDzdWWzue8R8lu4G76uWX5WhyQuzATon9LmNeCy/2BHVC6dsEpfhN1a0qhELgtDVdjyEA6J8Y/VlI5ZnaH0g==", + "dependencies": { + "babel-plugin-emotion": "^10.0.27", + "create-emotion": "^10.0.27" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/engine.io": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.4.tgz", + "integrity": "sha512-KdVSDKhVKyOi+r5uEabrDLZw2qXStVvCsEB/LN3mw4WFi6Gx50jTyuxYVCwAAC0U46FdnzP/ScKRBTXb/NiEOg==", + "dependencies": { + "@types/cookie": "^0.4.1", + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~5.2.1", + "ws": "~8.11.0" + }, + "engines": { + "node": ">=10.2.0" + } + }, + "node_modules/engine.io-parser": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.2.tgz", + "integrity": "sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/engine.io/node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz", + "integrity": "sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==" + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/error-stack-parser": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "dependencies": { + "stackframe": "^1.3.4" + } + }, + "node_modules/es-abstract": { + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-module-lexer": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.2.tgz", + "integrity": "sha512-l60ETUTmLqbVbVHv1J4/qj+M8nq7AwMzEcg3kmJDt9dCNrTk+yHcYFf/Kw75pMDwd9mPcIGCG5LcS20SxYRzFA==" + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es5-ext": { + "version": "0.10.64", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", + "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", + "hasInstallScript": true, + "dependencies": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "esniff": "^2.0.1", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-object-assign": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", + "integrity": "sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==" + }, + "node_modules/es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" + }, + "node_modules/es6-symbol": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz", + "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", + "dependencies": { + "d": "^1.0.2", + "ext": "^1.7.0" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/esbuild": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.5.tgz", + "integrity": "sha512-VSf6S1QVqvxfIsSKb3UKr3VhUCis7wgDbtF4Vd9z84UJr05/Sp2fRKmzC+CSPG/dNAPPJZ0BTBLTT1Fhd6N9Gg==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/linux-loong64": "0.15.5", + "esbuild-android-64": "0.15.5", + "esbuild-android-arm64": "0.15.5", + "esbuild-darwin-64": "0.15.5", + "esbuild-darwin-arm64": "0.15.5", + "esbuild-freebsd-64": "0.15.5", + "esbuild-freebsd-arm64": "0.15.5", + "esbuild-linux-32": "0.15.5", + "esbuild-linux-64": "0.15.5", + "esbuild-linux-arm": "0.15.5", + "esbuild-linux-arm64": "0.15.5", + "esbuild-linux-mips64le": "0.15.5", + "esbuild-linux-ppc64le": "0.15.5", + "esbuild-linux-riscv64": "0.15.5", + "esbuild-linux-s390x": "0.15.5", + "esbuild-netbsd-64": "0.15.5", + "esbuild-openbsd-64": "0.15.5", + "esbuild-sunos-64": "0.15.5", + "esbuild-windows-32": "0.15.5", + "esbuild-windows-64": "0.15.5", + "esbuild-windows-arm64": "0.15.5" + } + }, + "node_modules/esbuild-android-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.5.tgz", + "integrity": "sha512-dYPPkiGNskvZqmIK29OPxolyY3tp+c47+Fsc2WYSOVjEPWNCHNyqhtFqQadcXMJDQt8eN0NMDukbyQgFcHquXg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-android-arm64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.5.tgz", + "integrity": "sha512-YyEkaQl08ze3cBzI/4Cm1S+rVh8HMOpCdq8B78JLbNFHhzi4NixVN93xDrHZLztlocEYqi45rHHCgA8kZFidFg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.5.tgz", + "integrity": "sha512-Cr0iIqnWKx3ZTvDUAzG0H/u9dWjLE4c2gTtRLz4pqOBGjfjqdcZSfAObFzKTInLLSmD0ZV1I/mshhPoYSBMMCQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-arm64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.5.tgz", + "integrity": "sha512-WIfQkocGtFrz7vCu44ypY5YmiFXpsxvz2xqwe688jFfSVCnUsCn2qkEVDo7gT8EpsLOz1J/OmqjExePL1dr1Kg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.5.tgz", + "integrity": "sha512-M5/EfzV2RsMd/wqwR18CELcenZ8+fFxQAAEO7TJKDmP3knhWSbD72ILzrXFMMwshlPAS1ShCZ90jsxkm+8FlaA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-arm64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.5.tgz", + "integrity": "sha512-2JQQ5Qs9J0440F/n/aUBNvY6lTo4XP/4lt1TwDfHuo0DY3w5++anw+jTjfouLzbJmFFiwmX7SmUhMnysocx96w==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-32": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.5.tgz", + "integrity": "sha512-gO9vNnIN0FTUGjvTFucIXtBSr1Woymmx/aHQtuU+2OllGU6YFLs99960UD4Dib1kFovVgs59MTXwpFdVoSMZoQ==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.5.tgz", + "integrity": "sha512-ne0GFdNLsm4veXbTnYAWjbx3shpNKZJUd6XpNbKNUZaNllDZfYQt0/zRqOg0sc7O8GQ+PjSMv9IpIEULXVTVmg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.5.tgz", + "integrity": "sha512-wvAoHEN+gJ/22gnvhZnS/+2H14HyAxM07m59RSLn3iXrQsdS518jnEWRBnJz3fR6BJa+VUTo0NxYjGaNt7RA7Q==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.5.tgz", + "integrity": "sha512-7EgFyP2zjO065XTfdCxiXVEk+f83RQ1JsryN1X/VSX2li9rnHAt2swRbpoz5Vlrl6qjHrCmq5b6yxD13z6RheA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-mips64le": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.5.tgz", + "integrity": "sha512-KdnSkHxWrJ6Y40ABu+ipTZeRhFtc8dowGyFsZY5prsmMSr1ZTG9zQawguN4/tunJ0wy3+kD54GaGwdcpwWAvZQ==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-ppc64le": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.5.tgz", + "integrity": "sha512-QdRHGeZ2ykl5P0KRmfGBZIHmqcwIsUKWmmpZTOq573jRWwmpfRmS7xOhmDHBj9pxv+6qRMH8tLr2fe+ZKQvCYw==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-riscv64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.5.tgz", + "integrity": "sha512-p+WE6RX+jNILsf+exR29DwgV6B73khEQV0qWUbzxaycxawZ8NE0wA6HnnTxbiw5f4Gx9sJDUBemh9v49lKOORA==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-s390x": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.5.tgz", + "integrity": "sha512-J2ngOB4cNzmqLHh6TYMM/ips8aoZIuzxJnDdWutBw5482jGXiOzsPoEF4j2WJ2mGnm7FBCO4StGcwzOgic70JQ==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-netbsd-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.5.tgz", + "integrity": "sha512-MmKUYGDizYjFia0Rwt8oOgmiFH7zaYlsoQ3tIOfPxOqLssAsEgG0MUdRDm5lliqjiuoog8LyDu9srQk5YwWF3w==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-openbsd-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.5.tgz", + "integrity": "sha512-2mMFfkLk3oPWfopA9Plj4hyhqHNuGyp5KQyTT9Rc8hFd8wAn5ZrbJg+gNcLMo2yzf8Uiu0RT6G9B15YN9WQyMA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-sunos-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.5.tgz", + "integrity": "sha512-2sIzhMUfLNoD+rdmV6AacilCHSxZIoGAU2oT7XmJ0lXcZWnCvCtObvO6D4puxX9YRE97GodciRGDLBaiC6x1SA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-32": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.5.tgz", + "integrity": "sha512-e+duNED9UBop7Vnlap6XKedA/53lIi12xv2ebeNS4gFmu7aKyTrok7DPIZyU5w/ftHD4MUDs5PJUkQPP9xJRzg==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.5.tgz", + "integrity": "sha512-v+PjvNtSASHOjPDMIai9Yi+aP+Vwox+3WVdg2JB8N9aivJ7lyhp4NVU+J0MV2OkWFPnVO8AE/7xH+72ibUUEnw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-arm64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.5.tgz", + "integrity": "sha512-Yz8w/D8CUPYstvVQujByu6mlf48lKmXkq6bkeSZZxTA626efQOJb26aDGLzmFWx6eg/FwrXgt6SZs9V8Pwy/aA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/eslint": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", + "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.56.0", + "@humanwhocodes/config-array": "^0.11.13", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-config-standard": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.0.0.tgz", + "integrity": "sha512-/2ks1GKyqSOkH7JFvXJicu0iMpoojkwB+f5Du/1SC0PtBL+s8v30k9njRZ21pm2drKYm2342jFnGWzttxPmZVg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "peerDependencies": { + "eslint": "^8.0.1", + "eslint-plugin-import": "^2.25.2", + "eslint-plugin-n": "^15.0.0", + "eslint-plugin-promise": "^6.0.0" + } + }, + "node_modules/eslint-config-standard-react": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard-react/-/eslint-config-standard-react-13.0.0.tgz", + "integrity": "sha512-HrVPGj8UncHfV+BsdJTuJpVsomn6AIrke3Af2Fh4XFvQQDU+iO6N2ZL+UsC+scExft4fU3uf7fJwj7PKWnXJDA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "peerDependencies": { + "eslint": "^8.8.0", + "eslint-plugin-react": "^7.28.0", + "eslint-plugin-react-hooks": "^4.6.0" + } + }, + "node_modules/eslint-config-standard-with-typescript": { + "version": "22.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard-with-typescript/-/eslint-config-standard-with-typescript-22.0.0.tgz", + "integrity": "sha512-VA36U7UlFpwULvkdnh6MQj5GAV2Q+tT68ALLAwJP0ZuNXU2m0wX07uxX4qyLRdHgSzH4QJ73CveKBuSOYvh7vQ==", + "deprecated": "Please use eslint-config-love, instead.", + "dependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint-config-standard": "17.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^5.0.0", + "eslint": "^8.0.1", + "eslint-plugin-import": "^2.25.2", + "eslint-plugin-n": "^15.0.0", + "eslint-plugin-promise": "^6.0.0", + "typescript": "*" + } + }, + "node_modules/eslint-doc-generator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eslint-doc-generator/-/eslint-doc-generator-1.0.0.tgz", + "integrity": "sha512-mFlHc423TEX3LOdrrNe0SOa3ABZ/BlQsF3RWm95swCunO72bz75PTdXY1LhYy9ecW/+8n5D6OdzZf1ZL5bVdkQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "^5.38.1", + "ajv": "^8.11.2", + "camelcase": "^7.0.0", + "commander": "^9.4.0", + "cosmiconfig": "^8.0.0", + "deepmerge": "^4.2.2", + "jest-diff": "^29.2.1", + "markdown-table": "^3.0.2", + "type-fest": "^3.0.0" + }, + "bin": { + "eslint-doc-generator": "dist/bin/eslint-doc-generator.js" + }, + "engines": { + "node": "^14.18.0 || ^16.0.0 || >=18.0.0" + }, + "peerDependencies": { + "eslint": ">= 7" + } + }, + "node_modules/eslint-doc-generator/node_modules/ajv": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz", + "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/eslint-doc-generator/node_modules/camelcase": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", + "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-doc-generator/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/eslint-doc-generator/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/eslint-doc-generator/node_modules/type-fest": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", + "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-chai-friendly": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-chai-friendly/-/eslint-plugin-chai-friendly-0.7.2.tgz", + "integrity": "sha512-LOIfGx5sZZ5FwM1shr2GlYAWV9Omdi+1/3byuVagvQNoGUuU0iHhp7AfjA1uR+4dJ4Isfb4+FwBJgQajIw9iAg==", + "engines": { + "node": ">=0.10.0" + }, + "peerDependencies": { + "eslint": ">=3.0.0" + } + }, + "node_modules/eslint-plugin-cypress": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-2.12.1.tgz", + "integrity": "sha512-c2W/uPADl5kospNDihgiLc7n87t5XhUbFDoTl6CfVkmG+kDAb5Ux10V9PoLPu9N+r7znpc+iQlcmAqT1A/89HA==", + "dependencies": { + "globals": "^11.12.0" + }, + "peerDependencies": { + "eslint": ">= 3.2.1" + } + }, + "node_modules/eslint-plugin-cypress/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-es": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz", + "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==", + "dependencies": { + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" + }, + "engines": { + "node": ">=8.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=4.19.1" + } + }, + "node_modules/eslint-plugin-es/node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-eslint-plugin": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-eslint-plugin/-/eslint-plugin-eslint-plugin-5.0.0.tgz", + "integrity": "sha512-4j1sOUmZEd6RsdRKjUbEwYLAcihOVlPLzX3jpLpp7d3lHM+nSlAXVAwCT8o2OfJ501LICr1v6OZo7b6tPzQkUQ==", + "dev": true, + "dependencies": { + "eslint-utils": "^3.0.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^14.17.0 || ^16.0.0 || >= 18.0.0" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.26.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", + "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", + "dependencies": { + "array-includes": "^3.1.4", + "array.prototype.flat": "^1.2.5", + "debug": "^2.6.9", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.7.3", + "has": "^1.0.3", + "is-core-module": "^2.8.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.values": "^1.1.5", + "resolve": "^1.22.0", + "tsconfig-paths": "^3.14.1" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/eslint-plugin-jest": { + "version": "27.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.2.1.tgz", + "integrity": "sha512-l067Uxx7ZT8cO9NJuf+eJHvt6bqJyz2Z29wykyEdz/OtmcELQl2MQGQLX8J94O1cSJWAwUSEvCjwjA7KEK3Hmg==", + "dependencies": { + "@typescript-eslint/utils": "^5.10.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^5.0.0", + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + }, + "jest": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-jest-dom": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest-dom/-/eslint-plugin-jest-dom-4.0.3.tgz", + "integrity": "sha512-9j+n8uj0+V0tmsoS7bYC7fLhQmIvjRqRYEcbDSi+TKPsTThLLXCyj5swMSSf/hTleeMktACnn+HFqXBr5gbcbA==", + "dependencies": { + "@babel/runtime": "^7.16.3", + "@testing-library/dom": "^8.11.1", + "requireindex": "^1.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0", + "npm": ">=6", + "yarn": ">=1" + }, + "peerDependencies": { + "eslint": "^6.8.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-plugin-n": { + "version": "15.2.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.2.5.tgz", + "integrity": "sha512-8+BYsqiyZfpu6NXmdLOXVUfk8IocpCjpd8nMRRH0A9ulrcemhb2VI9RSJMEy5udx++A/YcVPD11zT8hpFq368g==", + "dependencies": { + "builtins": "^5.0.1", + "eslint-plugin-es": "^4.1.0", + "eslint-utils": "^3.0.0", + "ignore": "^5.1.1", + "is-core-module": "^2.10.0", + "minimatch": "^3.1.2", + "resolve": "^1.22.1", + "semver": "^7.3.7" + }, + "engines": { + "node": ">=12.22.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-n/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-plugin-no-only-tests": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-no-only-tests/-/eslint-plugin-no-only-tests-3.0.0.tgz", + "integrity": "sha512-I0PeXMs1vu21ap45hey4HQCJRqpcoIvGcNTPJe+UhUm8TwjQ6//mCrDqF8q0WS6LgmRDwQ4ovQej0AQsAHb5yg==", + "engines": { + "node": ">=5.0.0" + } + }, + "node_modules/eslint-plugin-node": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", + "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", + "dev": true, + "dependencies": { + "eslint-plugin-es": "^3.0.0", + "eslint-utils": "^2.0.0", + "ignore": "^5.1.1", + "minimatch": "^3.0.4", + "resolve": "^1.10.1", + "semver": "^6.1.0" + }, + "engines": { + "node": ">=8.10.0" + }, + "peerDependencies": { + "eslint": ">=5.16.0" + } + }, + "node_modules/eslint-plugin-node/node_modules/eslint-plugin-es": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", + "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", + "dev": true, + "dependencies": { + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" + }, + "engines": { + "node": ">=8.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=4.19.1" + } + }, + "node_modules/eslint-plugin-node/node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-plugin-node/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-node/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", + "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", + "dependencies": { + "prettier-linter-helpers": "^1.0.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "eslint": ">=7.28.0", + "prettier": ">=2.0.0" + }, + "peerDependenciesMeta": { + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-promise": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.0.0.tgz", + "integrity": "sha512-7GPezalm5Bfi/E22PnQxDWH2iW9GTvAlUNTztemeHb6c1BniSyoeTrM87JkC0wYdi6aQrZX9p2qEiAno8aTcbw==", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.30.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.30.1.tgz", + "integrity": "sha512-NbEvI9jtqO46yJA3wcRF9Mo0lF9T/jhdHqhCHXiXtD+Zcb98812wvokjWpU7Q4QH5edo6dmqrukxVvWWXHlsUg==", + "dependencies": { + "array-includes": "^3.1.5", + "array.prototype.flatmap": "^1.3.0", + "doctrine": "^2.1.0", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.5", + "object.fromentries": "^2.0.5", + "object.hasown": "^1.1.1", + "object.values": "^1.1.5", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.3", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-simple-import-sort": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-7.0.0.tgz", + "integrity": "sha512-U3vEDB5zhYPNfxT5TYR7u01dboFZp+HNpnGhkDB2g/2E4wZ/g1Q9Ton8UwCLfRV9yAKyYqDh62oHOamvkFxsvw==", + "peerDependencies": { + "eslint": ">=5.0.0" + } + }, + "node_modules/eslint-plugin-sui": { + "resolved": "packages/eslint-plugin-sui", + "link": true + }, + "node_modules/eslint-rule-composer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz", + "integrity": "sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-scope/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/eslint/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/esm": { + "version": "3.2.25", + "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", + "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/esniff": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", + "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "event-emitter": "^0.3.5", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/eventemitter2": { + "version": "6.4.9", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.9.tgz", + "integrity": "sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==" + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dependencies": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/executable": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", + "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", + "dependencies": { + "pify": "^2.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/executable/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dependencies": { + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express-basic-auth": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/express-basic-auth/-/express-basic-auth-1.2.1.tgz", + "integrity": "sha512-L6YQ1wQ/mNjVLAmK3AG1RK6VkokA1BIY6wmiH304Xtt/cLTps40EusZsU1Uop+v9lTDPxdtzbFmdXfFO3KEnwA==", + "dependencies": { + "basic-auth": "^2.0.1" + } + }, + "node_modules/express/node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/express/node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/express/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "dependencies": { + "type": "^2.7.2" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/external-editor/node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "engines": [ + "node >=0.6.0" + ] + }, + "node_modules/fast-copy": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-3.0.2.tgz", + "integrity": "sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==" + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" + }, + "node_modules/fast-redact": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.5.0.tgz", + "integrity": "sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", + "deprecated": "This module is no longer supported." + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "optional": true + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/finalhandler/node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-free-ports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-free-ports/-/find-free-ports-3.0.0.tgz", + "integrity": "sha512-C9XrjG5O1EWPHSjY/hzJaUAoyUQ+KhmiYn0zHohOpScSeWr5TqJu613iIvzI4DnIKpdcBZZ5B4ifiUA10Y2HuA==" + }, + "node_modules/find-parent-dir": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.1.tgz", + "integrity": "sha512-o4UcykWV/XN9wm+jMEtWLPlV8RXCZnMhQI6F6OdHeSez7iiJWePw8ijOlskJZMsaQoGR/b7dH6lO02HhaTN7+A==", + "dev": true + }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" + }, + "node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/findup": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/findup/-/findup-0.1.5.tgz", + "integrity": "sha512-Udxo3C9A6alt2GZ2MNsgnIvX7De0V3VGxeP/x98NSVgSlizcDHdmJza61LI7zJy4OEtSiJyE72s0/+tBl5/ZxA==", + "dev": true, + "dependencies": { + "colors": "~0.6.0-1", + "commander": "~2.1.0" + }, + "bin": { + "findup": "bin/findup.js" + }, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/findup/node_modules/colors": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", + "integrity": "sha512-OsSVtHK8Ir8r3+Fxw/b4jS1ZLPXkV6ZxDRJQzeD7qo0SqMXWrHDM71DgYzPMHY8SFJ0Ao+nNU2p1MmwdzKqPrw==", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/findup/node_modules/commander": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz", + "integrity": "sha512-J2wnb6TKniXNOtoHS8TSrG9IOQluPrsmyAJ8oCUJOBmv+uLBCyPYAZkD2jFvw2DCzIXNnISIM01NIvr35TkBMQ==", + "dev": true, + "engines": { + "node": ">= 0.6.x" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "bin": { + "flat": "cli.js" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatstr": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/flatstr/-/flatstr-1.0.12.tgz", + "integrity": "sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw==" + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==" + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz", + "integrity": "sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==" + }, + "node_modules/fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==" + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "dependencies": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + }, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/fstream/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "engines": { + "node": "*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-pkg-repo": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz", + "integrity": "sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==", + "dependencies": { + "@hutson/parse-repository-url": "^3.0.0", + "hosted-git-info": "^4.0.0", + "through2": "^2.0.0", + "yargs": "^16.2.0" + }, + "bin": { + "get-pkg-repo": "src/cli.js" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-pkg-repo/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/get-pkg-repo/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/get-pkg-repo/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/get-pkg-repo/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/getos": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", + "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", + "dependencies": { + "async": "^3.2.0" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/git-raw-commits": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz", + "integrity": "sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==", + "dependencies": { + "dargs": "^7.0.0", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + }, + "bin": { + "git-raw-commits": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/git-remote-origin-url": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", + "integrity": "sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==", + "dependencies": { + "gitconfiglocal": "^1.0.0", + "pify": "^2.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/git-remote-origin-url/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/git-semver-tags": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz", + "integrity": "sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==", + "dependencies": { + "meow": "^8.0.0", + "semver": "^6.0.0" + }, + "bin": { + "git-semver-tags": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/git-semver-tags/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/git-up": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/git-up/-/git-up-7.0.0.tgz", + "integrity": "sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==", + "dependencies": { + "is-ssh": "^1.4.0", + "parse-url": "^8.1.0" + } + }, + "node_modules/git-url-parse": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-13.1.0.tgz", + "integrity": "sha512-5FvPJP/70WkIprlUZ33bm4UAaFdjcLkJLpWft1BeZKqwR0uhhNGoKwlUaPtVb4LxCSQ++erHapRak9kWGj+FCA==", + "dependencies": { + "git-up": "^7.0.0" + } + }, + "node_modules/gitconfiglocal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", + "integrity": "sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==", + "dependencies": { + "ini": "^1.3.2" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + }, + "node_modules/global-dirs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", + "dependencies": { + "ini": "2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/global-dirs/node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "dependencies": { + "global-prefix": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "dependencies": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globals/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/globjoin": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", + "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==" + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==" + }, + "node_modules/graphql": { + "version": "14.7.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-14.7.0.tgz", + "integrity": "sha512-l0xWZpoPKpppFzMfvVyFmp9vLN7w/ZZJPefUicMCepfJeQ8sMcztloGYY9DfjVPo6tIUDzU5Hw3MUbIjj9AVVA==", + "dependencies": { + "iterall": "^1.2.2" + }, + "engines": { + "node": ">= 6.x" + } + }, + "node_modules/graphql-tag": { + "version": "2.12.6", + "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", + "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", + "dependencies": { + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" + }, + "node_modules/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/has": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", + "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "bin": { + "he": "bin/he" + } + }, + "node_modules/headers-polyfill": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/headers-polyfill/-/headers-polyfill-3.1.2.tgz", + "integrity": "sha512-tWCK4biJ6hcLqTviLXVR9DTRfYGQMXEIUj3gwJ2rZ5wO/at3XtkI4g8mCvFdUF9l1KMBNCfmNAdnahm1cgavQA==" + }, + "node_modules/help-me": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/help-me/-/help-me-5.0.0.tgz", + "integrity": "sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==", + "dev": true + }, + "node_modules/history": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-3.3.0.tgz", + "integrity": "sha512-ABLnJwKEZGXGqWsXaKYD8NNle49ZbKs1WEBlxrFsQ8dIudZpO5NJaH8WJOqh5lXVhAq7bHksfirrobBmrT7qBw==", + "dependencies": { + "invariant": "^2.2.1", + "loose-envify": "^1.2.0", + "query-string": "^4.2.2", + "warning": "^3.0.0" + } + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hoist-non-react-statics/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/hot-shots": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/hot-shots/-/hot-shots-7.7.1.tgz", + "integrity": "sha512-WNjpb1dELc14W6CsZptywM3BMHyzB9VodMzSXR6OrvsZ6uoRBjFDcCqCUjEDoBSJ3B2+RszbV4Jznrhz7/bHJA==", + "engines": { + "node": ">=6.0.0" + }, + "optionalDependencies": { + "unix-dgram": "2.0.x" + } + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/html": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/html/-/html-1.0.0.tgz", + "integrity": "sha512-lw/7YsdKiP3kk5PnR1INY17iJuzdAtJewxr14ozKJWbbR97znovZ0mh+WEMZ8rjc3lgTK+ID/htTjuyGKB52Kw==", + "dependencies": { + "concat-stream": "^1.4.7" + }, + "bin": { + "html": "bin/html.js" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "dependencies": { + "whatwg-encoding": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-entities": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", + "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ] + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==" + }, + "node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-minifier-terser/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "engines": { + "node": ">= 12" + } + }, + "node_modules/html-tags": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", + "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/html-webpack-inject-attributes-plugin": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/html-webpack-inject-attributes-plugin/-/html-webpack-inject-attributes-plugin-1.0.6.tgz", + "integrity": "sha512-ZsXpT8kPQwEFuJOnaNpy2esxlQtvPmLxXiWP1rsLV9HNKXU3ltyWGFUqxgEzQr7sMtkm3eY0NwqeiNUBWfZZsg==", + "dependencies": { + "lodash.assign": "^4.2.0", + "lodash.foreach": "^4.5.0", + "safe-require": "^1.0.3" + } + }, + "node_modules/html-webpack-plugin": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", + "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", + "dependencies": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "webpack": "^5.20.0" + } + }, + "node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/htmr": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/htmr/-/htmr-1.0.0.tgz", + "integrity": "sha512-lEEVDMOwOhyqIdLx5caDxKP5yqt5CODI/e2cWrSOmh/3OGzycayLBBlFLozV1BStH94KaUnrTOzk8sEW4Xpe1g==", + "dependencies": { + "html-entities": "^2.1.0", + "htmlparser2": "^6.0.0" + }, + "peerDependencies": { + "react": "^15.6.1 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==" + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==" + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/http-proxy-middleware/node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/http-signature": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz", + "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^2.0.2", + "sshpk": "^1.14.1" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==" + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "engines": { + "node": ">=8.12.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==" + }, + "node_modules/immutable": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz", + "integrity": "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==" + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/import-local/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local/node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "node_modules/inquirer": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz", + "integrity": "sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==", + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^6.0.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/inquirer/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/intersection-observer": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/intersection-observer/-/intersection-observer-0.10.0.tgz", + "integrity": "sha512-fn4bQ0Xq8FTej09YC/jqKZwtijpvARlRp6wxL5WTA6yPe2YWSJ5RJh7Nm79rK2qB0wr6iDQzH60XGq5V/7u8YQ==" + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-ci": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "dependencies": { + "ci-info": "^3.2.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "dependencies": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-node-process": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-node-process/-/is-node-process-1.2.0.tgz", + "integrity": "sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==" + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" + }, + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-ssh": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.0.tgz", + "integrity": "sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==", + "dependencies": { + "protocols": "^2.0.1" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-text-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", + "integrity": "sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==", + "dependencies": { + "text-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + }, + "node_modules/isbinaryfile": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + "engines": { + "node": ">= 8.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dependencies": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report/node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/istanbul-lib-report/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/iterall": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.3.0.tgz", + "integrity": "sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==" + }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jest": { + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.3.1.tgz", + "integrity": "sha512-6iWfL5DTT0Np6UYs/y5Niu7WIfNv/wRTtN5RSXt2DIEft3dx3zPuw/3WJQBCJfmEzvDiEKwoqMbGD9n49+qLSA==", + "dependencies": { + "@jest/core": "^29.3.1", + "@jest/types": "^29.3.1", + "import-local": "^3.0.2", + "jest-cli": "^29.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "dependencies": { + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-changed-files/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/jest-changed-files/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-changed-files/node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/jest-changed-files/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus/node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-circus/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-circus/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-circus/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" + }, + "node_modules/jest-circus/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-cli": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-cli/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-cli/node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-cli/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/jest-cli/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/jest-cli/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/jest-config": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-config/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-config/node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-config/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-config/node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-config/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-config/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" + }, + "node_modules/jest-config/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-diff/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-diff/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" + }, + "node_modules/jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each/node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-each/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-each/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" + }, + "node_modules/jest-environment-jsdom": { + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.3.1.tgz", + "integrity": "sha512-G46nKgiez2Gy4zvYNhayfMEAFlVHhWfncqvqS6yCd0i+a4NsSUD2WtrKSaYQrYiLQaupHXxCRi8xxVL2M9PbhA==", + "dependencies": { + "@jest/environment": "^29.3.1", + "@jest/fake-timers": "^29.3.1", + "@jest/types": "^29.3.1", + "@types/jsdom": "^20.0.0", + "@types/node": "*", + "jest-mock": "^29.3.1", + "jest-util": "^29.3.1", + "jsdom": "^20.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jest-environment-jsdom/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-environment-node/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-environment-node/node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-haste-map/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-haste-map/node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-haste-map/node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-haste-map/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "dependencies": { + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-leak-detector/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-leak-detector/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-leak-detector/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" + }, + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" + }, + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util/node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-message-util/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" + }, + "node_modules/jest-message-util/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-mock/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-mock/node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "dependencies": { + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner/node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-runner/node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-runner/node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/jest-runner/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jest-runtime": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runtime/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runtime/node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-runtime/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime/node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-snapshot": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-snapshot/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-snapshot/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" + }, + "node_modules/jest-snapshot/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-util/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-util/node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "dependencies": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-validate/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-validate/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" + }, + "node_modules/jest-watcher": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "dependencies": { + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-watcher/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-watcher/node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jest/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest/node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jiti": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", + "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/jmespath": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz", + "integrity": "sha512-+kHj8HXArPfpPEKGLZ+kB5ONRTCiGQXo8RQYL0hH8t6pWXUBBK5KkkQmTNOwKK4LEsd0yTsgtjJVm4UBSZea4w==", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/joycon": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", + "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", + "engines": { + "node": ">=10" + } + }, + "node_modules/js-beautify": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.15.1.tgz", + "integrity": "sha512-ESjNzSlt/sWE8sciZH8kBF8BPlwXPwhR6pWKAw8bw4Bwj+iZcnKW6ONWUutJ7eObuBZQpiIb8S7OYspWrKt7rA==", + "dependencies": { + "config-chain": "^1.1.13", + "editorconfig": "^1.0.4", + "glob": "^10.3.3", + "js-cookie": "^3.0.5", + "nopt": "^7.2.0" + }, + "bin": { + "css-beautify": "js/bin/css-beautify.js", + "html-beautify": "js/bin/html-beautify.js", + "js-beautify": "js/bin/js-beautify.js" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/js-beautify/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/js-beautify/node_modules/glob": { + "version": "10.3.12", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", + "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.6", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.10.2" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/js-beautify/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/js-cookie": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", + "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", + "engines": { + "node": ">=14" + } + }, + "node_modules/js-levenshtein": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", + "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" + }, + "node_modules/jsdom": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", + "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", + "dependencies": { + "abab": "^2.0.6", + "acorn": "^8.8.1", + "acorn-globals": "^7.0.0", + "cssom": "^0.5.0", + "cssstyle": "^2.3.0", + "data-urls": "^3.0.2", + "decimal.js": "^10.4.2", + "domexception": "^4.0.0", + "escodegen": "^2.0.0", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.1", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.2", + "parse5": "^7.1.1", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.1.2", + "w3c-xmlserializer": "^4.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0", + "ws": "^8.11.0", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsdom/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/jsdom/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jsdom/node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/jsdom/node_modules/tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/jsdom/node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "engines": { + "node": ">=12" + } + }, + "node_modules/jsdom/node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-parser": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz", + "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==" + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "engines": [ + "node >= 0.2.0" + ] + }, + "node_modules/JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dependencies": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + }, + "bin": { + "JSONStream": "bin.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/jsprim": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", + "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/just-camel-case": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/just-camel-case/-/just-camel-case-4.0.2.tgz", + "integrity": "sha512-df6QI/EIq+6uHe/wtaa9Qq7/pp4wr4pJC/r1+7XhVL6m5j03G6h9u9/rIZr8rDASX7CxwDPQnZjffCo2e6PRLw==" + }, + "node_modules/just-capitalize": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/just-capitalize/-/just-capitalize-1.0.1.tgz", + "integrity": "sha512-K7FY7ObOLfwr3QxjOLT8ECNgJOWcZ46KSoUZVZTEMMEK1yIOQBqgMgHXN+7rPRAw8LH10YG89pOudIMzyy0jdQ==" + }, + "node_modules/just-debounce-it": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/just-debounce-it/-/just-debounce-it-1.5.0.tgz", + "integrity": "sha512-itSWJS5d2DTSCizVJ2Z0Djx/dGmUGfZe7WNfUfVP23+htGcIcPHbEjL4eB8ljojTs/+oYwLexImRRCP0A2WXjA==" + }, + "node_modules/just-extend": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", + "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==" + }, + "node_modules/just-kebab-case": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/just-kebab-case/-/just-kebab-case-1.1.0.tgz", + "integrity": "sha512-QkuwuBMQ9BQHMUEkAtIA4INLrkmnnveqlFB1oFi09gbU0wBdZo6tTnyxNWMR84zHxBuwK7GLAwqN8nrvVxOLTA==" + }, + "node_modules/just-pascal-case": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/just-pascal-case/-/just-pascal-case-1.1.0.tgz", + "integrity": "sha512-9WrLmpZ2wbt/k9ZAwp8MMc9/RqPRzUZZ+szWmAGFkas4+/z//+xYN8iUOBR2gmpiH8X5rJ+/yMvNFalMSKwmyg==" + }, + "node_modules/karma": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.2.tgz", + "integrity": "sha512-C6SU/53LB31BEgRg+omznBEMY4SjHU3ricV6zBcAe1EeILKkeScr+fZXtaI5WyDbkVowJxxAI6h73NcFPmXolQ==", + "dependencies": { + "@colors/colors": "1.5.0", + "body-parser": "^1.19.0", + "braces": "^3.0.2", + "chokidar": "^3.5.1", + "connect": "^3.7.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.1", + "glob": "^7.1.7", + "graceful-fs": "^4.2.6", + "http-proxy": "^1.18.1", + "isbinaryfile": "^4.0.8", + "lodash": "^4.17.21", + "log4js": "^6.4.1", + "mime": "^2.5.2", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.5", + "qjobs": "^1.2.0", + "range-parser": "^1.2.1", + "rimraf": "^3.0.2", + "socket.io": "^4.4.1", + "source-map": "^0.6.1", + "tmp": "^0.2.1", + "ua-parser-js": "^0.7.30", + "yargs": "^16.1.1" + }, + "bin": { + "karma": "bin/karma" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/karma-chrome-launcher": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.2.0.tgz", + "integrity": "sha512-rE9RkUPI7I9mAxByQWkGJFXfFD6lE4gC5nPuZdobf/QdTEJI6EU4yIay/cfU/xV4ZxlM5JiTv7zWYgA64NpS5Q==", + "dependencies": { + "which": "^1.2.1" + } + }, + "node_modules/karma-chrome-launcher/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/karma-coverage": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.2.1.tgz", + "integrity": "sha512-yj7hbequkQP2qOSb20GuNSIyE//PgJWHwC2IydLE6XRtsnaflv+/OSGNssPjobYUlhVVagy99TQpqUt3vAUG7A==", + "dependencies": { + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.1", + "istanbul-reports": "^3.0.5", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/karma-coverage/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/karma-coverage/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/karma-firefox-launcher": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/karma-firefox-launcher/-/karma-firefox-launcher-2.1.2.tgz", + "integrity": "sha512-VV9xDQU1QIboTrjtGVD4NCfzIH7n01ZXqy/qpBhnOeGVOkG5JYPEm8kuSd7psHE6WouZaQ9Ool92g8LFweSNMA==", + "dependencies": { + "is-wsl": "^2.2.0", + "which": "^2.0.1" + } + }, + "node_modules/karma-mocha": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/karma-mocha/-/karma-mocha-2.0.1.tgz", + "integrity": "sha512-Tzd5HBjm8his2OA4bouAsATYEpZrp9vC7z5E5j4C5Of5Rrs1jY67RAwXNcVmd/Bnk1wgvQRou0zGVLey44G4tQ==", + "dependencies": { + "minimist": "^1.2.3" + } + }, + "node_modules/karma-spec-reporter": { + "version": "0.0.34", + "resolved": "https://registry.npmjs.org/karma-spec-reporter/-/karma-spec-reporter-0.0.34.tgz", + "integrity": "sha512-l5H/Nh9q4g2Ysx2CDU2m+NIPyLQpCVbk9c4V02BTZHw3NM6RO1dq3eRpKXCSSdPt4RGfhHk8jDt3XYkGp+5PWg==", + "dependencies": { + "colors": "1.4.0" + }, + "peerDependencies": { + "karma": ">=0.9" + } + }, + "node_modules/karma-webpack": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/karma-webpack/-/karma-webpack-5.0.0.tgz", + "integrity": "sha512-+54i/cd3/piZuP3dr54+NcFeKOPnys5QeM1IY+0SPASwrtHsliXUiCL50iW+K9WWA7RvamC4macvvQ86l3KtaA==", + "dependencies": { + "glob": "^7.1.3", + "minimatch": "^3.0.4", + "webpack-merge": "^4.1.5" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "engines": { + "node": ">=6" + } + }, + "node_modules/klona": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/known-css-properties": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.25.0.tgz", + "integrity": "sha512-b0/9J1O9Jcyik1GC6KC42hJ41jKwdO/Mq8Mdo5sYN+IuRTXs2YFHZC3kZSx6ueusqa95x3wLYe/ytKjbAfGixA==" + }, + "node_modules/launch-editor": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.1.tgz", + "integrity": "sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==", + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.8.1" + } + }, + "node_modules/lazy-ass": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", + "integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==", + "engines": { + "node": "> 0.8" + } + }, + "node_modules/lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "dependencies": { + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 0.6.3" + } + }, + "node_modules/lazystream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/lazystream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/lazystream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/libnpmconfig": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/libnpmconfig/-/libnpmconfig-1.2.1.tgz", + "integrity": "sha512-9esX8rTQAHqarx6qeZqmGQKBNZR5OIbl/Ayr0qQDy3oXja2iFVQQI81R6GZ2a02bSNZ9p3YOGX1O6HHCb1X7kA==", + "deprecated": "This module is not used anymore. npm config is parsed by npm itself and by @npmcli/config", + "dependencies": { + "figgy-pudding": "^3.5.1", + "find-up": "^3.0.0", + "ini": "^1.3.5" + } + }, + "node_modules/libnpmconfig/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/libnpmconfig/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/libnpmconfig/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/libnpmconfig/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/libnpmconfig/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "node_modules/lint-repository-sui": { + "resolved": "packages/lint-repository-sui", + "link": true + }, + "node_modules/listenercount": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", + "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==" + }, + "node_modules/listr2": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz", + "integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==", + "dependencies": { + "cli-truncate": "^2.1.0", + "colorette": "^2.0.16", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rfdc": "^1.3.0", + "rxjs": "^7.5.1", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "enquirer": ">= 2.3.0 < 3" + }, + "peerDependenciesMeta": { + "enquirer": { + "optional": true + } + } + }, + "node_modules/listr2/node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw==" + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + }, + "node_modules/lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==" + }, + "node_modules/lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==" + }, + "node_modules/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==" + }, + "node_modules/lodash.foreach": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", + "integrity": "sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==" + }, + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==" + }, + "node_modules/lodash.isfunction": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.8.tgz", + "integrity": "sha512-WQj3vccQSW5IKeRl8F0bezPlZH5/LFXtNPICsbZLsv+HmVfWAfrzy2ZajGqmNLonIjPIcPOk3uXOGv5jgPgTyg==" + }, + "node_modules/lodash.ismatch": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", + "integrity": "sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==" + }, + "node_modules/lodash.isnil": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/lodash.isnil/-/lodash.isnil-4.0.0.tgz", + "integrity": "sha512-up2Mzq3545mwVnMhTDMdfoG1OurpA/s5t88JmQX809eH3C8491iu2sfKhTfhQtKY78oPNhiaHJUpT/dUDAAtng==" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" + }, + "node_modules/lodash.isundefined": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash.isundefined/-/lodash.isundefined-3.0.1.tgz", + "integrity": "sha512-MXB1is3s899/cD8jheYYE2V9qTHwKvt+npCwpD+1Sxm3Q3cECXCiYHjeHWXNwr6Q0SOBPrYUDxendrO6goVTEA==" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, + "node_modules/lodash.omit": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz", + "integrity": "sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg==" + }, + "node_modules/lodash.omitby": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.omitby/-/lodash.omitby-4.6.0.tgz", + "integrity": "sha512-5OrRcIVR75M288p4nbI2WLAf3ndw2GD9fyNv3Bc15+WCxJDdZ4lYndSxGd7hnG6PVjiJTeJE2dHEGhIuKGicIQ==" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" + }, + "node_modules/lodash.set": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", + "integrity": "sha512-4hNPN5jlm/N/HLMCO43v8BXKq9Z7QdAGc/VGrRD61w8gN9g/6jF9A4L1pbUgBLCffi0w9VsXfTOij5x8iTyFvg==" + }, + "node_modules/lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==" + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==" + }, + "node_modules/lodash.union": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", + "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "dependencies": { + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log4js": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.9.1.tgz", + "integrity": "sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==", + "dependencies": { + "date-format": "^4.0.14", + "debug": "^4.3.4", + "flatted": "^3.2.7", + "rfdc": "^1.3.0", + "streamroller": "^3.1.5" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "dependencies": { + "get-func-name": "^2.0.1" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/lru-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", + "integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==", + "dependencies": { + "es5-ext": "~0.10.2" + } + }, + "node_modules/lz-string": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", + "bin": { + "lz-string": "bin/bin.js" + } + }, + "node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/markdown-table": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.3.tgz", + "integrity": "sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mathml-tag-names": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", + "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "dependencies": { + "fs-monkey": "^1.0.4" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/memoize-one": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", + "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" + }, + "node_modules/memoizee": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", + "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==", + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.53", + "es6-weak-map": "^2.0.3", + "event-emitter": "^0.3.5", + "is-promise": "^2.2.2", + "lru-queue": "^0.1.0", + "next-tick": "^1.1.0", + "timers-ext": "^0.1.7" + } + }, + "node_modules/meow": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + }, + "node_modules/meow/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/meow/node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/meow/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-response": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", + "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.7.7", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.7.tgz", + "integrity": "sha512-+0n11YGyRavUR3IlaOzJ0/4Il1avMvJ1VJfhWfCn24ITQXhRr1gghbhhrda6tgtNcpZaWKdSuwKq20Jb7fnlyw==", + "dependencies": { + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/ajv": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz", + "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dependencies": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/minipass": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.0.tgz", + "integrity": "sha512-oGZRv2OT1lO2UF1zUcwdTb3wqUwI0kBGTgt/T7OdSj6M6N5m3o5uPf0AIW6lVxGGoiWUR7e2AwTE+xiwK8WQig==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mocha": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.0.0.tgz", + "integrity": "sha512-0Wl+elVUD43Y0BqPZBzZt8Tnkw9CMUdNYnUsTfOM1vuhJVZL+kiesFYsqwBkEEuEixaiPe5ZQdqDgX2jddhmoA==", + "dependencies": { + "@ungap/promise-all-settled": "1.1.2", + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.4", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "5.0.1", + "ms": "2.1.3", + "nanoid": "3.3.3", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "workerpool": "6.2.1", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" + }, + "engines": { + "node": ">= 14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mochajs" + } + }, + "node_modules/mocha/node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/mocha/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/mocha/node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/mocha/node_modules/diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/mocha/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mocha/node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mocha/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/mocha/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha/node_modules/minimatch/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/mocha/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/mocha/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/mocha/node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/mocha/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/mocha/node_modules/yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/modify-values": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", + "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mri": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.4.tgz", + "integrity": "sha512-6y7IjGPm8AzlvoUrwAaw1tLnUBudaS3752vcd8JtrpGGQn+rXIe63LFVHm/YMwtqAuh+LJPCFdlLYPWM1nYn6w==", + "engines": { + "node": ">=4" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/msw": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/msw/-/msw-1.2.1.tgz", + "integrity": "sha512-bF7qWJQSmKn6bwGYVPXOxhexTCGD5oJSZg8yt8IBClxvo3Dx/1W0zqE1nX9BSWmzRsCKWfeGWcB/vpqV6aclpw==", + "hasInstallScript": true, + "dependencies": { + "@mswjs/cookies": "^0.2.2", + "@mswjs/interceptors": "^0.17.5", + "@open-draft/until": "^1.0.3", + "@types/cookie": "^0.4.1", + "@types/js-levenshtein": "^1.1.1", + "chalk": "4.1.1", + "chokidar": "^3.4.2", + "cookie": "^0.4.2", + "graphql": "^15.0.0 || ^16.0.0", + "headers-polyfill": "^3.1.2", + "inquirer": "^8.2.0", + "is-node-process": "^1.2.0", + "js-levenshtein": "^1.1.6", + "node-fetch": "^2.6.7", + "outvariant": "^1.4.0", + "path-to-regexp": "^6.2.0", + "strict-event-emitter": "^0.4.3", + "type-fest": "^2.19.0", + "yargs": "^17.3.1" + }, + "bin": { + "msw": "cli/index.js" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mswjs" + }, + "peerDependencies": { + "typescript": ">= 4.4.x <= 5.0.x" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/msw/node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/msw/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/msw/node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/msw/node_modules/graphql": { + "version": "16.8.1", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.8.1.tgz", + "integrity": "sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==", + "engines": { + "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" + } + }, + "node_modules/msw/node_modules/path-to-regexp": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.2.tgz", + "integrity": "sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==" + }, + "node_modules/msw/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/msw/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/msw/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/murmurhash": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/murmurhash/-/murmurhash-0.0.2.tgz", + "integrity": "sha512-LKlwdZKWzvCQpMszb2HO5leJ7P9T4m5XuDKku8bM0uElrzqK9cn0+iozwQS8jO4SNjrp4w7olalgd8WgsIjhWA==", + "engines": { + "node": "*" + } + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + }, + "node_modules/nan": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.19.0.tgz", + "integrity": "sha512-nO1xXxfh/RWNxfd/XPfbIfFk5vgLsAxUR9y5O0cHMJu/AW9U95JLXqthYHjEp+8gQ5p96K9jUp8nbVOxCdRbtw==", + "optional": true + }, + "node_modules/nanoid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==" + }, + "node_modules/needle": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.9.1.tgz", + "integrity": "sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==", + "dependencies": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" + } + }, + "node_modules/needle/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + }, + "node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" + }, + "node_modules/nise": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/nise/-/nise-4.1.0.tgz", + "integrity": "sha512-eQMEmGN/8arp0xsvGoQ+B1qvSkR73B1nWSCh7nOt5neMCtwcQVYQGdzQMhcNscktTsWB54xnlSQFzOAPJD8nXA==", + "dependencies": { + "@sinonjs/commons": "^1.7.0", + "@sinonjs/fake-timers": "^6.0.0", + "@sinonjs/text-encoding": "^0.7.1", + "just-extend": "^4.0.2", + "path-to-regexp": "^1.7.0" + } + }, + "node_modules/nise/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + }, + "node_modules/nise/node_modules/path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "dependencies": { + "isarray": "0.0.1" + } + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/nock": { + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/nock/-/nock-13.2.1.tgz", + "integrity": "sha512-CoHAabbqq/xZEknubuyQMjq6Lfi5b7RtK6SoNK6m40lebGp3yiMagWtIoYaw2s9sISD7wPuCfwFpivVHX/35RA==", + "dependencies": { + "debug": "^4.1.0", + "json-stringify-safe": "^5.0.1", + "lodash.set": "^4.3.2", + "propagate": "^2.0.0" + }, + "engines": { + "node": ">= 10.13" + } + }, + "node_modules/node-dir": { + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", + "integrity": "sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==", + "dependencies": { + "minimatch": "^3.0.2" + }, + "engines": { + "node": ">= 0.10.5" + } + }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==" + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" + }, + "node_modules/nodemon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.0.1.tgz", + "integrity": "sha512-g9AZ7HmkhQkqXkRc20w+ZfQ73cHLbE8hnPbtaFbFtCumZsjyMhKk9LajQ07U5Ux28lvFjZ5X7HvWR1xzU8jHVw==", + "dependencies": { + "chokidar": "^3.5.2", + "debug": "^3.2.7", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.1.2", + "pstree.remy": "^1.1.8", + "semver": "^7.5.3", + "simple-update-notifier": "^2.0.0", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" + } + }, + "node_modules/nodemon/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/nodemon/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/nodemon/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/nodemon/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/noop-console": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/noop-console/-/noop-console-0.8.0.tgz", + "integrity": "sha512-phCDi1IqZbUYZtNPp1jzfHju9icjBaPcwFFERb0ywhPny4bfBcg7yfJmmzhkeGKBun5IZ1fVH2z7vKEkb4jWBA==", + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/nopt": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", + "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", + "dependencies": { + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/normalize.css": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/normalize.css/-/normalize.css-8.0.1.tgz", + "integrity": "sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==" + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/nwsapi": { + "version": "2.2.9", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.9.tgz", + "integrity": "sha512-2f3F0SEEer8bBu0dsNCFF50N0cTThV1nWFYcEYFZttdW0lDAoybv9cQoK7X7/68Z89S7FoRrVjP1LPX4XRf9vg==" + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", + "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.hasown": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.4.tgz", + "integrity": "sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==", + "dependencies": { + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" + }, + "node_modules/on-exit-leak-free": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz", + "integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/optionator/node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ospath": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", + "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==" + }, + "node_modules/outvariant": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.4.2.tgz", + "integrity": "sha512-Ou3dJ6bA/UJ5GVHxah4LnqDwZRwAmWxrG3wtrHrbGnP4RnLCtA64A4F+ae7Y8ww660JaddSoArUR5HjipWSHAQ==" + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-queue": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", + "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", + "dependencies": { + "eventemitter3": "^4.0.4", + "p-timeout": "^3.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "dependencies": { + "p-finally": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "engines": { + "node": ">=4" + } + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/parse-path": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-7.0.0.tgz", + "integrity": "sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==", + "dependencies": { + "protocols": "^2.0.0" + } + }, + "node_modules/parse-url": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-8.1.0.tgz", + "integrity": "sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==", + "dependencies": { + "parse-path": "^7.0.0" + } + }, + "node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-scurry": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.2.tgz", + "integrity": "sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-type/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "engines": { + "node": "*" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "engines": { + "node": ">=6" + } + }, + "node_modules/pino": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-6.14.0.tgz", + "integrity": "sha512-iuhEDel3Z3hF9Jfe44DPXR8l07bhjuFY3GMHIXbjnY9XcafbyDDwl2sN2vw2GjMPf5Nkoe+OFao7ffn9SXaKDg==", + "dependencies": { + "fast-redact": "^3.0.0", + "fast-safe-stringify": "^2.0.8", + "flatstr": "^1.0.12", + "pino-std-serializers": "^3.1.0", + "process-warning": "^1.0.0", + "quick-format-unescaped": "^4.0.3", + "sonic-boom": "^1.0.2" + }, + "bin": { + "pino": "bin.js" + } + }, + "node_modules/pino-abstract-transport": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.2.0.tgz", + "integrity": "sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==", + "dependencies": { + "readable-stream": "^4.0.0", + "split2": "^4.0.0" + } + }, + "node_modules/pino-abstract-transport/node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/pino-pretty": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-10.3.1.tgz", + "integrity": "sha512-az8JbIYeN/1iLj2t0jR9DV48/LQ3RC6hZPpapKPkb84Q+yTidMCpgWxIT3N0flnBDilyBQ1luWNpOeJptjdp/g==", + "dev": true, + "dependencies": { + "colorette": "^2.0.7", + "dateformat": "^4.6.3", + "fast-copy": "^3.0.0", + "fast-safe-stringify": "^2.1.1", + "help-me": "^5.0.0", + "joycon": "^3.1.1", + "minimist": "^1.2.6", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "^1.0.0", + "pump": "^3.0.0", + "readable-stream": "^4.0.0", + "secure-json-parse": "^2.4.0", + "sonic-boom": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "bin": { + "pino-pretty": "bin.js" + } + }, + "node_modules/pino-std-serializers": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-3.2.0.tgz", + "integrity": "sha512-EqX4pwDPrt3MuOAAUBMU0Tk5kR/YcCM5fNPEzgCO2zJ5HfX0vbiH9HbJglnyeQsN96Kznae6MWD47pZB5avTrg==" + }, + "node_modules/pino/node_modules/sonic-boom": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-1.4.1.tgz", + "integrity": "sha512-LRHh/A8tpW7ru89lrlkU4AszXt1dbwSjVWguGrmlxE7tawVmDBlI1PILMkXAxJTwqhgsEeTHzj36D5CmHgQmNg==", + "dependencies": { + "atomic-sleep": "^1.0.0", + "flatstr": "^1.0.12" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-dir/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/pkginfo": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.1.tgz", + "integrity": "sha512-8xCNE/aT/EXKenuMDZ+xTVwkT8gsoHN2z/Q29l80u0ppGEXVvsKRzNMbtKhg8LS8k1tJLAHHylf6p4VFmP6XUQ==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/playwright-chromium": { + "version": "1.25.0", + "resolved": "https://registry.npmjs.org/playwright-chromium/-/playwright-chromium-1.25.0.tgz", + "integrity": "sha512-FH9ho3noAWVStCJx4XW78+D8QW0A99WDp53DDkYeVdEpJqCmAIKHCSE6dl5XtaDKrZPYC1ZG5hGXQh1K5H/p+g==", + "hasInstallScript": true, + "dependencies": { + "playwright-core": "1.25.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/playwright-core": { + "version": "1.25.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.25.0.tgz", + "integrity": "sha512-kZ3Jwaf3wlu0GgU0nB8UMQ+mXFTqBIFz9h1svTlNduNKjnbPXFxw7mJanLVjqxHJRn62uBfmgBj93YHidk2N5Q==", + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-calc": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", + "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", + "dependencies": { + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0" + }, + "peerDependencies": { + "postcss": "^8.2.2" + } + }, + "node_modules/postcss-colormin": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz", + "integrity": "sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-convert-values": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz", + "integrity": "sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-comments": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", + "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", + "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-empty": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", + "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", + "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-loader": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.4.tgz", + "integrity": "sha512-iW5WTTBSC5BfsBJ9daFMPVrLT36MrNiC6fqOZTTaHjBNX6Pfd5p+hSBqe/fEeNd7pc13QiAyGt7VdGMw4eRC4A==", + "dependencies": { + "cosmiconfig": "^8.3.5", + "jiti": "^1.20.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + } + }, + "node_modules/postcss-loader/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/postcss-media-query-parser": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", + "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==" + }, + "node_modules/postcss-merge-longhand": { + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz", + "integrity": "sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^5.1.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-merge-rules": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz", + "integrity": "sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^3.1.0", + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", + "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", + "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", + "dependencies": { + "colord": "^2.9.1", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-params": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz", + "integrity": "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==", + "dependencies": { + "browserslist": "^4.21.4", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", + "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz", + "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==", + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz", + "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==", + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", + "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", + "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", + "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz", + "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-string": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", + "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", + "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz", + "integrity": "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", + "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", + "dependencies": { + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", + "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-ordered-values": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz", + "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==", + "dependencies": { + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz", + "integrity": "sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", + "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-resolve-nested-selector": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", + "integrity": "sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==" + }, + "node_modules/postcss-safe-parser": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", + "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.3.3" + } + }, + "node_modules/postcss-scss": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.4.tgz", + "integrity": "sha512-aBBbVyzA8b3hUL0MGrpydxxXKXFZc5Eqva0Q3V9qsBOLEMsjb6w49WfpsoWzpEgcqJGW4t7Rio8WXVU9Gd8vWg==", + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.3.3" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.16", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz", + "integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-svgo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", + "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "svgo": "^2.7.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", + "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, + "node_modules/postcss/node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/process-warning": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-1.0.0.tgz", + "integrity": "sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==" + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/propagate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", + "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==" + }, + "node_modules/protocols": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/protocols/-/protocols-2.0.1.tgz", + "integrity": "sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-from-env": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", + "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==" + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + }, + "node_modules/pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==" + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/pure-rand": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ] + }, + "node_modules/q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/qjobs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", + "engines": { + "node": ">=0.9" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==", + "dependencies": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/quick-format-unescaped": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", + "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==" + }, + "node_modules/quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ramda": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.2.tgz", + "integrity": "sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA==" + }, + "node_modules/randexp": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.5.3.tgz", + "integrity": "sha512-U+5l2KrcMNOUPYvazA3h5ekF80FHTUG+87SEAmHZmolh1M+i/WyTCxVzmi+tidIa1tM4BSe8g2Y/D3loWDjj+w==", + "dependencies": { + "drange": "^1.0.2", + "ret": "^0.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/react": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-diff-viewer": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/react-diff-viewer/-/react-diff-viewer-3.1.1.tgz", + "integrity": "sha512-rmvwNdcClp6ZWdS11m1m01UnBA4OwYaLG/li0dB781e/bQEzsGyj+qewVd6W5ztBwseQ72pO7nwaCcq5jnlzcw==", + "dependencies": { + "classnames": "^2.2.6", + "create-emotion": "^10.0.14", + "diff": "^4.0.1", + "emotion": "^10.0.14", + "memoize-one": "^5.0.4", + "prop-types": "^15.6.2" + }, + "engines": { + "node": ">= 8" + }, + "peerDependencies": { + "react": "^15.3.0 || ^16.0.0", + "react-dom": "^15.3.0 || ^16.0.0" + } + }, + "node_modules/react-docgen": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-5.3.1.tgz", + "integrity": "sha512-YG7YujVTwlLslr2Ny8nQiUfbBuEwKsLHJdQTSdEga1eY/nRFh/7LjCWUn6ogYhu2WDKg4z+6W/BJtUi+DPUIlA==", + "dependencies": { + "@babel/core": "^7.7.5", + "@babel/runtime": "^7.7.6", + "ast-types": "^0.14.2", + "commander": "^2.19.0", + "doctrine": "^3.0.0", + "neo-async": "^2.6.1", + "node-dir": "^0.1.10", + "strip-indent": "^3.0.0" + }, + "bin": { + "react-docgen": "bin/react-docgen.js" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/react-docgen/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/react-dom": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", + "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "scheduler": "^0.20.2" + }, + "peerDependencies": { + "react": "17.0.2" + } + }, + "node_modules/react-head": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/react-head/-/react-head-3.4.0.tgz", + "integrity": "sha512-T+a+WTN2lQECle3KdUBTnXMpjzOTDRFS1f2jCLP9H64XBXgayxadoLkzWSiJD793zE8IMWzQ8xKe3V573es9NQ==", + "dependencies": { + "@babel/runtime": "^7.8.3" + }, + "peerDependencies": { + "react": ">=16.3", + "react-dom": ">=16.3" + } + }, + "node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" + }, + "node_modules/react-refresh": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", + "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-shallow-renderer": { + "version": "16.15.0", + "resolved": "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz", + "integrity": "sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==", + "dependencies": { + "object-assign": "^4.1.1", + "react-is": "^16.12.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-test-renderer": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-17.0.2.tgz", + "integrity": "sha512-yaQ9cB89c17PUb0x6UfWRs7kQCorVdHlutU1boVPEsB8IDZH6n9tHxMacc3y0JoXOJUsZb/t/Mb8FUWMKaM7iQ==", + "dependencies": { + "object-assign": "^4.1.1", + "react-is": "^17.0.2", + "react-shallow-renderer": "^16.13.1", + "scheduler": "^0.20.2" + }, + "peerDependencies": { + "react": "17.0.2" + } + }, + "node_modules/read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==", + "dependencies": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + }, + "node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/readable-stream": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/readdir-glob": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", + "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", + "dependencies": { + "minimatch": "^5.1.0" + } + }, + "node_modules/readdir-glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/readdir-glob/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/real-require": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz", + "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==", + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/redis": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/redis/-/redis-3.1.2.tgz", + "integrity": "sha512-grn5KoZLr/qrRQVwoSkmzdbw6pwF+/rwODtrOr6vuBRiR/f3rjSTGupbF90Zpqm2oenix8Do6RV7pYEkGwlKkw==", + "dependencies": { + "denque": "^1.5.0", + "redis-commands": "^1.7.0", + "redis-errors": "^1.2.0", + "redis-parser": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-redis" + } + }, + "node_modules/redis-commands": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.7.0.tgz", + "integrity": "sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ==" + }, + "node_modules/redis-errors": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", + "integrity": "sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==", + "engines": { + "node": ">=4" + } + }, + "node_modules/redis-lru": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/redis-lru/-/redis-lru-0.6.0.tgz", + "integrity": "sha512-nDH+EHcUXp+cJdnkq8Hb+99kr82EDmAiFY40Bb02nB00A4N/dUqw3SCIJSgH8SUP2uee9EFijbMlf5WSul22uw==" + }, + "node_modules/redis-mock": { + "version": "0.49.0", + "resolved": "https://registry.npmjs.org/redis-mock/-/redis-mock-0.49.0.tgz", + "integrity": "sha512-FW/cLZvF1PAVN/PYIwXf1vQRoJCyYCwUMtq8BXRwrvb9LNNAT4RKXM02Qlt6qSkC/98hmHlU2EGoQoxVy3E2lA==" + }, + "node_modules/redis-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz", + "integrity": "sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==", + "dependencies": { + "redis-errors": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + }, + "node_modules/regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "dependencies": { + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dependencies": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/remove-accents": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.4.2.tgz", + "integrity": "sha512-7pXIJqJOq5tFgG1A2Zxti3Ht8jJF337m4sowbuHsW30ZnkQFnDzy9qBNhgzX8ZLW4+UBcXiiR7SwR6pokHsxiA==" + }, + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==" + }, + "node_modules/renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "node_modules/request-progress": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", + "integrity": "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==", + "dependencies": { + "throttleit": "^1.0.0" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requireindex": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", + "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", + "engines": { + "node": ">=0.10.5" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "engines": { + "node": ">=10" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ret": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.2.2.tgz", + "integrity": "sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.1.tgz", + "integrity": "sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==" + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "2.79.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", + "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-require": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/safe-require/-/safe-require-1.0.4.tgz", + "integrity": "sha512-1elAbSH1u7HVMfbuqktLWAN0wMOeT+FnJVqMhBgEJLvL95m+KT433tiJdGMV1e3TstQXRt1YrKQDRBu0Kpk4WA==" + }, + "node_modules/safe-stable-stringify": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", + "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", + "engines": { + "node": ">=10" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/sass": { + "version": "1.54.5", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.54.5.tgz", + "integrity": "sha512-p7DTOzxkUPa/63FU0R3KApkRHwcVZYC0PLnLm5iyZACyp15qSi32x7zVUhRdABAATmkALqgGrjCJAcWvobmhHw==", + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/sass-loader": { + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz", + "integrity": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==", + "dev": true, + "dependencies": { + "klona": "^2.0.4", + "neo-async": "^2.6.2" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", + "sass": "^1.3.0", + "sass-embedded": "*", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + } + } + }, + "node_modules/sax": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", + "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==" + }, + "node_modules/saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.7" + } + }, + "node_modules/scheduler": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", + "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "node_modules/schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/secure-json-parse": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz", + "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==" + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==" + }, + "node_modules/selfsigned": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", + "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", + "dependencies": { + "@types/node-forge": "^1.3.0", + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/semver-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-1.0.0.tgz", + "integrity": "sha512-1vZcoRC+LPtHFkLUPyrabsATDSHerxW+hJBN8h04HZOZBuewbXaNROtUVdEPrTdZsWNq6sfsXDhd48GB2xTG4g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/send/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-cookie-parser": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz", + "integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==" + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/simple-update-notifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", + "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/simple-update-notifier/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/simple-wcswidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-wcswidth/-/simple-wcswidth-1.0.1.tgz", + "integrity": "sha512-xMO/8eNREtaROt7tJvWJqHBDTMFN4eiQ5I4JRMuilwfnFcV5W9u7RUkueNkdw0jPqGMX36iCywelS5yilTuOxg==" + }, + "node_modules/sinon": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-10.0.0.tgz", + "integrity": "sha512-XAn5DxtGVJBlBWYrcYKEhWCz7FLwZGdyvANRyK06419hyEpdT0dMc5A8Vcxg5SCGHc40CsqoKsc1bt1CbJPfNw==", + "deprecated": "16.1.1", + "dependencies": { + "@sinonjs/commons": "^1.8.1", + "@sinonjs/fake-timers": "^6.0.1", + "@sinonjs/samsam": "^5.3.1", + "diff": "^4.0.2", + "nise": "^4.1.0", + "supports-color": "^7.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/sinon" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + }, + "node_modules/slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/socket.io": { + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.5.tgz", + "integrity": "sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA==", + "dependencies": { + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "cors": "~2.8.5", + "debug": "~4.3.2", + "engine.io": "~6.5.2", + "socket.io-adapter": "~2.5.2", + "socket.io-parser": "~4.2.4" + }, + "engines": { + "node": ">=10.2.0" + } + }, + "node_modules/socket.io-adapter": { + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.4.tgz", + "integrity": "sha512-wDNHGXGewWAjQPt3pyeYBtpWSq9cLE5UW1ZUPL/2eGK9jtse/FpXib7epSTsz0Q0m+6sg6Y4KtcFTlah1bdOVg==", + "dependencies": { + "debug": "~4.3.4", + "ws": "~8.11.0" + } + }, + "node_modules/socket.io-parser": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/sonic-boom": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.8.1.tgz", + "integrity": "sha512-y4Z8LCDBuum+PBP3lSV7RHrXscqksve/bi0as7mhwVnBW+/wUqKT/2Kb7um8yqcFy0duYbbPxzt89Zy2nOCaxg==", + "dependencies": { + "atomic-sleep": "^1.0.0" + } + }, + "node_modules/source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==" + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz", + "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==" + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/spdy-transport/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/split2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "dependencies": { + "readable-stream": "^3.0.0" + } + }, + "node_modules/split2/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, + "node_modules/sshpk": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", + "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "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" + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/stackframe": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==" + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/stop-iteration-iterator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", + "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "dependencies": { + "internal-slot": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/stream-browserify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", + "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", + "dependencies": { + "inherits": "~2.0.4", + "readable-stream": "^3.5.0" + } + }, + "node_modules/stream-browserify/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/stream-http": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", + "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", + "dependencies": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "xtend": "^4.0.2" + } + }, + "node_modules/stream-http/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/streamroller": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.5.tgz", + "integrity": "sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==", + "dependencies": { + "date-format": "^4.0.14", + "debug": "^4.3.4", + "fs-extra": "^8.1.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/streamroller/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/streamroller/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/streamroller/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/strict-event-emitter": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.4.6.tgz", + "integrity": "sha512-12KWeb+wixJohmnwNFerbyiBrAlq5qJLwIt38etRtKtmmHyDSoGlIqFE9wx+4IwG0aDjI7GV8tc8ZccjWZZtTg==" + }, + "node_modules/strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/string-dedent": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/string-dedent/-/string-dedent-3.0.1.tgz", + "integrity": "sha512-A2zCXSgpPrpFi1lDJlDwIPYakBWeDtQZ8ZBKssB8M/WbtNEKTzsl1yCDRmHx55jSB27xZDQ6NOtRYekESWx6fw==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", + "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "regexp.prototype.flags": "^1.5.2", + "set-function-name": "^2.0.2", + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/style-loader": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz", + "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==", + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/style-search": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", + "integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==" + }, + "node_modules/stylehacks": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz", + "integrity": "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/stylelint": { + "version": "14.11.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-14.11.0.tgz", + "integrity": "sha512-OTLjLPxpvGtojEfpESWM8Ir64Z01E89xsisaBMUP/ngOx1+4VG2DPRcUyCCiin9Rd3kPXPsh/uwHd9eqnvhsYA==", + "dependencies": { + "@csstools/selector-specificity": "^2.0.2", + "balanced-match": "^2.0.0", + "colord": "^2.9.3", + "cosmiconfig": "^7.0.1", + "css-functions-list": "^3.1.0", + "debug": "^4.3.4", + "fast-glob": "^3.2.11", + "fastest-levenshtein": "^1.0.16", + "file-entry-cache": "^6.0.1", + "global-modules": "^2.0.0", + "globby": "^11.1.0", + "globjoin": "^0.1.4", + "html-tags": "^3.2.0", + "ignore": "^5.2.0", + "import-lazy": "^4.0.0", + "imurmurhash": "^0.1.4", + "is-plain-object": "^5.0.0", + "known-css-properties": "^0.25.0", + "mathml-tag-names": "^2.1.3", + "meow": "^9.0.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.16", + "postcss-media-query-parser": "^0.2.3", + "postcss-resolve-nested-selector": "^0.1.1", + "postcss-safe-parser": "^6.0.0", + "postcss-selector-parser": "^6.0.10", + "postcss-value-parser": "^4.2.0", + "resolve-from": "^5.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "style-search": "^0.1.0", + "supports-hyperlinks": "^2.2.0", + "svg-tags": "^1.0.0", + "table": "^6.8.0", + "v8-compile-cache": "^2.3.0", + "write-file-atomic": "^4.0.2" + }, + "bin": { + "stylelint": "bin/stylelint.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/stylelint" + } + }, + "node_modules/stylelint-config-prettier": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/stylelint-config-prettier/-/stylelint-config-prettier-9.0.3.tgz", + "integrity": "sha512-5n9gUDp/n5tTMCq1GLqSpA30w2sqWITSSEiAWQlpxkKGAUbjcemQ0nbkRvRUa0B1LgD3+hCvdL7B1eTxy1QHJg==", + "bin": { + "stylelint-config-prettier": "bin/check.js", + "stylelint-config-prettier-check": "bin/check.js" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "stylelint": ">=11.0.0" + } + }, + "node_modules/stylelint-config-recommended": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-9.0.0.tgz", + "integrity": "sha512-9YQSrJq4NvvRuTbzDsWX3rrFOzOlYBmZP+o513BJN/yfEmGSr0AxdvrWs0P/ilSpVV/wisamAHu5XSk8Rcf4CQ==", + "peerDependencies": { + "stylelint": "^14.10.0" + } + }, + "node_modules/stylelint-config-recommended-scss": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-8.0.0.tgz", + "integrity": "sha512-BxjxEzRaZoQb7Iinc3p92GS6zRdRAkIuEu2ZFLTxJK2e1AIcCb5B5MXY9KOXdGTnYFZ+KKx6R4Fv9zU6CtMYPQ==", + "dependencies": { + "postcss-scss": "^4.0.2", + "stylelint-config-recommended": "^9.0.0", + "stylelint-scss": "^4.0.0" + }, + "peerDependencies": { + "postcss": "^8.3.3", + "stylelint": "^14.10.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + } + } + }, + "node_modules/stylelint-prettier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/stylelint-prettier/-/stylelint-prettier-2.0.0.tgz", + "integrity": "sha512-jvT3G+9lopkeB0ARmDPszyfaOnvnIF+30QCjZxyt7E6fynI1T9mOKgYDNb9bXX17M7PXMZaX3j/26wqakjp1tw==", + "dependencies": { + "prettier-linter-helpers": "^1.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "prettier": ">=2.0.0", + "stylelint": ">=14.0.0" + } + }, + "node_modules/stylelint-scss": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-4.7.0.tgz", + "integrity": "sha512-TSUgIeS0H3jqDZnby1UO1Qv3poi1N8wUYIJY6D1tuUq2MN3lwp/rITVo0wD+1SWTmRm0tNmGO0b7nKInnqF6Hg==", + "dependencies": { + "postcss-media-query-parser": "^0.2.3", + "postcss-resolve-nested-selector": "^0.1.1", + "postcss-selector-parser": "^6.0.11", + "postcss-value-parser": "^4.2.0" + }, + "peerDependencies": { + "stylelint": "^14.5.1 || ^15.0.0" + } + }, + "node_modules/stylelint/node_modules/balanced-match": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", + "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==" + }, + "node_modules/stylelint/node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stylelint/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/stylelint/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + }, + "node_modules/stylelint/node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stylelint/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/stylelint/node_modules/meow": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", + "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize": "^1.2.0", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stylelint/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stylelint/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/stylelint/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/stylelint/node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stylelint/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/stylelint/node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/stylelint/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/stylelint/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stylelint/node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/stylelint/node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/stylelint/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/sumchecker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-2.0.2.tgz", + "integrity": "sha512-16O54scwFPgX60Of/+QJSufmklGqnHZyBK6uewBvtcp3VxT5RM65c/OnGCeEPnjBF8TJoO5Pf6gHAOXfxIjNpA==", + "dependencies": { + "debug": "^2.2.0" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/sumchecker/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/sumchecker/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==" + }, + "node_modules/svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/svgo/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/swc-loader": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/swc-loader/-/swc-loader-0.2.1.tgz", + "integrity": "sha512-opJG9R5Dl+Fa0QihOZO9v6vueB+JzRhJZw+c4ZRCqUHG2RZL10eHZRHMdQoDz6bvLp7XWe7XBIMUkuWtoGfMJw==", + "peerDependencies": { + "@swc/core": "^1.2.147", + "webpack": ">=2" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" + }, + "node_modules/sync-exec": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/sync-exec/-/sync-exec-0.6.2.tgz", + "integrity": "sha512-FHup6L3hMWn+2asiIC/7kj/3CaMM8aAAKPx62DRk42hQkz4H2yBADR0OnnY8Eh5Bxrzb371aPUfnW4WzAUYItQ==", + "optional": true + }, + "node_modules/table": { + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.2.tgz", + "integrity": "sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==", + "dependencies": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table/node_modules/ajv": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz", + "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/table/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar-stream/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser": { + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.0.tgz", + "integrity": "sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg==", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.20", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-extensions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", + "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" + }, + "node_modules/thread-stream": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-2.7.0.tgz", + "integrity": "sha512-qQiRWsU/wvNolI6tbbCKd9iKaTnCXsTwVxhhKM6nctPdujTyztjlbUkUTUymidWcMnZ5pWR0ej4a0tjsW021vw==", + "dependencies": { + "real-require": "^0.2.0" + } + }, + "node_modules/throttleit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.1.tgz", + "integrity": "sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ==", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + }, + "node_modules/through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dependencies": { + "readable-stream": "3" + } + }, + "node_modules/through2/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" + }, + "node_modules/timers-ext": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", + "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", + "dependencies": { + "es5-ext": "~0.10.46", + "next-tick": "1" + } + }, + "node_modules/tiny-lru": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/tiny-lru/-/tiny-lru-6.0.1.tgz", + "integrity": "sha512-k/vdHz+bFALjmik0URLWBYNuO0hCABTL5dullbZBXvFDdlL8RrKaeLR6YuHfX+6ZXOLkHw+HpNLCUA7DtLMQmg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/tmp": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", + "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", + "engines": { + "node": ">=14.14" + } + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==" + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "dependencies": { + "nopt": "~1.0.10" + }, + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, + "node_modules/touch/node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "node_modules/touch/node_modules/nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tough-cookie": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/traverse": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", + "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==", + "engines": { + "node": "*" + } + }, + "node_modules/trim-newlines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/tty-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", + "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==" + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" + }, + "node_modules/type": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" + }, + "node_modules/typescript": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", + "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=12.20" + } + }, + "node_modules/ua-parser-js": { + "version": "0.7.37", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.37.tgz", + "integrity": "sha512-xV8kqRKM+jhMvcHWUKthV9fNebIzrNy//2O9ZwWcfiBFR5f25XVZPLlEajk/sf3Ra15V92isyQqnIEXRDaZWEA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + } + ], + "engines": { + "node": "*" + } + }, + "node_modules/uglify-js": { + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==" + }, + "node_modules/underscore": { + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", + "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==" + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "engines": { + "node": ">=4" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unix-dgram": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/unix-dgram/-/unix-dgram-2.0.6.tgz", + "integrity": "sha512-AURroAsb73BZ6CdAyMrTk/hYKNj3DuYYEuOaB8bYMOHGKupRNScw90Q5C71tWJc3uE7dIeXRyuwN0xLLq3vDTg==", + "hasInstallScript": true, + "optional": true, + "dependencies": { + "bindings": "^1.5.0", + "nan": "^2.16.0" + }, + "engines": { + "node": ">=0.10.48" + } + }, + "node_modules/unixify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unixify/-/unixify-1.0.0.tgz", + "integrity": "sha512-6bc58dPYhCMHHuwxldQxO3RRNZ4eCogZ/st++0+fcC1nr0jiGUtAdBJ2qzmLQWSxbtz42pWt4QQMiZ9HvZf5cg==", + "dependencies": { + "normalize-path": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unixify/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/unzipper": { + "version": "0.10.14", + "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.14.tgz", + "integrity": "sha512-ti4wZj+0bQTiX2KmKWuwj7lhV+2n//uXEotUmGuQqrbVZSEGFMbI68+c6JCQ8aAmUWYvtHEz2A8K6wXvueR/6g==", + "dependencies": { + "big-integer": "^1.6.17", + "binary": "~0.3.0", + "bluebird": "~3.4.1", + "buffer-indexof-polyfill": "~1.0.0", + "duplexer2": "~0.1.4", + "fstream": "^1.0.12", + "graceful-fs": "^4.2.2", + "listenercount": "~1.0.1", + "readable-stream": "~2.3.6", + "setimmediate": "~1.0.4" + } + }, + "node_modules/unzipper/node_modules/bluebird": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", + "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==" + }, + "node_modules/unzipper/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/unzipper/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/unzipper/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.15.tgz", + "integrity": "sha512-K9HWH62x3/EalU1U6sjSZiylm9C8tgq2mSvshZpqc7QE69RaA2qjhkW2HlNA0tFpEbtyFz7HTqbSdN4MSwUodA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.2", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "node_modules/url-join": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", + "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==" + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" + }, + "node_modules/util": { + "version": "0.12.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.4.tgz", + "integrity": "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==", + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "safe-buffer": "^5.1.2", + "which-typed-array": "^1.1.2" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", + "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==" + }, + "node_modules/v8-to-istanbul": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", + "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/validate-commit-msg": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/validate-commit-msg/-/validate-commit-msg-2.14.0.tgz", + "integrity": "sha512-sETG7UmikRVseMyeayyF6L1svmNXoZiyG4TVyLYSVSYjcSuZT602T+irJKjIyE+FutGyngSLxHGLTeyFy+oyag==", + "deprecated": "Check out CommitLint which provides the same functionality with a more user-focused experience.", + "dev": true, + "dependencies": { + "conventional-commit-types": "^2.0.0", + "find-parent-dir": "^0.3.0", + "findup": "0.1.5", + "semver-regex": "1.0.0" + }, + "bin": { + "validate-commit-msg": "lib/cli.js" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/verror/node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" + }, + "node_modules/vite": { + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.8.tgz", + "integrity": "sha512-EtQU16PLIJpAZol2cTLttNP1mX6L0SyI0pgQB1VOoWeQnMSvtiwovV3D6NcjN8CZQWWyESD2v5NGnpz5RvgOZA==", + "dependencies": { + "esbuild": "^0.15.9", + "postcss": "^8.4.18", + "resolve": "^1.22.1", + "rollup": "^2.79.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "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 + } + } + }, + "node_modules/vite/node_modules/@esbuild/linux-loong64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz", + "integrity": "sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/esbuild": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz", + "integrity": "sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "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" + } + }, + "node_modules/vite/node_modules/esbuild-android-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz", + "integrity": "sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/esbuild-android-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz", + "integrity": "sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/esbuild-darwin-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz", + "integrity": "sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/esbuild-darwin-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz", + "integrity": "sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/esbuild-freebsd-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz", + "integrity": "sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/esbuild-freebsd-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz", + "integrity": "sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/esbuild-linux-32": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz", + "integrity": "sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/esbuild-linux-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz", + "integrity": "sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/esbuild-linux-arm": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz", + "integrity": "sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/esbuild-linux-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz", + "integrity": "sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/esbuild-linux-mips64le": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz", + "integrity": "sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/esbuild-linux-ppc64le": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz", + "integrity": "sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/esbuild-linux-riscv64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz", + "integrity": "sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/esbuild-linux-s390x": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz", + "integrity": "sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/esbuild-netbsd-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz", + "integrity": "sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/esbuild-openbsd-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz", + "integrity": "sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/esbuild-sunos-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz", + "integrity": "sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/esbuild-windows-32": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz", + "integrity": "sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/esbuild-windows-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz", + "integrity": "sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/esbuild-windows-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz", + "integrity": "sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", + "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", + "dependencies": { + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/warning": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", + "integrity": "sha512-jMBt6pUrKn5I+OGgtQ4YZLdhIeJmObddh6CsibPxyQ5yPZm1XExSyzC1LCNX7BzhxWgiHmizBWJTHJIjMjTQYQ==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/watchpack": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", + "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/web-encoding": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/web-encoding/-/web-encoding-1.1.5.tgz", + "integrity": "sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==", + "dependencies": { + "util": "^0.12.3" + }, + "optionalDependencies": { + "@zxing/text-encoding": "0.9.0" + } + }, + "node_modules/web-vitals": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-3.5.2.tgz", + "integrity": "sha512-c0rhqNcHXRkY/ogGDJQxZ9Im9D19hDihbzSQJrsioex+KnFgmMzBiy57Z1EjkhX/+OjyBpclDCzz2ITtjokFmg==" + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/webpack": { + "version": "5.82.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.82.1.tgz", + "integrity": "sha512-C6uiGQJ+Gt4RyHXXYt+v9f+SN1v83x68URwgxNQ98cvH8kxiuywWGP4XeNZ1paOzZ63aY3cTciCEQJNFUljlLw==", + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.14.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.2", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.7", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-middleware": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-6.1.2.tgz", + "integrity": "sha512-Wu+EHmX326YPYUpQLKmKbTyZZJIB8/n6R09pTmB03kJmnMsVPTo9COzHZFr01txwaCAuZvfBJE4ZCHRcKs5JaQ==", + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.12", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + } + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz", + "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/webpack-dev-middleware/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server": { + "version": "4.15.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz", + "integrity": "sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==", + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.5", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.4", + "ws": "^8.13.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ajv": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz", + "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-server/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-server/node_modules/ipaddr.js": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", + "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server/node_modules/webpack-dev-middleware": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", + "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz", + "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/webpack-hot-middleware": { + "version": "2.25.4", + "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.25.4.tgz", + "integrity": "sha512-IRmTspuHM06aZh98OhBJtqLpeWFM8FXJS5UYpKYxCJzyFoyWj1w6VGFfomZU7OPA55dMLrQK0pRT1eQ3PACr4w==", + "dependencies": { + "ansi-html-community": "0.0.8", + "html-entities": "^2.1.0", + "strip-ansi": "^6.0.0" + } + }, + "node_modules/webpack-manifest-plugin": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-5.0.0.tgz", + "integrity": "sha512-8RQfMAdc5Uw3QbCQ/CBV/AXqOR8mt03B6GJmRbhWopE8GzRfEpn+k0ZuWywxW+5QZsffhmFDY1J6ohqJo+eMuw==", + "dependencies": { + "tapable": "^2.0.0", + "webpack-sources": "^2.2.0" + }, + "engines": { + "node": ">=12.22.0" + }, + "peerDependencies": { + "webpack": "^5.47.0" + } + }, + "node_modules/webpack-manifest-plugin/node_modules/webpack-sources": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz", + "integrity": "sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==", + "dependencies": { + "source-list-map": "^2.0.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack-merge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", + "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", + "dependencies": { + "lodash": "^4.17.15" + } + }, + "node_modules/webpack-node-externals": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz", + "integrity": "sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", + "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==" + }, + "node_modules/workerpool": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==" + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/ws": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dependencies": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yargs-unparser/node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yargs-unparser/node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zip-stream": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.1.tgz", + "integrity": "sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==", + "dependencies": { + "archiver-utils": "^3.0.4", + "compress-commons": "^4.1.2", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/zip-stream/node_modules/archiver-utils": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-3.0.4.tgz", + "integrity": "sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw==", + "dependencies": { + "glob": "^7.2.3", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/zip-stream/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "packages/babel-preset-sui": { + "version": "3.53.0", + "license": "MIT", + "dependencies": { + "@babel/core": "7.18.10", + "@babel/plugin-proposal-decorators": "7.23.7", + "@babel/plugin-syntax-export-default-from": "7.18.6", + "@babel/plugin-syntax-export-namespace-from": "7.8.3", + "@babel/plugin-transform-runtime": "7.23.7", + "@babel/preset-env": "7.18.10", + "@babel/preset-react": "7.18.6", + "@babel/runtime": "7.18.9", + "babel-plugin-preval": "5.0.0", + "babel-plugin-transform-react-remove-prop-types": "0.4.24" + } + }, + "packages/babel-preset-sui/node_modules/@babel/core": { + "version": "7.18.10", + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.18.10", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-module-transforms": "^7.18.9", + "@babel/helpers": "^7.18.9", + "@babel/parser": "^7.18.10", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.18.10", + "@babel/types": "^7.18.10", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "packages/babel-preset-sui/node_modules/@babel/runtime": { + "version": "7.18.9", + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "packages/babel-preset-sui/node_modules/convert-source-map": { + "version": "1.9.0", + "license": "MIT" + }, + "packages/babel-preset-sui/node_modules/regenerator-runtime": { + "version": "0.13.11", + "license": "MIT" + }, + "packages/babel-preset-sui/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "packages/eslint-plugin-sui": { + "version": "1.4.0", + "license": "ISC", + "dependencies": { + "requireindex": "1.2.0", + "string-dedent": "3.0.1" + }, + "devDependencies": { + "@s-ui/test": "8", + "eslint": "8.19.0", + "eslint-doc-generator": "1.0.0", + "eslint-plugin-eslint-plugin": "5.0.0", + "eslint-plugin-node": "11.1.0" + }, + "engines": { + "node": "^14.17.0 || ^16.0.0 || >= 18.0.0" + }, + "peerDependencies": { + "eslint": ">=7" + } + }, + "packages/eslint-plugin-sui/node_modules/@eslint/eslintrc": { + "version": "1.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "packages/eslint-plugin-sui/node_modules/@humanwhocodes/config-array": { + "version": "0.9.5", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "packages/eslint-plugin-sui/node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "dev": true, + "license": "BSD-3-Clause" + }, + "packages/eslint-plugin-sui/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "packages/eslint-plugin-sui/node_modules/eslint": { + "version": "8.19.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint/eslintrc": "^1.3.0", + "@humanwhocodes/config-array": "^0.9.2", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.2", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^6.0.1", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "packages/eslint-plugin-sui/node_modules/eslint-scope": { + "version": "7.2.2", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "packages/eslint-plugin-sui/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "packages/eslint-plugin-sui/node_modules/glob-parent": { + "version": "6.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "packages/eslint-plugin-sui/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "packages/lint-repository-sui": { + "version": "1.4.0", + "devDependencies": { + "@s-ui/test": "8" + } + }, + "packages/sui-bundler": { + "name": "@s-ui/bundler", + "version": "9.60.0", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@babel/core": "7.21.8", + "@builder.io/react-hydration-overlay": "0.0.8", + "@pmmmwh/react-refresh-webpack-plugin": "0.5.10", + "@s-ui/compiler-config": "1", + "@s-ui/helpers": "1", + "@s-ui/sass-loader": "1", + "@swc/core": "1.3.14", + "@swc/helpers": "0.4.12", + "address": "1.2.2", + "autoprefixer": "10.4.8", + "babel-loader": "8.3.0", + "babel-preset-sui": "3", + "buffer": "6.0.3", + "commander": "8.3.0", + "css-loader": "6.7.1", + "css-minimizer-webpack-plugin": "4.0.0", + "esbuild": "0.15.5", + "escape-string-regexp": "4.0.0", + "fast-glob": "3.2.12", + "find-free-ports": "3.0.0", + "html-webpack-inject-attributes-plugin": "1.0.6", + "html-webpack-plugin": "5.5.0", + "https-browserify": "1.0.0", + "mini-css-extract-plugin": "2.7.7", + "postcss": "8.4.31", + "postcss-loader": "7.3.4", + "process": "0.11.10", + "react-refresh": "0.14.0", + "sass": "1.54.5", + "stream-http": "3.2.0", + "strip-ansi": "6.0.1", + "style-loader": "3.3.1", + "swc-loader": "0.2.1", + "url": "0.11.0", + "webpack": "5.82.1", + "webpack-dev-server": "4.15.2", + "webpack-manifest-plugin": "5.0.0", + "webpack-node-externals": "3.0.0" + }, + "bin": { + "sui-bundler": "bin/sui-bundler.js" + } + }, + "packages/sui-bundler/node_modules/commander": { + "version": "8.3.0", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "packages/sui-bundler/node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "packages/sui-ci": { + "name": "@s-ui/ci", + "version": "1.27.0", + "license": "MIT", + "dependencies": { + "@s-ui/mono": "2", + "commander": "8.3.0", + "node-fetch": "2.6.7" + }, + "bin": { + "sui-ci": "bin/sui-ci.js" + }, + "devDependencies": { + "nock": "13.2.1" + } + }, + "packages/sui-ci/node_modules/commander": { + "version": "8.3.0", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "packages/sui-compiler-config": { + "name": "@s-ui/compiler-config", + "version": "1.1.0", + "license": "MIT", + "dependencies": { + "@tsconfig/esm": "1.0.4", + "@tsconfig/vite-react": "2.0.0" + } + }, + "packages/sui-component-dependencies": { + "name": "@s-ui/component-dependencies", + "version": "1.7.0", + "license": "MIT", + "dependencies": { + "@s-ui/theme": "8", + "classnames": "2.2.5" + } + }, + "packages/sui-component-dependencies/node_modules/classnames": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.5.tgz", + "integrity": "sha512-DTt3GhOUDKhh4ONwIJW4lmhyotQmV2LjNlGK/J2hkwUcqcbKkCLAdJPtxQnxnlc7SR3f1CEXCyMmc7WLUsWbNA==" + }, + "packages/sui-consents": { + "name": "@s-ui/consents", + "version": "1.6.0", + "license": "MIT", + "devDependencies": { + "@s-ui/js-compiler": "1", + "@s-ui/react-context": "1", + "@testing-library/react": "11.2.5", + "react": "17", + "react-dom": "17" + }, + "peerDependencies": { + "@s-ui/react-context": "1", + "react": "16 || 17" + } + }, + "packages/sui-consents/node_modules/@testing-library/dom": { + "version": "7.31.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^4.2.0", + "aria-query": "^4.2.2", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.6", + "lz-string": "^1.4.4", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">=10" + } + }, + "packages/sui-consents/node_modules/@testing-library/react": { + "version": "11.2.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5", + "@testing-library/dom": "^7.28.1" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": "*", + "react-dom": "*" + } + }, + "packages/sui-consents/node_modules/@types/aria-query": { + "version": "4.2.2", + "dev": true, + "license": "MIT" + }, + "packages/sui-consents/node_modules/aria-query": { + "version": "4.2.2", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.10.2", + "@babel/runtime-corejs3": "^7.10.2" + }, + "engines": { + "node": ">=6.0" + } + }, + "packages/sui-consents/node_modules/pretty-format": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "packages/sui-critical-css": { + "name": "@s-ui/critical-css", + "version": "1.26.0", + "license": "ISC", + "dependencies": { + "@s-ui/critical-css-middleware": "1", + "clean-css": "5.3.1", + "node-fetch": "2.6.7", + "path-to-regexp": "0.1.7", + "playwright-chromium": "1.25.0" + } + }, + "packages/sui-critical-css-middleware": { + "name": "@s-ui/critical-css-middleware", + "version": "1.1.0", + "dependencies": { + "path-to-regexp": "0.1.7" + } + }, + "packages/sui-critical-css/node_modules/clean-css": { + "version": "5.3.1", + "license": "MIT", + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "packages/sui-dashboard": { + "name": "@s-ui/dashboard", + "version": "1.34.0", + "license": "MIT", + "dependencies": { + "@s-ui/helpers": "1", + "commander": "8.3.0", + "fast-glob": "3.2.11" + }, + "bin": { + "sui-dashboard": "bin/sui-dashboard.js" + } + }, + "packages/sui-dashboard/node_modules/commander": { + "version": "8.3.0", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "packages/sui-dashboard/node_modules/fast-glob": { + "version": "3.2.11", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "packages/sui-decorators": { + "name": "@s-ui/decorators", + "version": "3.26.0", + "license": "MIT", + "dependencies": { + "@s-ui/js": "2", + "hot-shots": "7.7.1", + "redis": "3.1.2", + "redis-lru": "0.6.0", + "redis-mock": "0.49.0", + "tiny-lru": "6.0.1" + }, + "devDependencies": { + "@s-ui/js-compiler": "1", + "sinon": "10.0.0" + } + }, + "packages/sui-domain": { + "name": "@s-ui/domain", + "version": "2.15.0", + "license": "MIT", + "dependencies": { + "axios": "1.6.7" + }, + "devDependencies": { + "@s-ui/js-compiler": "1" + } + }, + "packages/sui-domain/node_modules/axios": { + "version": "1.6.7", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.4", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "packages/sui-domain/node_modules/form-data": { + "version": "4.0.0", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "packages/sui-domain/node_modules/proxy-from-env": { + "version": "1.1.0", + "license": "MIT" + }, + "packages/sui-helpers": { + "name": "@s-ui/helpers", + "version": "1.39.0", + "license": "MIT", + "dependencies": { + "execa": "5.1.1", + "fs-extra": "10.1.0", + "p-queue": "6.6.2" + }, + "devDependencies": {} + }, + "packages/sui-helpers/node_modules/execa": { + "version": "5.1.1", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "packages/sui-helpers/node_modules/get-stream": { + "version": "6.0.1", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/sui-helpers/node_modules/human-signals": { + "version": "2.1.0", + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "packages/sui-hoc": { + "name": "@s-ui/hoc", + "version": "1.37.0", + "dependencies": { + "intersection-observer": "0.10.0" + }, + "devDependencies": { + "@s-ui/js-compiler": "1" + }, + "peerDependencies": { + "@s-ui/react-context": "1", + "prop-types": "15", + "react": "16 || 17" + } + }, + "packages/sui-html-tagger": { + "name": "@s-ui/html-tagger", + "version": "1.8.0", + "dependencies": { + "just-debounce-it": "1.1.0" + } + }, + "packages/sui-html-tagger/node_modules/just-debounce-it": { + "version": "1.1.0", + "license": "MIT" + }, + "packages/sui-i18n": { + "name": "@s-ui/i18n", + "version": "1.34.0", + "license": "MIT", + "dependencies": { + "@s-ui/js": "2" + } + }, + "packages/sui-jest": { + "name": "@s-ui/jest", + "version": "1.2.0", + "license": "MIT", + "dependencies": { + "@swc/jest": "0.2.24", + "@types/jest": "29.2.4", + "jest": "29.3.1", + "jest-environment-jsdom": "29.3.1", + "read-pkg-up": "7.0.1" + }, + "bin": { + "sui-jest": "bin/sui-jest.js" + } + }, + "packages/sui-jest/node_modules/find-up": { + "version": "4.1.0", + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "packages/sui-jest/node_modules/hosted-git-info": { + "version": "2.8.9", + "license": "ISC" + }, + "packages/sui-jest/node_modules/locate-path": { + "version": "5.0.0", + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "packages/sui-jest/node_modules/normalize-package-data": { + "version": "2.5.0", + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "packages/sui-jest/node_modules/p-limit": { + "version": "2.3.0", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/sui-jest/node_modules/p-locate": { + "version": "4.1.0", + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "packages/sui-jest/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "packages/sui-jest/node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/sui-jest/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "packages/sui-jest/node_modules/read-pkg": { + "version": "5.2.0", + "license": "MIT", + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "packages/sui-jest/node_modules/read-pkg-up": { + "version": "7.0.1", + "license": "MIT", + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/sui-jest/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "packages/sui-jest/node_modules/type-fest": { + "version": "0.8.1", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "packages/sui-js": { + "name": "@s-ui/js", + "version": "2.31.0", + "license": "MIT", + "dependencies": { + "bowser": "2.11.0", + "cookie": "0.3.1", + "htmr": "1.0.0", + "js-cookie": "2.1.4", + "just-camel-case": "4.0.2", + "just-capitalize": "1.0.1", + "just-kebab-case": "1.1.0", + "lodash.debounce": "4.0.8", + "lodash.throttle": "4.1.1", + "nanoid": "3.3.1", + "qs": "6.11.2", + "remove-accents": "0.4.2" + } + }, + "packages/sui-js-compiler": { + "name": "@s-ui/js-compiler", + "version": "1.29.0", + "license": "MIT", + "dependencies": { + "@s-ui/compiler-config": "1", + "@swc/core": "1.3.14", + "@swc/helpers": "0.4.12", + "commander": "8.3.0", + "fast-glob": "3.2.12", + "fs-extra": "10.1.0", + "typescript": "5.0.4" + }, + "bin": { + "sui-js-compiler": "index.js" + } + }, + "packages/sui-js-compiler/node_modules/commander": { + "version": "8.3.0", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "packages/sui-js-compiler/node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "packages/sui-js/node_modules/cookie": { + "version": "0.3.1", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "packages/sui-js/node_modules/js-cookie": { + "version": "2.1.4", + "license": "MIT" + }, + "packages/sui-js/node_modules/nanoid": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", + "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "packages/sui-js/node_modules/qs": { + "version": "6.11.2", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "packages/sui-lint": { + "name": "@s-ui/lint", + "version": "4.41.0", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@babel/core": "7.18.10", + "@babel/eslint-parser": "7.18.9", + "@babel/eslint-plugin": "7.18.10", + "@s-ui/helpers": "1", + "@typescript-eslint/eslint-plugin": "5.62.0", + "commander": "8.3.0", + "console-table-printer": "2.12.0", + "eslint": "8.56.0", + "eslint-config-prettier": "8.5.0", + "eslint-config-standard": "17.0.0", + "eslint-config-standard-react": "13.0.0", + "eslint-config-standard-with-typescript": "22.0.0", + "eslint-plugin-chai-friendly": "0.7.2", + "eslint-plugin-cypress": "2.12.1", + "eslint-plugin-import": "2.26.0", + "eslint-plugin-jest": "27.2.1", + "eslint-plugin-jest-dom": "4.0.3", + "eslint-plugin-n": "15.2.5", + "eslint-plugin-no-only-tests": "3.0.0", + "eslint-plugin-prettier": "4.2.1", + "eslint-plugin-promise": "6.0.0", + "eslint-plugin-react": "7.30.1", + "eslint-plugin-react-hooks": "4.6.0", + "eslint-plugin-simple-import-sort": "7.0.0", + "eslint-plugin-sui": "1", + "fast-glob": "3.3.2", + "js-yaml": "4.1.0", + "lint-repository-sui": "1", + "postcss-scss": "4.0.4", + "prettier": "2.7.1", + "stylelint": "14.11.0", + "stylelint-config-prettier": "9.0.3", + "stylelint-config-recommended-scss": "8.0.0", + "stylelint-prettier": "2.0.0" + }, + "bin": { + "sui-lint": "bin/sui-lint.js" + } + }, + "packages/sui-lint/node_modules/@babel/core": { + "version": "7.18.10", + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.18.10", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-module-transforms": "^7.18.9", + "@babel/helpers": "^7.18.9", + "@babel/parser": "^7.18.10", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.18.10", + "@babel/types": "^7.18.10", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "packages/sui-lint/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "packages/sui-lint/node_modules/commander": { + "version": "8.3.0", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "packages/sui-lint/node_modules/convert-source-map": { + "version": "1.9.0", + "license": "MIT" + }, + "packages/sui-lint/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "packages/sui-lint/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "packages/sui-mock": { + "name": "@s-ui/mock", + "version": "1.6.0", + "license": "MIT", + "dependencies": { + "msw": "1.2.1" + }, + "devDependencies": { + "@s-ui/js-compiler": "1" + } + }, + "packages/sui-mockmock": { + "name": "@s-ui/mockmock", + "version": "2.5.0", + "license": "MIT", + "dependencies": { + "nock": "13.2.1", + "sinon": "10.0.0" + }, + "devDependencies": { + "axios": "1.6.7" + } + }, + "packages/sui-mockmock/node_modules/axios": { + "version": "1.6.7", + "dev": true, + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.4", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "packages/sui-mockmock/node_modules/form-data": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "packages/sui-mockmock/node_modules/proxy-from-env": { + "version": "1.1.0", + "dev": true, + "license": "MIT" + }, + "packages/sui-mono": { + "name": "@s-ui/mono", + "version": "2.45.0", + "license": "MIT", + "dependencies": { + "@s-ui/helpers": "1", + "add-stream": "^1.0.0", + "commander": "8.3.0", + "conventional-changelog-angular": "^5.0.12", + "conventional-changelog-preset-loader": "^2.3.4", + "conventional-changelog-writer": "^5.0.0", + "conventional-commits-parser": "^3.2.0", + "dateformat": "^3.0.0", + "enquirer": "2.3.6", + "get-pkg-repo": "^4.0.0", + "git-raw-commits": "^2.0.8", + "git-remote-origin-url": "^2.0.0", + "git-semver-tags": "^4.1.1", + "git-url-parse": "13.1.0", + "glob": "8.0.3", + "lodash": "^4.17.15", + "normalize-package-data": "^3.0.0", + "q": "^1.5.1", + "read-pkg": "^3.0.0", + "read-pkg-up": "^3.0.0", + "through2": "^4.0.0", + "word-wrap": "1.2.4" + }, + "bin": { + "sui-mono": "bin/sui-mono.js" + } + }, + "packages/sui-mono/node_modules/brace-expansion": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "packages/sui-mono/node_modules/commander": { + "version": "8.3.0", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "packages/sui-mono/node_modules/dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "engines": { + "node": "*" + } + }, + "packages/sui-mono/node_modules/glob": { + "version": "8.0.3", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "packages/sui-mono/node_modules/minimatch": { + "version": "5.1.6", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "packages/sui-pde": { + "name": "@s-ui/pde", + "version": "2.24.0", + "license": "MIT", + "dependencies": { + "@optimizely/optimizely-sdk": "4.9.4", + "@s-ui/js": "2" + }, + "devDependencies": { + "@s-ui/test": "8", + "@testing-library/react": "11.2.3", + "@testing-library/react-hooks": "4.0.1", + "react": "17", + "react-test-renderer": "17" + }, + "peerDependencies": { + "react": "16 || 17" + } + }, + "packages/sui-pde/node_modules/@testing-library/dom": { + "version": "7.31.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^4.2.0", + "aria-query": "^4.2.2", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.6", + "lz-string": "^1.4.4", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">=10" + } + }, + "packages/sui-pde/node_modules/@testing-library/react": { + "version": "11.2.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5", + "@testing-library/dom": "^7.28.1" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": "*", + "react-dom": "*" + } + }, + "packages/sui-pde/node_modules/@types/aria-query": { + "version": "4.2.2", + "dev": true, + "license": "MIT" + }, + "packages/sui-pde/node_modules/aria-query": { + "version": "4.2.2", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.10.2", + "@babel/runtime-corejs3": "^7.10.2" + }, + "engines": { + "node": ">=6.0" + } + }, + "packages/sui-pde/node_modules/pretty-format": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "packages/sui-polyfills": { + "name": "@s-ui/polyfills", + "version": "1.21.0", + "license": "MIT", + "dependencies": { + "core-js": "3", + "element-polyfill": "1" + } + }, + "packages/sui-precommit": { + "name": "@s-ui/precommit", + "version": "3.2.0", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "dlv": "1.1.3", + "dset": "3.1.2" + }, + "bin": { + "sui-precommit": "bin/sui-precommit.js" + }, + "peerDependencies": { + "@s-ui/lint": "*" + } + }, + "packages/sui-react-context": { + "name": "@s-ui/react-context", + "version": "1.9.0", + "license": "MIT", + "dependencies": { + "hoist-non-react-statics": "3.3.2" + }, + "devDependencies": { + "@s-ui/js-compiler": "1" + } + }, + "packages/sui-react-head": { + "name": "@s-ui/react-head", + "version": "1.14.0", + "license": "MIT", + "dependencies": { + "react-head": "3.4.0" + }, + "devDependencies": { + "@s-ui/js-compiler": "1", + "@testing-library/react": "11.1.0", + "react": "17", + "react-dom": "17" + }, + "peerDependencies": { + "react": "16 || 17", + "react-dom": "16 || 17" + } + }, + "packages/sui-react-head/node_modules/@testing-library/dom": { + "version": "7.31.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^4.2.0", + "aria-query": "^4.2.2", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.6", + "lz-string": "^1.4.4", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">=10" + } + }, + "packages/sui-react-head/node_modules/@testing-library/react": { + "version": "11.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.11.2", + "@testing-library/dom": "^7.26.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": "*", + "react-dom": "*" + } + }, + "packages/sui-react-head/node_modules/@types/aria-query": { + "version": "4.2.2", + "dev": true, + "license": "MIT" + }, + "packages/sui-react-head/node_modules/aria-query": { + "version": "4.2.2", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.10.2", + "@babel/runtime-corejs3": "^7.10.2" + }, + "engines": { + "node": ">=6.0" + } + }, + "packages/sui-react-head/node_modules/pretty-format": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "packages/sui-react-initial-props": { + "name": "@s-ui/react-initial-props", + "version": "2.23.0", + "license": "MIT", + "devDependencies": { + "@s-ui/js-compiler": "1", + "@s-ui/react-router": "1", + "@testing-library/react": "11.1.0", + "@types/node": "16", + "react": "17", + "react-dom": "17" + }, + "peerDependencies": { + "@s-ui/react-context": "1", + "prop-types": "15", + "react": "16 || 17" + } + }, + "packages/sui-react-initial-props/node_modules/@testing-library/dom": { + "version": "7.31.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^4.2.0", + "aria-query": "^4.2.2", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.6", + "lz-string": "^1.4.4", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">=10" + } + }, + "packages/sui-react-initial-props/node_modules/@testing-library/react": { + "version": "11.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.11.2", + "@testing-library/dom": "^7.26.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": "*", + "react-dom": "*" + } + }, + "packages/sui-react-initial-props/node_modules/@types/aria-query": { + "version": "4.2.2", + "dev": true, + "license": "MIT" + }, + "packages/sui-react-initial-props/node_modules/@types/node": { + "version": "16.18.96", + "dev": true, + "license": "MIT" + }, + "packages/sui-react-initial-props/node_modules/aria-query": { + "version": "4.2.2", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.10.2", + "@babel/runtime-corejs3": "^7.10.2" + }, + "engines": { + "node": ">=6.0" + } + }, + "packages/sui-react-initial-props/node_modules/pretty-format": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "packages/sui-react-router": { + "name": "@s-ui/react-router", + "version": "1.16.0", + "license": "MIT", + "dependencies": { + "classnames": "2.2.5", + "history": "3.3.0", + "hoist-non-react-statics": "3.3.2" + }, + "devDependencies": { + "@testing-library/react": "11.1.0", + "react": "17", + "react-dom": "17", + "sinon": "10.0.0" + }, + "peerDependencies": { + "prop-types": "15", + "react": "16 || 17" + } + }, + "packages/sui-react-router/node_modules/@testing-library/dom": { + "version": "7.31.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^4.2.0", + "aria-query": "^4.2.2", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.6", + "lz-string": "^1.4.4", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">=10" + } + }, + "packages/sui-react-router/node_modules/@testing-library/react": { + "version": "11.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.11.2", + "@testing-library/dom": "^7.26.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": "*", + "react-dom": "*" + } + }, + "packages/sui-react-router/node_modules/@types/aria-query": { + "version": "4.2.2", + "dev": true, + "license": "MIT" + }, + "packages/sui-react-router/node_modules/aria-query": { + "version": "4.2.2", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.10.2", + "@babel/runtime-corejs3": "^7.10.2" + }, + "engines": { + "node": ">=6.0" + } + }, + "packages/sui-react-router/node_modules/classnames": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.5.tgz", + "integrity": "sha512-DTt3GhOUDKhh4ONwIJW4lmhyotQmV2LjNlGK/J2hkwUcqcbKkCLAdJPtxQnxnlc7SR3f1CEXCyMmc7WLUsWbNA==" + }, + "packages/sui-react-router/node_modules/pretty-format": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "packages/sui-react-web-vitals": { + "name": "@s-ui/react-web-vitals", + "version": "2.4.0", + "license": "MIT", + "dependencies": { + "@s-ui/react-hooks": "1", + "web-vitals": "3.5.2" + }, + "devDependencies": { + "@s-ui/test": "8", + "@testing-library/react": "11.2.3", + "react": "17" + }, + "peerDependencies": { + "@s-ui/react-context": "1", + "@s-ui/react-router": "1", + "react": "16 || 17" + } + }, + "packages/sui-react-web-vitals/node_modules/@testing-library/dom": { + "version": "7.31.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^4.2.0", + "aria-query": "^4.2.2", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.6", + "lz-string": "^1.4.4", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">=10" + } + }, + "packages/sui-react-web-vitals/node_modules/@testing-library/react": { + "version": "11.2.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5", + "@testing-library/dom": "^7.28.1" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": "*", + "react-dom": "*" + } + }, + "packages/sui-react-web-vitals/node_modules/@types/aria-query": { + "version": "4.2.2", + "dev": true, + "license": "MIT" + }, + "packages/sui-react-web-vitals/node_modules/aria-query": { + "version": "4.2.2", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.10.2", + "@babel/runtime-corejs3": "^7.10.2" + }, + "engines": { + "node": ">=6.0" + } + }, + "packages/sui-react-web-vitals/node_modules/pretty-format": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "packages/sui-sass-loader": { + "name": "@s-ui/sass-loader", + "version": "1.7.0", + "dependencies": { + "cli-source-preview": "1.1.0", + "co": "4.6.0", + "fs-extra": "10.1.0", + "loader-utils": "3.2.1" + }, + "devDependencies": { + "css-loader": "6.7.1", + "mini-css-extract-plugin": "2.7.7", + "sass": "1.54.5", + "sass-loader": "12", + "webpack": "5.82.1" + }, + "peerDependencies": { + "sass": "1", + "webpack": "5" + } + }, + "packages/sui-sass-loader/node_modules/loader-utils": { + "version": "3.2.1", + "license": "MIT", + "engines": { + "node": ">= 12.13.0" + } + }, + "packages/sui-ssr": { + "name": "@s-ui/ssr", + "version": "8.28.0", + "license": "MIT", + "dependencies": { + "@s-ui/critical-css-middleware": "1", + "@s-ui/hoc": "1", + "@tunnckocore/execa": "5.2.7", + "archiver": "5.3.2", + "commander": "8.3.0", + "compression": "1.7.4", + "express": "4.18.2", + "express-basic-auth": "1.2.1", + "git-url-parse": "13.1.0", + "jsesc": "3.0.2", + "mime": "1.6.0", + "nodemon": "3.0.1", + "noop-console": "0.8.0", + "parse5": "6.0.1", + "ua-parser-js": "0.7.33", + "webpack-dev-middleware": "6.1.2", + "webpack-hot-middleware": "2.25.4" + }, + "bin": { + "sui-ssr": "bin/sui-ssr.js" + } + }, + "packages/sui-ssr/node_modules/commander": { + "version": "8.3.0", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "packages/sui-ssr/node_modules/jsesc": { + "version": "3.0.2", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "packages/sui-ssr/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "packages/sui-ssr/node_modules/ua-parser-js": { + "version": "0.7.33", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.33.tgz", + "integrity": "sha512-s8ax/CeZdK9R/56Sui0WM6y9OFREJarMRHqLB2EwkovemBxNQ+Bqu8GAsUnVcXKgphb++ghr/B2BZx4mahujPw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + } + ], + "engines": { + "node": "*" + } + }, + "packages/sui-studio": { + "name": "@s-ui/studio", + "version": "11.41.0", + "license": "MIT", + "dependencies": { + "@babel/cli": "7", + "@s-ui/bundler": "9", + "@s-ui/helpers": "1", + "@s-ui/react-context": "1", + "@s-ui/react-router": "1", + "@s-ui/test": "8", + "@testing-library/react": "10.4.9", + "@testing-library/react-hooks": "4.0.1", + "@testing-library/user-event": "13.5.0", + "chai": "4.3.10", + "chai-dom": "1.11.0", + "classnames": "2.2.5", + "commander": "8.3.0", + "deepmerge": "4.3.1", + "fast-glob": "3.2.11", + "fs-extra": "10.1.0", + "git-url-parse": "13.1.0", + "hoist-non-react-statics": "3.3.2", + "just-debounce-it": "1.5.0", + "just-kebab-case": "1.1.0", + "just-pascal-case": "1.1.0", + "micromatch": "4.0.5", + "node-fetch": "2.6.7", + "normalize.css": "8.0.1", + "react": "17", + "react-docgen": "5.3.1", + "react-dom": "17", + "react-test-renderer": "17" + }, + "bin": { + "cpx": "bin/cpx.js", + "sui-studio": "bin/sui-studio.js" + } + }, + "packages/sui-studio-create": { + "name": "@s-ui/studio-create", + "version": "4.25.0", + "license": "MIT", + "dependencies": { + "fs-extra": "10.1.0" + }, + "bin": { + "sui-studio-create": "src/index.js" + } + }, + "packages/sui-studio-utils": { + "name": "@s-ui/studio-utils", + "version": "1.11.0", + "license": "MIT", + "dependencies": { + "@s-ui/i18n": "1" + } + }, + "packages/sui-studio/node_modules/chai": { + "version": "4.3.10", + "license": "MIT", + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.0.8" + }, + "engines": { + "node": ">=4" + } + }, + "packages/sui-studio/node_modules/classnames": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.5.tgz", + "integrity": "sha512-DTt3GhOUDKhh4ONwIJW4lmhyotQmV2LjNlGK/J2hkwUcqcbKkCLAdJPtxQnxnlc7SR3f1CEXCyMmc7WLUsWbNA==" + }, + "packages/sui-studio/node_modules/commander": { + "version": "8.3.0", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "packages/sui-studio/node_modules/deep-eql": { + "version": "4.1.3", + "license": "MIT", + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "packages/sui-studio/node_modules/fast-glob": { + "version": "3.2.11", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "packages/sui-svg": { + "name": "@s-ui/svg", + "version": "3.24.0", + "license": "MIT", + "dependencies": { + "@s-ui/react-atom-icon": "1", + "babel-preset-sui": "3", + "commander": "8.3.0", + "fast-glob": "3.2.11", + "fs-extra": "10.1.0", + "just-camel-case": "4.0.2", + "prop-types": "15", + "react": "17", + "react-dom": "17", + "sass": "1", + "svgo": "2.8.0", + "vite": "3.2.8" + }, + "bin": { + "sui-svg": "bin/sui-svg.js" + } + }, + "packages/sui-svg/node_modules/commander": { + "version": "8.3.0", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "packages/sui-svg/node_modules/fast-glob": { + "version": "3.2.11", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "packages/sui-test": { + "name": "@s-ui/test", + "version": "8.35.0", + "license": "MIT", + "dependencies": { + "@babel/core": "7.18.10", + "@babel/plugin-transform-modules-commonjs": "7.18.6", + "@babel/register": "7.18.9", + "@faker-js/faker": "8.0.2", + "@s-ui/compiler-config": "1", + "@s-ui/helpers": "1", + "@swc/core": "1.3.14", + "@swc/register": "0.1.10", + "babel-loader": "8.3.0", + "babel-plugin-dynamic-import-node": "2.3.3", + "babel-plugin-istanbul": "6.0.0", + "babel-preset-sui": "3", + "chai": "3.5.0", + "commander": "8.3.0", + "diff": "5.1.0", + "karma": "6.4.2", + "karma-chrome-launcher": "3.2.0", + "karma-coverage": "2.2.1", + "karma-firefox-launcher": "2.1.2", + "karma-mocha": "2.0.1", + "karma-spec-reporter": "0.0.34", + "karma-webpack": "5.0.0", + "mocha": "10.0.0", + "process": "0.11.10", + "stream-browserify": "3.0.0", + "swc-loader": "0.2.3", + "tty-browserify": "0.0.1", + "util": "0.12.4", + "webpack": "5.82.1" + }, + "bin": { + "sui-test": "bin/sui-test.js" + } + }, + "packages/sui-test-contract": { + "name": "@s-ui/test-contract", + "version": "2.15.0", + "license": "MIT", + "dependencies": { + "@pact-foundation/pact": "9.18.1", + "@pactflow/pact-msw-adapter": "2.0.0", + "@s-ui/mock": "1", + "commander": "8.3.0", + "headers-polyfill": "3.1.2" + }, + "bin": { + "sui-test-contract": "bin/index.js" + }, + "devDependencies": { + "@s-ui/domain": "2" + } + }, + "packages/sui-test-contract/node_modules/commander": { + "version": "8.3.0", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "packages/sui-test-e2e": { + "name": "@s-ui/test-e2e", + "version": "1.15.0", + "license": "MIT", + "dependencies": { + "@testing-library/cypress": "8.0.3", + "colors": "1.4.0", + "commander": "8.3.0", + "cypress": "10.4.0", + "cypress-file-upload": "5.0.8" + }, + "bin": { + "sui-test-e2e": "bin/sui-test-e2e.js" + } + }, + "packages/sui-test-e2e/node_modules/commander": { + "version": "8.3.0", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "packages/sui-test/node_modules/@babel/core": { + "version": "7.18.10", + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.18.10", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-module-transforms": "^7.18.9", + "@babel/helpers": "^7.18.9", + "@babel/parser": "^7.18.10", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.18.10", + "@babel/types": "^7.18.10", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "packages/sui-test/node_modules/chai": { + "version": "3.5.0", + "license": "MIT", + "dependencies": { + "assertion-error": "^1.0.1", + "deep-eql": "^0.1.3", + "type-detect": "^1.0.0" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "packages/sui-test/node_modules/commander": { + "version": "8.3.0", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "packages/sui-test/node_modules/convert-source-map": { + "version": "1.9.0", + "license": "MIT" + }, + "packages/sui-test/node_modules/deep-eql": { + "version": "0.1.3", + "license": "MIT", + "dependencies": { + "type-detect": "0.1.1" + }, + "engines": { + "node": "*" + } + }, + "packages/sui-test/node_modules/deep-eql/node_modules/type-detect": { + "version": "0.1.1", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "packages/sui-test/node_modules/diff": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", + "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", + "engines": { + "node": ">=0.3.1" + } + }, + "packages/sui-test/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "packages/sui-test/node_modules/swc-loader": { + "version": "0.2.3", + "license": "MIT", + "peerDependencies": { + "@swc/core": "^1.2.147", + "webpack": ">=2" + } + }, + "packages/sui-test/node_modules/type-detect": { + "version": "1.0.0", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "packages/sui-theme": { + "name": "@s-ui/theme", + "version": "8.127.0", + "license": "MIT" + }, + "packages/sui-widget-embedder": { + "name": "@s-ui/widget-embedder", + "version": "6.3.0", + "license": "MIT", + "dependencies": { + "@s-ui/bundler": "9", + "@s-ui/helpers": "1", + "@s-ui/react-context": "1", + "@s-ui/react-hooks": "1", + "commander": "8.3.0", + "copy-paste": "1.3.0", + "webpack-dev-middleware": "5.3.4" + }, + "bin": { + "sui-widget-embedder": "bin/sui-widget-embedder.js" + } + }, + "packages/sui-widget-embedder/node_modules/ajv": { + "version": "8.12.0", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "packages/sui-widget-embedder/node_modules/ajv-keywords": { + "version": "5.1.0", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "packages/sui-widget-embedder/node_modules/commander": { + "version": "8.3.0", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "packages/sui-widget-embedder/node_modules/json-schema-traverse": { + "version": "1.0.0", + "license": "MIT" + }, + "packages/sui-widget-embedder/node_modules/schema-utils": { + "version": "4.2.0", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "packages/sui-widget-embedder/node_modules/webpack-dev-middleware": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", + "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + } + } +} From 4d197e8361fc1fec12add79079136a8a541e86ae Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Tue, 7 May 2024 09:18:58 +0200 Subject: [PATCH 277/545] chore(Root): upgrade action --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 21b2e9f3b..561d7a484 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -12,7 +12,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Cancel Previous Redundant Builds - uses: styfle/cancel-workflow-action@0.6.0 + uses: styfle/cancel-workflow-action@0.12.1 with: access_token: ${{ github.token }} From 4ba3aeb70523c0a247678fc2d85c709225136eab Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Tue, 7 May 2024 09:20:43 +0200 Subject: [PATCH 278/545] chore(Root): publish only on master --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 561d7a484..e29ddb35e 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -52,6 +52,7 @@ jobs: publish: name: Publish needs: checks + if: github.ref == 'refs/heads/master' runs-on: ubuntu-latest steps: - name: Checkout @@ -71,7 +72,6 @@ jobs: run: npm ci --no-save --no-fund --no-audit --legacy-peer-deps - name: Publish Packages - if: github.ref == 'refs/heads/master' run: | npx -p ./packages/sui-mono sui-mono check npx -p ./packages/sui-ci sui-ci release From 1a902d7423199be24f65d4f189484d0cbe4d9ad1 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Tue, 7 May 2024 09:48:18 +0200 Subject: [PATCH 279/545] chore(Root): add flags to npm config file --- .github/workflows/main.yml | 4 ++-- .npmrc | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e29ddb35e..be5b17b1b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -35,7 +35,7 @@ jobs: - name: Install run: | sudo apt-get install xvfb - npm ci --no-save --no-fund --no-audit --legacy-peer-deps + npm ci npx -y ultra-runner --raw --recursive prepublishOnly - name: Lint @@ -69,7 +69,7 @@ jobs: cache: 'npm' - name: Install - run: npm ci --no-save --no-fund --no-audit --legacy-peer-deps + run: npm ci - name: Publish Packages run: | diff --git a/.npmrc b/.npmrc index e9ee3cb4d..ae70eb25e 100644 --- a/.npmrc +++ b/.npmrc @@ -1 +1,3 @@ +audit=false +fund=false legacy-peer-deps=true \ No newline at end of file From 773987717466fe59e2709fe4551f256f13ef660f Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Tue, 7 May 2024 09:50:50 +0200 Subject: [PATCH 280/545] chore(Root): remove not needed action --- .github/workflows/main.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index be5b17b1b..99fa82ba0 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -6,16 +6,15 @@ on: pull_request: branches: [master] +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ github.ref != 'refs/heads/master' }} + jobs: checks: name: Checks runs-on: ubuntu-latest steps: - - name: Cancel Previous Redundant Builds - uses: styfle/cancel-workflow-action@0.12.1 - with: - access_token: ${{ github.token }} - - name: Checkout uses: actions/checkout@v4 with: From 07cd08b2aad3edc0f72a6cd1d081360d02a6e501 Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Tue, 7 May 2024 11:22:20 +0200 Subject: [PATCH 281/545] feat(packages/eslint-plugin-sui): Add rule to check relative imports --- packages/eslint-plugin-sui/package.json | 1 + packages/eslint-plugin-sui/src/index.js | 4 +- .../src/rules/layers-architecture.js | 45 +++++++++++++ .../eslint-plugin-sui/src/utils/monorepo.js | 41 ++++++++++++ .../test/server/layers-architecture.js | 67 +++++++++++++++++++ 5 files changed, 157 insertions(+), 1 deletion(-) create mode 100644 packages/eslint-plugin-sui/src/rules/layers-architecture.js create mode 100644 packages/eslint-plugin-sui/src/utils/monorepo.js create mode 100644 packages/eslint-plugin-sui/test/server/layers-architecture.js diff --git a/packages/eslint-plugin-sui/package.json b/packages/eslint-plugin-sui/package.json index 05e122a4c..776027876 100644 --- a/packages/eslint-plugin-sui/package.json +++ b/packages/eslint-plugin-sui/package.json @@ -19,6 +19,7 @@ "update:eslint-docs": "npx eslint-doc-generator" }, "dependencies": { + "fast-glob": "^3.3.2", "requireindex": "1.2.0", "string-dedent": "3.0.1" }, diff --git a/packages/eslint-plugin-sui/src/index.js b/packages/eslint-plugin-sui/src/index.js index 3e33063fa..38072d921 100644 --- a/packages/eslint-plugin-sui/src/index.js +++ b/packages/eslint-plugin-sui/src/index.js @@ -2,6 +2,7 @@ const FactoryPattern = require('./rules/factory-pattern.js') const SerializeDeserialize = require('./rules/serialize-deserialize.js') const CommonJS = require('./rules/commonjs.js') const Decorators = require('./rules/decorators.js') +const LayersArch = require('./rules/layers-architecture.js') // ------------------------------------------------------------------------------ // Plugin Definition @@ -13,6 +14,7 @@ module.exports = { 'factory-pattern': FactoryPattern, 'serialize-deserialize': SerializeDeserialize, commonjs: CommonJS, - decorators: Decorators + decorators: Decorators, + layersArch: LayersArch } } diff --git a/packages/eslint-plugin-sui/src/rules/layers-architecture.js b/packages/eslint-plugin-sui/src/rules/layers-architecture.js new file mode 100644 index 000000000..ffd119b09 --- /dev/null +++ b/packages/eslint-plugin-sui/src/rules/layers-architecture.js @@ -0,0 +1,45 @@ +/** + * @fileoverview Make sure to avoid direct file imports from other packages within your monorepo. + * */ +'use strict' + +const dedent = require('string-dedent') +const {Monorepo} = require('../utils/monorepo.js') + +// ------------------------------------------------------------------------------ +// Rule Definition +// ------------------------------------------------------------------------------ + +/** @type {import('eslint').Rule.RuleModule} */ +module.exports = { + meta: { + type: 'problem', + docs: { + description: 'Make sure to avoid direct file imports from other packages within your monorepo', + recommended: true, + url: 'https://github.mpi-internal.com/scmspain/es-td-agreements/blob/master/30-Frontend/00-agreements' + }, + fixable: null, + schema: [], + messages: { + forbiddenRelativeImports: dedent` + When using a package from your monorepo, import it directly instead of using a relative path. + ` + } + }, + create: function (context) { + const monorepo = Monorepo.create(context.cwd) + + return { + ImportDeclaration(node) { + const isForbidden = monorepo.isPackage(context.filename, node.source.value) + + isForbidden && + context.report({ + node, + messageId: 'forbiddenRelativeImports' + }) + } + } + } +} diff --git a/packages/eslint-plugin-sui/src/utils/monorepo.js b/packages/eslint-plugin-sui/src/utils/monorepo.js new file mode 100644 index 000000000..5522d4880 --- /dev/null +++ b/packages/eslint-plugin-sui/src/utils/monorepo.js @@ -0,0 +1,41 @@ +const path = require('node:path') +const fg = require('fast-glob') + +let instance + +class MonoRepo { + static create(root) { + if (instance) return instance + + return new MonoRepo(root) + } + + constructor(root) { + const rootPackageJSON = require(path.join(root, 'package.json')) + const innerPatternPackagesJSON = rootPackageJSON.workspaces?.map(workspace => path.join(workspace, 'package.json')) + this._packages = innerPatternPackagesJSON ? fg.sync(innerPatternPackagesJSON, {deep: 3}) : [] + this._root = root + } + + get packages() { + return this._packages + } + + get root() { + return this._root + } + + isPackage(filePath, relativeImport) { + if (!relativeImport.startsWith('../')) return false + + const pkgName = path + .normalize(path.dirname(filePath) + '/' + relativeImport) + ?.replace(this.root, '') + ?.replace(/(lib|src)\/.*/, 'package.json') + ?.replace('/', '') + + return this.packages.includes(pkgName) + } +} + +module.exports.Monorepo = MonoRepo diff --git a/packages/eslint-plugin-sui/test/server/layers-architecture.js b/packages/eslint-plugin-sui/test/server/layers-architecture.js new file mode 100644 index 000000000..acee03be9 --- /dev/null +++ b/packages/eslint-plugin-sui/test/server/layers-architecture.js @@ -0,0 +1,67 @@ +import dedent from 'dedent' +import {RuleTester} from 'eslint' +import sinon from 'sinon' + +import rule from '../../src/rules/layers-architecture.js' +import {Monorepo} from '../../src/utils/monorepo.js' + +const resolvedBabelPresetSui = require.resolve('babel-preset-sui') +const parser = require.resolve('@babel/eslint-parser') + +const CWD = '/Users/carlosvillu/Developer/frontend-mt--web-app' + +const ruleTester = new RuleTester({parser, parserOptions: {babelOptions: {configFile: resolvedBabelPresetSui}}}) +describe('layersArch valid', function () { + beforeEach(function () { + this.getterPackagesStub = sinon.stub(Monorepo.prototype, 'packages').get(() => ['domain/package.json']) + this.getterRootStub = sinon.stub(Monorepo.prototype, 'root').get(() => CWD) + }) + afterEach(function () { + this.getterPackagesStub.restore() + this.getterRootStub.restore() + }) + + ruleTester.run('layersArch', rule, { + valid: [ + { + filename: CWD + '/components/animation/fadeOut/demo/context.js', + code: dedent` + import DomainBuilder from 'studio-utils/DomainBuilder' + + class User { + static create() { return new User() } + } + ` + }, + { + filename: CWD + '/components/animation/fadeOut/demo/context.js', + code: dedent` + import { createRequire } from "module" + + class User { + static create() { return new User() } + } + ` + } + ], + invalid: [ + { + filename: CWD + '/components/animation/fadeOut/demo/context.js', + code: dedent` + import {Coches as Domain} from '../../../../domain/lib/index.js' + + class Model { + constructor() { this.name = 'John Doe' } + } + `, + errors: [ + { + message: dedent` + When using a package from your monorepo, import it directly instead of using a relative path. + ` + } + ] + } + ] + }) +}) From 5906840c1072afea5ceda3dc21f106fd6a8fcc80 Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Tue, 7 May 2024 11:47:23 +0200 Subject: [PATCH 282/545] feat(packages/eslint-plugin-sui): several fixes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Really use the class as singleton  * avoid missleading warning when the relative import is for the same package --- packages/eslint-plugin-sui/src/rules/commonjs.js | 2 +- packages/eslint-plugin-sui/src/utils/monorepo.js | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/packages/eslint-plugin-sui/src/rules/commonjs.js b/packages/eslint-plugin-sui/src/rules/commonjs.js index 88d6dacf0..6192539d7 100644 --- a/packages/eslint-plugin-sui/src/rules/commonjs.js +++ b/packages/eslint-plugin-sui/src/rules/commonjs.js @@ -52,7 +52,7 @@ module.exports = { const isModule = node.callee?.object?.name === 'module' && node.callee?.property?.name === 'require' const isRequireFormCreateRequire = node.parent?.parent?.body - ?.filter(node => node.type === 'ImportDeclaration') + ?.filter?.(node => node.type === 'ImportDeclaration') ?.some( node => node.source?.value === 'module' && node.specifiers?.some(spec => spec.imported?.name === 'createRequire') diff --git a/packages/eslint-plugin-sui/src/utils/monorepo.js b/packages/eslint-plugin-sui/src/utils/monorepo.js index 5522d4880..775cce383 100644 --- a/packages/eslint-plugin-sui/src/utils/monorepo.js +++ b/packages/eslint-plugin-sui/src/utils/monorepo.js @@ -7,7 +7,8 @@ class MonoRepo { static create(root) { if (instance) return instance - return new MonoRepo(root) + instance = new MonoRepo(root) + return instance } constructor(root) { @@ -25,8 +26,20 @@ class MonoRepo { return this._root } + belongSamePackage(filePath, relativeImport) { + return ( + path.normalize(filePath)?.replace(this.root, '')?.split('/')?.at(1) === + path + .normalize(path.dirname(filePath) + '/' + relativeImport) + ?.replace(this.root, '') + ?.split('/') + ?.at(1) + ) + } + isPackage(filePath, relativeImport) { if (!relativeImport.startsWith('../')) return false + if (this.belongSamePackage(filePath, relativeImport)) return false const pkgName = path .normalize(path.dirname(filePath) + '/' + relativeImport) From 7a7df02d5bece3d03cdcfc83e8e478560056e79b Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Tue, 7 May 2024 14:55:36 +0200 Subject: [PATCH 283/545] feat(packages/lint-repository-sui): Create a metric about how many tsx? has the repository migrated --- packages/lint-repository-sui/src/index.js | 4 +- .../src/rules/ts-vs-js-files.js | 42 +++++++++++++++++++ .../lint-repository-sui/test/TestHelpers.js | 7 ++-- .../test/server/ts-vs-js-filesSpec.js | 33 +++++++++++++++ 4 files changed, 82 insertions(+), 4 deletions(-) create mode 100644 packages/lint-repository-sui/src/rules/ts-vs-js-files.js create mode 100644 packages/lint-repository-sui/test/server/ts-vs-js-filesSpec.js diff --git a/packages/lint-repository-sui/src/index.js b/packages/lint-repository-sui/src/index.js index 2f6411552..69bf92db8 100644 --- a/packages/lint-repository-sui/src/index.js +++ b/packages/lint-repository-sui/src/index.js @@ -7,6 +7,7 @@ const TypeScript = require('./rules/typescript.js') const Structure = require('./rules/structure.js') const SuiToolsVersion = require('./rules/sui-tools-version.js') const ADVToolsVersion = require('./rules/adv-tools-version.js') +const TSvsJS = require('./rules/ts-vs-js-files.js') // ------------------------------------------------------------------------------ // Plugin Definition @@ -23,6 +24,7 @@ module.exports = { typescript: TypeScript, structure: Structure, 'sui-tools-version': SuiToolsVersion, - 'adv-tools-version': ADVToolsVersion + 'adv-tools-version': ADVToolsVersion, + 'ts-vs-js-files': TSvsJS } } diff --git a/packages/lint-repository-sui/src/rules/ts-vs-js-files.js b/packages/lint-repository-sui/src/rules/ts-vs-js-files.js new file mode 100644 index 000000000..df8df7a5b --- /dev/null +++ b/packages/lint-repository-sui/src/rules/ts-vs-js-files.js @@ -0,0 +1,42 @@ +const dedent = require('string-dedent') + +module.exports = { + meta: { + type: 'problem', + docs: { + description: 'This metric reports the percentage of TypeScript files in the repository relative to all files.', + recommended: true, + url: null + }, + fixable: null, + schema: [], + messages: { + percentage: dedent` + Currently, your project has migrated {{percentage}}% of files from JSX? to TSX?. + ` + } + }, + create: function (context) { + return { + '**/*.(j|t)s(x)?': matches => { + const tsFile = matches.filter(match => match.fullPath.match(/.*\.tsx?/)).length + let percentage = (tsFile * 100) / matches.length + percentage = Math.round((percentage + Number.EPSILON) * 100) / 100 + + context.report({ + messageId: 'percentage', + data: {percentage} + }) + return context.monitoring(percentage) + }, + + missmatch: key => { + context.report({ + messageId: 'percentage', + data: {percentage: 0} + }) + context.monitoring(0) + } + } + } +} diff --git a/packages/lint-repository-sui/test/TestHelpers.js b/packages/lint-repository-sui/test/TestHelpers.js index ce34922d1..297128cb8 100644 --- a/packages/lint-repository-sui/test/TestHelpers.js +++ b/packages/lint-repository-sui/test/TestHelpers.js @@ -53,12 +53,13 @@ export class RuleTester { } export class MatchStub { - static create({parsed, raw}) { - return new MatchStub(parsed, raw) + static create({parsed, raw, fullPath}) { + return new MatchStub(parsed, raw, fullPath) } - constructor(parsed, raw) { + constructor(parsed, raw, fullPath) { this.parsed = parsed this.raw = raw + this.fullPath = fullPath } } diff --git a/packages/lint-repository-sui/test/server/ts-vs-js-filesSpec.js b/packages/lint-repository-sui/test/server/ts-vs-js-filesSpec.js new file mode 100644 index 000000000..07af28586 --- /dev/null +++ b/packages/lint-repository-sui/test/server/ts-vs-js-filesSpec.js @@ -0,0 +1,33 @@ +import dedent from 'string-dedent' + +import handler from '../../src/rules/ts-vs-js-files.js' +import {MatchStub, RuleTester} from '../TestHelpers.js' + +RuleTester.create('ts-vs-js-files', handler).run({ + valid: [ + { + '**/*.(j|t)s(x)?': [ + MatchStub.create({fullPath: 'file1.js'}), + MatchStub.create({fullPath: 'file2.js'}), + MatchStub.create({fullPath: 'file2.ts'}) + ], + name: 'Send percentage', + monitoring: 33.33, + report: dedent` + Currently, your project has migrated 33.33% of files from JSX? to TSX?. + ` + }, + { + '**/*.(j|t)s(x)?': [ + MatchStub.create({fullPath: 'file1.jsx'}), + MatchStub.create({fullPath: 'file2.js'}), + MatchStub.create({fullPath: 'file2.tsx'}) + ], + report: dedent` + Currently, your project has migrated 33.33% of files from JSX? to TSX?. + `, + name: 'Send percentage', + monitoring: 33.33 + } + ] +}) From 8f19ba1839f4df3f1be5c046d1206ef50ede1d1f Mon Sep 17 00:00:00 2001 From: "jordi.munoz@adevinta.com" Date: Tue, 7 May 2024 14:56:00 +0200 Subject: [PATCH 284/545] feat(packages/sui-bundler): set dev server overlay to false --- packages/sui-bundler/factories/createDevServerConfig.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/packages/sui-bundler/factories/createDevServerConfig.js b/packages/sui-bundler/factories/createDevServerConfig.js index 9847a7024..00b3487a6 100644 --- a/packages/sui-bundler/factories/createDevServerConfig.js +++ b/packages/sui-bundler/factories/createDevServerConfig.js @@ -17,10 +17,7 @@ module.exports = config => ({ allowedHosts: 'all', client: { logging: 'none', - overlay: { - errors: true, - warnings: false - }, + overlay: false, progress: false }, // Enable gzip compression of generated files From a0d017fe4d11b27a2de8e15a2a5d11af151f3556 Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Tue, 7 May 2024 15:00:58 +0200 Subject: [PATCH 285/545] feat(packages/lint-repository-sui): remove noise --- packages/lint-repository-sui/src/rules/adv-tools-version.js | 3 --- packages/lint-repository-sui/src/rules/cypress-version.js | 3 --- packages/lint-repository-sui/src/rules/github-action.js | 3 --- packages/lint-repository-sui/src/rules/node-version.js | 3 --- packages/lint-repository-sui/src/rules/package-lock.js | 1 - packages/lint-repository-sui/src/rules/react-version.js | 3 --- packages/lint-repository-sui/src/rules/structure.js | 1 - packages/lint-repository-sui/src/rules/sui-tools-version.js | 3 --- packages/lint-repository-sui/src/rules/typescript.js | 3 --- .../lint-repository-sui/test/server/adv-tools-versionSpec.js | 3 --- .../lint-repository-sui/test/server/cypress-versionSpec.js | 3 --- packages/lint-repository-sui/test/server/github-actionSpec.js | 3 --- packages/lint-repository-sui/test/server/node-versionSpec.js | 3 --- packages/lint-repository-sui/test/server/package-lockSpec.js | 1 - packages/lint-repository-sui/test/server/react-versionSpec.js | 3 --- packages/lint-repository-sui/test/server/structureSpec.js | 2 -- .../lint-repository-sui/test/server/sui-tools-versionSepec.js | 3 --- packages/lint-repository-sui/test/server/typescriptSpec.js | 3 --- 18 files changed, 47 deletions(-) diff --git a/packages/lint-repository-sui/src/rules/adv-tools-version.js b/packages/lint-repository-sui/src/rules/adv-tools-version.js index fd573d67c..f442372e1 100644 --- a/packages/lint-repository-sui/src/rules/adv-tools-version.js +++ b/packages/lint-repository-sui/src/rules/adv-tools-version.js @@ -21,16 +21,13 @@ module.exports = { badVersion: dedent` Please be sure that your repository use the latest {{name}}. Version {{spectedVersion}}. Your current version is {{version}}. - If you are not sure about how do it, please contact with Platform Web. `, missingDependency: dedent` Your project doesnt have installed {{name}}. Please install at least the version {{spectedVersion}}. - If you are not sure about how do it, please contact with Platform Web. `, missingPackageLock: dedent` To calculate the ADV Tool version first we need to have a package-lock.json in the root - If you are not sure about how do it, please contact with Platform Web. ` } }, diff --git a/packages/lint-repository-sui/src/rules/cypress-version.js b/packages/lint-repository-sui/src/rules/cypress-version.js index e01a7b3ec..698d284ae 100644 --- a/packages/lint-repository-sui/src/rules/cypress-version.js +++ b/packages/lint-repository-sui/src/rules/cypress-version.js @@ -16,16 +16,13 @@ module.exports = { badCypressVersion: dedent` Please be sure that your repository use the latest Cypress Version ${CYPRESS_VERSION}. Your current version is {{version}}. - If you are not sure about how do it, please contact with Platform Web. `, missingCypressDependencie: dedent` Your project doesnt have installed Cypress. Please install at least the version ${CYPRESS_VERSION}. - If you are not sure about how do it, please contact with Platform Web. `, missingPackageLock: dedent` To calculate the cypress version first we need to have a package-lock.json in the root - If you are not sure about how do it, please contact with Platform Web. ` } }, diff --git a/packages/lint-repository-sui/src/rules/github-action.js b/packages/lint-repository-sui/src/rules/github-action.js index 5ace0db38..41e794db7 100644 --- a/packages/lint-repository-sui/src/rules/github-action.js +++ b/packages/lint-repository-sui/src/rules/github-action.js @@ -13,15 +13,12 @@ module.exports = { messages: { missingGithubFolder: dedent` Every project needs to have a .github/worflows folder to be able to run CI/CD in GHA. - If you are not sure about how do it, please contact with Platform Web. `, missingMainWorkflow: dedent` Every project needs to have a workflow to run on master. - If you are not sure about how do it, please contact with Platform Web. `, missingPRWorkflow: dedent` Every project needs to have a workflow to run on every PR. - If you are not sure about how do it, please contact with Platform Web. ` } }, diff --git a/packages/lint-repository-sui/src/rules/node-version.js b/packages/lint-repository-sui/src/rules/node-version.js index 5b15ebbda..c4e55010f 100644 --- a/packages/lint-repository-sui/src/rules/node-version.js +++ b/packages/lint-repository-sui/src/rules/node-version.js @@ -16,16 +16,13 @@ module.exports = { moreThanOneNVMRC: dedent` Your project has more than one .nvmrc file. That can be dangerous. Please, use onle ONE in the root of your project. - If you are not sure about how do it, please contact with Platform Web. `, badNodeVersion: dedent` Your current Node version is {{version}}. Please be sure that your repository use the latest Node Version ${NODE_VERSION}. - If you are not sure about how do it, please contact with Platform Web. `, noNMVRCFile: dedent` Every project have to have a .npmrc file to define the node versión. - If you are not sure about how do it, please contact with Platform Web. ` } }, diff --git a/packages/lint-repository-sui/src/rules/package-lock.js b/packages/lint-repository-sui/src/rules/package-lock.js index 657fdaca0..dd805d45f 100644 --- a/packages/lint-repository-sui/src/rules/package-lock.js +++ b/packages/lint-repository-sui/src/rules/package-lock.js @@ -13,7 +13,6 @@ module.exports = { messages: { missingPackageLock: dedent` Every project needs to have a package-lock.json file to be used in CI/CD. - If you are not sure about how do it, please contact with Platform Web. ` } }, diff --git a/packages/lint-repository-sui/src/rules/react-version.js b/packages/lint-repository-sui/src/rules/react-version.js index acca08e0c..1142791de 100644 --- a/packages/lint-repository-sui/src/rules/react-version.js +++ b/packages/lint-repository-sui/src/rules/react-version.js @@ -16,16 +16,13 @@ module.exports = { badReactVersion: dedent` Please be sure that your repository use the latest React Version ${REACT_VERSION}. Your current version is {{version}}. - If you are not sure about how do it, please contact with Platform Web. `, missingReactDependencie: dedent` Your project doesnt have installed React. Please install at least the version ${REACT_VERSION}. - If you are not sure about how do it, please contact with Platform Web. `, missingPackageLock: dedent` To calculate the react version first we need to have a package-lock.json in the root - If you are not sure about how do it, please contact with Platform Web. ` } }, diff --git a/packages/lint-repository-sui/src/rules/structure.js b/packages/lint-repository-sui/src/rules/structure.js index 6609b2ab6..b5a808b4d 100644 --- a/packages/lint-repository-sui/src/rules/structure.js +++ b/packages/lint-repository-sui/src/rules/structure.js @@ -55,7 +55,6 @@ module.exports = { missingFileOrFolder: dedent` The file or folder {{pattern}} is missing. This repository should follow the Golden Path file Structure. - If you are not sure about how do it, please contact with Platform Web. `, automergeDisabled: dedent` The dependabot automerge feature is disabled. diff --git a/packages/lint-repository-sui/src/rules/sui-tools-version.js b/packages/lint-repository-sui/src/rules/sui-tools-version.js index ac16370b9..2de24c7a5 100644 --- a/packages/lint-repository-sui/src/rules/sui-tools-version.js +++ b/packages/lint-repository-sui/src/rules/sui-tools-version.js @@ -30,16 +30,13 @@ module.exports = { badVersion: dedent` Please be sure that your repository use the latest {{name}}. Version {{spectedVersion}}. Your current version is {{version}}. - If you are not sure about how do it, please contact with Platform Web. `, missingDependency: dedent` Your project does not have installed {{name}}. Please install at least the version {{spectedVersion}}. - If you are not sure about how do it, please contact with Platform Web. `, missingPackageLock: dedent` To calculate the SUI Tool version first we need to have a package-lock.json in the root - If you are not sure about how do it, please contact with Platform Web. ` } }, diff --git a/packages/lint-repository-sui/src/rules/typescript.js b/packages/lint-repository-sui/src/rules/typescript.js index a2a4dba4e..4c8bcd0b9 100644 --- a/packages/lint-repository-sui/src/rules/typescript.js +++ b/packages/lint-repository-sui/src/rules/typescript.js @@ -16,16 +16,13 @@ module.exports = { missingTypescriptDependency: dedent` Your project doesn't have installed TypeScript. Please install at least the version ${MIN_TYPESCRIPT_VERSION}. - If you are not sure about it, please contact Web Platform. `, badTypescriptVersion: dedent` Please be sure that your repository use the latest TypeScript version ${MIN_TYPESCRIPT_VERSION}. Your current version is {{version}}. - If you are not sure about it, please contact Web Platform. `, noTSConfigFile: dedent` Every project must have a \`tsconfig.json\` file to setup TypeScript in the project. - If you are not sure about how do it, please contact with Web Platform team. ` } }, diff --git a/packages/lint-repository-sui/test/server/adv-tools-versionSpec.js b/packages/lint-repository-sui/test/server/adv-tools-versionSpec.js index 8d61e3596..e14a57586 100644 --- a/packages/lint-repository-sui/test/server/adv-tools-versionSpec.js +++ b/packages/lint-repository-sui/test/server/adv-tools-versionSpec.js @@ -22,7 +22,6 @@ RuleTester.create('adv-tools-version', handler).run({ report: dedent` Your project doesnt have installed logger. Please install at least the version ${ADV_TOOLS_ENTRIES[0][1]}. - If you are not sure about how do it, please contact with Platform Web. `, monitoring: false }, @@ -34,7 +33,6 @@ RuleTester.create('adv-tools-version', handler).run({ report: dedent` Please be sure that your repository use the latest logger. Version ${ADV_TOOLS_ENTRIES[0][1]}. Your current version is 100. - If you are not sure about how do it, please contact with Platform Web. `, monitoring: false }, @@ -42,7 +40,6 @@ RuleTester.create('adv-tools-version', handler).run({ missmatch: '', report: dedent` To calculate the ADV Tool version first we need to have a package-lock.json in the root - If you are not sure about how do it, please contact with Platform Web. `, monitoring: 0 } diff --git a/packages/lint-repository-sui/test/server/cypress-versionSpec.js b/packages/lint-repository-sui/test/server/cypress-versionSpec.js index 1b2a7356b..d21218c1d 100644 --- a/packages/lint-repository-sui/test/server/cypress-versionSpec.js +++ b/packages/lint-repository-sui/test/server/cypress-versionSpec.js @@ -18,7 +18,6 @@ RuleTester.create('cypress-version', handler).run({ report: dedent` Your project doesnt have installed Cypress. Please install at least the version 10. - If you are not sure about how do it, please contact with Platform Web. `, monitoring: 0 }, @@ -28,7 +27,6 @@ RuleTester.create('cypress-version', handler).run({ report: dedent` Please be sure that your repository use the latest Cypress Version 10. Your current version is 17. - If you are not sure about how do it, please contact with Platform Web. `, monitoring: '17' }, @@ -36,7 +34,6 @@ RuleTester.create('cypress-version', handler).run({ missmatch: '', report: dedent` To calculate the cypress version first we need to have a package-lock.json in the root - If you are not sure about how do it, please contact with Platform Web. `, monitoring: 0 } diff --git a/packages/lint-repository-sui/test/server/github-actionSpec.js b/packages/lint-repository-sui/test/server/github-actionSpec.js index 346cf8e42..df811d6ad 100644 --- a/packages/lint-repository-sui/test/server/github-actionSpec.js +++ b/packages/lint-repository-sui/test/server/github-actionSpec.js @@ -27,7 +27,6 @@ RuleTester.create('github-action', handler).run({ name: 'The porject has NOT define a worflows folder', report: dedent` Every project needs to have a .github/worflows folder to be able to run CI/CD in GHA. - If you are not sure about how do it, please contact with Platform Web. `, monitoring: false }, @@ -36,7 +35,6 @@ RuleTester.create('github-action', handler).run({ name: 'The porject has NOT define a worflow for the main branch', report: dedent` Every project needs to have a workflow to run on master. - If you are not sure about how do it, please contact with Platform Web. `, monitoring: false }, @@ -45,7 +43,6 @@ RuleTester.create('github-action', handler).run({ name: 'The porject has NOT define a worflow for PRs', report: dedent` Every project needs to have a workflow to run on every PR. - If you are not sure about how do it, please contact with Platform Web. `, monitoring: false } diff --git a/packages/lint-repository-sui/test/server/node-versionSpec.js b/packages/lint-repository-sui/test/server/node-versionSpec.js index db1c118b6..98bb2210e 100644 --- a/packages/lint-repository-sui/test/server/node-versionSpec.js +++ b/packages/lint-repository-sui/test/server/node-versionSpec.js @@ -18,7 +18,6 @@ RuleTester.create('node-version', handler).run({ report: dedent` Your project has more than one .nvmrc file. That can be dangerous. Please, use onle ONE in the root of your project. - If you are not sure about how do it, please contact with Platform Web. `, monitoring: 0 }, @@ -28,7 +27,6 @@ RuleTester.create('node-version', handler).run({ report: dedent` Your current Node version is 16. Please be sure that your repository use the latest Node Version 20. - If you are not sure about how do it, please contact with Platform Web. `, monitoring: 0 }, @@ -36,7 +34,6 @@ RuleTester.create('node-version', handler).run({ missmatch: '', report: dedent` Every project have to have a .npmrc file to define the node versión. - If you are not sure about how do it, please contact with Platform Web. `, monitoring: 0 } diff --git a/packages/lint-repository-sui/test/server/package-lockSpec.js b/packages/lint-repository-sui/test/server/package-lockSpec.js index 92773f311..416fb97d6 100644 --- a/packages/lint-repository-sui/test/server/package-lockSpec.js +++ b/packages/lint-repository-sui/test/server/package-lockSpec.js @@ -17,7 +17,6 @@ RuleTester.create('package-lock', handler).run({ name: 'Project doesnt has package-lock in the root folder', report: dedent` Every project needs to have a package-lock.json file to be used in CI/CD. - If you are not sure about how do it, please contact with Platform Web. `, monitoring: false } diff --git a/packages/lint-repository-sui/test/server/react-versionSpec.js b/packages/lint-repository-sui/test/server/react-versionSpec.js index 6f3ceded4..50a4608b2 100644 --- a/packages/lint-repository-sui/test/server/react-versionSpec.js +++ b/packages/lint-repository-sui/test/server/react-versionSpec.js @@ -18,7 +18,6 @@ RuleTester.create('react-version', handler).run({ report: dedent` Your project doesnt have installed React. Please install at least the version 18. - If you are not sure about how do it, please contact with Platform Web. `, monitoring: 0 }, @@ -28,7 +27,6 @@ RuleTester.create('react-version', handler).run({ report: dedent` Please be sure that your repository use the latest React Version 18. Your current version is 17. - If you are not sure about how do it, please contact with Platform Web. `, monitoring: '17' }, @@ -36,7 +34,6 @@ RuleTester.create('react-version', handler).run({ missmatch: '', report: dedent` To calculate the react version first we need to have a package-lock.json in the root - If you are not sure about how do it, please contact with Platform Web. `, monitoring: 0 } diff --git a/packages/lint-repository-sui/test/server/structureSpec.js b/packages/lint-repository-sui/test/server/structureSpec.js index b06b76a92..c2bb82c76 100644 --- a/packages/lint-repository-sui/test/server/structureSpec.js +++ b/packages/lint-repository-sui/test/server/structureSpec.js @@ -28,7 +28,6 @@ RuleTester.create('structure', handler).run({ report: dedent` The file or folder ${pattern} is missing. This repository should follow the Golden Path file Structure. - If you are not sure about how do it, please contact with Platform Web. `, monitoring: false } @@ -39,7 +38,6 @@ RuleTester.create('structure', handler).run({ report: dedent` The file or folder .github/dependabot.yml is missing. This repository should follow the Golden Path file Structure. - If you are not sure about how do it, please contact with Platform Web. `, monitoring: false }, diff --git a/packages/lint-repository-sui/test/server/sui-tools-versionSepec.js b/packages/lint-repository-sui/test/server/sui-tools-versionSepec.js index 6e57a0480..3607493ca 100644 --- a/packages/lint-repository-sui/test/server/sui-tools-versionSepec.js +++ b/packages/lint-repository-sui/test/server/sui-tools-versionSepec.js @@ -22,7 +22,6 @@ RuleTester.create('sui-tools-version', handler).run({ report: dedent` Your project does not have installed bundler. Please install at least the version ${SUI_TOOLS_ENTRIES[0][1]}. - If you are not sure about how do it, please contact with Platform Web. `, monitoring: false }, @@ -34,7 +33,6 @@ RuleTester.create('sui-tools-version', handler).run({ report: dedent` Please be sure that your repository use the latest bundler. Version ${SUI_TOOLS_ENTRIES[0][1]}. Your current version is 100. - If you are not sure about how do it, please contact with Platform Web. `, monitoring: false }, @@ -42,7 +40,6 @@ RuleTester.create('sui-tools-version', handler).run({ missmatch: '', report: dedent` To calculate the SUI Tool version first we need to have a package-lock.json in the root - If you are not sure about how do it, please contact with Platform Web. `, monitoring: 0 } diff --git a/packages/lint-repository-sui/test/server/typescriptSpec.js b/packages/lint-repository-sui/test/server/typescriptSpec.js index 41d63d86b..5f6b5acbe 100644 --- a/packages/lint-repository-sui/test/server/typescriptSpec.js +++ b/packages/lint-repository-sui/test/server/typescriptSpec.js @@ -23,7 +23,6 @@ RuleTester.create('typescript', handler).run({ report: dedent` Please be sure that your repository use the latest TypeScript version 5. Your current version is 4. - If you are not sure about it, please contact Web Platform. `, monitoring: false }, @@ -33,7 +32,6 @@ RuleTester.create('typescript', handler).run({ report: dedent` Your project doesn't have installed TypeScript. Please install at least the version 5. - If you are not sure about it, please contact Web Platform. `, monitoring: false }, @@ -41,7 +39,6 @@ RuleTester.create('typescript', handler).run({ missmatch: '', report: dedent` Every project must have a \`tsconfig.json\` file to setup TypeScript in the project. - If you are not sure about how do it, please contact with Web Platform team. `, monitoring: false } From 1eef5baf415d7e384f93439cf3528fe180197900 Mon Sep 17 00:00:00 2001 From: "jordi.munoz@adevinta.com" Date: Tue, 7 May 2024 15:50:17 +0200 Subject: [PATCH 286/545] feat(packages/sui-bundler): add overlay option to sui bundler dev --- packages/sui-bundler/bin/sui-bundler-dev.js | 5 +++-- .../sui-bundler/factories/createDevServerConfig.js | 13 +++++++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/packages/sui-bundler/bin/sui-bundler-dev.js b/packages/sui-bundler/bin/sui-bundler-dev.js index 37ce14eba..5f0b192d9 100755 --- a/packages/sui-bundler/bin/sui-bundler-dev.js +++ b/packages/sui-bundler/bin/sui-bundler-dev.js @@ -39,6 +39,7 @@ if (!module.parent) { [] ) .option('-w, --watch', 'Watch files and restart the server on change', DEFAULT_WATCH) + .option('-y, --overlay', 'Show error overlay') .on('--help', () => { console.log(' Examples:') console.log('') @@ -66,7 +67,7 @@ const start = async ({config = webpackConfig, packagesToLink = program.opts().li const port = await choosePort(DEFAULT_PORT) const urls = prepareUrls(protocol, HOST, port) - const {linkAll} = program.opts() + const {linkAll, overlay = false} = program.opts() const configVars = JSON.stringify({packagesToLink, linkAll}) const version = `${__dirname}|${configVars}` @@ -81,7 +82,7 @@ const start = async ({config = webpackConfig, packagesToLink = program.opts().li } const compiler = createCompiler(nextConfig, urls) - const serverConfig = createDevServerConfig(nextConfig, urls.lanUrlForConfig) + const serverConfig = createDevServerConfig({config: nextConfig, overlay}) const devServer = new WebpackDevServer( { ...serverConfig, diff --git a/packages/sui-bundler/factories/createDevServerConfig.js b/packages/sui-bundler/factories/createDevServerConfig.js index 00b3487a6..b608031be 100644 --- a/packages/sui-bundler/factories/createDevServerConfig.js +++ b/packages/sui-bundler/factories/createDevServerConfig.js @@ -7,17 +7,26 @@ const {HOST, HTTPS} = process.env const protocol = HTTPS === 'true' ? 'https' : 'http' const host = HOST || '0.0.0.0' +const getOverlayValue = overlay => { + return overlay + ? { + errors: true, + warnings: false + } + : false +} + const getWatchOptions = ({context, watch}) => { if (!watch) return false return {ignored: ignoredFiles(context)} } /** @returns {import('webpack-dev-server').Configuration} */ -module.exports = config => ({ +module.exports = ({config, overlay}) => ({ allowedHosts: 'all', client: { logging: 'none', - overlay: false, + overlay: getOverlayValue(overlay), progress: false }, // Enable gzip compression of generated files From bdf4e35018c282607250abbba17bc4b257cf4b91 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Tue, 7 May 2024 14:37:40 +0000 Subject: [PATCH 287/545] release(packages/sui-bundler): v9.61.0 [skip ci] --- packages/sui-bundler/CHANGELOG.md | 10 ++++++++++ packages/sui-bundler/package.json | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/sui-bundler/CHANGELOG.md b/packages/sui-bundler/CHANGELOG.md index 4ba6fd298..04f48caa4 100644 --- a/packages/sui-bundler/CHANGELOG.md +++ b/packages/sui-bundler/CHANGELOG.md @@ -1,5 +1,15 @@ # CHANGELOG +# 9.61.0 (2024-05-07) + + +### Features + +* add overlay option to sui bundler dev ([1eef5ba](https://github.com/SUI-Components/sui/commit/1eef5baf415d7e384f93439cf3528fe180197900)) +* set dev server overlay to false ([8f19ba1](https://github.com/SUI-Components/sui/commit/8f19ba1839f4df3f1be5c046d1206ef50ede1d1f)) + + + # 9.60.0 (2024-05-06) diff --git a/packages/sui-bundler/package.json b/packages/sui-bundler/package.json index aee4f558a..259de35fa 100644 --- a/packages/sui-bundler/package.json +++ b/packages/sui-bundler/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/bundler", - "version": "9.60.0", + "version": "9.61.0", "description": "Config-free bundler for ES6 React apps.", "bin": { "sui-bundler": "./bin/sui-bundler.js" From 1b212939a290d9453d7548d25ca007fec4b25327 Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Wed, 8 May 2024 16:26:21 +0200 Subject: [PATCH 288/545] feat(packages/lint-repository-sui): Add rules to check sass and spark adoption --- packages/lint-repository-sui/src/index.js | 6 +- .../src/rules/sass-files.js | 39 ++++++++++ .../src/rules/spark-adoption.js | 72 +++++++++++++++++++ .../test/server/sass-filesSpec.js | 18 +++++ .../test/server/spark-adoptionSpec.js | 52 ++++++++++++++ 5 files changed, 186 insertions(+), 1 deletion(-) create mode 100644 packages/lint-repository-sui/src/rules/sass-files.js create mode 100644 packages/lint-repository-sui/src/rules/spark-adoption.js create mode 100644 packages/lint-repository-sui/test/server/sass-filesSpec.js create mode 100644 packages/lint-repository-sui/test/server/spark-adoptionSpec.js diff --git a/packages/lint-repository-sui/src/index.js b/packages/lint-repository-sui/src/index.js index 69bf92db8..30747a272 100644 --- a/packages/lint-repository-sui/src/index.js +++ b/packages/lint-repository-sui/src/index.js @@ -8,6 +8,8 @@ const Structure = require('./rules/structure.js') const SuiToolsVersion = require('./rules/sui-tools-version.js') const ADVToolsVersion = require('./rules/adv-tools-version.js') const TSvsJS = require('./rules/ts-vs-js-files.js') +const Sass = require('./rules/sass-files.js') +const Spark = require('./rules/spark-adoption.js') // ------------------------------------------------------------------------------ // Plugin Definition @@ -25,6 +27,8 @@ module.exports = { structure: Structure, 'sui-tools-version': SuiToolsVersion, 'adv-tools-version': ADVToolsVersion, - 'ts-vs-js-files': TSvsJS + 'ts-vs-js-files': TSvsJS, + 'sass-files': Sass, + 'spark-adoption': Spark } } diff --git a/packages/lint-repository-sui/src/rules/sass-files.js b/packages/lint-repository-sui/src/rules/sass-files.js new file mode 100644 index 000000000..f4cedab3d --- /dev/null +++ b/packages/lint-repository-sui/src/rules/sass-files.js @@ -0,0 +1,39 @@ +const dedent = require('string-dedent') + +module.exports = { + meta: { + type: 'problem', + docs: { + description: 'This metric reports the number of sass files in your repository', + recommended: true, + url: null + }, + fixable: null, + schema: [], + messages: { + percentage: dedent` + Currently, your project has {{number}} sass files. + We should remove as many sass files as we can + ` + } + }, + create: function (context) { + return { + '**/*.scss': matches => { + context.report({ + messageId: 'percentage', + data: {number: matches.length} + }) + return context.monitoring(matches.length) + }, + + missmatch: key => { + context.report({ + messageId: 'percentage', + data: {percentage: 0} + }) + context.monitoring(0) + } + } + } +} diff --git a/packages/lint-repository-sui/src/rules/spark-adoption.js b/packages/lint-repository-sui/src/rules/spark-adoption.js new file mode 100644 index 000000000..887419a63 --- /dev/null +++ b/packages/lint-repository-sui/src/rules/spark-adoption.js @@ -0,0 +1,72 @@ +const dedent = require('string-dedent') + +const SUI_TOOLS_PACKAGES = [ + '@s-ui/react-context', + '@s-ui/react-form-builder', + '@s-ui/react-hooks', + '@s-ui/react-router', + '@s-ui/react-head' +] + +module.exports = { + meta: { + type: 'problem', + docs: { + description: 'This metric reports the number of spark component we use over sui-components', + recommended: true, + url: null + }, + fixable: null, + schema: [], + messages: { + percentage: dedent` + Currently, your project utilizes {{percentage}}% of Spark UI components out of all SUI and Spark UI components in your project. We should aim to remove as many SUI components as possible. + ` + } + }, + + // import * from '@s-ui/react-*' (A) + // import * from '@spark-ui/*' (B) + // @s-ui/react-context + // @s-ui/react-form-builder + // @s-ui/react-hooks + // @s-ui/react-router + // @s-ui/react-head + + // percentage => B*100 / (A+B) + create: function (context) { + return { + '**/*.(j|t)s(x)?': matches => { + const totalSUIComponents = matches + .filter(match => match.raw.match(/'@s-ui\/react-.*'/)) + .map(file => file.raw.split(/\n+/)) + .flat(Infinity) + .filter(line => line.match(/'@s-ui\/react-.*'/)) + .filter(line => !SUI_TOOLS_PACKAGES.some(pkg => line.includes(pkg))).length + + const totalSparkComponents = matches + .filter(match => match.raw.match(/'@spark-ui\/.*'/)) + .map(file => file.raw.split(/\n+/)) + .flat(Infinity) + .filter(line => line.match(/'@spark-ui\/.*'/)).length + + let percentage = (totalSparkComponents * 100) / (totalSparkComponents + totalSUIComponents) + percentage = Math.round((percentage + Number.EPSILON) * 100) / 100 + + context.report({ + messageId: 'percentage', + data: {percentage} + }) + return context.monitoring(percentage) + }, + + missmatch: key => { + context.report({ + messageId: 'percentage', + data: {percentage: 0} + }) + context.monitoring(0) + } + } + } +} diff --git a/packages/lint-repository-sui/test/server/sass-filesSpec.js b/packages/lint-repository-sui/test/server/sass-filesSpec.js new file mode 100644 index 000000000..a95936d33 --- /dev/null +++ b/packages/lint-repository-sui/test/server/sass-filesSpec.js @@ -0,0 +1,18 @@ +import dedent from 'string-dedent' + +import handler from '../../src/rules/sass-files.js' +import {MatchStub, RuleTester} from '../TestHelpers.js' + +RuleTester.create('sass-files', handler).run({ + valid: [ + { + '**/*.scss': [MatchStub.create({}), MatchStub.create({}), MatchStub.create({})], + name: 'Send number of Sass files', + monitoring: 3, + report: dedent` + Currently, your project has 3 sass files. + We should remove as many sass files as we can + ` + } + ] +}) diff --git a/packages/lint-repository-sui/test/server/spark-adoptionSpec.js b/packages/lint-repository-sui/test/server/spark-adoptionSpec.js new file mode 100644 index 000000000..bfa5351f2 --- /dev/null +++ b/packages/lint-repository-sui/test/server/spark-adoptionSpec.js @@ -0,0 +1,52 @@ +import dedent from 'string-dedent' + +import handler from '../../src/rules/spark-adoption.js' +import {MatchStub, RuleTester} from '../TestHelpers.js' + +RuleTester.create('spark-adoption', handler).run({ + valid: [ + { + '**/*.(j|t)s(x)?': [ + MatchStub.create({raw: `from * import '@s-ui/react-atom-button'`}) // eslint-disable-line + ], + name: 'Send percentage', + monitoring: 0, + report: dedent` + Currently, your project utilizes 0% of Spark UI components out of all SUI and Spark UI components in your project. We should aim to remove as many SUI components as possible. + ` + }, + { + '**/*.(j|t)s(x)?': [ + MatchStub.create({raw: `from * import '@s-ui/react-atom-button'`}), // eslint-disable-line + MatchStub.create({raw: `from * import '@spark-ui/button'`}) // eslint-disable-line + ], + name: 'Send percentage', + monitoring: 50, + report: dedent` + Currently, your project utilizes 50% of Spark UI components out of all SUI and Spark UI components in your project. We should aim to remove as many SUI components as possible. + ` + }, + { + '**/*.(j|t)s(x)?': [ + MatchStub.create({raw: `from * import '@s-ui/react-atom-button'`}), // eslint-disable-line + MatchStub.create({raw: `from * import '@s-ui/react-head'`}), // eslint-disable-line + MatchStub.create({raw: `from * import '@spark-ui/button'`}) // eslint-disable-line + ], + name: 'Send percentage', + monitoring: 50, + report: dedent` + Currently, your project utilizes 50% of Spark UI components out of all SUI and Spark UI components in your project. We should aim to remove as many SUI components as possible. + ` + }, + { + '**/*.(j|t)s(x)?': [ + MatchStub.create({raw: `from * import '@spark-ui/button'`}) // eslint-disable-line + ], + name: 'Send percentage', + monitoring: 100, + report: dedent` + Currently, your project utilizes 100% of Spark UI components out of all SUI and Spark UI components in your project. We should aim to remove as many SUI components as possible. + ` + } + ] +}) From 8049aca3ef8adbd2e19352ea592c9df79c5eb932 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Thu, 9 May 2024 11:19:39 +0000 Subject: [PATCH 289/545] release(packages/sui-studio): v11.42.0 [skip ci] --- packages/sui-studio/CHANGELOG.md | 9 +++++++++ packages/sui-studio/package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/sui-studio/CHANGELOG.md b/packages/sui-studio/CHANGELOG.md index c8761f6b1..8d3be67c4 100644 --- a/packages/sui-studio/CHANGELOG.md +++ b/packages/sui-studio/CHANGELOG.md @@ -1,5 +1,14 @@ # CHANGELOG +# 11.42.0 (2024-05-09) + + +### Features + +* Add jest command and template to sui-studio generate script ([f392aa8](https://github.com/SUI-Components/sui/commit/f392aa8e4520ac49224d3d6fc86325654e27160a)) + + + # 11.41.0 (2024-05-06) diff --git a/packages/sui-studio/package.json b/packages/sui-studio/package.json index 4a24df8a6..d19125ff1 100644 --- a/packages/sui-studio/package.json +++ b/packages/sui-studio/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/studio", - "version": "11.41.0", + "version": "11.42.0", "description": "Develop, maintain and publish your SUI components.", "main": "index.js", "bin": { From be93c08efee5fb45a56209fbc0d8b2bfbf7667af Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Thu, 9 May 2024 15:50:21 +0200 Subject: [PATCH 290/545] feat(packages/lint-repository-sui): Add rule to detect how many component here is in the app --- packages/lint-repository-sui/src/index.js | 4 +- .../src/rules/components-location.js | 40 +++++++++++++++ .../src/rules/spark-adoption.js | 9 ---- .../lint-repository-sui/test/TestHelpers.js | 15 ++++-- .../test/server/components-locationSpec.js | 51 +++++++++++++++++++ 5 files changed, 104 insertions(+), 15 deletions(-) create mode 100644 packages/lint-repository-sui/src/rules/components-location.js create mode 100644 packages/lint-repository-sui/test/server/components-locationSpec.js diff --git a/packages/lint-repository-sui/src/index.js b/packages/lint-repository-sui/src/index.js index 30747a272..b103f77cc 100644 --- a/packages/lint-repository-sui/src/index.js +++ b/packages/lint-repository-sui/src/index.js @@ -10,6 +10,7 @@ const ADVToolsVersion = require('./rules/adv-tools-version.js') const TSvsJS = require('./rules/ts-vs-js-files.js') const Sass = require('./rules/sass-files.js') const Spark = require('./rules/spark-adoption.js') +const ComponentsLocation = require('./rules/components-location.js') // ------------------------------------------------------------------------------ // Plugin Definition @@ -29,6 +30,7 @@ module.exports = { 'adv-tools-version': ADVToolsVersion, 'ts-vs-js-files': TSvsJS, 'sass-files': Sass, - 'spark-adoption': Spark + 'spark-adoption': Spark, + 'components-location': ComponentsLocation } } diff --git a/packages/lint-repository-sui/src/rules/components-location.js b/packages/lint-repository-sui/src/rules/components-location.js new file mode 100644 index 000000000..fbdfc4809 --- /dev/null +++ b/packages/lint-repository-sui/src/rules/components-location.js @@ -0,0 +1,40 @@ +const dedent = require('string-dedent') + +const handler = (context, matches) => { + const badComponents = matches + .filter(match => match.path.match(/src\/pages\/.*/)) + .filter(match => !match.path.match(/src\/pages\/\w+\/index\.(j|t)s(x)?/)) + .filter(match => match.raw.match(/(?<\w+\s*.*>)|(?<>)|(?react)/)).length + + debugger + context.report({ + messageId: 'number', + data: {number: badComponents} + }) + return context.monitoring(badComponents) +} + +module.exports = { + meta: { + type: 'problem', + docs: { + description: 'This metric reports how many component live outside of our Studios.', + recommended: true, + url: null + }, + fixable: null, + schema: [], + messages: { + number: dedent` + Currently, your project has {{number}} component living outside of your SUI-Studio. + Try to move all those component to your \`packages/ui/components\` folder. + ` + } + }, + create: function (context) { + return { + 'app/src/pages/**/*.(j|t)s(x)?': handler.bind(undefined, context), + 'src/**/*.(j|t)s(x)?': handler.bind(undefined, context) + } + } +} diff --git a/packages/lint-repository-sui/src/rules/spark-adoption.js b/packages/lint-repository-sui/src/rules/spark-adoption.js index 887419a63..44413e467 100644 --- a/packages/lint-repository-sui/src/rules/spark-adoption.js +++ b/packages/lint-repository-sui/src/rules/spark-adoption.js @@ -25,15 +25,6 @@ module.exports = { } }, - // import * from '@s-ui/react-*' (A) - // import * from '@spark-ui/*' (B) - // @s-ui/react-context - // @s-ui/react-form-builder - // @s-ui/react-hooks - // @s-ui/react-router - // @s-ui/react-head - - // percentage => B*100 / (A+B) create: function (context) { return { '**/*.(j|t)s(x)?': matches => { diff --git a/packages/lint-repository-sui/test/TestHelpers.js b/packages/lint-repository-sui/test/TestHelpers.js index 297128cb8..c4792cd4c 100644 --- a/packages/lint-repository-sui/test/TestHelpers.js +++ b/packages/lint-repository-sui/test/TestHelpers.js @@ -30,9 +30,13 @@ export class RuleTester { }) tests.forEach(assertion => { - const {monitoring, report, name, ...rest} = assertion + const {monitoring, report, name, only, skip, ...rest} = assertion Object.entries(rest).forEach(([FSPattern, matches]) => { - it(name ?? FSPattern, function () { + const itFN = only ? it.only : // eslint-disable-line + skip ? it.skip : // eslint-disable-line + it // eslint-disable-line + + itFN(name ?? FSPattern, function () { instance.handler.create(this.ctxt)[FSPattern](matches) monitoring && expect(this.ctxt.monitoring.calledWith(monitoring)).to.be.eql(true) report && expect(instance._formatMessages(this.ctxt.report)).to.be.eqls(report) @@ -53,13 +57,14 @@ export class RuleTester { } export class MatchStub { - static create({parsed, raw, fullPath}) { - return new MatchStub(parsed, raw, fullPath) + static create({parsed, raw, fullPath, path}) { + return new MatchStub(parsed, raw, fullPath, path) } - constructor(parsed, raw, fullPath) { + constructor(parsed, raw, fullPath, path) { this.parsed = parsed this.raw = raw this.fullPath = fullPath + this.path = path } } diff --git a/packages/lint-repository-sui/test/server/components-locationSpec.js b/packages/lint-repository-sui/test/server/components-locationSpec.js new file mode 100644 index 000000000..b7d3471e1 --- /dev/null +++ b/packages/lint-repository-sui/test/server/components-locationSpec.js @@ -0,0 +1,51 @@ +import dedent from 'string-dedent' + +import handler from '../../src/rules/components-location.js' +import {MatchStub, RuleTester} from '../TestHelpers.js' + +RuleTester.create('components-location', handler).run({ + valid: [ + { + 'app/src/pages/**/*.(j|t)s(x)?': [ + MatchStub.create({path: 'src/app.js'}), // eslint-disable-line + MatchStub.create({path: 'src/pages/index.js', raw: ''}), // eslint-disable-line + MatchStub.create({path: 'src/pages/Landing/index.js'}), // eslint-disable-line + MatchStub.create({path: 'src/pages/Landing/component/index.js', raw: '
'}), // eslint-disable-line + ], + name: 'Send percentage', + monitoring: 1, + report: dedent` + Currently, your project has 1 component living outside of your SUI-Studio. + Try to move all those component to your \`packages/ui/components\` folder. + ` + }, + { + 'src/**/*.(j|t)s(x)?': [ + MatchStub.create({path: 'src/app.js'}), // eslint-disable-line + MatchStub.create({path: 'src/pages/index.js', raw: '

Hola

'}), // eslint-disable-line + MatchStub.create({path: 'src/pages/Landing/index.js', raw: ''}), // eslint-disable-line + MatchStub.create({path: 'src/pages/Landing/component/index.js', raw: '
'}), // eslint-disable-line + ], + name: 'Send percentage', + monitoring: 2, + report: dedent` + Currently, your project has 2 component living outside of your SUI-Studio. + Try to move all those component to your \`packages/ui/components\` folder. + ` + }, + { + 'src/**/*.(j|t)s(x)?': [ + MatchStub.create({path: 'src/app.js'}), // eslint-disable-line + MatchStub.create({path: 'src/pages/index.js', raw: 'const name = "Pepe"'}), // eslint-disable-line + MatchStub.create({path: 'src/pages/Landing/index.js', raw: ''}), // eslint-disable-line + MatchStub.create({path: 'src/pages/Landing/component/index.js', raw: '
'}), // eslint-disable-line + ], + name: 'Send percentage', + monitoring: 1, + report: dedent` + Currently, your project has 1 component living outside of your SUI-Studio. + Try to move all those component to your \`packages/ui/components\` folder. + ` + } + ] +}) From 07062f24a7ecacec517ad5d2353e7d692f4f71b6 Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Thu, 9 May 2024 15:52:50 +0200 Subject: [PATCH 291/545] refactor(packages/lint-repository-sui): remove debugger --- packages/lint-repository-sui/src/rules/components-location.js | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/lint-repository-sui/src/rules/components-location.js b/packages/lint-repository-sui/src/rules/components-location.js index fbdfc4809..28ba70d84 100644 --- a/packages/lint-repository-sui/src/rules/components-location.js +++ b/packages/lint-repository-sui/src/rules/components-location.js @@ -6,7 +6,6 @@ const handler = (context, matches) => { .filter(match => !match.path.match(/src\/pages\/\w+\/index\.(j|t)s(x)?/)) .filter(match => match.raw.match(/(?<\w+\s*.*>)|(?<>)|(?react)/)).length - debugger context.report({ messageId: 'number', data: {number: badComponents} From 1d7757d6799d66851e1668d2559399524355d2ac Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Thu, 9 May 2024 17:04:29 +0200 Subject: [PATCH 292/545] Update packages/eslint-plugin-sui/package.json MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Joan León --- packages/eslint-plugin-sui/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/eslint-plugin-sui/package.json b/packages/eslint-plugin-sui/package.json index 776027876..8f117a145 100644 --- a/packages/eslint-plugin-sui/package.json +++ b/packages/eslint-plugin-sui/package.json @@ -19,7 +19,7 @@ "update:eslint-docs": "npx eslint-doc-generator" }, "dependencies": { - "fast-glob": "^3.3.2", + "fast-glob": "3.3.2", "requireindex": "1.2.0", "string-dedent": "3.0.1" }, From 2b02d2b90f2a87eb03bed204bb8cd2097ce473ee Mon Sep 17 00:00:00 2001 From: sui-bot Date: Fri, 10 May 2024 09:05:34 +0000 Subject: [PATCH 293/545] release(packages/eslint-plugin-sui): v1.5.0 [skip ci] --- packages/eslint-plugin-sui/CHANGELOG.md | 10 ++++++++++ packages/eslint-plugin-sui/package.json | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/eslint-plugin-sui/CHANGELOG.md b/packages/eslint-plugin-sui/CHANGELOG.md index b6d4ef7a7..16da05dd8 100644 --- a/packages/eslint-plugin-sui/CHANGELOG.md +++ b/packages/eslint-plugin-sui/CHANGELOG.md @@ -1,5 +1,15 @@ # CHANGELOG +# 1.5.0 (2024-05-10) + + +### Features + +* Add rule to check relative imports ([07cd08b](https://github.com/SUI-Components/sui/commit/07cd08b2aad3edc0f72a6cd1d081360d02a6e501)) +* several fixes ([5906840](https://github.com/SUI-Components/sui/commit/5906840c1072afea5ceda3dc21f106fd6a8fcc80)) + + + # 1.4.0 (2024-04-30) diff --git a/packages/eslint-plugin-sui/package.json b/packages/eslint-plugin-sui/package.json index 8f117a145..48f4f681a 100644 --- a/packages/eslint-plugin-sui/package.json +++ b/packages/eslint-plugin-sui/package.json @@ -1,6 +1,6 @@ { "name": "eslint-plugin-sui", - "version": "1.4.0", + "version": "1.5.0", "access": "public", "description": "Set of sui lint rules", "keywords": [ From 861bdd61b0bf59a24f355c452c5dcf5f59d0a337 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Fri, 10 May 2024 09:05:37 +0000 Subject: [PATCH 294/545] release(packages/lint-repository-sui): v1.5.0 [skip ci] --- packages/lint-repository-sui/CHANGELOG.md | 12 ++++++++++++ packages/lint-repository-sui/package.json | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/packages/lint-repository-sui/CHANGELOG.md b/packages/lint-repository-sui/CHANGELOG.md index 437387780..b297db61c 100644 --- a/packages/lint-repository-sui/CHANGELOG.md +++ b/packages/lint-repository-sui/CHANGELOG.md @@ -1,5 +1,17 @@ # CHANGELOG +# 1.5.0 (2024-05-10) + + +### Features + +* Add rule to detect how many component here is in the app ([be93c08](https://github.com/SUI-Components/sui/commit/be93c08efee5fb45a56209fbc0d8b2bfbf7667af)) +* Add rules to check sass and spark adoption ([1b21293](https://github.com/SUI-Components/sui/commit/1b212939a290d9453d7548d25ca007fec4b25327)) +* Create a metric about how many tsx? has the repository migrated ([7a7df02](https://github.com/SUI-Components/sui/commit/7a7df02d5bece3d03cdcfc83e8e478560056e79b)) +* remove noise ([a0d017f](https://github.com/SUI-Components/sui/commit/a0d017fe4d11b27a2de8e15a2a5d11af151f3556)) + + + # 1.4.0 (2024-04-05) diff --git a/packages/lint-repository-sui/package.json b/packages/lint-repository-sui/package.json index 5f5f1835b..aaa3e1047 100644 --- a/packages/lint-repository-sui/package.json +++ b/packages/lint-repository-sui/package.json @@ -1,7 +1,7 @@ { "name": "lint-repository-sui", "access": "public", - "version": "1.4.0", + "version": "1.5.0", "description": "Set of sui lint rules to lint a repository", "keywords": [], "author": "Sui", From f9a0201bca19e4b5005ad4668ee5b23cfa5d1393 Mon Sep 17 00:00:00 2001 From: fredyzz <17734680+fredyzz@users.noreply.github.com> Date: Mon, 13 May 2024 14:45:41 +0200 Subject: [PATCH 295/545] feat(packages/sui-ssr): Add SSL option for local development --- packages/sui-ssr/server/index.js | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/packages/sui-ssr/server/index.js b/packages/sui-ssr/server/index.js index f449f7a6b..6e04edefb 100644 --- a/packages/sui-ssr/server/index.js +++ b/packages/sui-ssr/server/index.js @@ -27,6 +27,12 @@ app.set('x-powered-by', false) const EARLY_FLUSH_DEFAULT = true app.locals.earlyFlush = typeof ssrConf.earlyFlush !== 'undefined' ? ssrConf.earlyFlush : EARLY_FLUSH_DEFAULT +const useSSL = + process?.env?.NODE_ENV === 'development' && + Boolean(ssrConf?.SSL?.development) && + Boolean(ssrConf?.SSL?.development?.key) && + Boolean(ssrConf?.SSL?.development?.cert) + const {PORT = 3000, AUTH_USERNAME, AUTH_PASSWORD} = process.env const runningUnderAuth = AUTH_USERNAME && AUTH_PASSWORD const AUTH_DEFINITION = { @@ -96,5 +102,18 @@ const _memoizedHtmlTemplatesMapping = {} app.use(hooks[TYPES.NOT_FOUND]) app.use(hooks[TYPES.INTERNAL_ERROR]) - app.listen(PORT, () => console.log(`Server up & running 🌍 http://localhost:${PORT}`)) // eslint-disable-line + if (!useSSL) app.listen(PORT, () => console.log(`Server up & running 🌍 http://localhost:${PORT}`)) // eslint-disable-line + + if (useSSL) { + const path = require('path') + const https = require('https') + const fs = require('fs') + + const options = { + key: fs.readFileSync(path.join(process.env.PWD, ssrConf.SSL.development.key)), + cert: fs.readFileSync(path.join(process.env.PWD, ssrConf.SSL.development.cert)) + } + + https.createServer(options, app).listen(PORT, () => console.log(`Server up & running 🌍 https://localhost:${PORT}`)) // eslint-disable-line + } })() From 32bb1ebf9546b026bf6e4a1de2123cf1a524809d Mon Sep 17 00:00:00 2001 From: fredyzz <17734680+fredyzz@users.noreply.github.com> Date: Mon, 13 May 2024 15:04:32 +0200 Subject: [PATCH 296/545] feat(packages/sui-ssr): Add SSL to README --- packages/sui-ssr/README.md | 15 +++++++++++++-- packages/sui-ssr/server/index.js | 4 ++-- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/packages/sui-ssr/README.md b/packages/sui-ssr/README.md index cf13d8e7f..59f247cbf 100644 --- a/packages/sui-ssr/README.md +++ b/packages/sui-ssr/README.md @@ -177,7 +177,6 @@ jobs: > If you want that release commit does not trigger a Travis build you could use the flag `--skip-ci` and commit message will have `[skip ci]` string. See more information about [Travis skipping build docs](https://docs.travis-ci.com/user/customizing-the-build/#skipping-a-build) - ## Use the ssr output as stream It uses the stdout stream so you can do things like: @@ -262,6 +261,19 @@ Configs accepted: > ⚠️ `createStylesFor` does not works as expected when sui-bundler configuration has `onlyHash` defined to `true`. +- **`SSL`** (`undefined`): This is only for local development. It should be usefull to test locally pointing to production endpoints. Certificate should help to avoid CORS issues. This prop should receive and object with the following structure: + + ```json + { + "SSL": { + "development": { + "key": "./.ssl/key.pem", // replace this with the path to the certificate key file + "crt": "./.ssl/crt.pem" // replace this with the path to the certificate crt file + } + } + } + ``` + ## Critical CSS For development you will need start the server with env vars `CRITICAL_CSS_HOST` and `CRITICAL_CSS_PROTOCOL` to allow to the external service request your current page. @@ -295,7 +307,6 @@ export default [ In case you need to share initial client data needed by a context provider, add an `getInitialData` to your context provider. It will be injected into the html as `window.__INITIAL_CONTEXT_VALUE__[you context key]` - ## Link Packages If you want you can link packages when you create a new static version of your site. But if you are using `sui-bundler` to link packages too. Please be sure to be in sync with the packages linkeds in both tools diff --git a/packages/sui-ssr/server/index.js b/packages/sui-ssr/server/index.js index 6e04edefb..2f6a4c3dc 100644 --- a/packages/sui-ssr/server/index.js +++ b/packages/sui-ssr/server/index.js @@ -31,7 +31,7 @@ const useSSL = process?.env?.NODE_ENV === 'development' && Boolean(ssrConf?.SSL?.development) && Boolean(ssrConf?.SSL?.development?.key) && - Boolean(ssrConf?.SSL?.development?.cert) + Boolean(ssrConf?.SSL?.development?.crt) const {PORT = 3000, AUTH_USERNAME, AUTH_PASSWORD} = process.env const runningUnderAuth = AUTH_USERNAME && AUTH_PASSWORD @@ -111,7 +111,7 @@ const _memoizedHtmlTemplatesMapping = {} const options = { key: fs.readFileSync(path.join(process.env.PWD, ssrConf.SSL.development.key)), - cert: fs.readFileSync(path.join(process.env.PWD, ssrConf.SSL.development.cert)) + cert: fs.readFileSync(path.join(process.env.PWD, ssrConf.SSL.development.crt)) } https.createServer(options, app).listen(PORT, () => console.log(`Server up & running 🌍 https://localhost:${PORT}`)) // eslint-disable-line From bae20a3d35c8ef333b102a6a0e3a51de98639aa2 Mon Sep 17 00:00:00 2001 From: fredyzz <17734680+fredyzz@users.noreply.github.com> Date: Mon, 13 May 2024 15:08:40 +0200 Subject: [PATCH 297/545] docs(packages/sui-ssr): Improve README --- packages/sui-ssr/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sui-ssr/README.md b/packages/sui-ssr/README.md index 59f247cbf..7c535f730 100644 --- a/packages/sui-ssr/README.md +++ b/packages/sui-ssr/README.md @@ -261,7 +261,7 @@ Configs accepted: > ⚠️ `createStylesFor` does not works as expected when sui-bundler configuration has `onlyHash` defined to `true`. -- **`SSL`** (`undefined`): This is only for local development. It should be usefull to test locally pointing to production endpoints. Certificate should help to avoid CORS issues. This prop should receive and object with the following structure: +- **`SSL`** (`undefined`): This configuration is intended solely for local development. It's useful for conducting local tests that target production endpoints. The inclusion of a certificate can help circumvent CORS issues. The property in question should be assigned an object that adheres to the following structure:: ```json { From 1a0f9baa01225299980e4c202026b7d1ad899eda Mon Sep 17 00:00:00 2001 From: fredyzz <17734680+fredyzz@users.noreply.github.com> Date: Mon, 13 May 2024 15:23:31 +0200 Subject: [PATCH 298/545] docs(packages/sui-ssr): Fix readme errors --- packages/sui-ssr/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sui-ssr/README.md b/packages/sui-ssr/README.md index 7c535f730..36abe15d4 100644 --- a/packages/sui-ssr/README.md +++ b/packages/sui-ssr/README.md @@ -261,7 +261,7 @@ Configs accepted: > ⚠️ `createStylesFor` does not works as expected when sui-bundler configuration has `onlyHash` defined to `true`. -- **`SSL`** (`undefined`): This configuration is intended solely for local development. It's useful for conducting local tests that target production endpoints. The inclusion of a certificate can help circumvent CORS issues. The property in question should be assigned an object that adheres to the following structure:: +- **`SSL`** (`undefined`): This configuration is intended solely for local development. It's useful for conducting local tests that target production endpoints. The inclusion of a certificate can help to avoid CORS issues. The property in question should be assigned an object that adheres to the following structure: ```json { From a7b6fb378bbdff0b9bc4c5df7e53f1d4a89074ed Mon Sep 17 00:00:00 2001 From: sui-bot Date: Mon, 13 May 2024 13:36:07 +0000 Subject: [PATCH 299/545] release(packages/sui-ssr): v8.29.0 [skip ci] --- packages/sui-ssr/CHANGELOG.md | 10 ++++++++++ packages/sui-ssr/package.json | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/sui-ssr/CHANGELOG.md b/packages/sui-ssr/CHANGELOG.md index 0b5971147..237739862 100644 --- a/packages/sui-ssr/CHANGELOG.md +++ b/packages/sui-ssr/CHANGELOG.md @@ -1,5 +1,15 @@ # CHANGELOG +# 8.29.0 (2024-05-13) + + +### Features + +* Add SSL option for local development ([f9a0201](https://github.com/SUI-Components/sui/commit/f9a0201bca19e4b5005ad4668ee5b23cfa5d1393)) +* Add SSL to README ([32bb1eb](https://github.com/SUI-Components/sui/commit/32bb1ebf9546b026bf6e4a1de2123cf1a524809d)) + + + # 8.28.0 (2024-05-02) diff --git a/packages/sui-ssr/package.json b/packages/sui-ssr/package.json index 820ff501b..55293419e 100644 --- a/packages/sui-ssr/package.json +++ b/packages/sui-ssr/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/ssr", - "version": "8.28.0", + "version": "8.29.0", "description": "> Plug SSR to you SUI SPA.", "main": "index.js", "bin": { From 67d6c993ae42671384eb12c7a034fbdb6d7fa838 Mon Sep 17 00:00:00 2001 From: Nacho Torrella Date: Tue, 21 May 2024 18:36:34 +0200 Subject: [PATCH 300/545] feat(packages/sui-domain): adapt entry point factory to be able to work with named exports --- packages/sui-domain/src/EntryPointFactory.js | 22 ++++++++++++++++++- .../sui-domain/test/common/EntryPointSpec.js | 15 +++++++++++++ .../fixtures/NamedExportedSingleUseCase.js | 15 +++++++++++++ 3 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 packages/sui-domain/test/common/fixtures/NamedExportedSingleUseCase.js diff --git a/packages/sui-domain/src/EntryPointFactory.js b/packages/sui-domain/src/EntryPointFactory.js index f283bdf90..98a60bf1c 100644 --- a/packages/sui-domain/src/EntryPointFactory.js +++ b/packages/sui-domain/src/EntryPointFactory.js @@ -1,5 +1,14 @@ import createNotImplementedUseCase from './createNotImplementedUseCase.js' +const METHODS_BY_FACTORY_TYPES = { + // Return a method from a whole default exported factory + WHOLE_FACTORY: (factory, method) => factory.default[method], + // Return a single default exported factory + DEFAULT_SINGLE_FACTORY: factory => factory.default, + // Return a single named exported factory + NAMED_SINGLE_FACTORY: ({factory}) => factory +} + export default ({useCases, config, logger, pde}) => class EntryPoint { subscribers = {} @@ -38,7 +47,18 @@ export default ({useCases, config, logger, pde}) => ? useCase // for the whole factory we extract the single method from the array : [useCase] // for the single factory, the method is undefined as is default - const getMethod = isDynamicImportWholeFactory ? factory => factory.default[method] : factory => factory.default + const getMethodByFactoryType = receivedFactory => { + if (isDynamicImportWholeFactory) return METHODS_BY_FACTORY_TYPES.WHOLE_FACTORY + + // according with the creational pattern entryPoint agreement + const hasNamedExportedMethod = Boolean(receivedFactory.factory) + + return hasNamedExportedMethod + ? METHODS_BY_FACTORY_TYPES.NAMED_SINGLE_FACTORY + : METHODS_BY_FACTORY_TYPES.DEFAULT_SINGLE_FACTORY + } + + const getMethod = factory => getMethodByFactoryType(factory)(factory, method) // if loader is undefined then is not implemented, otherwhise load async the useCase return loader === undefined diff --git a/packages/sui-domain/test/common/EntryPointSpec.js b/packages/sui-domain/test/common/EntryPointSpec.js index 5fb2c5417..be0d5a7b0 100644 --- a/packages/sui-domain/test/common/EntryPointSpec.js +++ b/packages/sui-domain/test/common/EntryPointSpec.js @@ -13,6 +13,21 @@ const logger = { describe('EntryPointFactory', () => { describe('without logger', () => { + it('should be able to import a named exported UseCase', async () => { + const useCases = { + named_exported_single_use_case: () => import('./fixtures/NamedExportedSingleUseCase.js') + } + const EntryPoint = EntryPointFactory({config, useCases}) + const domain = new EntryPoint() + + const useCase = domain.get('named_exported_single_use_case') + const response = await useCase.execute() + + expect(useCase.execute).to.be.a('function') + expect(useCase.$).to.be.an('object') + expect(response).to.eql(true) + }) + it('should be able to import the whole UseCase factory', async () => { const useCases = { use_case_from_factory_with_multiple_use_cases: [ diff --git a/packages/sui-domain/test/common/fixtures/NamedExportedSingleUseCase.js b/packages/sui-domain/test/common/fixtures/NamedExportedSingleUseCase.js new file mode 100644 index 000000000..6508f0604 --- /dev/null +++ b/packages/sui-domain/test/common/fixtures/NamedExportedSingleUseCase.js @@ -0,0 +1,15 @@ +class UseCase { + constructor({config}) { + this._config = config + } + + static create({config}) { + return new UseCase({config}) + } + + execute() { + return Promise.resolve(true) + } +} + +export const factory = UseCase.create From dd1a6a93141ef4e3244a0dcc0381b67e89dcc52f Mon Sep 17 00:00:00 2001 From: sui-bot Date: Wed, 22 May 2024 09:45:11 +0000 Subject: [PATCH 301/545] release(packages/sui-domain): v2.16.0 [skip ci] --- packages/sui-domain/CHANGELOG.md | 9 +++++++++ packages/sui-domain/package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/sui-domain/CHANGELOG.md b/packages/sui-domain/CHANGELOG.md index 92a08bd9f..790363293 100644 --- a/packages/sui-domain/CHANGELOG.md +++ b/packages/sui-domain/CHANGELOG.md @@ -1,5 +1,14 @@ # CHANGELOG +# 2.16.0 (2024-05-22) + + +### Features + +* adapt entry point factory to be able to work with named exports ([67d6c99](https://github.com/SUI-Components/sui/commit/67d6c993ae42671384eb12c7a034fbdb6d7fa838)) + + + # 2.15.0 (2024-05-06) diff --git a/packages/sui-domain/package.json b/packages/sui-domain/package.json index 8384f09b9..5de7d9ad2 100644 --- a/packages/sui-domain/package.json +++ b/packages/sui-domain/package.json @@ -1,7 +1,7 @@ { "name": "@s-ui/domain", "type": "module", - "version": "2.15.0", + "version": "2.16.0", "description": "SDK for creating domains", "main": "lib/index.js", "scripts": { From 976998d8a631e36eea1bf3e54011279b1a0f2770 Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Wed, 29 May 2024 16:15:07 +0200 Subject: [PATCH 302/545] feat(packages/sui-react-router): export context --- packages/sui-react-router/package.json | 3 ++- packages/sui-react-router/src/index.js | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/sui-react-router/package.json b/packages/sui-react-router/package.json index b4cc53080..2493e515d 100644 --- a/packages/sui-react-router/package.json +++ b/packages/sui-react-router/package.json @@ -4,7 +4,7 @@ "description": "", "main": "lib/index.js", "scripts": { - "lib": "babel --presets sui ./src --out-dir ./lib", + "lib": "js-compiler", "prepublishOnly": "npm run lib", "test": "npm run test:server && npm run test:browser", "test:browser": "NODE_ENV=test sui-test browser -P 'test/browser/*Spec.js'", @@ -25,6 +25,7 @@ "hoist-non-react-statics": "3.3.2" }, "devDependencies": { + "@s-ui/js-compiler": "1", "@testing-library/react": "11.1.0", "react": "17", "react-dom": "17", diff --git a/packages/sui-react-router/src/index.js b/packages/sui-react-router/src/index.js index 42507b102..796e7b41e 100644 --- a/packages/sui-react-router/src/index.js +++ b/packages/sui-react-router/src/index.js @@ -18,5 +18,8 @@ export {default as match} from './match.js' /* histories */ export {default as browserHistory} from './browserHistory.js' +/* context */ +export {default as RouterContext} from './internal/Context.js' + /* hooks */ export {useLocation, useParams, useRouter} from './hooks.js' From 51972e78ca10c9236e8a0f6853bc34ad4b0af14e Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Wed, 29 May 2024 16:19:49 +0200 Subject: [PATCH 303/545] fix(packages/sui-react-router): fix command --- packages/sui-react-router/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sui-react-router/package.json b/packages/sui-react-router/package.json index 2493e515d..6fe6170bd 100644 --- a/packages/sui-react-router/package.json +++ b/packages/sui-react-router/package.json @@ -4,7 +4,7 @@ "description": "", "main": "lib/index.js", "scripts": { - "lib": "js-compiler", + "lib": "sui-js-compiler", "prepublishOnly": "npm run lib", "test": "npm run test:server && npm run test:browser", "test:browser": "NODE_ENV=test sui-test browser -P 'test/browser/*Spec.js'", From b1b8f63e667d1a6ab98f68f805ec2224807bb885 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Wed, 29 May 2024 14:46:48 +0000 Subject: [PATCH 304/545] release(packages/sui-react-router): v1.17.0 [skip ci] --- packages/sui-react-router/CHANGELOG.md | 19 +++++++++++++++---- packages/sui-react-router/package.json | 2 +- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/packages/sui-react-router/CHANGELOG.md b/packages/sui-react-router/CHANGELOG.md index cb83c3d83..d822b4e88 100644 --- a/packages/sui-react-router/CHANGELOG.md +++ b/packages/sui-react-router/CHANGELOG.md @@ -1,5 +1,19 @@ # CHANGELOG +# 1.17.0 (2024-05-29) + + +### Bug Fixes + +* fix command ([51972e7](https://github.com/SUI-Components/sui/commit/51972e78ca10c9236e8a0f6853bc34ad4b0af14e)) + + +### Features + +* export context ([976998d](https://github.com/SUI-Components/sui/commit/976998d8a631e36eea1bf3e54011279b1a0f2770)) + + + # 1.16.0 (2023-11-06) @@ -206,7 +220,4 @@ ### Performance Improvements * **sui-react-router:** avoid re-renderer of consumers because creating new object on every render o ([4a67f35](https://github.com/SUI-Components/sui/commit/4a67f35a31c50262d7006c0a55af5043c3d9b592)) -* **sui-react-router:** load from history only what is needed ([6f0e12c](https://github.com/SUI-Components/sui/commit/6f0e12c6f654892a980f449b777dd4fed92cc959)) - - - +* **sui-react-router:** load from history only what is needed ([6f0e12c](https://github.com/SUI-Components/sui/commit/6f0e12c6f654892a980f449b777dd4fed92cc959)) \ No newline at end of file diff --git a/packages/sui-react-router/package.json b/packages/sui-react-router/package.json index 6fe6170bd..9070a7c63 100644 --- a/packages/sui-react-router/package.json +++ b/packages/sui-react-router/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-router", - "version": "1.16.0", + "version": "1.17.0", "description": "", "main": "lib/index.js", "scripts": { From 7f98fa7cb7ebe8492d1901fc43c3ad3027bc41ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jenifer=20L=C3=B3pez?= Date: Thu, 6 Jun 2024 09:57:11 +0200 Subject: [PATCH 305/545] feat(packages/sui-studio): Add jest compatibility with test path on studio-dev --- packages/sui-studio/bin/sui-studio-dev.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/sui-studio/bin/sui-studio-dev.js b/packages/sui-studio/bin/sui-studio-dev.js index 77707b047..e055c524d 100755 --- a/packages/sui-studio/bin/sui-studio-dev.js +++ b/packages/sui-studio/bin/sui-studio-dev.js @@ -45,8 +45,10 @@ if (!category || !component) { const componentPath = path.join(PWD, 'components', category, component) const legacyTestPath = path.join(PWD, 'test', category, component) +const jestPath = path.join(componentPath, '__tests__') const testPath = fs.existsSync(legacyTestPath) ? legacyTestPath : path.join(componentPath, 'test') +const isJestTest = fs.existsSync(jestPath) const {cache, ...others} = config @@ -59,7 +61,7 @@ const studioDevConfig = { alias: { ...config.resolve.alias, component: path.join(componentPath, 'src'), - test: testPath, + test: isJestTest ? jestPath : testPath, package: path.join(componentPath, 'package.json'), demo: path.join(componentPath, 'demo') } From f89d4fb9b0980af58d1e24c9d8d2117113fe50b5 Mon Sep 17 00:00:00 2001 From: Alfredo Arronte Date: Fri, 7 Jun 2024 11:36:01 +0200 Subject: [PATCH 306/545] feat(packages/sui-domain): Add DomainError class --- packages/sui-domain/src/DomainError.js | 25 +++++++++++++++++++++++++ packages/sui-domain/src/index.js | 1 + 2 files changed, 26 insertions(+) create mode 100644 packages/sui-domain/src/DomainError.js diff --git a/packages/sui-domain/src/DomainError.js b/packages/sui-domain/src/DomainError.js new file mode 100644 index 000000000..9acc335f8 --- /dev/null +++ b/packages/sui-domain/src/DomainError.js @@ -0,0 +1,25 @@ +/** + * Base class for handling errors in the domain layer + */ +export default class DomainError extends Error { + constructor({code, message, cause}) { + super(message, {cause}) + this.name = 'DomainError' + this.code = code + } + + /** + * DomainError factory method + * + * @param {String} code Code to identify the error instance. It's required. + * @param {String} message Description for the error useful for giving more context. + * @param {Object} cause Keeps the original error useful for wrapping uncontrolled errors. + */ + static create({code, message, cause}) { + if (!code) { + throw new Error('[DomainError] The code property is required.') + } + + return new DomainError({code, message, cause}) + } +} diff --git a/packages/sui-domain/src/index.js b/packages/sui-domain/src/index.js index ec5c03a3b..37a6b83c8 100644 --- a/packages/sui-domain/src/index.js +++ b/packages/sui-domain/src/index.js @@ -1,3 +1,4 @@ +export {default as DomainError} from './DomainError.js' export {default as Entity} from './Entity.js' export {default as EntryPointFactory} from './EntryPointFactory.js' export {default as FetcherFactory} from './fetcher/factory.js' From da2a9cdd8a2b2eee534c99dd33f53c801ae4f70e Mon Sep 17 00:00:00 2001 From: Kiko Ruiz Lloret Date: Fri, 7 Jun 2024 12:34:42 +0200 Subject: [PATCH 307/545] fix(packages/lint-repository-sui): fix structure rule --- .../src/rules/structure.js | 38 ++++--------------- 1 file changed, 7 insertions(+), 31 deletions(-) diff --git a/packages/lint-repository-sui/src/rules/structure.js b/packages/lint-repository-sui/src/rules/structure.js index b5a808b4d..25fdbad11 100644 --- a/packages/lint-repository-sui/src/rules/structure.js +++ b/packages/lint-repository-sui/src/rules/structure.js @@ -9,34 +9,28 @@ const FILES_AND_FOLDERS = [ '.nvmrc', '.dockerignore', '.gitignore', - 'tsconfig.json', 'README.md', - 'app/src', - 'app/test', 'app/Makefile', 'app/package.json', - 'app/tsconfig.json', - 'app/CHANGELOG.md', - + // 'app/tsconfig.json', 'app/src/pages', 'app/src/app.(t|j)s(x)?', - 'app/src/contextFactory.(t|j)s(x)?', - 'app/src/hooks.(t|j)s(x)?', + 'app/src/contextFactory{.js,.ts,/index.js,/index.ts}', + 'app/src/hooks{.js,.ts,/index.js,/index.ts}', 'app/src/index.html', 'app/src/index.(s)?css', 'app/src/routes.(t|j)s(x)?', + 'packages/domain/test', + 'packages/ui/components/**/test', 'packages/**/src', - 'packages/**/test', 'packages/**/Makefile', 'packages/**/package.json', - 'packages/**/tsconfig.json', - 'packages/**/CHANGELOG.md', - + // 'packages/**/tsconfig.json', + // 'packages/**/CHANGELOG.md', 'deploy/config-(pre|pro).yml', 'deploy/*-(pre|pro)-paas.yml', 'deploy/tags.yml', - 'qa/e2e' ] @@ -64,24 +58,6 @@ module.exports = { create: function (context) { return { ...Object.fromEntries(FILES_AND_FOLDERS.map(pattern => [pattern, () => context.monitoring(true)])), - - '.github/dependabot.yml': matches => { - const [match] = matches - const json = match.parsed - const labels = json?.updates[0]?.labels || [] - const isAutomergeEnabled = labels.find(key => key === 'skynet:merge') - - if (!isAutomergeEnabled) { - context.monitoring(false) - context.report({ - messageId: 'automergeDisabled' - }) - return - } - - context.monitoring(true) - }, - missmatch: key => { context.monitoring(false) context.report({ From 2a4e63b7a50bec046d7ba37ddc2f6fd229fb2764 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Fri, 7 Jun 2024 10:49:34 +0000 Subject: [PATCH 308/545] release(packages/lint-repository-sui): v1.6.0 [skip ci] --- packages/lint-repository-sui/CHANGELOG.md | 9 +++++++++ packages/lint-repository-sui/package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/lint-repository-sui/CHANGELOG.md b/packages/lint-repository-sui/CHANGELOG.md index b297db61c..143ac0cc9 100644 --- a/packages/lint-repository-sui/CHANGELOG.md +++ b/packages/lint-repository-sui/CHANGELOG.md @@ -1,5 +1,14 @@ # CHANGELOG +# 1.6.0 (2024-06-07) + + +### Bug Fixes + +* fix structure rule ([da2a9cd](https://github.com/SUI-Components/sui/commit/da2a9cdd8a2b2eee534c99dd33f53c801ae4f70e)) + + + # 1.5.0 (2024-05-10) diff --git a/packages/lint-repository-sui/package.json b/packages/lint-repository-sui/package.json index aaa3e1047..8c9b4be32 100644 --- a/packages/lint-repository-sui/package.json +++ b/packages/lint-repository-sui/package.json @@ -1,7 +1,7 @@ { "name": "lint-repository-sui", "access": "public", - "version": "1.5.0", + "version": "1.6.0", "description": "Set of sui lint rules to lint a repository", "keywords": [], "author": "Sui", From 93d19d3753c6fc4348fbc30903aad783328fd2f4 Mon Sep 17 00:00:00 2001 From: Carlos Villuendas Zambrana Date: Fri, 7 Jun 2024 13:16:38 +0200 Subject: [PATCH 309/545] feat(packages/lint-repository-sui): force deploy --- packages/lint-repository-sui/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/lint-repository-sui/package.json b/packages/lint-repository-sui/package.json index 8c9b4be32..8eaa4cf59 100644 --- a/packages/lint-repository-sui/package.json +++ b/packages/lint-repository-sui/package.json @@ -1,7 +1,7 @@ { "name": "lint-repository-sui", "access": "public", - "version": "1.6.0", + "version": "1.9.0", "description": "Set of sui lint rules to lint a repository", "keywords": [], "author": "Sui", From b3a0fdf1e65720b9de921df05cf31b7e7e35f64a Mon Sep 17 00:00:00 2001 From: sui-bot Date: Fri, 7 Jun 2024 11:19:30 +0000 Subject: [PATCH 310/545] release(packages/lint-repository-sui): v1.10.0 [skip ci] --- packages/lint-repository-sui/CHANGELOG.md | 9 +++++++++ packages/lint-repository-sui/package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/lint-repository-sui/CHANGELOG.md b/packages/lint-repository-sui/CHANGELOG.md index 143ac0cc9..051e910b8 100644 --- a/packages/lint-repository-sui/CHANGELOG.md +++ b/packages/lint-repository-sui/CHANGELOG.md @@ -1,5 +1,14 @@ # CHANGELOG +# 1.10.0 (2024-06-07) + + +### Features + +* force deploy ([93d19d3](https://github.com/SUI-Components/sui/commit/93d19d3753c6fc4348fbc30903aad783328fd2f4)) + + + # 1.6.0 (2024-06-07) diff --git a/packages/lint-repository-sui/package.json b/packages/lint-repository-sui/package.json index 8eaa4cf59..b1dbb20e0 100644 --- a/packages/lint-repository-sui/package.json +++ b/packages/lint-repository-sui/package.json @@ -1,7 +1,7 @@ { "name": "lint-repository-sui", "access": "public", - "version": "1.9.0", + "version": "1.10.0", "description": "Set of sui lint rules to lint a repository", "keywords": [], "author": "Sui", From 04ba88f6b2fb44eda407f6db6ee39314bbb15a2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jenifer=20L=C3=B3pez?= Date: Fri, 7 Jun 2024 13:21:55 +0200 Subject: [PATCH 311/545] feat(packages/sui-studio): Disable Test component if detect jest folder --- packages/sui-studio/bin/sui-studio-dev.js | 5 +++- .../workbench/src/components/Root/index.js | 28 ++++++++++++------- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/packages/sui-studio/bin/sui-studio-dev.js b/packages/sui-studio/bin/sui-studio-dev.js index e055c524d..2f2dfc6fd 100755 --- a/packages/sui-studio/bin/sui-studio-dev.js +++ b/packages/sui-studio/bin/sui-studio-dev.js @@ -55,7 +55,10 @@ const {cache, ...others} = config const studioDevConfig = { ...others, context: path.join(__dirname, '..', 'workbench', 'src'), - plugins: [...config.plugins, new webpack.DefinePlugin({__COMPONENT_ID__: JSON.stringify(componentID)})], + plugins: [ + ...config.plugins, + new webpack.DefinePlugin({__COMPONENT_ID__: JSON.stringify(componentID), __DISABLE_TESTS__: isJestTest}) + ], resolve: { ...config.resolve, alias: { diff --git a/packages/sui-studio/workbench/src/components/Root/index.js b/packages/sui-studio/workbench/src/components/Root/index.js index e2b09aea6..e2397341b 100644 --- a/packages/sui-studio/workbench/src/components/Root/index.js +++ b/packages/sui-studio/workbench/src/components/Root/index.js @@ -1,3 +1,4 @@ +/* eslint-disable no-undef */ import {useState} from 'react' import PropTypes from 'prop-types' @@ -7,7 +8,10 @@ import Select from '../Select/index' import Test from '../Suite/index' const importComponent = () => import('component/index') -const importTest = () => import('test/index.test') +let importTest = null +if (!__DISABLE_TESTS__) { + importTest = () => import('test/index.test') +} const getFromStorage = (key, defaultValue) => window.sessionStorage[key] || defaultValue @@ -38,19 +42,23 @@ export default function Root({componentID, contexts = {}, themes}) { initValue={actualStyle} onChange={updateOnChange(setActualStyle, 'actualStyle')} /> - + {importTest ? ( + + ) : null}