From e6c5ab97261882aa15274a0b697186099d923d8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Ro=C5=BCek?= Date: Fri, 12 Jan 2024 14:55:07 +0100 Subject: [PATCH] build(rulesets): abandon props mangling --- .eslintignore | 2 +- .gitignore | 2 +- packages/rulesets/package.json | 6 +- packages/rulesets/scripts/bundle.ts | 37 -- packages/rulesets/scripts/compile-schemas.ts | 28 +- .../src/oas/functions/_oasDocumentSchema.ts | 116 ----- .../src/oas/functions/oasDocumentSchema.ts | 108 ++++- .../src/oas/schemas/__fixtures__/validate.ts | 0 .../src/oas/schemas/{ => oas}/LICENSE | 0 yarn.lock | 443 +----------------- 10 files changed, 153 insertions(+), 589 deletions(-) delete mode 100644 packages/rulesets/scripts/bundle.ts delete mode 100644 packages/rulesets/src/oas/functions/_oasDocumentSchema.ts create mode 100644 packages/rulesets/src/oas/schemas/__fixtures__/validate.ts rename packages/rulesets/src/oas/schemas/{ => oas}/LICENSE (100%) diff --git a/.eslintignore b/.eslintignore index f12606a84..5c2348a5f 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,6 +1,6 @@ **/__fixtures__/** /test-harness/tests/ /packages/*/dist -/packages/rulesets/src/oas/schemas/compiled.ts +/packages/rulesets/src/oas/schemas/validators.ts /packages/*/CHANGELOG.md packages/formatters/src/html/templates.ts diff --git a/.gitignore b/.gitignore index 69365a2d2..0ad7557a3 100644 --- a/.gitignore +++ b/.gitignore @@ -11,7 +11,7 @@ node_modules !.yarn/versions packages/formatters/src/html/templates.ts -packages/rulesets/src/oas/schemas/compiled.ts +packages/rulesets/src/oas/schemas/validators.ts packages/cli/binaries packages/*/src/version.ts /test-harness/tmp/ diff --git a/packages/rulesets/package.json b/packages/rulesets/package.json index fca3d4a96..8f8483227 100644 --- a/packages/rulesets/package.json +++ b/packages/rulesets/package.json @@ -50,17 +50,15 @@ "tslib": "^2.3.0" }, "devDependencies": { - "@rollup/plugin-sucrase": "^5.0.2", - "@rollup/plugin-terser": "^0.4.4", "@stoplight/path": "^1.3.2", "@stoplight/spectral-parsers": "*", "@stoplight/spectral-ref-resolver": "*", "gzip-size": "^6.0.0", - "immer": "^9.0.6" + "immer": "^9.0.6", + "terser": "^5.26.0" }, "scripts": { "compile-schemas": "ts-node -T ./scripts/compile-schemas.ts", - "postbuild": "ts-node -T ./scripts/bundle.ts", "prelint": "yarn compile-schemas --quiet", "pretest": "yarn compile-schemas --quiet", "prebuild": "yarn compile-schemas --quiet" diff --git a/packages/rulesets/scripts/bundle.ts b/packages/rulesets/scripts/bundle.ts deleted file mode 100644 index 5c7cc886b..000000000 --- a/packages/rulesets/scripts/bundle.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { rollup } from 'rollup'; -import terser from '@rollup/plugin-terser'; -import * as path from 'path'; -import sucrase from '@rollup/plugin-sucrase'; - -const cwd = path.join(__dirname, '..'); - -rollup({ - input: path.join(cwd, 'src/oas/functions/_oasDocumentSchema.ts'), - plugins: [ - sucrase({ - transforms: ['typescript'], - }), - terser({ - ecma: 2020, - module: true, - compress: { - passes: 2, - }, - mangle: { - // properties: true, - // reserved: ['message', 'path'], - }, - }), - ], - treeshake: true, - watch: false, - perf: false, - external: ['@stoplight/spectral-core', '@stoplight/json', 'leven'], -}).then(bundle => - bundle.write({ - format: 'commonjs', - exports: 'default', - sourcemap: true, - file: path.join(cwd, 'dist/oas/functions/_oasDocumentSchema.js'), - }), -); diff --git a/packages/rulesets/scripts/compile-schemas.ts b/packages/rulesets/scripts/compile-schemas.ts index 4b354ff44..5c4169e57 100644 --- a/packages/rulesets/scripts/compile-schemas.ts +++ b/packages/rulesets/scripts/compile-schemas.ts @@ -7,6 +7,8 @@ import standaloneCode from 'ajv/dist/standalone/index.js'; import ajvErrors from 'ajv-errors'; import ajvFormats from 'ajv-formats'; import chalk from 'chalk'; +import { minify } from 'terser'; +import { sync } from 'gzip-size'; const cwd = path.join(__dirname, '../src'); @@ -39,14 +41,13 @@ Promise.all(schemas) code: { esm: true, source: true, - optimize: 1, }, }); ajvFormats(ajv); ajvErrors(ajv); - const target = path.join(cwd, 'oas/schemas/compiled.ts'); + const target = path.join(cwd, 'oas/schemas/validators.ts'); const basename = path.basename(target); const code = standaloneCode(ajv, { oas2_0: 'http://swagger.io/v2/schema.json', @@ -54,9 +55,28 @@ Promise.all(schemas) oas3_1: 'https://spec.openapis.org/oas/3.1/schema/2021-09-28', }); - log('writing %s size is %dKB', path.join(target, '..', basename), Math.round((code.length / 1024) * 100) / 100); + const minified = ( + await minify(code, { + compress: { + passes: 2, + }, + ecma: 2020, + module: true, + format: { + comments: false, + }, + }) + ).code as string; - await fs.promises.writeFile(path.join(target, '..', basename), ['// @ts-nocheck', code].join('\n')); + log( + 'writing %s size is %dKB (original), %dKB (minified) %dKB (minified + gzipped)', + path.join(target, '..', basename), + Math.round((code.length / 1024) * 100) / 100, + Math.round((minified.length / 1024) * 100) / 100, + Math.round((sync(minified) / 1024) * 100) / 100, + ); + + await fs.promises.writeFile(path.join(target, '..', basename), ['// @ts-nocheck', minified].join('\n')); }) .then(() => { log(chalk.green('Validators generated.')); diff --git a/packages/rulesets/src/oas/functions/_oasDocumentSchema.ts b/packages/rulesets/src/oas/functions/_oasDocumentSchema.ts deleted file mode 100644 index 68b2ea3f4..000000000 --- a/packages/rulesets/src/oas/functions/_oasDocumentSchema.ts +++ /dev/null @@ -1,116 +0,0 @@ -import type { IFunctionResult } from '@stoplight/spectral-core'; -import { isPlainObject, resolveInlineRef } from '@stoplight/json'; -import type { ErrorObject } from 'ajv'; -import leven from 'leven'; - -import { oas2_0, oas3_0, oas3_1 } from '../schemas/compiled'; - -function getValidator(format: 'oas2_0' | 'oas3_0' | 'oas3_1'): typeof oas2_0 | typeof oas3_0 | typeof oas3_1 { - switch (format) { - case 'oas2_0': - return oas2_0; - case 'oas3_0': - return oas3_0; - case 'oas3_1': - return oas3_1; - } -} - -function isRelevantError(error: ErrorObject): boolean { - return error.keyword !== 'if'; -} - -export default function (format: 'oas2_0' | 'oas3_0' | 'oas3_1', input: unknown): IFunctionResult[] | void { - const validator = getValidator(format); - validator(input); - - // @ts-expect-error: validator typings aren't fully correct - const errors = validator.errors as ErrorObject[] | undefined; - - return errors?.filter(isRelevantError).map(e => processError(input, e)); -} - -function processError(input: unknown, error: ErrorObject): IFunctionResult { - const path = error.instancePath === '' ? [] : error.instancePath.slice(1).split('/'); - const property = path.length === 0 ? null : path[path.length - 1]; - - switch (error.keyword) { - case 'additionalProperties': { - const additionalProperty = error.params['additionalProperty'] as string; - path.push(additionalProperty); - - return { - message: `Property "${additionalProperty}" is not expected to be here`, - path, - }; - } - - case 'enum': { - const allowedValues = error.params['allowedValues'] as unknown[]; - const printedValues = allowedValues.map(value => JSON.stringify(value)).join(', '); - let suggestion: string; - - if (!isPlainObject(input)) { - suggestion = ''; - } else { - const value = resolveInlineRef(input, `#${error.instancePath}`); - if (typeof value !== 'string') { - suggestion = ''; - } else { - const bestMatch = findBestMatch(value, allowedValues); - - if (bestMatch !== null) { - suggestion = `. Did you mean "${bestMatch}"?`; - } else { - suggestion = ''; - } - } - } - - return { - message: `${cleanAjvMessage(property, error.message)}: ${printedValues}${suggestion}`, - path, - }; - } - - case 'errorMessage': - return { - message: String(error.message), - path, - }; - - default: - return { - message: cleanAjvMessage(property, error.message), - path, - }; - } -} - -function findBestMatch(value: string, allowedValues: unknown[]): string | null { - const matches = allowedValues - .filter((value): value is string => typeof value === 'string') - .map(allowedValue => ({ - value: allowedValue, - weight: leven(value, allowedValue), - })) - .sort((x, y) => (x.weight > y.weight ? 1 : x.weight < y.weight ? -1 : 0)); - - if (matches.length === 0) { - return null; - } - - const bestMatch = matches[0]; - - return allowedValues.length === 1 || bestMatch.weight < bestMatch.value.length ? bestMatch.value : null; -} - -const QUOTES = /['"]/g; -const NOT = /NOT/g; - -function cleanAjvMessage(prop: string | null, message: string | undefined): string { - if (typeof message !== 'string') return ''; - - const cleanedMessage = message.replace(QUOTES, '"').replace(NOT, 'not'); - return prop === null ? cleanedMessage : `"${prop}" property ${cleanedMessage}`; -} diff --git a/packages/rulesets/src/oas/functions/oasDocumentSchema.ts b/packages/rulesets/src/oas/functions/oasDocumentSchema.ts index 8c5397365..cf349ad39 100644 --- a/packages/rulesets/src/oas/functions/oasDocumentSchema.ts +++ b/packages/rulesets/src/oas/functions/oasDocumentSchema.ts @@ -1,6 +1,11 @@ import { createRulesetFunction } from '@stoplight/spectral-core'; +import type { IFunctionResult } from '@stoplight/spectral-core'; import { oas2, oas3_1 } from '@stoplight/spectral-formats'; -import _oasDocumentSchema from './_oasDocumentSchema'; +import { isPlainObject, resolveInlineRef } from '@stoplight/json'; +import type { ErrorObject } from 'ajv'; +import leven from 'leven'; + +import * as validators from '../schemas/validators'; export default createRulesetFunction( { @@ -11,8 +16,105 @@ export default createRulesetFunction( const formats = context.document.formats; if (formats === null || formats === void 0) return; - const format = formats.has(oas2) ? 'oas2_0' : formats.has(oas3_1) ? 'oas3_1' : 'oas3_0'; + const validator = formats.has(oas2) + ? validators.oas2_0 + : formats.has(oas3_1) + ? validators.oas3_1 + : validators.oas3_0; + + validator(input); + + const errors = validator['errors'] as ErrorObject[] | undefined; - return _oasDocumentSchema(format, input); + return errors?.filter(isRelevantError).map(e => processError(input, e)); }, ); + +function isRelevantError(error: ErrorObject): boolean { + return error.keyword !== 'if'; +} + +function processError(input: unknown, error: ErrorObject): IFunctionResult { + const path = error.instancePath === '' ? [] : error.instancePath.slice(1).split('/'); + const property = path.length === 0 ? null : path[path.length - 1]; + + switch (error.keyword) { + case 'additionalProperties': { + const additionalProperty = error.params['additionalProperty'] as string; + path.push(additionalProperty); + + return { + message: `Property "${additionalProperty}" is not expected to be here`, + path, + }; + } + + case 'enum': { + const allowedValues = error.params['allowedValues'] as unknown[]; + const printedValues = allowedValues.map(value => JSON.stringify(value)).join(', '); + let suggestion: string; + + if (!isPlainObject(input)) { + suggestion = ''; + } else { + const value = resolveInlineRef(input, `#${error.instancePath}`); + if (typeof value !== 'string') { + suggestion = ''; + } else { + const bestMatch = findBestMatch(value, allowedValues); + + if (bestMatch !== null) { + suggestion = `. Did you mean "${bestMatch}"?`; + } else { + suggestion = ''; + } + } + } + + return { + message: `${cleanAjvMessage(property, error.message)}: ${printedValues}${suggestion}`, + path, + }; + } + + case 'errorMessage': + return { + message: String(error.message), + path, + }; + + default: + return { + message: cleanAjvMessage(property, error.message), + path, + }; + } +} + +function findBestMatch(value: string, allowedValues: unknown[]): string | null { + const matches = allowedValues + .filter((value): value is string => typeof value === 'string') + .map(allowedValue => ({ + value: allowedValue, + weight: leven(value, allowedValue), + })) + .sort((x, y) => (x.weight > y.weight ? 1 : x.weight < y.weight ? -1 : 0)); + + if (matches.length === 0) { + return null; + } + + const bestMatch = matches[0]; + + return allowedValues.length === 1 || bestMatch.weight < bestMatch.value.length ? bestMatch.value : null; +} + +const QUOTES = /['"]/g; +const NOT = /NOT/g; + +function cleanAjvMessage(prop: string | null, message: string | undefined): string { + if (typeof message !== 'string') return ''; + + const cleanedMessage = message.replace(QUOTES, '"').replace(NOT, 'not'); + return prop === null ? cleanedMessage : `"${prop}" property ${cleanedMessage}`; +} diff --git a/packages/rulesets/src/oas/schemas/__fixtures__/validate.ts b/packages/rulesets/src/oas/schemas/__fixtures__/validate.ts new file mode 100644 index 000000000..e69de29bb diff --git a/packages/rulesets/src/oas/schemas/LICENSE b/packages/rulesets/src/oas/schemas/oas/LICENSE similarity index 100% rename from packages/rulesets/src/oas/schemas/LICENSE rename to packages/rulesets/src/oas/schemas/oas/LICENSE diff --git a/yarn.lock b/yarn.lock index fc49ab2fc..f2fb6dfc8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1466,20 +1466,6 @@ __metadata: languageName: node linkType: hard -"@isaacs/cliui@npm:^8.0.2": - version: 8.0.2 - resolution: "@isaacs/cliui@npm:8.0.2" - 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" - checksum: 4a473b9b32a7d4d3cfb7a614226e555091ff0c5a29a1734c28c72a182c2f6699b26fc6b5c2131dfd841e86b185aea714c72201d7c98c2fba5f17709333a67aeb - languageName: node - linkType: hard - "@isaacs/string-locale-compare@npm:^1.1.0": version: 1.1.0 resolution: "@isaacs/string-locale-compare@npm:1.1.0" @@ -2354,13 +2340,6 @@ __metadata: languageName: node linkType: hard -"@pkgjs/parseargs@npm:^0.11.0": - version: 0.11.0 - resolution: "@pkgjs/parseargs@npm:0.11.0" - checksum: 6ad6a00fc4f2f2cfc6bff76fb1d88b8ee20bc0601e18ebb01b6d4be583733a860239a521a7fbca73b612e66705078809483549d2b18f370eb346c5155c8e4a0f - languageName: node - linkType: hard - "@pnpm/config.env-replace@npm:^1.1.0": version: 1.1.0 resolution: "@pnpm/config.env-replace@npm:1.1.0" @@ -2405,37 +2384,6 @@ __metadata: languageName: node linkType: hard -"@rollup/plugin-sucrase@npm:^5.0.2": - version: 5.0.2 - resolution: "@rollup/plugin-sucrase@npm:5.0.2" - dependencies: - "@rollup/pluginutils": ^5.0.1 - sucrase: ^3.27.0 - peerDependencies: - rollup: ^2.53.1||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - checksum: 3780cc4a6e3cc492a25e0eb0efb2f99e353f1c05497c97d52c901f07ef262ea114de312cba3a6b6d86cca49e28817d85e4bbc9b060c32f94d7364d8c8f2198a7 - languageName: node - linkType: hard - -"@rollup/plugin-terser@npm:^0.4.4": - version: 0.4.4 - resolution: "@rollup/plugin-terser@npm:0.4.4" - dependencies: - serialize-javascript: ^6.0.1 - smob: ^1.0.0 - terser: ^5.17.4 - peerDependencies: - rollup: ^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - checksum: 5472f659fbb7034488df91eb01ecd2ddf6d2cf203d049aa486139225ad5566254c6ec24aad1f5d1167e35f480212ede5160df9cc80e149a28874f78ed6a7fd9a - languageName: node - linkType: hard - "@rollup/pluginutils@npm:^3.1.0": version: 3.1.0 resolution: "@rollup/pluginutils@npm:3.1.0" @@ -2449,22 +2397,6 @@ __metadata: languageName: node linkType: hard -"@rollup/pluginutils@npm:^5.0.1": - version: 5.1.0 - resolution: "@rollup/pluginutils@npm:5.1.0" - dependencies: - "@types/estree": ^1.0.0 - estree-walker: ^2.0.2 - picomatch: ^2.3.1 - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - checksum: 3cc5a6d91452a6eabbfd1ae79b4dd1f1e809d2eecda6e175deb784e75b0911f47e9ecce73f8dd315d6a8b3f362582c91d3c0f66908b6ced69345b3cbe28f8ce8 - languageName: node - linkType: hard - "@semantic-release/changelog@npm:^6.0.3": version: 6.0.3 resolution: "@semantic-release/changelog@npm:6.0.3" @@ -2905,8 +2837,6 @@ __metadata: resolution: "@stoplight/spectral-rulesets@workspace:packages/rulesets" dependencies: "@asyncapi/specs": ^4.1.0 - "@rollup/plugin-sucrase": ^5.0.2 - "@rollup/plugin-terser": ^0.4.4 "@stoplight/better-ajv-errors": 1.0.3 "@stoplight/json": ^3.17.0 "@stoplight/path": ^1.3.2 @@ -2925,8 +2855,6 @@ __metadata: json-schema-traverse: ^1.0.0 leven: 3.1.0 lodash: ~4.17.21 - rollup-plugin-bundle-size: ^1.0.3 - rollup-plugin-output-size: ^1.3.0 terser: ^5.26.0 tslib: ^2.3.0 languageName: unknown @@ -3254,13 +3182,6 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:^1.0.0": - version: 1.0.5 - resolution: "@types/estree@npm:1.0.5" - checksum: dd8b5bed28e6213b7acd0fb665a84e693554d850b0df423ac8076cc3ad5823a6bc26b0251d080bdc545af83179ede51dd3f6fa78cad2c46ed1f29624ddf3e41a - languageName: node - linkType: hard - "@types/file-entry-cache@npm:^5.0.2": version: 5.0.2 resolution: "@types/file-entry-cache@npm:5.0.2" @@ -3865,20 +3786,6 @@ __metadata: languageName: node linkType: hard -"ansi-regex@npm:^6.0.1": - version: 6.0.1 - resolution: "ansi-regex@npm:6.0.1" - checksum: 1ff8b7667cded1de4fa2c9ae283e979fc87036864317da86a2e546725f96406746411d0d85e87a2d12fa5abd715d90006de7fa4fa0477c92321ad3b4c7d4e169 - languageName: node - linkType: hard - -"ansi-styles@npm:^2.2.1": - version: 2.2.1 - resolution: "ansi-styles@npm:2.2.1" - checksum: ebc0e00381f2a29000d1dac8466a640ce11943cef3bda3cd0020dc042e31e1058ab59bf6169cd794a54c3a7338a61ebc404b7c91e004092dd20e028c432c9c2c - languageName: node - linkType: hard - "ansi-styles@npm:^3.2.1": version: 3.2.1 resolution: "ansi-styles@npm:3.2.1" @@ -3904,13 +3811,6 @@ __metadata: languageName: node linkType: hard -"ansi-styles@npm:^6.1.0": - version: 6.2.1 - resolution: "ansi-styles@npm:6.2.1" - checksum: ef940f2f0ced1a6347398da88a91da7930c33ecac3c77b72c5905f8b8fe402c52e6fde304ff5347f616e27a742da3f1dc76de98f6866c69251ad0b07a66776d9 - languageName: node - linkType: hard - "ansicolors@npm:~0.3.2": version: 0.3.2 resolution: "ansicolors@npm:0.3.2" @@ -4668,19 +4568,6 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^1.0.0, chalk@npm:^1.1.3": - version: 1.1.3 - resolution: "chalk@npm:1.1.3" - 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 - checksum: 9d2ea6b98fc2b7878829eec223abcf404622db6c48396a9b9257f6d0ead2acf18231ae368d6a664a83f272b0679158da12e97b5229f794939e555cc574478acd - languageName: node - linkType: hard - "chalk@npm:^2.3.2, chalk@npm:^2.4.1, chalk@npm:^2.4.2": version: 2.4.2 resolution: "chalk@npm:2.4.2" @@ -4949,13 +4836,6 @@ __metadata: languageName: node linkType: hard -"colorette@npm:^2.0.20": - version: 2.0.20 - resolution: "colorette@npm:2.0.20" - checksum: 0c016fea2b91b733eb9f4bcdb580018f52c0bc0979443dad930e5037a968237ac53d9beb98e218d2e9235834f8eebce7f8e080422d6194e957454255bde71d3d - languageName: node - linkType: hard - "columnify@npm:^1.6.0": version: 1.6.0 resolution: "columnify@npm:1.6.0" @@ -4994,13 +4874,6 @@ __metadata: languageName: node linkType: hard -"commander@npm:^4.0.0": - version: 4.1.1 - resolution: "commander@npm:4.1.1" - checksum: d7b9913ff92cae20cb577a4ac6fcc121bd6223319e54a40f51a14740a681ad5c574fd29a57da478a5f234a6fa6c52cbf0b7c641353e03c648b1ae85ba670b977 - languageName: node - linkType: hard - "commander@npm:^8.2.0": version: 8.2.0 resolution: "commander@npm:8.2.0" @@ -5749,20 +5622,13 @@ __metadata: languageName: node linkType: hard -"duplexer@npm:^0.1.1, duplexer@npm:^0.1.2": +"duplexer@npm:^0.1.2": version: 0.1.2 resolution: "duplexer@npm:0.1.2" checksum: 62ba61a830c56801db28ff6305c7d289b6dc9f859054e8c982abd8ee0b0a14d2e9a8e7d086ffee12e868d43e2bbe8a964be55ddbd8c8957714c87373c7a4f9b0 languageName: node linkType: hard -"eastasianwidth@npm:^0.2.0": - version: 0.2.0 - resolution: "eastasianwidth@npm:0.2.0" - checksum: 7d00d7cd8e49b9afa762a813faac332dee781932d6f2c848dc348939c4253f1d4564341b7af1d041853bc3f32c2ef141b58e0a4d9862c17a7f08f68df1e0f1ed - languageName: node - linkType: hard - "ee-first@npm:1.1.1": version: 1.1.1 resolution: "ee-first@npm:1.1.1" @@ -5806,13 +5672,6 @@ __metadata: languageName: node linkType: hard -"emoji-regex@npm:^9.2.2": - version: 9.2.2 - resolution: "emoji-regex@npm:9.2.2" - checksum: 8487182da74aabd810ac6d6f1994111dfc0e331b01271ae01ec1eb0ad7b5ecc2bbbbd2f053c05cb55a1ac30449527d819bbfbf0e3de1023db308cbcb47f86601 - languageName: node - linkType: hard - "encodeurl@npm:~1.0.2": version: 1.0.2 resolution: "encodeurl@npm:1.0.2" @@ -6045,7 +5904,7 @@ __metadata: languageName: node linkType: hard -"escape-string-regexp@npm:^1.0.2, escape-string-regexp@npm:^1.0.5": +"escape-string-regexp@npm:^1.0.5": version: 1.0.5 resolution: "escape-string-regexp@npm:1.0.5" checksum: 6092fda75c63b110c706b6a9bfde8a612ad595b628f0bd2147eea1d3406723020810e591effc7db1da91d80a71a737a313567c5abb3813e8d9c71f4aa595b410 @@ -6289,7 +6148,7 @@ __metadata: languageName: node linkType: hard -"estree-walker@npm:^2.0.1, estree-walker@npm:^2.0.2": +"estree-walker@npm:^2.0.1": version: 2.0.2 resolution: "estree-walker@npm:2.0.2" checksum: 6151e6f9828abe2259e57f5fd3761335bb0d2ebd76dc1a01048ccee22fabcfef3c0859300f6d83ff0d1927849368775ec5a6d265dde2f6de5a1be1721cd94efc @@ -6530,16 +6389,6 @@ __metadata: languageName: node linkType: hard -"figures@npm:^1.0.1": - version: 1.7.0 - resolution: "figures@npm:1.7.0" - dependencies: - escape-string-regexp: ^1.0.5 - object-assign: ^4.1.0 - checksum: d77206deba991a7977f864b8c8edf9b8b43b441be005482db04b0526e36263adbdb22c1c6d2df15a1ad78d12029bd1aa41ccebcb5d425e1f2cf629c6daaa8e10 - languageName: node - linkType: hard - "figures@npm:^2.0.0": version: 2.0.0 resolution: "figures@npm:2.0.0" @@ -6665,16 +6514,6 @@ __metadata: languageName: node linkType: hard -"foreground-child@npm:^3.1.0": - version: 3.1.1 - resolution: "foreground-child@npm:3.1.1" - dependencies: - cross-spawn: ^7.0.0 - signal-exit: ^4.0.1 - checksum: 139d270bc82dc9e6f8bc045fe2aae4001dc2472157044fdfad376d0a3457f77857fa883c1c8b21b491c6caade9a926a4bed3d3d2e8d3c9202b151a4cbbd0bcd5 - languageName: node - linkType: hard - "form-data@npm:^3.0.0": version: 3.0.0 resolution: "form-data@npm:3.0.0" @@ -6997,21 +6836,6 @@ __metadata: languageName: node linkType: hard -"glob@npm:^10.3.10": - version: 10.3.10 - resolution: "glob@npm:10.3.10" - dependencies: - foreground-child: ^3.1.0 - jackspeak: ^2.3.5 - minimatch: ^9.0.1 - minipass: ^5.0.0 || ^6.0.2 || ^7.0.0 - path-scurry: ^1.10.1 - bin: - glob: dist/esm/bin.mjs - checksum: 4f2fe2511e157b5a3f525a54092169a5f92405f24d2aed3142f4411df328baca13059f4182f1db1bf933e2c69c0bd89e57ae87edd8950cba8c7ccbe84f721cf3 - languageName: node - linkType: hard - "glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6, glob@npm:^7.1.7": version: 7.2.3 resolution: "glob@npm:7.2.3" @@ -7122,15 +6946,6 @@ __metadata: languageName: node linkType: hard -"gzip-size@npm:^3.0.0": - version: 3.0.0 - resolution: "gzip-size@npm:3.0.0" - dependencies: - duplexer: ^0.1.1 - checksum: 683095068fc28e5dfa7dd77114ba95583d5acfd99e8028a993602e620eb9d48bf7910c14a3117caa9d665e3e1271b4027396f714be30f2b619dc638c76e5a6e8 - languageName: node - linkType: hard - "gzip-size@npm:^6.0.0": version: 6.0.0 resolution: "gzip-size@npm:6.0.0" @@ -7140,15 +6955,6 @@ __metadata: languageName: node linkType: hard -"gzip-size@npm:^7.0.0": - version: 7.0.0 - resolution: "gzip-size@npm:7.0.0" - dependencies: - duplexer: ^0.1.2 - checksum: 52d0bf586307082428b99f7b04d56d756d640e1f84d4a56debf9fb8c972d9db679143b067dd4024ebef42e9f6787e9dc8b9dcad344372b9dc87e55d942276f49 - languageName: node - linkType: hard - "handlebars@npm:^4.7.7": version: 4.7.7 resolution: "handlebars@npm:4.7.7" @@ -7174,15 +6980,6 @@ __metadata: languageName: node linkType: hard -"has-ansi@npm:^2.0.0": - version: 2.0.0 - resolution: "has-ansi@npm:2.0.0" - dependencies: - ansi-regex: ^2.0.0 - checksum: 1b51daa0214440db171ff359d0a2d17bc20061164c57e76234f614c91dbd2a79ddd68dfc8ee73629366f7be45a6df5f2ea9de83f52e1ca24433f2cc78c35d8ec - languageName: node - linkType: hard - "has-bigints@npm:^1.0.1": version: 1.0.1 resolution: "has-bigints@npm:1.0.1" @@ -8052,19 +7849,6 @@ __metadata: languageName: node linkType: hard -"jackspeak@npm:^2.3.5": - version: 2.3.6 - resolution: "jackspeak@npm:2.3.6" - dependencies: - "@isaacs/cliui": ^8.0.2 - "@pkgjs/parseargs": ^0.11.0 - dependenciesMeta: - "@pkgjs/parseargs": - optional: true - checksum: 57d43ad11eadc98cdfe7496612f6bbb5255ea69fe51ea431162db302c2a11011642f50cfad57288bd0aea78384a0612b16e131944ad8ecd09d619041c8531b54 - languageName: node - linkType: hard - "jasmine-core@npm:^4.1.0": version: 4.2.0 resolution: "jasmine-core@npm:4.2.0" @@ -9339,13 +9123,6 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^9.1.1 || ^10.0.0": - version: 10.1.0 - resolution: "lru-cache@npm:10.1.0" - checksum: 58056d33e2500fbedce92f8c542e7c11b50d7d086578f14b7074d8c241422004af0718e08a6eaae8705cee09c77e39a61c1c79e9370ba689b7010c152e6a76ab - languageName: node - linkType: hard - "lru-queue@npm:^0.1.0": version: 0.1.0 resolution: "lru-queue@npm:0.1.0" @@ -9476,18 +9253,6 @@ __metadata: languageName: node linkType: hard -"maxmin@npm:^2.1.0": - version: 2.1.0 - resolution: "maxmin@npm:2.1.0" - dependencies: - chalk: ^1.0.0 - figures: ^1.0.1 - gzip-size: ^3.0.0 - pretty-bytes: ^3.0.0 - checksum: 97e2377454c4b436df8cfe46cff95e8e6166a69b5256a6513d4afc3468eeee3d26eaaac153d26c7e7cef1f775c28c7d58b4399929d5472801b666a99581d0fdb - languageName: node - linkType: hard - "md5.js@npm:^1.3.4": version: 1.3.5 resolution: "md5.js@npm:1.3.5" @@ -9673,15 +9438,6 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^9.0.1": - version: 9.0.3 - resolution: "minimatch@npm:9.0.3" - dependencies: - brace-expansion: ^2.0.1 - checksum: 253487976bf485b612f16bf57463520a14f512662e592e95c571afdab1442a6a6864b6c88f248ce6fc4ff0b6de04ac7aa6c8bb51e868e99d1d65eb0658a708b5 - languageName: node - linkType: hard - "minimist-options@npm:4.1.0": version: 4.1.0 resolution: "minimist-options@npm:4.1.0" @@ -9792,13 +9548,6 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0": - version: 7.0.4 - resolution: "minipass@npm:7.0.4" - checksum: 87585e258b9488caf2e7acea242fd7856bbe9a2c84a7807643513a338d66f368c7d518200ad7b70a508664d408aa000517647b2930c259a8b1f9f0984f344a21 - languageName: node - linkType: hard - "minizlib@npm:^2.0.0, minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": version: 2.1.2 resolution: "minizlib@npm:2.1.2" @@ -10903,16 +10652,6 @@ __metadata: languageName: node linkType: hard -"path-scurry@npm:^1.10.1": - version: 1.10.1 - resolution: "path-scurry@npm:1.10.1" - dependencies: - lru-cache: ^9.1.1 || ^10.0.0 - minipass: ^5.0.0 || ^6.0.2 || ^7.0.0 - checksum: e2557cff3a8fb8bc07afdd6ab163a92587884f9969b05bbbaf6fe7379348bfb09af9ed292af12ed32398b15fb443e81692047b786d1eeb6d898a51eb17ed7d90 - languageName: node - linkType: hard - "path-to-regexp@npm:^2.2.1": version: 2.4.0 resolution: "path-to-regexp@npm:2.4.0" @@ -10954,13 +10693,6 @@ __metadata: languageName: node linkType: hard -"picomatch@npm:^2.3.1": - version: 2.3.1 - resolution: "picomatch@npm:2.3.1" - checksum: 050c865ce81119c4822c45d3c84f1ced46f93a0126febae20737bd05ca20589c564d6e9226977df859ed5e03dc73f02584a2b0faad36e896936238238b0446cf - languageName: node - linkType: hard - "pify@npm:^3.0.0": version: 3.0.0 resolution: "pify@npm:3.0.0" @@ -10975,13 +10707,6 @@ __metadata: languageName: node linkType: hard -"pirates@npm:^4.0.1": - version: 4.0.6 - resolution: "pirates@npm:4.0.6" - checksum: 46a65fefaf19c6f57460388a5af9ab81e3d7fd0e7bc44ca59d753cb5c4d0df97c6c6e583674869762101836d68675f027d60f841c105d72734df9dfca97cbcc6 - languageName: node - linkType: hard - "pirates@npm:^4.0.4": version: 4.0.5 resolution: "pirates@npm:4.0.5" @@ -11081,22 +10806,6 @@ __metadata: languageName: node linkType: hard -"pretty-bytes@npm:^3.0.0": - version: 3.0.1 - resolution: "pretty-bytes@npm:3.0.1" - dependencies: - number-is-nan: ^1.0.0 - checksum: 0709a19bb30c0a35d84f2afdfbeaef3e68703c28346e85413493edd687f7509d1ec987cda2fe54554b9481426ba775f4cd6108c16633353768cfad4d417baacd - languageName: node - linkType: hard - -"pretty-bytes@npm:^6.1.1": - version: 6.1.1 - resolution: "pretty-bytes@npm:6.1.1" - checksum: 43d29d909d2d88072da2c3d72f8fd0f2d2523c516bfa640aff6e31f596ea1004b6601f4cabc50d14b2cf10e82635ebe5b7d9378f3d5bae1c0067131829421b8a - languageName: node - linkType: hard - "pretty-format@npm:^27.5.1": version: 27.5.1 resolution: "pretty-format@npm:27.5.1" @@ -11315,7 +11024,7 @@ __metadata: languageName: node linkType: hard -"randombytes@npm:^2.0.0, randombytes@npm:^2.0.1, randombytes@npm:^2.0.5, randombytes@npm:^2.1.0": +"randombytes@npm:^2.0.0, randombytes@npm:^2.0.1, randombytes@npm:^2.0.5": version: 2.1.0 resolution: "randombytes@npm:2.1.0" dependencies: @@ -11763,32 +11472,6 @@ __metadata: languageName: node linkType: hard -"rollup-plugin-bundle-size@npm:^1.0.3": - version: 1.0.3 - resolution: "rollup-plugin-bundle-size@npm:1.0.3" - dependencies: - chalk: ^1.1.3 - maxmin: ^2.1.0 - checksum: 21165474bbac68484c98e4a6346888511dca327da3d9b9d7ab15cb003c67a052443d8a599fb5647b7a312104d2740f246ba9b692754dda92be2a20d5f7fc4fd6 - languageName: node - linkType: hard - -"rollup-plugin-output-size@npm:^1.3.0": - version: 1.3.0 - resolution: "rollup-plugin-output-size@npm:1.3.0" - dependencies: - colorette: ^2.0.20 - gzip-size: ^7.0.0 - pretty-bytes: ^6.1.1 - peerDependencies: - rollup: ^2.0.0 || ^3.0.0 || ^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - checksum: 47bda6876f9d12e5eccccc61c401ee624b511a3a8ffe2b75b597105603c77af653e4bb714918bcd7763a21fa68fb27e2caca2afe7cbece2e53fb564f7a895f71 - languageName: node - linkType: hard - "rollup@npm:~2.79.0": version: 2.79.0 resolution: "rollup@npm:2.79.0" @@ -12018,15 +11701,6 @@ __metadata: languageName: node linkType: hard -"serialize-javascript@npm:^6.0.1": - version: 6.0.2 - resolution: "serialize-javascript@npm:6.0.2" - dependencies: - randombytes: ^2.1.0 - checksum: c4839c6206c1d143c0f80763997a361310305751171dd95e4b57efee69b8f6edd8960a0b7fbfc45042aadff98b206d55428aee0dc276efe54f100899c7fa8ab7 - languageName: node - linkType: hard - "set-blocking@npm:^2.0.0, set-blocking@npm:~2.0.0": version: 2.0.0 resolution: "set-blocking@npm:2.0.0" @@ -12119,13 +11793,6 @@ __metadata: languageName: node linkType: hard -"signal-exit@npm:^4.0.1": - version: 4.1.0 - resolution: "signal-exit@npm:4.1.0" - checksum: 64c757b498cb8629ffa5f75485340594d2f8189e9b08700e69199069c8e3070fb3e255f7ab873c05dc0b3cec412aea7402e10a5990cb6a050bd33ba062a6c549 - languageName: node - linkType: hard - "signale@npm:^1.2.1, signale@npm:^1.4.0": version: 1.4.0 resolution: "signale@npm:1.4.0" @@ -12214,13 +11881,6 @@ __metadata: languageName: node linkType: hard -"smob@npm:^1.0.0": - version: 1.4.1 - resolution: "smob@npm:1.4.1" - checksum: 3bd9e6bcc440356b0e06165f04f0ea170ebc1d57713e4a1d64c57227cb423d8346d3e0894fd7ce28bf75958f73a62f91ba13574a9a0fb4cbc271fa9ef5d75f4e - languageName: node - linkType: hard - "socket.io-adapter@npm:~2.4.0": version: 2.4.0 resolution: "socket.io-adapter@npm:2.4.0" @@ -12528,17 +12188,6 @@ __metadata: languageName: node linkType: hard -"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": - version: 4.2.3 - resolution: "string-width@npm:4.2.3" - dependencies: - emoji-regex: ^8.0.0 - is-fullwidth-code-point: ^3.0.0 - strip-ansi: ^6.0.1 - checksum: e52c10dc3fbfcd6c3a15f159f54a90024241d0f149cf8aed2982a2d801d2e64df0bf1dc351cf8e95c3319323f9f220c16e740b06faecd53e2462df1d2b5443fb - languageName: node - linkType: hard - "string-width@npm:^1.0.1": version: 1.0.2 resolution: "string-width@npm:1.0.2" @@ -12550,14 +12199,14 @@ __metadata: languageName: node linkType: hard -"string-width@npm:^5.0.1, string-width@npm:^5.1.2": - version: 5.1.2 - resolution: "string-width@npm:5.1.2" +"string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": + version: 4.2.3 + resolution: "string-width@npm:4.2.3" dependencies: - eastasianwidth: ^0.2.0 - emoji-regex: ^9.2.2 - strip-ansi: ^7.0.1 - checksum: 7369deaa29f21dda9a438686154b62c2c5f661f8dda60449088f9f980196f7908fc39fdd1803e3e01541970287cf5deae336798337e9319a7055af89dafa7193 + emoji-regex: ^8.0.0 + is-fullwidth-code-point: ^3.0.0 + strip-ansi: ^6.0.1 + checksum: e52c10dc3fbfcd6c3a15f159f54a90024241d0f149cf8aed2982a2d801d2e64df0bf1dc351cf8e95c3319323f9f220c16e740b06faecd53e2462df1d2b5443fb languageName: node linkType: hard @@ -12610,7 +12259,7 @@ __metadata: languageName: node linkType: hard -"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:6.0, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": +"strip-ansi@npm:6.0, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": version: 6.0.1 resolution: "strip-ansi@npm:6.0.1" dependencies: @@ -12628,15 +12277,6 @@ __metadata: languageName: node linkType: hard -"strip-ansi@npm:^7.0.1": - version: 7.1.0 - resolution: "strip-ansi@npm:7.1.0" - dependencies: - ansi-regex: ^6.0.1 - checksum: 859c73fcf27869c22a4e4d8c6acfe690064659e84bef9458aa6d13719d09ca88dcfd40cbf31fd0be63518ea1a643fe070b4827d353e09533a5b0b9fd4553d64d - languageName: node - linkType: hard - "strip-bom@npm:^3.0.0": version: 3.0.0 resolution: "strip-bom@npm:3.0.0" @@ -12681,24 +12321,6 @@ __metadata: languageName: node linkType: hard -"sucrase@npm:^3.27.0": - version: 3.35.0 - resolution: "sucrase@npm:3.35.0" - dependencies: - "@jridgewell/gen-mapping": ^0.3.2 - commander: ^4.0.0 - glob: ^10.3.10 - lines-and-columns: ^1.1.6 - mz: ^2.7.0 - pirates: ^4.0.1 - ts-interface-checker: ^0.1.9 - bin: - sucrase: bin/sucrase - sucrase-node: bin/sucrase-node - checksum: 9fc5792a9ab8a14dcf9c47dcb704431d35c1cdff1d17d55d382a31c2e8e3063870ad32ce120a80915498486246d612e30cda44f1624d9d9a10423e1a43487ad1 - languageName: node - linkType: hard - "supports-color@npm:8.1.1, supports-color@npm:^8.0.0": version: 8.1.1 resolution: "supports-color@npm:8.1.1" @@ -12708,13 +12330,6 @@ __metadata: languageName: node linkType: hard -"supports-color@npm:^2.0.0": - version: 2.0.0 - resolution: "supports-color@npm:2.0.0" - checksum: 602538c5812b9006404370b5a4b885d3e2a1f6567d314f8b4a41974ffe7d08e525bf92ae0f9c7030e3b4c78e4e34ace55d6a67a74f1571bc205959f5972f88f0 - languageName: node - linkType: hard - "supports-color@npm:^5.3.0": version: 5.5.0 resolution: "supports-color@npm:5.5.0" @@ -12819,7 +12434,7 @@ __metadata: languageName: node linkType: hard -"terser@npm:^5.17.4, terser@npm:^5.26.0": +"terser@npm:^5.26.0": version: 5.26.0 resolution: "terser@npm:5.26.0" dependencies: @@ -13020,13 +12635,6 @@ __metadata: languageName: node linkType: hard -"ts-interface-checker@npm:^0.1.9": - version: 0.1.13 - resolution: "ts-interface-checker@npm:0.1.13" - checksum: 20c29189c2dd6067a8775e07823ddf8d59a33e2ffc47a1bd59a5cb28bb0121a2969a816d5e77eda2ed85b18171aa5d1c4005a6b88ae8499ec7cc49f78571cb5e - languageName: node - linkType: hard - "ts-jest@npm:^28.0.5": version: 28.0.7 resolution: "ts-jest@npm:28.0.7" @@ -13685,17 +13293,6 @@ __metadata: languageName: node linkType: hard -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0": - version: 7.0.0 - resolution: "wrap-ansi@npm:7.0.0" - dependencies: - ansi-styles: ^4.0.0 - string-width: ^4.1.0 - strip-ansi: ^6.0.0 - checksum: a790b846fd4505de962ba728a21aaeda189b8ee1c7568ca5e817d85930e06ef8d1689d49dbf0e881e8ef84436af3a88bc49115c2e2788d841ff1b8b5b51a608b - languageName: node - linkType: hard - "wrap-ansi@npm:^6.2.0": version: 6.2.0 resolution: "wrap-ansi@npm:6.2.0" @@ -13707,14 +13304,14 @@ __metadata: languageName: node linkType: hard -"wrap-ansi@npm:^8.1.0": - version: 8.1.0 - resolution: "wrap-ansi@npm:8.1.0" +"wrap-ansi@npm:^7.0.0": + version: 7.0.0 + resolution: "wrap-ansi@npm:7.0.0" dependencies: - ansi-styles: ^6.1.0 - string-width: ^5.0.1 - strip-ansi: ^7.0.1 - checksum: 371733296dc2d616900ce15a0049dca0ef67597d6394c57347ba334393599e800bab03c41d4d45221b6bc967b8c453ec3ae4749eff3894202d16800fdfe0e238 + ansi-styles: ^4.0.0 + string-width: ^4.1.0 + strip-ansi: ^6.0.0 + checksum: a790b846fd4505de962ba728a21aaeda189b8ee1c7568ca5e817d85930e06ef8d1689d49dbf0e881e8ef84436af3a88bc49115c2e2788d841ff1b8b5b51a608b languageName: node linkType: hard