diff --git a/packages/perftool/package.json b/packages/perftool/package.json index 51ae3ab..c145c6c 100644 --- a/packages/perftool/package.json +++ b/packages/perftool/package.json @@ -38,9 +38,11 @@ "react-dom": ">=16.8.0" }, "dependencies": { + "@babel/parser": "^7.21.4", "@babel/preset-env": "7.21.4", "@babel/preset-react": "7.18.6", "@babel/preset-typescript": "7.21.4", + "@babel/traverse": "^7.21.4", "@swc/core": "1.3.50", "babel-loader": "9.1.2", "chalk": "5.2.0", @@ -59,6 +61,8 @@ }, "devDependencies": { "@jest/globals": "29.5.0", + "@types/babel__parser": "^7.1.1", + "@types/babel__traverse": "^7.18.4", "@types/express": "4.17.17", "@types/jest": "29.5.0", "@types/morgan": "1.9.4", diff --git a/packages/perftool/src/build/collect.ts b/packages/perftool/src/build/collect.ts index c312600..9be9204 100644 --- a/packages/perftool/src/build/collect.ts +++ b/packages/perftool/src/build/collect.ts @@ -5,6 +5,8 @@ import getSubjectId from '../utils/subjectId'; import checkPath from '../utils/checkPath'; import { Config } from '../config'; import { debug, info, warn } from '../utils/logger'; +import { getAst } from '../utils/ast'; +import traverse from '../utils/traverseExport'; export type ExportPickRule = 'named'; // | 'default' | 'all' @@ -20,10 +22,25 @@ export type TestModule = { const PICK_RULE_METHODS: Record string[]> = { named(fileContents) { - const regex = /export\s+(?:const|var|let|function)\s+?([\w$_][\w\d$_]*)/g; - const matches = [...fileContents.matchAll(regex)]; - - return matches.map(([, name]) => name); + const exports: string[] = []; + const ast = getAst(fileContents); + + if (!ast) { + return exports; + } + + traverse(ast, { + ExportNamedDeclaration(path: any) { + if (path.node.declaration) { + exports.push(path.node.declaration.id?.name); + } else { + path.node.specifiers.array.forEach((specifier: any) => { + exports.push(specifier.exported.name); + }); + } + }, + }); + return exports; }, }; @@ -71,6 +88,12 @@ export default async function collectTestSubjects(config: Config): Promise getTestModule(path, config.exportPickRule))); diff --git a/packages/perftool/src/config/babelOptions.ts b/packages/perftool/src/config/babelOptions.ts new file mode 100644 index 0000000..8a896f4 --- /dev/null +++ b/packages/perftool/src/config/babelOptions.ts @@ -0,0 +1,11 @@ +import * as babelCore from '@babel/core'; + +export const babelOptions: babelCore.TransformOptions = { + sourceType: 'module', + presets: [ + ['@babel/preset-env', { targets: { chrome: '90', esmodules: true } }], + '@babel/preset-react', + '@babel/preset-typescript', + ], + plugins: [], +}; diff --git a/packages/perftool/src/config/common.ts b/packages/perftool/src/config/common.ts index 3c362a2..177af02 100644 --- a/packages/perftool/src/config/common.ts +++ b/packages/perftool/src/config/common.ts @@ -52,7 +52,9 @@ export type Config = { runWaitTimeout: number; dryRunTimes: number; modifyWebpackConfig: (defaultConfig: WebpackConfig) => WebpackConfig; + modifyTranspilerConfig: (defaultConfig: WebpackConfig) => WebpackConfig; exportPickRule: ExportPickRule; + transpiler: 'babel' | 'none'; }; export type ProjectConfig = Partial>; @@ -95,7 +97,9 @@ export function getConfig(cliConfig: CliConfig = {}, projectConfig: ProjectConfi runWaitTimeout: withDefault(mixedInputConfig.runWaitTimeout, 1000 * 60 * 2), dryRunTimes: withDefault(mixedInputConfig.taskWaitTimeout, 1), modifyWebpackConfig: withDefault(mixedInputConfig.modifyWebpackConfig, (c) => c), + modifyTranspilerConfig: withDefault(mixedInputConfig.modifyWebpackConfig, (c) => c), exportPickRule: withDefault(mixedInputConfig.exportPickRule, 'named'), + transpiler: withDefault(mixedInputConfig.transpiler, 'babel'), }; debug('final config: ', result); diff --git a/packages/perftool/src/config/transpiler.ts b/packages/perftool/src/config/transpiler.ts new file mode 100644 index 0000000..57eeac1 --- /dev/null +++ b/packages/perftool/src/config/transpiler.ts @@ -0,0 +1,16 @@ +import { RuleSetRule } from 'webpack'; + +import { babelOptions } from './babelOptions'; + +export function getTranspilerConfig(transpiler: string): RuleSetRule { + if (transpiler === 'babel') { + return { + loader: require.resolve('babel-loader'), + test: /\.(js|mjs|jsx|ts|tsx)$/, + exclude: /node_modules/, + options: babelOptions, + }; + } + // TODO: swc + return {}; +} diff --git a/packages/perftool/src/config/webpack.ts b/packages/perftool/src/config/webpack.ts index f97a210..4547785 100644 --- a/packages/perftool/src/config/webpack.ts +++ b/packages/perftool/src/config/webpack.ts @@ -6,6 +6,7 @@ import { fileURLToPath } from 'url'; import { debug } from '../utils/logger'; +// import { getTranspilerConfig } from './transpiler'; import { Config } from './common'; const require = createRequire(import.meta.url); @@ -35,19 +36,6 @@ const defaultConfig: WebpackConfig = { }, module: { rules: [ - { - loader: require.resolve('babel-loader'), - test: /\.(js|mjs|jsx|ts|tsx)$/, - exclude: /node_modules/, - options: { - presets: [ - ['@babel/preset-env', { targets: { chrome: '90', esmodules: true } }], - '@babel/preset-react', - '@babel/preset-typescript', - ], - plugins: [], - }, - }, { loader: 'url-loader', test: /\.(jpg|jpeg|ico|webp|jp2|avif|png|gif|woff|eot|ttf|svg)$/, @@ -70,6 +58,24 @@ export function getWebpackConfig(entry: string, output: string, config: Config): const finalConfig = config.modifyWebpackConfig(defaultConfig); + if (config.transpiler !== 'none') { + // const transpiler = getTranspilerConfig(config); // пока что не похватывает настройки для babel + finalConfig.module?.rules?.push({ + loader: require.resolve('babel-loader'), + test: /\.(js|mjs|jsx|ts|tsx)$/, + exclude: /node_modules/, + options: { + sourceType: 'module', + presets: [ + ['@babel/preset-env', { targets: { chrome: '90', esmodules: true } }], + '@babel/preset-react', + '@babel/preset-typescript', + ], + plugins: [], + }, + }); + } + finalConfig.entry = entry; finalConfig.output!.path = output; diff --git a/packages/perftool/src/index.ts b/packages/perftool/src/index.ts index deefdb3..ba2e92f 100755 --- a/packages/perftool/src/index.ts +++ b/packages/perftool/src/index.ts @@ -45,6 +45,12 @@ async function start() { const config = getConfig(cliConfig, importedConfig?.value); const testModules = await collectTestSubjects(config); + + if (!testModules.length) { + info('Component test will not run because no exports names were found'); + return; + } + const tasks = getAllTasks(config); info( diff --git a/packages/perftool/src/utils/ast.ts b/packages/perftool/src/utils/ast.ts new file mode 100644 index 0000000..3dafd03 --- /dev/null +++ b/packages/perftool/src/utils/ast.ts @@ -0,0 +1,18 @@ +import * as babelCore from '@babel/core'; +import { File } from '@babel/types'; + +import { info } from '../utils/logger'; +import { babelOptions } from '../config/babelOptions'; + +export function getAst(fileContents: string): File | null { + try { + const ast = babelCore.parseSync(fileContents, { + filename: 'file.tsx', + ...babelOptions, + }); + return ast as File; + } catch (error) { + info('Ошибка при получении AST:', error); + return null; + } +} diff --git a/packages/perftool/src/utils/traverseExport.ts b/packages/perftool/src/utils/traverseExport.ts new file mode 100644 index 0000000..642433d --- /dev/null +++ b/packages/perftool/src/utils/traverseExport.ts @@ -0,0 +1,4 @@ +import * as _traverse from '@babel/traverse'; + +const traverse = (_traverse.default as unknown as typeof _traverse).default; +export default traverse; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e3c8a26..ed66a41 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -70,6 +70,9 @@ importers: packages/perftool: dependencies: + '@babel/parser': + specifier: ^7.21.4 + version: 7.21.4 '@babel/preset-env': specifier: 7.21.4 version: 7.21.4(@babel/core@7.21.4) @@ -79,6 +82,9 @@ importers: '@babel/preset-typescript': specifier: 7.21.4 version: 7.21.4(@babel/core@7.21.4) + '@babel/traverse': + specifier: ^7.21.4 + version: 7.21.4(supports-color@5.5.0) '@swc/core': specifier: 1.3.50 version: 1.3.50 @@ -128,6 +134,12 @@ importers: '@jest/globals': specifier: 29.5.0 version: 29.5.0 + '@types/babel__parser': + specifier: ^7.1.1 + version: 7.1.1 + '@types/babel__traverse': + specifier: ^7.18.4 + version: 7.18.4 '@types/express': specifier: 4.17.17 version: 4.17.17 @@ -231,8 +243,8 @@ packages: conventional-changelog-preset-loader: 2.3.4 conventional-commits-parser: 3.2.4 endent: 2.1.0 - fp-ts: 2.13.1 - io-ts: 2.2.20(fp-ts@2.13.1) + fp-ts: 2.14.0 + io-ts: 2.2.20(fp-ts@2.14.0) tslib: 2.1.0 transitivePeerDependencies: - '@swc/core' @@ -267,13 +279,13 @@ packages: enquirer: 2.3.6 env-ci: 5.5.0 fast-glob: 3.2.12 - fp-ts: 2.13.1 + fp-ts: 2.14.0 fromentries: 1.3.2 gitlog: 4.0.4 https-proxy-agent: 5.0.1 import-cwd: 3.0.0 import-from: 3.0.0 - io-ts: 2.2.20(fp-ts@2.13.1) + io-ts: 2.2.20(fp-ts@2.14.0) lodash.chunk: 4.2.0 log-symbols: 4.1.0 node-fetch: 2.6.7 @@ -308,9 +320,9 @@ packages: await-to-js: 3.0.0 endent: 2.1.0 env-ci: 5.5.0 - fp-ts: 2.13.1 + fp-ts: 2.14.0 get-monorepo-packages: 1.2.0 - io-ts: 2.2.20(fp-ts@2.13.1) + io-ts: 2.2.20(fp-ts@2.14.0) registry-url: 5.1.0 semver: 7.3.8 tslib: 2.1.0 @@ -340,8 +352,8 @@ packages: '@auto-it/bot-list': 10.44.0 '@auto-it/core': 10.44.0(@types/node@18.15.11)(typescript@5.0.4) deepmerge: 4.3.1 - fp-ts: 2.13.1 - io-ts: 2.2.20(fp-ts@2.13.1) + fp-ts: 2.14.0 + io-ts: 2.2.20(fp-ts@2.14.0) tslib: 2.1.0 transitivePeerDependencies: - '@swc/core' @@ -356,8 +368,8 @@ packages: resolution: {integrity: sha512-C71UrnjHCD7FXGrEX0ECAvY3Uiokln+7cpGM2X18AmdZlwWEAmWAOwCd7XRPb/TlWYHgUd7OjvJZNlsv2cc2Fw==} dependencies: '@auto-it/core': 10.44.0(@types/node@18.15.11)(typescript@5.0.4) - fp-ts: 2.13.1 - io-ts: 2.2.20(fp-ts@2.13.1) + fp-ts: 2.14.0 + io-ts: 2.2.20(fp-ts@2.14.0) semver: 7.3.8 tslib: 1.10.0 transitivePeerDependencies: @@ -1516,7 +1528,7 @@ packages: babel-plugin-polyfill-corejs2: 0.3.3(@babel/core@7.21.4) babel-plugin-polyfill-corejs3: 0.6.0(@babel/core@7.21.4) babel-plugin-polyfill-regenerator: 0.4.1(@babel/core@7.21.4) - core-js-compat: 3.30.0 + core-js-compat: 3.30.1 semver: 6.3.0 transitivePeerDependencies: - supports-color @@ -1619,7 +1631,7 @@ packages: hasBin: true dependencies: '@commitlint/format': 17.4.4 - '@commitlint/lint': 17.4.4 + '@commitlint/lint': 17.6.1 '@commitlint/load': 17.5.0 '@commitlint/read': 17.5.1 '@commitlint/types': 17.4.4 @@ -1681,13 +1693,13 @@ packages: semver: 7.3.8 dev: true - /@commitlint/lint@17.4.4: - resolution: {integrity: sha512-qgkCRRFjyhbMDWsti/5jRYVJkgYZj4r+ZmweZObnbYqPUl5UKLWMf9a/ZZisOI4JfiPmRktYRZ2JmqlSvg+ccw==} + /@commitlint/lint@17.6.1: + resolution: {integrity: sha512-VARJ9kxH64isgwVnC+ABPafCYzqxpsWJIpDaTuI0gh8aX4GQ0i7cn9tvxtFNfJj4ER2BAJeWJ0vURdNYjK2RQQ==} engines: {node: '>=v14'} dependencies: '@commitlint/is-ignored': 17.4.4 '@commitlint/parse': 17.4.4 - '@commitlint/rules': 17.4.4 + '@commitlint/rules': 17.6.1 '@commitlint/types': 17.4.4 dev: true @@ -1751,8 +1763,8 @@ packages: resolve-global: 1.0.0 dev: true - /@commitlint/rules@17.4.4: - resolution: {integrity: sha512-0tgvXnHi/mVcyR8Y8mjTFZIa/FEQXA4uEutXS/imH2v1UNkYDSEMsK/68wiXRpfW1euSgEdwRkvE1z23+yhNrQ==} + /@commitlint/rules@17.6.1: + resolution: {integrity: sha512-lUdHw6lYQ1RywExXDdLOKxhpp6857/4c95Dc/1BikrHgdysVUXz26yV0vp1GL7Gv+avx9WqZWTIVB7pNouxlfw==} engines: {node: '>=v14'} dependencies: '@commitlint/ensure': 17.4.4 @@ -1815,7 +1827,7 @@ packages: lodash.get: 4.4.2 make-error: 1.3.6 ts-node: 9.1.1(typescript@5.0.4) - tslib: 2.5.0 + tslib: 2.1.0 transitivePeerDependencies: - typescript dev: true @@ -2168,7 +2180,7 @@ packages: engines: {node: ^14.15.0 || >=16.0.0} dependencies: chalk: 4.1.2 - execa: 5.1.1 + execa: 5.0.0 strong-log-transformer: 2.1.0 dev: true @@ -2294,7 +2306,7 @@ packages: '@npmcli/fs': 3.1.0 '@npmcli/installed-package-contents': 2.0.2 '@npmcli/map-workspaces': 3.0.3 - '@npmcli/metavuln-calculator': 5.0.0 + '@npmcli/metavuln-calculator': 5.0.1 '@npmcli/name-from-folder': 2.0.0 '@npmcli/node-gyp': 3.0.0 '@npmcli/package-json': 3.0.0 @@ -2308,12 +2320,12 @@ packages: json-stringify-nice: 1.1.4 minimatch: 6.2.0 nopt: 7.1.0 - npm-install-checks: 6.1.0 + npm-install-checks: 6.1.1 npm-package-arg: 10.1.0 npm-pick-manifest: 8.0.1 - npm-registry-fetch: 14.0.3 + npm-registry-fetch: 14.0.4 npmlog: 7.0.1 - pacote: 15.1.1 + pacote: 15.1.2 parse-conflict-json: 3.0.1 proc-log: 3.0.0 promise-all-reject-late: 1.0.1 @@ -2404,13 +2416,13 @@ packages: read-package-json-fast: 3.0.2 dev: true - /@npmcli/metavuln-calculator@5.0.0: - resolution: {integrity: sha512-BBFQx4M12wiEuVwCgtX/Depx0B/+NHMwDWOlXT41/Pdy5W/1Fenk+hibUlMSrFWwASbX+fY90UbILAEIYH02/A==} + /@npmcli/metavuln-calculator@5.0.1: + resolution: {integrity: sha512-qb8Q9wIIlEPj3WeA1Lba91R4ZboPL0uspzV0F9uwP+9AYMVB2zOoa7Pbk12g6D2NHAinSbHh6QYmGuRyHZ874Q==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: cacache: 17.0.5 json-parse-even-better-errors: 3.0.0 - pacote: 15.1.1 + pacote: 15.1.2 semver: 7.3.8 transitivePeerDependencies: - bluebird @@ -2622,7 +2634,7 @@ packages: resolution: {integrity: sha512-/aFM2M4HVDBT/jjDBa84sJniv1t9Gm/rLkalaz9htOm+L+8JMj1k9w0CkUdcxNyNxZPlTxKPVko+m1VlM58ZVA==} engines: {node: '>= 14'} dependencies: - '@octokit/types': 9.0.0 + '@octokit/types': 9.1.2 dev: true /@octokit/core@3.6.0: @@ -2647,7 +2659,7 @@ packages: '@octokit/graphql': 5.0.5 '@octokit/request': 6.2.3 '@octokit/request-error': 3.0.3 - '@octokit/types': 9.0.0 + '@octokit/types': 9.1.2 before-after-hook: 2.2.3 universal-user-agent: 6.0.0 transitivePeerDependencies: @@ -2666,7 +2678,7 @@ packages: resolution: {integrity: sha512-LG4o4HMY1Xoaec87IqQ41TQ+glvIeTKqfjkCEmt5AIwDZJwQeVZFIEYXrYY6yLwK+pAScb9Gj4q+Nz2qSw1roA==} engines: {node: '>= 14'} dependencies: - '@octokit/types': 9.0.0 + '@octokit/types': 9.1.2 is-plain-object: 5.0.0 universal-user-agent: 6.0.0 dev: true @@ -2686,7 +2698,7 @@ packages: engines: {node: '>= 14'} dependencies: '@octokit/request': 6.2.3 - '@octokit/types': 9.0.0 + '@octokit/types': 9.1.2 universal-user-agent: 6.0.0 transitivePeerDependencies: - encoding @@ -2700,8 +2712,8 @@ packages: resolution: {integrity: sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw==} dev: true - /@octokit/openapi-types@16.0.0: - resolution: {integrity: sha512-JbFWOqTJVLHZSUUoF4FzAZKYtqdxWu9Z5m2QQnOyEa04fOFljvyh7D3GYKbfuaSWisqehImiVIMG4eyJeP5VEA==} + /@octokit/openapi-types@17.0.0: + resolution: {integrity: sha512-V8BVJGN0ZmMlURF55VFHFd/L92XQQ43KvFjNmY1IYbCN3V/h/uUFV6iQi19WEHM395Nn+1qhUbViCAD/1czzog==} dev: true /@octokit/plugin-enterprise-compatibility@1.3.0: @@ -2800,7 +2812,7 @@ packages: resolution: {integrity: sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==} engines: {node: '>= 14'} dependencies: - '@octokit/types': 9.0.0 + '@octokit/types': 9.1.2 deprecation: 2.3.1 once: 1.4.0 dev: true @@ -2824,7 +2836,7 @@ packages: dependencies: '@octokit/endpoint': 7.0.5 '@octokit/request-error': 3.0.3 - '@octokit/types': 9.0.0 + '@octokit/types': 9.1.2 is-plain-object: 5.0.0 node-fetch: 2.6.7 universal-user-agent: 6.0.0 @@ -2867,10 +2879,10 @@ packages: '@octokit/openapi-types': 14.0.0 dev: true - /@octokit/types@9.0.0: - resolution: {integrity: sha512-LUewfj94xCMH2rbD5YJ+6AQ4AVjFYTgpp6rboWM5T7N3IsIF65SBEOVcYMGAEzO/kKNiNaW4LoWtoThOhH06gw==} + /@octokit/types@9.1.2: + resolution: {integrity: sha512-LPbJIuu1WNoRHbN4UMysEdlissRFpTCWyoKT7kHPufI8T+XX33/qilfMWJo3mCOjNIKu0+43oSQPf+HJa0+TTQ==} dependencies: - '@octokit/openapi-types': 16.0.0 + '@octokit/openapi-types': 17.0.0 dev: true /@parcel/watcher@2.0.4: @@ -3044,10 +3056,16 @@ packages: /@tsconfig/node16@1.0.3: resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==} - /@tufjs/models@1.0.1: - resolution: {integrity: sha512-AY0VoG/AXdlSOocuREfPoEW4SNhOPp/7fw6mpAxfVIny1uZ+0fEtMoCi7NhELSlqQIRLMu7RgfKhkxT+AJ+EXg==} + /@tufjs/canonical-json@1.0.0: + resolution: {integrity: sha512-QTnf++uxunWvG2z3UFNzAoQPHxnSXOwtaI3iJ+AohhV+5vONuArPjJE7aPXPVXfXJsqrVbZBu9b81AJoSd09IQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /@tufjs/models@1.0.3: + resolution: {integrity: sha512-mkFEqqRisi13DmR5pX4x+Zk97EiU8djTtpNW1GeuX410y/raAsq/T3ZCjwoRIZ8/cIBfW0olK/sywlAiWevDVw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: + '@tufjs/canonical-json': 1.0.0 minimatch: 7.4.6 dev: true @@ -3058,7 +3076,7 @@ packages: '@babel/types': 7.21.4 '@types/babel__generator': 7.6.4 '@types/babel__template': 7.4.1 - '@types/babel__traverse': 7.18.3 + '@types/babel__traverse': 7.18.4 dev: true /@types/babel__generator@7.6.4: @@ -3067,6 +3085,13 @@ packages: '@babel/types': 7.21.4 dev: true + /@types/babel__parser@7.1.1: + resolution: {integrity: sha512-baSzIb0QQOUQSglfR9gwXVSbHH91YvY00C9Zjq6E7sPdnp8oyPyUsonIj3SF4wUl0s96vR/kyWeVv30gmM/xZw==} + deprecated: Deprecated + dependencies: + '@babel/parser': 7.21.4 + dev: true + /@types/babel__template@7.4.1: resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: @@ -3074,8 +3099,8 @@ packages: '@babel/types': 7.21.4 dev: true - /@types/babel__traverse@7.18.3: - resolution: {integrity: sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==} + /@types/babel__traverse@7.18.4: + resolution: {integrity: sha512-TLG7CsGZZmX9aDF78UuJxnNTfQyRUFU0OYIVyIblr0/wd/HvsIo8wmuB90CszeD2MtLLAE9Tt4cWvk+KVkyGIw==} dependencies: '@babel/types': 7.21.4 dev: true @@ -3105,30 +3130,31 @@ packages: resolution: {integrity: sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==} dependencies: '@types/eslint': 8.37.0 - '@types/estree': 1.0.0 + '@types/estree': 1.0.1 /@types/eslint@8.37.0: resolution: {integrity: sha512-Piet7dG2JBuDIfohBngQ3rCt7MgO9xCO4xIMKxBThCq5PNRB91IjlJ10eJVwfoNtvTErmxLzwBZ7rHZtbOMmFQ==} dependencies: - '@types/estree': 1.0.0 + '@types/estree': 1.0.1 '@types/json-schema': 7.0.11 - /@types/estree@1.0.0: - resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} + /@types/estree@1.0.1: + resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} - /@types/express-serve-static-core@4.17.33: - resolution: {integrity: sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==} + /@types/express-serve-static-core@4.17.34: + resolution: {integrity: sha512-fvr49XlCGoUj2Pp730AItckfjat4WNb0lb3kfrLWffd+RLeoGAMsq7UOy04PAPtoL01uKwcp6u8nhzpgpDYr3w==} dependencies: '@types/node': 18.15.11 '@types/qs': 6.9.7 '@types/range-parser': 1.2.4 + '@types/send': 0.17.1 dev: true /@types/express@4.17.17: resolution: {integrity: sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==} dependencies: '@types/body-parser': 1.19.2 - '@types/express-serve-static-core': 4.17.33 + '@types/express-serve-static-core': 4.17.34 '@types/qs': 6.9.7 '@types/serve-static': 1.15.1 dev: true @@ -3188,6 +3214,10 @@ packages: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: true + /@types/mime@1.3.2: + resolution: {integrity: sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==} + dev: true + /@types/mime@3.0.1: resolution: {integrity: sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==} dev: true @@ -3236,7 +3266,7 @@ packages: /@types/react-dom@18.0.11: resolution: {integrity: sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==} dependencies: - '@types/react': 18.0.34 + '@types/react': 18.0.35 dev: true /@types/react@18.0.34: @@ -3263,6 +3293,13 @@ packages: resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==} dev: true + /@types/send@0.17.1: + resolution: {integrity: sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==} + dependencies: + '@types/mime': 1.3.2 + '@types/node': 18.15.11 + dev: true + /@types/serve-static@1.15.1: resolution: {integrity: sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==} dependencies: @@ -3360,6 +3397,14 @@ packages: '@typescript-eslint/visitor-keys': 5.58.0 dev: true + /@typescript-eslint/scope-manager@5.59.1: + resolution: {integrity: sha512-mau0waO5frJctPuAzcxiNWqJR5Z8V0190FTSqRw1Q4Euop6+zTwHAf8YIXNwDOT29tyUDrQ65jSg9aTU/H0omA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.59.1 + '@typescript-eslint/visitor-keys': 5.59.1 + dev: true + /@typescript-eslint/type-utils@5.58.0(eslint@8.38.0)(typescript@5.0.4): resolution: {integrity: sha512-FF5vP/SKAFJ+LmR9PENql7fQVVgGDOS+dq3j+cKl9iW/9VuZC/8CFmzIP0DLKXfWKpRHawJiG70rVH+xZZbp8w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3385,6 +3430,11 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true + /@typescript-eslint/types@5.59.1: + resolution: {integrity: sha512-dg0ICB+RZwHlysIy/Dh1SP+gnXNzwd/KS0JprD3Lmgmdq+dJAJnUPe1gNG34p0U19HvRlGX733d/KqscrGC1Pg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + /@typescript-eslint/typescript-estree@5.58.0(typescript@5.0.4): resolution: {integrity: sha512-cRACvGTodA+UxnYM2uwA2KCwRL7VAzo45syNysqlMyNyjw0Z35Icc9ihPJZjIYuA5bXJYiJ2YGUB59BqlOZT1Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3406,6 +3456,27 @@ packages: - supports-color dev: true + /@typescript-eslint/typescript-estree@5.59.1(typescript@5.0.4): + resolution: {integrity: sha512-lYLBBOCsFltFy7XVqzX0Ju+Lh3WPIAWxYpmH/Q7ZoqzbscLiCW00LeYCdsUnnfnj29/s1WovXKh2gwCoinHNGA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.59.1 + '@typescript-eslint/visitor-keys': 5.59.1 + debug: 4.3.4(supports-color@5.5.0) + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.3.8 + tsutils: 3.21.0(typescript@5.0.4) + typescript: 5.0.4 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/utils@5.58.0(eslint@8.38.0)(typescript@5.0.4): resolution: {integrity: sha512-gAmLOTFXMXOC+zP1fsqm3VceKSBQJNzV385Ok3+yzlavNHZoedajjS4UyS21gabJYcobuigQPs/z71A9MdJFqQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3426,6 +3497,26 @@ packages: - typescript dev: true + /@typescript-eslint/utils@5.59.1(eslint@8.38.0)(typescript@5.0.4): + resolution: {integrity: sha512-MkTe7FE+K1/GxZkP5gRj3rCztg45bEhsd8HYjczBuYm+qFHP5vtZmjx3B0yUCDotceQ4sHgTyz60Ycl225njmA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.38.0) + '@types/json-schema': 7.0.11 + '@types/semver': 7.3.13 + '@typescript-eslint/scope-manager': 5.59.1 + '@typescript-eslint/types': 5.59.1 + '@typescript-eslint/typescript-estree': 5.59.1(typescript@5.0.4) + eslint: 8.38.0 + eslint-scope: 5.1.1 + semver: 7.3.8 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + /@typescript-eslint/visitor-keys@5.58.0: resolution: {integrity: sha512-/fBraTlPj0jwdyTwLyrRTxv/3lnU2H96pNTVM6z3esTWLtA5MZ9ghSMJ7Rb+TtUAdtEw9EyJzJ0EydIMKxQ9gA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3434,6 +3525,14 @@ packages: eslint-visitor-keys: 3.4.0 dev: true + /@typescript-eslint/visitor-keys@5.59.1: + resolution: {integrity: sha512-6waEYwBTCWryx0VJmP7JaM4FpipLsFl9CvYf2foAE8Qh/Y0s+bxWysciwOs0LTBED4JCaNxTZ5rGadB14M6dwA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.59.1 + eslint-visitor-keys: 3.4.0 + dev: true + /@webassemblyjs/ast@1.11.1: resolution: {integrity: sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==} dependencies: @@ -3941,13 +4040,13 @@ packages: engines: {node: '>=6.0.0'} dev: true - /axe-core@4.6.3: - resolution: {integrity: sha512-/BQzOX780JhsxDnPpH4ZiyrJAzcd8AfzFPkv+89veFSr1rcMjuq2JDCwypKaPeB6ljHp9KjXhPpjgCvQlWYuqg==} + /axe-core@4.7.0: + resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==} engines: {node: '>=4'} dev: true - /axios@1.3.5: - resolution: {integrity: sha512-glL/PvG/E+xCWwV8S6nCHcrfg1exGx7vxyUIivIA1iL7BIh6bePylCfVHwp6k13ao7SATxB6imau2kqY+I67kw==} + /axios@1.3.6: + resolution: {integrity: sha512-PEcdkk7JcdPiMDkvM4K6ZBRYq9keuVJsToxm2zQIM70Qqo2WHTdJZMXcG9X+RmRp2VPNUQC8W1RAGbgt6b1yMg==} dependencies: follow-redirects: 1.15.2 form-data: 4.0.0 @@ -3989,7 +4088,7 @@ packages: dependencies: '@babel/core': 7.21.4 find-cache-dir: 3.3.2 - schema-utils: 4.0.0 + schema-utils: 4.0.1 webpack: 5.79.0(@swc/core@1.3.50) dev: false @@ -4013,7 +4112,7 @@ packages: '@babel/template': 7.20.7 '@babel/types': 7.21.4 '@types/babel__core': 7.20.0 - '@types/babel__traverse': 7.18.3 + '@types/babel__traverse': 7.18.4 dev: true /babel-plugin-polyfill-corejs2@0.3.3(@babel/core@7.21.4): @@ -4036,7 +4135,7 @@ packages: dependencies: '@babel/core': 7.21.4 '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.21.4) - core-js-compat: 3.30.0 + core-js-compat: 3.30.1 transitivePeerDependencies: - supports-color dev: false @@ -4187,10 +4286,10 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001477 - electron-to-chromium: 1.4.358 + caniuse-lite: 1.0.30001481 + electron-to-chromium: 1.4.372 node-releases: 2.0.10 - update-browserslist-db: 1.0.10(browserslist@4.21.5) + update-browserslist-db: 1.0.11(browserslist@4.21.5) /bs-logger@0.2.6: resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} @@ -4332,8 +4431,8 @@ packages: resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} dev: false - /caniuse-lite@1.0.30001477: - resolution: {integrity: sha512-lZim4iUHhGcy5p+Ri/G7m84hJwncj+Kz7S5aD4hoQfslKZJgt0tHc/hafVbqHC5bbhHb+mrW2JOUHkI5KH7toQ==} + /caniuse-lite@1.0.30001481: + resolution: {integrity: sha512-KCqHwRnaa1InZBtqXzP98LPg0ajCVujMKjqKDhZEthIpAsJl/YEIa3YvXjGXPVqzZVguccuu7ga9KOE1J9rKPQ==} /chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} @@ -4530,8 +4629,8 @@ packages: hasBin: true dev: true - /colorette@2.0.19: - resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==} + /colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} dev: true /columnify@1.6.0: @@ -4582,8 +4681,8 @@ packages: typical: 5.2.0 dev: true - /commander@10.0.0: - resolution: {integrity: sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA==} + /commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} engines: {node: '>=14'} dev: true @@ -4778,8 +4877,8 @@ packages: engines: {node: '>= 0.6'} dev: false - /core-js-compat@3.30.0: - resolution: {integrity: sha512-P5A2h/9mRYZFIAP+5Ab8ns6083IyVpSclU74UNvbGVQ8VM7n3n3/g2yF3AkKQ9NXz2O+ioxLbEWKnDtgsFamhg==} + /core-js-compat@3.30.1: + resolution: {integrity: sha512-d690npR7MC6P0gq4npTl5n2VQeNAmUrJ90n+MHiKS7W2+xno4o3F5GDEuylSdi6EJ3VssibSGXOa1r3YXD3Mhw==} dependencies: browserslist: 4.21.5 dev: false @@ -4993,7 +5092,7 @@ packages: object-is: 1.1.5 object-keys: 1.1.1 object.assign: 4.1.4 - regexp.prototype.flags: 1.4.3 + regexp.prototype.flags: 1.5.0 side-channel: 1.0.4 which-boxed-primitive: 1.0.2 which-collection: 1.0.1 @@ -5037,7 +5136,7 @@ packages: engines: {node: '>=10'} dependencies: globby: 11.1.0 - graceful-fs: 4.2.11 + graceful-fs: 4.2.10 is-glob: 4.0.3 is-path-cwd: 2.2.0 is-path-inside: 3.0.3 @@ -5210,8 +5309,8 @@ packages: jake: 10.8.5 dev: true - /electron-to-chromium@1.4.358: - resolution: {integrity: sha512-dbqpWy662dGVwq27q8i6+t5FPcQiFPs/VExXJ+/T9Xp9KUV0b5bvG+B/i07FNNr7PgcN3GhZQCZoYJ9EUfnIOg==} + /electron-to-chromium@1.4.372: + resolution: {integrity: sha512-MrlFq/j+TYHOjeWsWGYfzevc25HNeJdsF6qaLFrqBTRWZQtWkb1myq/Q2veLWezVaa5OcSZ99CFwTT4aF4Mung==} /emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} @@ -5251,8 +5350,8 @@ packages: objectorarray: 1.0.5 dev: true - /enhanced-resolve@5.12.0: - resolution: {integrity: sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==} + /enhanced-resolve@5.13.0: + resolution: {integrity: sha512-eyV8f0y1+bzyfh8xAwW/WTSZpLbjhqc4ne9eGSH4Zo2ejdyiNG9pU6mf9DG8a7+Auk6MFTlNOT4Y2y/9k8GKVg==} engines: {node: '>=10.13.0'} dependencies: graceful-fs: 4.2.11 @@ -5269,8 +5368,8 @@ packages: resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} dev: false - /entities@4.4.0: - resolution: {integrity: sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==} + /entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} dev: true @@ -5333,7 +5432,7 @@ packages: object-inspect: 1.12.3 object-keys: 1.1.1 object.assign: 4.1.4 - regexp.prototype.flags: 1.4.3 + regexp.prototype.flags: 1.5.0 safe-regex-test: 1.0.0 string.prototype.trim: 1.2.7 string.prototype.trimend: 1.0.6 @@ -5473,8 +5572,8 @@ packages: - supports-color dev: true - /eslint-module-utils@2.7.4(@typescript-eslint/parser@5.58.0)(eslint-import-resolver-node@0.3.7)(eslint@8.38.0): - resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.58.0)(eslint-import-resolver-node@0.3.7)(eslint@8.38.0): + resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -5520,7 +5619,7 @@ packages: doctrine: 2.1.0 eslint: 8.38.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.58.0)(eslint-import-resolver-node@0.3.7)(eslint@8.38.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.58.0)(eslint-import-resolver-node@0.3.7)(eslint@8.38.0) has: 1.0.3 is-core-module: 2.12.0 is-glob: 4.0.3 @@ -5549,7 +5648,7 @@ packages: optional: true dependencies: '@typescript-eslint/eslint-plugin': 5.58.0(@typescript-eslint/parser@5.58.0)(eslint@8.38.0)(typescript@5.0.4) - '@typescript-eslint/utils': 5.58.0(eslint@8.38.0)(typescript@5.0.4) + '@typescript-eslint/utils': 5.59.1(eslint@8.38.0)(typescript@5.0.4) eslint: 8.38.0 transitivePeerDependencies: - supports-color @@ -5567,7 +5666,7 @@ packages: array-includes: 3.1.6 array.prototype.flatmap: 1.3.1 ast-types-flow: 0.0.7 - axe-core: 4.6.3 + axe-core: 4.7.0 axobject-query: 3.1.1 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 @@ -5638,8 +5737,8 @@ packages: esrecurse: 4.3.0 estraverse: 4.3.0 - /eslint-scope@7.1.1: - resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} + /eslint-scope@7.2.0: + resolution: {integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: esrecurse: 4.3.0 @@ -5669,7 +5768,7 @@ packages: debug: 4.3.4(supports-color@5.5.0) doctrine: 3.0.0 escape-string-regexp: 4.0.0 - eslint-scope: 7.1.1 + eslint-scope: 7.2.0 eslint-visitor-keys: 3.4.0 espree: 9.5.1 esquery: 1.5.0 @@ -5763,9 +5862,9 @@ packages: engines: {node: '>=10'} dependencies: cross-spawn: 7.0.3 - get-stream: 6.0.1 + get-stream: 6.0.0 human-signals: 2.1.0 - is-stream: 2.0.1 + is-stream: 2.0.0 merge-stream: 2.0.0 npm-run-path: 4.0.1 onetime: 5.1.2 @@ -6075,8 +6174,8 @@ packages: engines: {node: '>= 0.6'} dev: false - /fp-ts@2.13.1: - resolution: {integrity: sha512-0eu5ULPS2c/jsa1lGFneEFFEdTbembJv8e4QKXeVJ3lm/5hyve06dlKZrpxmMwJt6rYen7sxmHHK2CLaXvWuWQ==} + /fp-ts@2.14.0: + resolution: {integrity: sha512-QLagLSYAgMA00pZzUzeksH/78Sd14y7+Gc2A8Yaja3/IpGOFMdm/gYBuDMxYqLsJ58iT5lz+bJb953RAeFfp1A==} dev: true /fresh@0.5.2: @@ -6105,7 +6204,7 @@ packages: engines: {node: '>=10'} dependencies: at-least-node: 1.0.0 - graceful-fs: 4.2.11 + graceful-fs: 4.2.10 jsonfile: 6.1.0 universalify: 2.0.0 dev: true @@ -6329,7 +6428,7 @@ packages: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 - minimatch: 3.1.2 + minimatch: 3.0.5 once: 1.4.0 path-is-absolute: 1.0.1 dev: true @@ -6363,7 +6462,7 @@ packages: fs.realpath: 1.0.0 minimatch: 8.0.4 minipass: 4.2.8 - path-scurry: 1.6.4 + path-scurry: 1.7.0 dev: true /global-dirs@0.1.1: @@ -6558,7 +6657,7 @@ packages: he: 1.2.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.16.9 + terser: 5.17.1 dev: false /html-webpack-plugin@5.5.0(webpack@5.79.0): @@ -6807,12 +6906,12 @@ packages: side-channel: 1.0.4 dev: true - /io-ts@2.2.20(fp-ts@2.13.1): + /io-ts@2.2.20(fp-ts@2.14.0): resolution: {integrity: sha512-Rq2BsYmtwS5vVttie4rqrOCIfHCS9TgpRLFpKQCM1wZBBRY9nWVGmEvm2FnDbSE2un1UE39DvFpTR5UL47YDcA==} peerDependencies: fp-ts: ^2.5.0 dependencies: - fp-ts: 2.13.1 + fp-ts: 2.14.0 dev: true /ip@2.0.0: @@ -7147,7 +7246,7 @@ packages: async: 3.2.4 chalk: 4.1.2 filelist: 1.0.4 - minimatch: 3.1.2 + minimatch: 3.0.5 dev: true /java-properties@1.0.2: @@ -7184,7 +7283,7 @@ packages: jest-util: 29.5.0 p-limit: 3.1.0 pretty-format: 29.5.0 - pure-rand: 6.0.1 + pure-rand: 6.0.2 slash: 3.0.0 stack-utils: 2.0.6 transitivePeerDependencies: @@ -7502,7 +7601,7 @@ packages: '@jest/expect-utils': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 - '@types/babel__traverse': 7.18.3 + '@types/babel__traverse': 7.18.4 '@types/prettier': 2.7.2 babel-preset-current-node-syntax: 1.0.1(@babel/core@7.21.4) chalk: 4.1.2 @@ -7640,7 +7739,7 @@ packages: http-proxy-agent: 5.0.0 https-proxy-agent: 5.0.1 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.3 + nwsapi: 2.2.4 parse5: 7.1.2 saxes: 6.0.0 symbol-tree: 3.2.4 @@ -7719,7 +7818,7 @@ packages: dependencies: universalify: 2.0.0 optionalDependencies: - graceful-fs: 4.2.11 + graceful-fs: 4.2.10 dev: true /jsonparse@1.3.1: @@ -7817,7 +7916,7 @@ packages: node-fetch: 2.6.7 npm-package-arg: 8.1.1 npm-packlist: 5.1.1 - npm-registry-fetch: 14.0.3 + npm-registry-fetch: 14.0.4 npmlog: 6.0.2 nx: 15.9.2 p-map: 4.0.0 @@ -7839,7 +7938,7 @@ packages: strong-log-transformer: 2.1.0 tar: 6.1.11 temp-dir: 1.0.0 - typescript: 3.9.10 + typescript: 4.9.5 upath: 2.0.1 uuid: 8.3.2 validate-npm-package-license: 3.0.4 @@ -7925,7 +8024,7 @@ packages: dependencies: chalk: 5.2.0 cli-truncate: 3.1.0 - commander: 10.0.0 + commander: 10.0.1 debug: 4.3.4(supports-color@5.5.0) execa: 7.1.1 lilconfig: 2.1.0 @@ -7935,7 +8034,7 @@ packages: object-inspect: 1.12.3 pidtree: 0.6.0 string-argv: 0.3.1 - yaml: 2.2.1 + yaml: 2.2.2 transitivePeerDependencies: - enquirer - supports-color @@ -7951,7 +8050,7 @@ packages: optional: true dependencies: cli-truncate: 2.1.0 - colorette: 2.0.19 + colorette: 2.0.20 log-update: 4.0.0 p-map: 4.0.0 rfdc: 1.3.0 @@ -7974,7 +8073,7 @@ packages: resolution: {integrity: sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ==} engines: {node: '>=8'} dependencies: - graceful-fs: 4.2.11 + graceful-fs: 4.2.10 parse-json: 5.2.0 strip-bom: 4.0.0 type-fest: 0.6.0 @@ -8124,8 +8223,8 @@ packages: engines: {node: '>=12'} dev: true - /lru-cache@9.0.1: - resolution: {integrity: sha512-C8QsKIN1UIXeOs3iWmiZ1lQY+EnKDojWd37fXy1aSbJvH4iSma1uy2OWuoB3m4SYRli5+CUjDv3Dij5DVoetmg==} + /lru-cache@9.1.1: + resolution: {integrity: sha512-65/Jky17UwSb0BuB9V+MyDpsOtXKmYwzhyl+cOa9XUiI4uV2Ouy/2voFP3+al0BjZbJgMBD8FojMpAf+Z+qn4A==} engines: {node: 14 || >=16.14} dev: true @@ -8171,8 +8270,8 @@ packages: - supports-color dev: true - /make-fetch-happen@11.0.3: - resolution: {integrity: sha512-oPLh5m10lRNNZDjJ2kP8UpboUx2uFXVaVweVe/lWut4iHWcQEmfqSVJt2ihZsFI8HbpwyyocaXbCAWf0g1ukIA==} + /make-fetch-happen@11.1.0: + resolution: {integrity: sha512-7ChuOzCb1LzdQZrTy0ky6RsCoMYeM+Fh4cY0+4zsJVhNcH5Q3OJojLY1mGkD0xAhWB29lskECVb6ZopofwjldA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: agentkeepalive: 4.3.0 @@ -8183,7 +8282,7 @@ packages: is-lambda: 1.0.1 lru-cache: 7.18.3 minipass: 4.2.8 - minipass-fetch: 3.0.1 + minipass-fetch: 3.0.2 minipass-flush: 1.0.5 minipass-pipeline: 1.2.4 negotiator: 0.6.3 @@ -8362,8 +8461,8 @@ packages: encoding: 0.1.13 dev: true - /minipass-fetch@3.0.1: - resolution: {integrity: sha512-t9/wowtf7DYkwz8cfMSt0rMwiyNIBXf5CKZ3S5ZMqRqMYT0oLTp0x1WorMI9WTwvaPg21r1JbFxJMum8JrLGfw==} + /minipass-fetch@3.0.2: + resolution: {integrity: sha512-/ZpF1CQaWYqjbhfFgKNt3azxztEpc/JUPuMkqOgrnMQqcU8CbE409AUdJYTIWryl3PP5CBaTJZT71N49MXP/YA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: minipass: 4.2.8 @@ -8489,7 +8588,7 @@ packages: array-differ: 3.0.0 array-union: 2.1.0 arrify: 2.0.1 - minimatch: 3.1.2 + minimatch: 3.0.5 dev: true /mute-stream@0.0.8: @@ -8559,7 +8658,7 @@ packages: dependencies: env-paths: 2.2.1 glob: 7.2.3 - graceful-fs: 4.2.11 + graceful-fs: 4.2.10 make-fetch-happen: 10.2.1 nopt: 6.0.0 npmlog: 6.0.2 @@ -8659,8 +8758,8 @@ packages: semver: 7.3.8 dev: true - /npm-install-checks@6.1.0: - resolution: {integrity: sha512-udSGENih/5xKh3Ex+L0PtZcOt0Pa+6ppDLnpG5D49/EhMja3LupaY9E/DtJTxyFBwE09ot7Fc+H4DywnZNWTVA==} + /npm-install-checks@6.1.1: + resolution: {integrity: sha512-dH3GmQL4vsPtld59cOn8uY0iOqRmqKvV+DLGwNXV/Q7MDgD2QfOADWd/mFXcIE5LVhYYGjA3baz6W9JneqnuCw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: semver: 7.3.8 @@ -8741,7 +8840,7 @@ packages: resolution: {integrity: sha512-mRtvlBjTsJvfCCdmPtiu2bdlx8d/KXtF7yNXNWe7G0Z36qWA9Ny5zXsI2PfBZEv7SXgoxTmNaTzGSbbzDZChoA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - npm-install-checks: 6.1.0 + npm-install-checks: 6.1.1 npm-normalize-package-bin: 3.0.0 npm-package-arg: 10.1.0 semver: 7.3.8 @@ -8767,9 +8866,25 @@ packages: resolution: {integrity: sha512-YaeRbVNpnWvsGOjX2wk5s85XJ7l1qQBGAp724h8e2CZFFhMSuw9enom7K1mWVUtvXO1uUSFIAPofQK0pPN0ZcA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - make-fetch-happen: 11.0.3 + make-fetch-happen: 11.1.0 + minipass: 4.2.8 + minipass-fetch: 3.0.2 + minipass-json-stream: 1.0.1 + minizlib: 2.1.2 + npm-package-arg: 10.1.0 + proc-log: 3.0.0 + transitivePeerDependencies: + - bluebird + - supports-color + dev: true + + /npm-registry-fetch@14.0.4: + resolution: {integrity: sha512-pMS2DRkwg+M44ct65zrN/Cr9IHK1+n6weuefAo6Er4lc+/8YBCU0Czq04H3ZiSigluh7pb2rMM5JpgcytctB+Q==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + make-fetch-happen: 11.1.0 minipass: 4.2.8 - minipass-fetch: 3.0.1 + minipass-fetch: 3.0.2 minipass-json-stream: 1.0.1 minizlib: 2.1.2 npm-package-arg: 10.1.0 @@ -8819,8 +8934,8 @@ packages: boolbase: 1.0.0 dev: false - /nwsapi@2.2.3: - resolution: {integrity: sha512-jscxIO4/VKScHlbmFBdV1Z6LXnLO+ZR4VMtypudUdfwtKxUN3TQcNFIHLwKtrUbDyHN4/GycY9+oRGZ2XMXYPw==} + /nwsapi@2.2.4: + resolution: {integrity: sha512-NHj4rzRo0tQdijE9ZqAx6kYDcoRwYwSYzCA8MY3JzfxlrvEU0jhnhJT9BhqhJs7I/dKcrDm6TyulaRqZPIhN5g==} dev: true /nx@15.9.2: @@ -8842,7 +8957,7 @@ packages: '@yarnpkg/lockfile': 1.1.0 '@yarnpkg/parsers': 3.0.0-rc.42 '@zkochan/js-yaml': 0.0.6 - axios: 1.3.5 + axios: 1.3.6 chalk: 4.1.2 cli-cursor: 3.1.0 cli-spinners: 2.6.1 @@ -9179,8 +9294,8 @@ packages: - supports-color dev: true - /pacote@15.1.1: - resolution: {integrity: sha512-eeqEe77QrA6auZxNHIp+1TzHQ0HBKf5V6c8zcaYZ134EJe1lCi+fjXATkNiEEfbG+e50nu02GLvUtmZcGOYabQ==} + /pacote@15.1.2: + resolution: {integrity: sha512-EAGJrMiIjBTBB6tWGrx9hFJTOo14B3HSAoa/W9SawFEBhUqjxN7qqaFlGVF9jfY/mIri8Mb2xafmkRgWxYXxIQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} hasBin: true dependencies: @@ -9194,12 +9309,12 @@ packages: npm-package-arg: 10.1.0 npm-packlist: 7.0.4 npm-pick-manifest: 8.0.1 - npm-registry-fetch: 14.0.3 + npm-registry-fetch: 14.0.4 proc-log: 3.0.0 promise-retry: 2.0.1 read-package-json: 6.0.1 read-package-json-fast: 3.0.2 - sigstore: 1.2.0 + sigstore: 1.4.0 ssri: 10.0.3 tar: 6.1.11 transitivePeerDependencies: @@ -9279,7 +9394,7 @@ packages: /parse5@7.1.2: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} dependencies: - entities: 4.4.0 + entities: 4.5.0 dev: true /parseurl@1.3.3: @@ -9321,11 +9436,11 @@ packages: /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - /path-scurry@1.6.4: - resolution: {integrity: sha512-Qp/9IHkdNiXJ3/Kon++At2nVpnhRiPq/aSvQN+H3U1WZbvNRK0RIQK/o4HMqPoXjpuGJUEWpHSs6Mnjxqh3TQg==} + /path-scurry@1.7.0: + resolution: {integrity: sha512-UkZUeDjczjYRE495+9thsgcVgsaCPkaw80slmfVFgllxY+IO8ubTsOpFVjDPROBqJdHfVPUFRHPBV/WciOVfWg==} engines: {node: '>=16 || 14 >=14.17'} dependencies: - lru-cache: 9.0.1 + lru-cache: 9.1.1 minipass: 5.0.0 dev: true @@ -9618,8 +9733,8 @@ packages: - utf-8-validate dev: false - /pure-rand@6.0.1: - resolution: {integrity: sha512-t+x1zEHDjBwkDGY5v5ApnZ/utcd4XYDiJsaQQoptTXgUXX95sDg1elCdJghzicm7n2mbCBJ3uYWr6M22SO19rg==} + /pure-rand@6.0.2: + resolution: {integrity: sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==} dev: true /q@1.5.1: @@ -9849,8 +9964,8 @@ packages: '@babel/runtime': 7.21.0 dev: false - /regexp.prototype.flags@1.4.3: - resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} + /regexp.prototype.flags@1.5.0: + resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 @@ -10056,16 +10171,16 @@ packages: dependencies: loose-envify: 1.4.0 - /schema-utils@3.1.1: - resolution: {integrity: sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==} + /schema-utils@3.1.2: + resolution: {integrity: sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg==} engines: {node: '>= 10.13.0'} dependencies: '@types/json-schema': 7.0.11 ajv: 6.12.6 ajv-keywords: 3.5.2(ajv@6.12.6) - /schema-utils@4.0.0: - resolution: {integrity: sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==} + /schema-utils@4.0.1: + resolution: {integrity: sha512-lELhBAAly9NowEsX0yZBlw9ahZG+sK/1RJ21EpzdYHKEs13Vku3LJ+MIPhh4sMs0oCCeufZQEQbMekiA4vuVIQ==} engines: {node: '>= 12.13.0'} dependencies: '@types/json-schema': 7.0.11 @@ -10192,14 +10307,14 @@ packages: pkg-conf: 2.1.0 dev: true - /sigstore@1.2.0: - resolution: {integrity: sha512-Fr9+W1nkBSIZCkJQR7jDn/zI0UXNsVpp+7mDQkCnZOIxG9p6yNXBx9xntHsfUyYHE55XDkkVV3+rYbrkzAeesA==} + /sigstore@1.4.0: + resolution: {integrity: sha512-N7TRpSbFjY/TrFDg6yGAQSYBrQ5s6qmPiq4pD6fkv1LoyfMsLG0NwZWG2s5q+uttLHgyVyTa0Rogx2P78rN8kQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} hasBin: true dependencies: '@sigstore/protobuf-specs': 0.1.0 - make-fetch-happen: 11.0.3 - tuf-js: 1.1.2 + make-fetch-happen: 11.1.0 + tuf-js: 1.1.4 transitivePeerDependencies: - bluebird - supports-color @@ -10403,7 +10518,7 @@ packages: get-intrinsic: 1.2.0 has-symbols: 1.0.3 internal-slot: 1.0.5 - regexp.prototype.flags: 1.4.3 + regexp.prototype.flags: 1.5.0 side-channel: 1.0.4 dev: true @@ -10621,7 +10736,7 @@ packages: engines: {node: '>=10'} dependencies: del: 6.1.1 - is-stream: 2.0.1 + is-stream: 2.0.0 temp-dir: 2.0.0 type-fest: 0.16.0 unique-string: 2.0.0 @@ -10654,13 +10769,13 @@ packages: '@jridgewell/trace-mapping': 0.3.18 '@swc/core': 1.3.50 jest-worker: 27.5.1 - schema-utils: 3.1.1 + schema-utils: 3.1.2 serialize-javascript: 6.0.1 - terser: 5.16.9 + terser: 5.17.1 webpack: 5.79.0(@swc/core@1.3.50) - /terser@5.16.9: - resolution: {integrity: sha512-HPa/FdTB9XGI2H1/keLFZHxl6WNvAI4YalHGtDQTlMnJcoqSab1UwL4l1hGEhs6/GmLHBZIg/YgB++jcbzoOEg==} + /terser@5.17.1: + resolution: {integrity: sha512-hVl35zClmpisy6oaoKALOpS0rDYLxRFLHhRuDlEGTKey9qHjS1w9GMORjuwIMt70Wan4lwsLYyWDVnWgF+KUEw==} engines: {node: '>=10'} hasBin: true dependencies: @@ -10894,12 +11009,12 @@ packages: typescript: 5.0.4 dev: true - /tuf-js@1.1.2: - resolution: {integrity: sha512-gBfbnS6khluxjvoFCpRV0fhWT265xNfpiNXOcBX0Ze6HGbPhe93UG5V5DdKcgm/aXsMadnY76l/h6j63GmJS5g==} + /tuf-js@1.1.4: + resolution: {integrity: sha512-Lw2JRM3HTYhEtQJM2Th3aNCPbnXirtWMl065BawwmM2pX6XStH/ZO9e8T2hh0zk/HUa+1i6j+Lv6eDitKTau6A==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - '@tufjs/models': 1.0.1 - make-fetch-happen: 11.0.3 + '@tufjs/models': 1.0.3 + make-fetch-happen: 11.1.0 transitivePeerDependencies: - bluebird - supports-color @@ -10983,8 +11098,8 @@ packages: resolution: {integrity: sha512-GQ90TcKpIH4XxYTI2F98yEQYZgjNMOGPpOgdjIBhaLaWji5HPWlRnZ4AeA1hfBxtY7bCGDJsqDDHk/KaHOl5bA==} dev: true - /typescript@3.9.10: - resolution: {integrity: sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==} + /typescript@4.9.5: + resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} engines: {node: '>=4.2.0'} hasBin: true dev: true @@ -11110,8 +11225,8 @@ packages: engines: {node: '>=4'} dev: true - /update-browserslist-db@1.0.10(browserslist@4.21.5): - resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} + /update-browserslist-db@1.0.11(browserslist@4.21.5): + resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -11261,7 +11376,7 @@ packages: optional: true dependencies: '@types/eslint-scope': 3.7.4 - '@types/estree': 1.0.0 + '@types/estree': 1.0.1 '@webassemblyjs/ast': 1.11.1 '@webassemblyjs/wasm-edit': 1.11.1 '@webassemblyjs/wasm-parser': 1.11.1 @@ -11269,7 +11384,7 @@ packages: acorn-import-assertions: 1.8.0(acorn@8.8.2) browserslist: 4.21.5 chrome-trace-event: 1.0.3 - enhanced-resolve: 5.12.0 + enhanced-resolve: 5.13.0 es-module-lexer: 1.2.1 eslint-scope: 5.1.1 events: 3.3.0 @@ -11279,7 +11394,7 @@ packages: loader-runner: 4.3.0 mime-types: 2.1.35 neo-async: 2.6.2 - schema-utils: 3.1.1 + schema-utils: 3.1.2 tapable: 2.2.1 terser-webpack-plugin: 5.3.7(@swc/core@1.3.50)(webpack@5.79.0) watchpack: 2.4.0 @@ -11408,7 +11523,7 @@ packages: /write-file-atomic@2.4.3: resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} dependencies: - graceful-fs: 4.2.11 + graceful-fs: 4.2.10 imurmurhash: 0.1.4 signal-exit: 3.0.7 dev: true @@ -11442,7 +11557,7 @@ packages: engines: {node: '>=6'} dependencies: detect-indent: 5.0.0 - graceful-fs: 4.2.11 + graceful-fs: 4.2.10 make-dir: 2.1.0 pify: 4.0.1 sort-keys: 2.0.0 @@ -11510,8 +11625,8 @@ packages: engines: {node: '>= 6'} dev: true - /yaml@2.2.1: - resolution: {integrity: sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==} + /yaml@2.2.2: + resolution: {integrity: sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==} engines: {node: '>= 14'} dev: true @@ -11539,7 +11654,7 @@ packages: require-directory: 2.1.1 string-width: 4.2.3 y18n: 5.0.8 - yargs-parser: 20.2.9 + yargs-parser: 20.2.4 dev: true /yargs@17.7.1: diff --git a/spec/main-suite/perftool.config.mts b/spec/main-suite/perftool.config.mts index fd39cf2..4af1c24 100644 --- a/spec/main-suite/perftool.config.mts +++ b/spec/main-suite/perftool.config.mts @@ -17,9 +17,12 @@ const config: Config = { failOnSignificantChanges: false, stabilizers: ['staticTask'], absoluteError: 1, + modifyTranspilerConfig(conf) { + return conf; + }, modifyWebpackConfig(conf) { const babelLoaderOpts = conf.module?.rules?.find( - (rule) => typeof rule === 'object' && rule.loader === 'babel-loader', + (rule) => typeof rule === 'object' && rule.loader?.match(/babel-loader/), ); if (typeof babelLoaderOpts === 'object' && typeof babelLoaderOpts?.options === 'object') {