From fe1973edf59066a0a1ba1b74e8d9ad068d3bc46c Mon Sep 17 00:00:00 2001 From: Lev Chelyadinov Date: Sat, 6 Jul 2024 19:47:08 +0200 Subject: [PATCH] Redesign the reporter to include links to rules, locations, autofixes --- .changeset/two-houses-build.md | 6 + packages/pretty-reporter/README.md | 1 + packages/pretty-reporter/example/index.ts | 57 +++ packages/pretty-reporter/package.json | 7 +- packages/pretty-reporter/src/example.ts | 25 - .../src/format-single-diagnostic.ts | 37 ++ packages/pretty-reporter/src/index.ts | 42 +- packages/pretty-reporter/src/pluralization.ts | 10 + packages/pretty-reporter/src/types.ts | 1 + packages/pretty-reporter/tsconfig.json | 2 +- packages/steiger-plugin-fsd/package.json | 2 +- packages/steiger/cjs-shim.ts | 9 + packages/steiger/package.json | 2 +- packages/steiger/src/app.ts | 6 +- packages/steiger/src/cli.ts | 4 +- packages/steiger/tsconfig.json | 2 +- packages/steiger/tsup.config.ts | 1 + packages/types/package.json | 2 +- pnpm-lock.yaml | 444 +++++++++++++++--- 19 files changed, 528 insertions(+), 132 deletions(-) create mode 100644 .changeset/two-houses-build.md create mode 100644 packages/pretty-reporter/README.md create mode 100644 packages/pretty-reporter/example/index.ts delete mode 100644 packages/pretty-reporter/src/example.ts create mode 100644 packages/pretty-reporter/src/format-single-diagnostic.ts create mode 100644 packages/pretty-reporter/src/pluralization.ts create mode 100644 packages/steiger/cjs-shim.ts diff --git a/.changeset/two-houses-build.md b/.changeset/two-houses-build.md new file mode 100644 index 0000000..77380a8 --- /dev/null +++ b/.changeset/two-houses-build.md @@ -0,0 +1,6 @@ +--- +'@steiger/pretty-reporter': minor +'steiger': minor +--- + +Redesign the diagnostic reporter to include links to rules, locations, and auto-fix information diff --git a/packages/pretty-reporter/README.md b/packages/pretty-reporter/README.md new file mode 100644 index 0000000..963867c --- /dev/null +++ b/packages/pretty-reporter/README.md @@ -0,0 +1 @@ +Test it with `pnpm run --silent example`. Adjust `example/index.ts` accordingly. diff --git a/packages/pretty-reporter/example/index.ts b/packages/pretty-reporter/example/index.ts new file mode 100644 index 0000000..2a5aec6 --- /dev/null +++ b/packages/pretty-reporter/example/index.ts @@ -0,0 +1,57 @@ +import { reportPretty } from '../src/index.js' + +function getRuleDescriptionUrl(ruleName: string) { + return new URL(`https://github.com/feature-sliced/steiger/tree/master/packages/steiger-plugin-fsd/src/${ruleName}`) +} + +reportPretty( + [ + { + message: 'Inconsistent pluralization of slice names. Prefer all plural names', + ruleName: 'inconsistent-naming', + fixes: [ + { + type: 'rename', + path: '/home/user/project/src/entities/user', + newName: 'users', + }, + ], + location: { path: '/home/user/project/src/entities' }, + getRuleDescriptionUrl, + }, + { + message: 'This slice has no references. Consider removing it.', + ruleName: 'insignificant-slice', + location: { path: '/home/user/project/src/entities/users' }, + getRuleDescriptionUrl, + }, + { + message: 'This slice has no references. Consider removing it.', + ruleName: 'insignificant-slice', + location: { path: '/home/user/project/src/entities/user' }, + getRuleDescriptionUrl, + }, + { + message: + 'Having a folder with the name "api" inside a segment could be confusing because that name is commonly used for segments. Consider renaming it.', + ruleName: 'no-reserved-folder-names', + location: { path: '/home/user/project/src/entities/user/ui/api' }, + getRuleDescriptionUrl, + }, + { + message: 'This slice has no segments. Consider dividing the code inside into segments.', + ruleName: 'no-segmentless-slices', + location: { path: '/home/user/project/src/pages/home' }, + getRuleDescriptionUrl, + }, + { + message: 'Layer "processes" is deprecated, avoid using it', + ruleName: 'no-processes', + location: { path: '/home/user/project/src/processes' }, + getRuleDescriptionUrl, + }, + ], + '/home/user/project', +) + +// reportPretty([], '/home/user/project') diff --git a/packages/pretty-reporter/package.json b/packages/pretty-reporter/package.json index 45cb454..51ccff9 100644 --- a/packages/pretty-reporter/package.json +++ b/packages/pretty-reporter/package.json @@ -4,6 +4,7 @@ "description": "A reporter that can print Steiger's diagnostics nice and pretty", "version": "0.0.0", "scripts": { + "example": "tsx example/index.ts", "lint": "eslint .", "format": "prettier --write . --cache", "check-formatting": "prettier --check . --cache", @@ -34,10 +35,12 @@ "@types/node": "^20.14.2", "eslint": "^9.4.0", "prettier": "^3.2.5", - "typescript": "^5.4.5" + "tsx": "^4.16.2", + "typescript": "^5.5.3" }, "dependencies": { "chalk": "^5.3.0", - "figures": "^6.1.0" + "figures": "^6.1.0", + "terminal-link": "^3.0.0" } } diff --git a/packages/pretty-reporter/src/example.ts b/packages/pretty-reporter/src/example.ts deleted file mode 100644 index 8805d2c..0000000 --- a/packages/pretty-reporter/src/example.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { reportPretty } from './index.js' - -reportPretty([ - { message: 'Folder name "lib" in "shared/ui" is reserved for segment names', ruleName: 'no-reserved-folder-names' }, - { - message: - 'Layer "features" has 23 ungrouped slices, which is above the recommended threshold of 20. Consider grouping them or moving the code inside to the layer where it\'s used.', - ruleName: 'excessive-slicing', - }, - { - ruleName: 'inconsistent-naming', - message: 'Inconsistent pluralization on layer "entities". Prefer all singular names', - fixes: [ - { - type: 'rename', - path: '/entities/comments', - newName: 'comment', - }, - ], - }, - { message: 'Layer "shared" should not have an index file', ruleName: 'no-layer-public-api' }, - { message: 'Layer "pages" should not have an index file', ruleName: 'no-layer-public-api' }, -]) - -// reportPretty([]) diff --git a/packages/pretty-reporter/src/format-single-diagnostic.ts b/packages/pretty-reporter/src/format-single-diagnostic.ts new file mode 100644 index 0000000..510dbaa --- /dev/null +++ b/packages/pretty-reporter/src/format-single-diagnostic.ts @@ -0,0 +1,37 @@ +import { relative } from 'node:path' +import figures from 'figures' +import terminalLink from 'terminal-link' +import chalk from 'chalk' + +import type { AugmentedDiagnostic } from './types.js' + +export function formatSingleDiagnostic(d: AugmentedDiagnostic, cwd: string): string { + const x = chalk.red(figures.cross) + const s = chalk.reset(figures.lineDownRight) + const bar = chalk.reset(figures.lineVertical) + const e = chalk.reset(figures.lineUpRight) + const message = chalk.reset(d.message) + const autofixable = d.fixes !== undefined && d.fixes.length > 0 ? chalk.green(`${figures.tick} Auto-fixable`) : null + const location = chalk.gray(formatLocation(d.location, cwd)) + const ruleName = chalk.blue(terminalLink(d.ruleName, d.getRuleDescriptionUrl(d.ruleName).toString())) + + return ` +${s} ${location} +${x} ${message} +${autofixable ? autofixable + `\n${bar}` : bar} +${e} ${ruleName} +`.trim() +} + +function formatLocation(location: AugmentedDiagnostic['location'], cwd: string) { + let path = relative(cwd, location.path) + if (location.line !== undefined) { + path += `:${location.line}` + + if (location.column !== undefined) { + path += `:${location.column}` + } + } + + return path +} diff --git a/packages/pretty-reporter/src/index.ts b/packages/pretty-reporter/src/index.ts index f51cb28..8ede1b6 100644 --- a/packages/pretty-reporter/src/index.ts +++ b/packages/pretty-reporter/src/index.ts @@ -1,39 +1,31 @@ import chalk from 'chalk' import figures from 'figures' + import type { AugmentedDiagnostic } from './types.js' +import { formatSingleDiagnostic } from './format-single-diagnostic.js' +import { s } from './pluralization.js' -export function formatPretty(diagnostics: Array) { +export function formatPretty(diagnostics: Array, cwd: string) { if (diagnostics.length === 0) { return chalk.green(`${figures.tick} No problems found!`) } - const footer = chalk.red.bold(`Found ${diagnostics.length} problem${diagnostics.length > 1 ? 's' : ''}`) + let footer = chalk.red.bold(`Found ${diagnostics.length} problem${s(diagnostics.length)}`) - // TODO: enable when we have auto-fixes - // const autofixable = diagnostics.filter((d) => (d.fixes?.length ?? 0) > 0) - // if (autofixable.length === diagnostics.length) { - // footer += ' (all can be fixed automatically)' - // } else if (autofixable.length > 0) { - // footer += ` (${autofixable.length} can be fixed automatically)` - // } else { - // footer += ' (none can be fixed automatically)' - // } + const autofixable = diagnostics.filter((d) => (d.fixes?.length ?? 0) > 0) + if (autofixable.length === diagnostics.length) { + footer += ` (all can be fixed automatically with ${chalk.green.bold('--fix')})` + } else if (autofixable.length > 0) { + footer += ` (${autofixable.length} can be fixed automatically with ${chalk.green.bold('--fix')})` + } else { + footer += ' (none can be fixed automatically)' + } return ( '\n' + - diagnostics - .map((d) => { - const message = ` ${chalk.red(figures.cross)} ${chalk.reset(d.message)} ${chalk.gray(`// ${d.ruleName}`)}` - - // TODO: enable when we have auto-fixes - // if ((d.fixes?.length ?? 0) > 0) { - // message += chalk.green(`\n (${figures.tick} auto-fix available)`) - // } - - return message - }) - .join('\n\n') + + diagnostics.map((d) => formatSingleDiagnostic(d, cwd)).join('\n\n') + '\n\n' + + // Due to formatting characters, it won't be exactly the size of the footer, that is okay chalk.gray(figures.line.repeat(footer.length)) + '\n ' + footer + @@ -41,8 +33,8 @@ export function formatPretty(diagnostics: Array) { ) } -export function reportPretty(diagnostics: Array) { - console.error(formatPretty(diagnostics)) +export function reportPretty(diagnostics: Array, cwd: string) { + console.error(formatPretty(diagnostics, cwd)) } export type { AugmentedDiagnostic } diff --git a/packages/pretty-reporter/src/pluralization.ts b/packages/pretty-reporter/src/pluralization.ts new file mode 100644 index 0000000..f28d026 --- /dev/null +++ b/packages/pretty-reporter/src/pluralization.ts @@ -0,0 +1,10 @@ +/** + * Returns 's' if the amount is not 1. + * + * @example + * `apple${s(1)}` // 'apple' + * `apple${s(2)}` // 'apples' + */ +export function s(amount: number) { + return amount === 1 ? '' : 's' +} diff --git a/packages/pretty-reporter/src/types.ts b/packages/pretty-reporter/src/types.ts index b444945..0b84142 100644 --- a/packages/pretty-reporter/src/types.ts +++ b/packages/pretty-reporter/src/types.ts @@ -2,4 +2,5 @@ import type { Diagnostic } from '@steiger/types' export interface AugmentedDiagnostic extends Diagnostic { ruleName: string + getRuleDescriptionUrl(ruleName: string): URL } diff --git a/packages/pretty-reporter/tsconfig.json b/packages/pretty-reporter/tsconfig.json index df50006..c4a587d 100644 --- a/packages/pretty-reporter/tsconfig.json +++ b/packages/pretty-reporter/tsconfig.json @@ -1,6 +1,6 @@ { "extends": "@steiger/tsconfig/base.json", - "include": ["./src", "./reset.d.ts"], + "include": ["./src", "./reset.d.ts", "example/index.ts"], "compilerOptions": { "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json" } diff --git a/packages/steiger-plugin-fsd/package.json b/packages/steiger-plugin-fsd/package.json index 0ef113f..243405e 100644 --- a/packages/steiger-plugin-fsd/package.json +++ b/packages/steiger-plugin-fsd/package.json @@ -44,7 +44,7 @@ "@types/lodash-es": "^4.17.12", "@types/pluralize": "^0.0.33", "tsup": "^8.0.2", - "typescript": "^5.4.5", + "typescript": "^5.5.3", "vitest": "^1.6.0" } } diff --git a/packages/steiger/cjs-shim.ts b/packages/steiger/cjs-shim.ts new file mode 100644 index 0000000..e227e5c --- /dev/null +++ b/packages/steiger/cjs-shim.ts @@ -0,0 +1,9 @@ +// Source: https://github.com/evanw/esbuild/issues/1921#issuecomment-1898197331 + +import { createRequire } from 'node:module' +import path from 'node:path' +import url from 'node:url' + +globalThis.require = createRequire(import.meta.url) +globalThis.__filename = url.fileURLToPath(import.meta.url) +globalThis.__dirname = path.dirname(__filename) diff --git a/packages/steiger/package.json b/packages/steiger/package.json index 0d7dec8..ba7fdb6 100644 --- a/packages/steiger/package.json +++ b/packages/steiger/package.json @@ -60,7 +60,7 @@ "@total-typescript/ts-reset": "^0.5.1", "@types/yargs": "^17.0.32", "tsup": "^8.0.2", - "typescript": "^5.4.5", + "typescript": "^5.5.3", "vitest": "^1.6.0" } } diff --git a/packages/steiger/src/app.ts b/packages/steiger/src/app.ts index 075fe2d..b07ad0f 100644 --- a/packages/steiger/src/app.ts +++ b/packages/steiger/src/app.ts @@ -8,6 +8,10 @@ import { scan, createWatcher } from './features/transfer-fs-to-vfs' import { defer } from './shared/defer' import { $config, type Config } from './models/config' +function getRuleDescriptionUrl(ruleName: string) { + return new URL(`https://github.com/feature-sliced/steiger/tree/master/packages/steiger-plugin-fsd/src/${ruleName}`) +} + const enabledRules = $config.map((config) => { const ruleConfigs = config?.rules @@ -24,7 +28,7 @@ async function runRules({ vfs, rules }: { vfs: Folder; rules: Array }) { const ruleResults = await Promise.all( rules.map((rule) => Promise.resolve(rule.check(vfs, { sourceFileExtension: 'js' })).then(({ diagnostics }) => - diagnostics.map((d) => ({ ...d, ruleName: rule.name }) as AugmentedDiagnostic), + diagnostics.map((d) => ({ ...d, ruleName: rule.name, getRuleDescriptionUrl })), ), ), ) diff --git a/packages/steiger/src/cli.ts b/packages/steiger/src/cli.ts index 3011cf8..7f15e2e 100755 --- a/packages/steiger/src/cli.ts +++ b/packages/steiger/src/cli.ts @@ -63,7 +63,7 @@ if (consoleArgs.watch) { const [diagnosticsChanged, stopWatching] = await linter.watch(resolve(consoleArgs._[0])) const unsubscribe = diagnosticsChanged.watch((state) => { console.clear() - reportPretty(state) + reportPretty(state, process.cwd()) if (consoleArgs.fix) { applyAutofixes(state) } @@ -75,7 +75,7 @@ if (consoleArgs.watch) { } else { const diagnostics = await linter.run(resolve(consoleArgs._[0])) - reportPretty(diagnostics) + reportPretty(diagnostics, process.cwd()) if (consoleArgs.fix) { applyAutofixes(diagnostics) } diff --git a/packages/steiger/tsconfig.json b/packages/steiger/tsconfig.json index 5ae621c..b8a0a29 100644 --- a/packages/steiger/tsconfig.json +++ b/packages/steiger/tsconfig.json @@ -6,5 +6,5 @@ "types": ["vitest/importMeta"], "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json" }, - "include": ["./src", "./reset.d.ts", "./tsup.config.ts"] + "include": ["./src", "./reset.d.ts", "./tsup.config.ts", "./cjs-shim.ts"] } diff --git a/packages/steiger/tsup.config.ts b/packages/steiger/tsup.config.ts index d8b736e..2ded5b4 100644 --- a/packages/steiger/tsup.config.ts +++ b/packages/steiger/tsup.config.ts @@ -10,6 +10,7 @@ export default defineConfig({ }, treeshake: true, clean: true, + inject: ['./cjs-shim.ts'], esbuildOptions(options) { options.define = { 'import.meta.vitest': 'undefined' } }, diff --git a/packages/types/package.json b/packages/types/package.json index fa56a07..4516228 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -27,6 +27,6 @@ ], "devDependencies": { "@steiger/tsconfig": "workspace:*", - "typescript": "^5.4.5" + "typescript": "^5.5.3" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8c63e52..1c010b2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -44,6 +44,9 @@ importers: figures: specifier: ^6.1.0 version: 6.1.0 + terminal-link: + specifier: ^3.0.0 + version: 3.0.0 devDependencies: '@steiger/eslint-config': specifier: workspace:* @@ -66,9 +69,12 @@ importers: prettier: specifier: ^3.2.5 version: 3.3.0 + tsx: + specifier: ^4.16.2 + version: 4.16.2 typescript: - specifier: ^5.4.5 - version: 5.4.5 + specifier: ^5.5.3 + version: 5.5.3 packages/steiger: dependencies: @@ -83,7 +89,7 @@ importers: version: 3.6.0 cosmiconfig: specifier: ^9.0.0 - version: 9.0.0(typescript@5.4.5) + version: 9.0.0(typescript@5.5.3) effector: specifier: ^23.2.1 version: 23.2.2 @@ -129,10 +135,10 @@ importers: version: 17.0.32 tsup: specifier: ^8.0.2 - version: 8.1.0(postcss@8.4.38)(typescript@5.4.5) + version: 8.1.0(postcss@8.4.38)(typescript@5.5.3) typescript: - specifier: ^5.4.5 - version: 5.4.5 + specifier: ^5.5.3 + version: 5.5.3 vitest: specifier: ^1.6.0 version: 1.6.0(@types/node@20.14.2) @@ -153,7 +159,7 @@ importers: version: 12.1.1 tsconfck: specifier: ^3.0.3 - version: 3.1.0(typescript@5.4.5) + version: 3.1.0(typescript@5.5.3) devDependencies: '@steiger/eslint-config': specifier: workspace:* @@ -175,10 +181,10 @@ importers: version: 0.0.33 tsup: specifier: ^8.0.2 - version: 8.1.0(postcss@8.4.38)(typescript@5.4.5) + version: 8.1.0(postcss@8.4.38)(typescript@5.5.3) typescript: - specifier: ^5.4.5 - version: 5.4.5 + specifier: ^5.5.3 + version: 5.5.3 vitest: specifier: ^1.6.0 version: 1.6.0(@types/node@20.14.2) @@ -189,8 +195,8 @@ importers: specifier: workspace:* version: link:../../tooling/tsconfig typescript: - specifier: ^5.4.5 - version: 5.4.5 + specifier: ^5.5.3 + version: 5.5.3 tooling/eslint-config: dependencies: @@ -205,7 +211,7 @@ importers: version: 15.4.0 typescript-eslint: specifier: ^8.0.0-alpha - version: 8.0.0-alpha.28(eslint@9.4.0)(typescript@5.4.5) + version: 8.0.0-alpha.28(eslint@9.4.0)(typescript@5.5.3) devDependencies: eslint-config-prettier: specifier: ^9.1.0 @@ -319,6 +325,12 @@ packages: cpu: [ppc64] os: [aix] + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + '@esbuild/android-arm64@0.20.2': resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} engines: {node: '>=12'} @@ -331,6 +343,12 @@ packages: cpu: [arm64] os: [android] + '@esbuild/android-arm64@0.21.5': + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm@0.20.2': resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} engines: {node: '>=12'} @@ -343,6 +361,12 @@ packages: cpu: [arm] os: [android] + '@esbuild/android-arm@0.21.5': + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + '@esbuild/android-x64@0.20.2': resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} engines: {node: '>=12'} @@ -355,6 +379,12 @@ packages: cpu: [x64] os: [android] + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + '@esbuild/darwin-arm64@0.20.2': resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} engines: {node: '>=12'} @@ -367,6 +397,12 @@ packages: cpu: [arm64] os: [darwin] + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-x64@0.20.2': resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} engines: {node: '>=12'} @@ -379,6 +415,12 @@ packages: cpu: [x64] os: [darwin] + '@esbuild/darwin-x64@0.21.5': + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + '@esbuild/freebsd-arm64@0.20.2': resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} engines: {node: '>=12'} @@ -391,6 +433,12 @@ packages: cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-x64@0.20.2': resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} engines: {node: '>=12'} @@ -403,6 +451,12 @@ packages: cpu: [x64] os: [freebsd] + '@esbuild/freebsd-x64@0.21.5': + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + '@esbuild/linux-arm64@0.20.2': resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} engines: {node: '>=12'} @@ -415,6 +469,12 @@ packages: cpu: [arm64] os: [linux] + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm@0.20.2': resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} engines: {node: '>=12'} @@ -427,6 +487,12 @@ packages: cpu: [arm] os: [linux] + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + '@esbuild/linux-ia32@0.20.2': resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} engines: {node: '>=12'} @@ -439,6 +505,12 @@ packages: cpu: [ia32] os: [linux] + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-loong64@0.20.2': resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} engines: {node: '>=12'} @@ -451,6 +523,12 @@ packages: cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.21.5': + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-mips64el@0.20.2': resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} engines: {node: '>=12'} @@ -463,6 +541,12 @@ packages: cpu: [mips64el] os: [linux] + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-ppc64@0.20.2': resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} engines: {node: '>=12'} @@ -475,6 +559,12 @@ packages: cpu: [ppc64] os: [linux] + '@esbuild/linux-ppc64@0.21.5': + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-riscv64@0.20.2': resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} engines: {node: '>=12'} @@ -487,6 +577,12 @@ packages: cpu: [riscv64] os: [linux] + '@esbuild/linux-riscv64@0.21.5': + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-s390x@0.20.2': resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} engines: {node: '>=12'} @@ -499,6 +595,12 @@ packages: cpu: [s390x] os: [linux] + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-x64@0.20.2': resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} engines: {node: '>=12'} @@ -511,6 +613,12 @@ packages: cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + '@esbuild/netbsd-x64@0.20.2': resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} engines: {node: '>=12'} @@ -523,6 +631,12 @@ packages: cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + '@esbuild/openbsd-x64@0.20.2': resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} engines: {node: '>=12'} @@ -535,6 +649,12 @@ packages: cpu: [x64] os: [openbsd] + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + '@esbuild/sunos-x64@0.20.2': resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} engines: {node: '>=12'} @@ -547,6 +667,12 @@ packages: cpu: [x64] os: [sunos] + '@esbuild/sunos-x64@0.21.5': + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + '@esbuild/win32-arm64@0.20.2': resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} engines: {node: '>=12'} @@ -559,6 +685,12 @@ packages: cpu: [arm64] os: [win32] + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-ia32@0.20.2': resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} engines: {node: '>=12'} @@ -571,6 +703,12 @@ packages: cpu: [ia32] os: [win32] + '@esbuild/win32-ia32@0.21.5': + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-x64@0.20.2': resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} engines: {node: '>=12'} @@ -583,6 +721,12 @@ packages: cpu: [x64] os: [win32] + '@esbuild/win32-x64@0.21.5': + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + '@eslint-community/eslint-utils@4.4.0': resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -871,16 +1015,16 @@ packages: typescript: optional: true - '@typescript-eslint/types@7.12.0': - resolution: {integrity: sha512-o+0Te6eWp2ppKY3mLCU+YA9pVJxhUJE15FV7kxuD9jgwIAa+w/ycGJBMrYDTpVGUM/tgpa9SeMOugSabWFq7bg==} + '@typescript-eslint/types@7.15.0': + resolution: {integrity: sha512-aV1+B1+ySXbQH0pLK0rx66I3IkiZNidYobyfn0WFsdGhSXw+P3YOqeTq5GED458SfB24tg+ux3S+9g118hjlTw==} engines: {node: ^18.18.0 || >=20.0.0} '@typescript-eslint/types@8.0.0-alpha.28': resolution: {integrity: sha512-HYg+e0EWVShx0FEX0MAjDinYLmd+wD6nGMpbaddB1iACYwqaJFbf7vw0l+hdLTJvQC6UY8ndRkaEsL68QEoIZQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@7.12.0': - resolution: {integrity: sha512-5bwqLsWBULv1h6pn7cMW5dXX/Y2amRqLaKqsASVwbBHMZSnHqE/HN4vT4fE0aFsiwxYvr98kqOWh1a8ZKXalCQ==} + '@typescript-eslint/typescript-estree@7.15.0': + resolution: {integrity: sha512-gjyB/rHAopL/XxfmYThQbXbzRMGhZzGw6KpcMbfe8Q3nNQKStpxnUKeXb0KiN/fFDR42Z43szs6rY7eHk0zdGQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: typescript: '*' @@ -903,8 +1047,8 @@ packages: peerDependencies: eslint: ^8.57.0 || ^9.0.0 - '@typescript-eslint/visitor-keys@7.12.0': - resolution: {integrity: sha512-uZk7DevrQLL3vSnfFl5bj4sL75qC9D6EdjemIdbtkuUmIheWpuiiylSY01JxJE7+zGrOWDZrp1WxOuDntvKrHQ==} + '@typescript-eslint/visitor-keys@7.15.0': + resolution: {integrity: sha512-Hqgy/ETgpt2L5xueA/zHHIl4fJI2O4XUE9l4+OIfbJIRSnTJb/QscncdqqZzofQegIJugRIF57OJea1khw2SDw==} engines: {node: ^18.18.0 || >=20.0.0} '@typescript-eslint/visitor-keys@8.0.0-alpha.28': @@ -962,6 +1106,10 @@ packages: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} + ansi-escapes@5.0.0: + resolution: {integrity: sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==} + engines: {node: '>=12'} + ansi-escapes@6.2.1: resolution: {integrity: sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==} engines: {node: '>=14.16'} @@ -1388,6 +1536,11 @@ packages: engines: {node: '>=12'} hasBin: true + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} + hasBin: true + escalade@3.1.2: resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} @@ -1588,6 +1741,9 @@ packages: resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} engines: {node: '>= 0.4'} + get-tsconfig@4.7.5: + resolution: {integrity: sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==} + glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -2394,6 +2550,9 @@ packages: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + resolve@1.22.8: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true @@ -2624,6 +2783,10 @@ packages: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} + supports-hyperlinks@2.3.0: + resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} + engines: {node: '>=8'} + supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} @@ -2632,6 +2795,10 @@ packages: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} engines: {node: '>=8'} + terminal-link@3.0.0: + resolution: {integrity: sha512-flFL3m4wuixmf6IfhFJd1YPiLiMuxEc8uHRM1buzIeZPm22Au2pDqBJQgdo7n1WfPU1ONFGv7YDwpFBmHGF6lg==} + engines: {node: '>=12'} + text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} @@ -2714,6 +2881,11 @@ packages: typescript: optional: true + tsx@4.16.2: + resolution: {integrity: sha512-C1uWweJDgdtX2x600HjaFaucXTilT7tgUZHbOE4+ypskZ1OP8CRCSDkCxG6Vya9EwaFIVagWwpaVAn5wzypaqQ==} + engines: {node: '>=18.0.0'} + hasBin: true + tty-table@4.2.3: resolution: {integrity: sha512-Fs15mu0vGzCrj8fmJNP7Ynxt5J7praPXqFN0leZeZBXJwkMxv9cb2D454k1ltrtUSJbZ4yH4e0CynsHLxmUfFA==} engines: {node: '>=8.0.0'} @@ -2773,6 +2945,10 @@ packages: resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} engines: {node: '>=8'} + type-fest@1.4.0: + resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} + engines: {node: '>=10'} + typed-array-buffer@1.0.2: resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} engines: {node: '>= 0.4'} @@ -2798,8 +2974,8 @@ packages: typescript: optional: true - typescript@5.4.5: - resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} + typescript@5.5.3: + resolution: {integrity: sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==} engines: {node: '>=14.17'} hasBin: true @@ -3192,138 +3368,207 @@ snapshots: '@esbuild/aix-ppc64@0.21.4': optional: true + '@esbuild/aix-ppc64@0.21.5': + optional: true + '@esbuild/android-arm64@0.20.2': optional: true '@esbuild/android-arm64@0.21.4': optional: true + '@esbuild/android-arm64@0.21.5': + optional: true + '@esbuild/android-arm@0.20.2': optional: true '@esbuild/android-arm@0.21.4': optional: true + '@esbuild/android-arm@0.21.5': + optional: true + '@esbuild/android-x64@0.20.2': optional: true '@esbuild/android-x64@0.21.4': optional: true + '@esbuild/android-x64@0.21.5': + optional: true + '@esbuild/darwin-arm64@0.20.2': optional: true '@esbuild/darwin-arm64@0.21.4': optional: true + '@esbuild/darwin-arm64@0.21.5': + optional: true + '@esbuild/darwin-x64@0.20.2': optional: true '@esbuild/darwin-x64@0.21.4': optional: true + '@esbuild/darwin-x64@0.21.5': + optional: true + '@esbuild/freebsd-arm64@0.20.2': optional: true '@esbuild/freebsd-arm64@0.21.4': optional: true + '@esbuild/freebsd-arm64@0.21.5': + optional: true + '@esbuild/freebsd-x64@0.20.2': optional: true '@esbuild/freebsd-x64@0.21.4': optional: true + '@esbuild/freebsd-x64@0.21.5': + optional: true + '@esbuild/linux-arm64@0.20.2': optional: true '@esbuild/linux-arm64@0.21.4': optional: true + '@esbuild/linux-arm64@0.21.5': + optional: true + '@esbuild/linux-arm@0.20.2': optional: true '@esbuild/linux-arm@0.21.4': optional: true + '@esbuild/linux-arm@0.21.5': + optional: true + '@esbuild/linux-ia32@0.20.2': optional: true '@esbuild/linux-ia32@0.21.4': optional: true + '@esbuild/linux-ia32@0.21.5': + optional: true + '@esbuild/linux-loong64@0.20.2': optional: true '@esbuild/linux-loong64@0.21.4': optional: true + '@esbuild/linux-loong64@0.21.5': + optional: true + '@esbuild/linux-mips64el@0.20.2': optional: true '@esbuild/linux-mips64el@0.21.4': optional: true + '@esbuild/linux-mips64el@0.21.5': + optional: true + '@esbuild/linux-ppc64@0.20.2': optional: true '@esbuild/linux-ppc64@0.21.4': optional: true + '@esbuild/linux-ppc64@0.21.5': + optional: true + '@esbuild/linux-riscv64@0.20.2': optional: true '@esbuild/linux-riscv64@0.21.4': optional: true + '@esbuild/linux-riscv64@0.21.5': + optional: true + '@esbuild/linux-s390x@0.20.2': optional: true '@esbuild/linux-s390x@0.21.4': optional: true + '@esbuild/linux-s390x@0.21.5': + optional: true + '@esbuild/linux-x64@0.20.2': optional: true '@esbuild/linux-x64@0.21.4': optional: true + '@esbuild/linux-x64@0.21.5': + optional: true + '@esbuild/netbsd-x64@0.20.2': optional: true '@esbuild/netbsd-x64@0.21.4': optional: true + '@esbuild/netbsd-x64@0.21.5': + optional: true + '@esbuild/openbsd-x64@0.20.2': optional: true '@esbuild/openbsd-x64@0.21.4': optional: true + '@esbuild/openbsd-x64@0.21.5': + optional: true + '@esbuild/sunos-x64@0.20.2': optional: true '@esbuild/sunos-x64@0.21.4': optional: true + '@esbuild/sunos-x64@0.21.5': + optional: true + '@esbuild/win32-arm64@0.20.2': optional: true '@esbuild/win32-arm64@0.21.4': optional: true + '@esbuild/win32-arm64@0.21.5': + optional: true + '@esbuild/win32-ia32@0.20.2': optional: true '@esbuild/win32-ia32@0.21.4': optional: true + '@esbuild/win32-ia32@0.21.5': + optional: true + '@esbuild/win32-x64@0.20.2': optional: true '@esbuild/win32-x64@0.21.4': optional: true + '@esbuild/win32-x64@0.21.5': + optional: true + '@eslint-community/eslint-utils@4.4.0(eslint@9.4.0)': dependencies: eslint: 9.4.0 @@ -3359,7 +3604,7 @@ snapshots: '@feature-sliced/filesystem@2.2.5': dependencies: - typescript: 5.4.5 + typescript: 5.5.3 '@humanwhocodes/module-importer@1.0.1': {} @@ -3566,34 +3811,34 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@8.0.0-alpha.28(@typescript-eslint/parser@8.0.0-alpha.28(eslint@9.4.0)(typescript@5.4.5))(eslint@9.4.0)(typescript@5.4.5)': + '@typescript-eslint/eslint-plugin@8.0.0-alpha.28(@typescript-eslint/parser@8.0.0-alpha.28(eslint@9.4.0)(typescript@5.5.3))(eslint@9.4.0)(typescript@5.5.3)': dependencies: '@eslint-community/regexpp': 4.10.1 - '@typescript-eslint/parser': 8.0.0-alpha.28(eslint@9.4.0)(typescript@5.4.5) + '@typescript-eslint/parser': 8.0.0-alpha.28(eslint@9.4.0)(typescript@5.5.3) '@typescript-eslint/scope-manager': 8.0.0-alpha.28 - '@typescript-eslint/type-utils': 8.0.0-alpha.28(eslint@9.4.0)(typescript@5.4.5) - '@typescript-eslint/utils': 8.0.0-alpha.28(eslint@9.4.0)(typescript@5.4.5) + '@typescript-eslint/type-utils': 8.0.0-alpha.28(eslint@9.4.0)(typescript@5.5.3) + '@typescript-eslint/utils': 8.0.0-alpha.28(eslint@9.4.0)(typescript@5.5.3) '@typescript-eslint/visitor-keys': 8.0.0-alpha.28 eslint: 9.4.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 - ts-api-utils: 1.3.0(typescript@5.4.5) + ts-api-utils: 1.3.0(typescript@5.5.3) optionalDependencies: - typescript: 5.4.5 + typescript: 5.5.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.0.0-alpha.28(eslint@9.4.0)(typescript@5.4.5)': + '@typescript-eslint/parser@8.0.0-alpha.28(eslint@9.4.0)(typescript@5.5.3)': dependencies: '@typescript-eslint/scope-manager': 8.0.0-alpha.28 '@typescript-eslint/types': 8.0.0-alpha.28 - '@typescript-eslint/typescript-estree': 8.0.0-alpha.28(typescript@5.4.5) + '@typescript-eslint/typescript-estree': 8.0.0-alpha.28(typescript@5.5.3) '@typescript-eslint/visitor-keys': 8.0.0-alpha.28 debug: 4.3.5 eslint: 9.4.0 optionalDependencies: - typescript: 5.4.5 + typescript: 5.5.3 transitivePeerDependencies: - supports-color @@ -3602,38 +3847,38 @@ snapshots: '@typescript-eslint/types': 8.0.0-alpha.28 '@typescript-eslint/visitor-keys': 8.0.0-alpha.28 - '@typescript-eslint/type-utils@8.0.0-alpha.28(eslint@9.4.0)(typescript@5.4.5)': + '@typescript-eslint/type-utils@8.0.0-alpha.28(eslint@9.4.0)(typescript@5.5.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.0.0-alpha.28(typescript@5.4.5) - '@typescript-eslint/utils': 8.0.0-alpha.28(eslint@9.4.0)(typescript@5.4.5) + '@typescript-eslint/typescript-estree': 8.0.0-alpha.28(typescript@5.5.3) + '@typescript-eslint/utils': 8.0.0-alpha.28(eslint@9.4.0)(typescript@5.5.3) debug: 4.3.5 - ts-api-utils: 1.3.0(typescript@5.4.5) + ts-api-utils: 1.3.0(typescript@5.5.3) optionalDependencies: - typescript: 5.4.5 + typescript: 5.5.3 transitivePeerDependencies: - eslint - supports-color - '@typescript-eslint/types@7.12.0': {} + '@typescript-eslint/types@7.15.0': {} '@typescript-eslint/types@8.0.0-alpha.28': {} - '@typescript-eslint/typescript-estree@7.12.0(typescript@5.4.5)': + '@typescript-eslint/typescript-estree@7.15.0(typescript@5.5.3)': dependencies: - '@typescript-eslint/types': 7.12.0 - '@typescript-eslint/visitor-keys': 7.12.0 + '@typescript-eslint/types': 7.15.0 + '@typescript-eslint/visitor-keys': 7.15.0 debug: 4.3.5 globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.4 semver: 7.6.2 - ts-api-utils: 1.3.0(typescript@5.4.5) + ts-api-utils: 1.3.0(typescript@5.5.3) optionalDependencies: - typescript: 5.4.5 + typescript: 5.5.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.0.0-alpha.28(typescript@5.4.5)': + '@typescript-eslint/typescript-estree@8.0.0-alpha.28(typescript@5.5.3)': dependencies: '@typescript-eslint/types': 8.0.0-alpha.28 '@typescript-eslint/visitor-keys': 8.0.0-alpha.28 @@ -3642,26 +3887,26 @@ snapshots: is-glob: 4.0.3 minimatch: 9.0.4 semver: 7.6.2 - ts-api-utils: 1.3.0(typescript@5.4.5) + ts-api-utils: 1.3.0(typescript@5.5.3) optionalDependencies: - typescript: 5.4.5 + typescript: 5.5.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.0.0-alpha.28(eslint@9.4.0)(typescript@5.4.5)': + '@typescript-eslint/utils@8.0.0-alpha.28(eslint@9.4.0)(typescript@5.5.3)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.4.0) '@typescript-eslint/scope-manager': 8.0.0-alpha.28 '@typescript-eslint/types': 8.0.0-alpha.28 - '@typescript-eslint/typescript-estree': 8.0.0-alpha.28(typescript@5.4.5) + '@typescript-eslint/typescript-estree': 8.0.0-alpha.28(typescript@5.5.3) eslint: 9.4.0 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/visitor-keys@7.12.0': + '@typescript-eslint/visitor-keys@7.15.0': dependencies: - '@typescript-eslint/types': 7.12.0 + '@typescript-eslint/types': 7.15.0 eslint-visitor-keys: 3.4.3 '@typescript-eslint/visitor-keys@8.0.0-alpha.28': @@ -3747,6 +3992,10 @@ snapshots: ansi-colors@4.1.3: {} + ansi-escapes@5.0.0: + dependencies: + type-fest: 1.4.0 + ansi-escapes@6.2.1: {} ansi-regex@5.0.1: {} @@ -3970,14 +4219,14 @@ snapshots: ini: 1.3.8 proto-list: 1.2.4 - cosmiconfig@9.0.0(typescript@5.4.5): + cosmiconfig@9.0.0(typescript@5.5.3): dependencies: env-paths: 2.2.1 import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 optionalDependencies: - typescript: 5.4.5 + typescript: 5.5.3 cross-spawn@5.1.0: dependencies: @@ -4099,24 +4348,24 @@ snapshots: detective-stylus@5.0.0: {} - detective-typescript@13.0.0(typescript@5.4.5): + detective-typescript@13.0.0(typescript@5.5.3): dependencies: - '@typescript-eslint/typescript-estree': 7.12.0(typescript@5.4.5) + '@typescript-eslint/typescript-estree': 7.15.0(typescript@5.5.3) ast-module-types: 6.0.0 node-source-walk: 7.0.0 - typescript: 5.4.5 + typescript: 5.5.3 transitivePeerDependencies: - supports-color - detective-vue2@2.0.3(typescript@5.4.5): + detective-vue2@2.0.3(typescript@5.5.3): dependencies: '@vue/compiler-sfc': 3.4.27 detective-es6: 5.0.0 detective-sass: 6.0.0 detective-scss: 5.0.0 detective-stylus: 5.0.0 - detective-typescript: 13.0.0(typescript@5.4.5) - typescript: 5.4.5 + detective-typescript: 13.0.0(typescript@5.5.3) + typescript: 5.5.3 transitivePeerDependencies: - supports-color @@ -4276,6 +4525,32 @@ snapshots: '@esbuild/win32-ia32': 0.21.4 '@esbuild/win32-x64': 0.21.4 + esbuild@0.21.5: + optionalDependencies: + '@esbuild/aix-ppc64': 0.21.5 + '@esbuild/android-arm': 0.21.5 + '@esbuild/android-arm64': 0.21.5 + '@esbuild/android-x64': 0.21.5 + '@esbuild/darwin-arm64': 0.21.5 + '@esbuild/darwin-x64': 0.21.5 + '@esbuild/freebsd-arm64': 0.21.5 + '@esbuild/freebsd-x64': 0.21.5 + '@esbuild/linux-arm': 0.21.5 + '@esbuild/linux-arm64': 0.21.5 + '@esbuild/linux-ia32': 0.21.5 + '@esbuild/linux-loong64': 0.21.5 + '@esbuild/linux-mips64el': 0.21.5 + '@esbuild/linux-ppc64': 0.21.5 + '@esbuild/linux-riscv64': 0.21.5 + '@esbuild/linux-s390x': 0.21.5 + '@esbuild/linux-x64': 0.21.5 + '@esbuild/netbsd-x64': 0.21.5 + '@esbuild/openbsd-x64': 0.21.5 + '@esbuild/sunos-x64': 0.21.5 + '@esbuild/win32-arm64': 0.21.5 + '@esbuild/win32-ia32': 0.21.5 + '@esbuild/win32-x64': 0.21.5 + escalade@3.1.2: {} escape-string-regexp@1.0.5: {} @@ -4520,6 +4795,10 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.2.4 + get-tsconfig@4.7.5: + dependencies: + resolve-pkg-maps: 1.0.0 + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 @@ -5163,12 +5442,12 @@ snapshots: detective-sass: 6.0.0 detective-scss: 5.0.0 detective-stylus: 5.0.0 - detective-typescript: 13.0.0(typescript@5.4.5) - detective-vue2: 2.0.3(typescript@5.4.5) + detective-typescript: 13.0.0(typescript@5.5.3) + detective-vue2: 2.0.3(typescript@5.5.3) module-definition: 6.0.0 node-source-walk: 7.0.0 postcss: 8.4.38 - typescript: 5.4.5 + typescript: 5.5.3 transitivePeerDependencies: - supports-color @@ -5272,6 +5551,8 @@ snapshots: resolve-from@5.0.0: {} + resolve-pkg-maps@1.0.0: {} + resolve@1.22.8: dependencies: is-core-module: 2.13.1 @@ -5530,10 +5811,20 @@ snapshots: dependencies: has-flag: 4.0.0 + supports-hyperlinks@2.3.0: + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + supports-preserve-symlinks-flag@1.0.0: {} term-size@2.2.1: {} + terminal-link@3.0.0: + dependencies: + ansi-escapes: 5.0.0 + supports-hyperlinks: 2.3.0 + text-table@0.2.0: {} thenify-all@1.6.0: @@ -5568,17 +5859,17 @@ snapshots: trim-newlines@3.0.1: {} - ts-api-utils@1.3.0(typescript@5.4.5): + ts-api-utils@1.3.0(typescript@5.5.3): dependencies: - typescript: 5.4.5 + typescript: 5.5.3 ts-interface-checker@0.1.13: {} - tsconfck@3.1.0(typescript@5.4.5): + tsconfck@3.1.0(typescript@5.5.3): optionalDependencies: - typescript: 5.4.5 + typescript: 5.5.3 - tsup@8.1.0(postcss@8.4.38)(typescript@5.4.5): + tsup@8.1.0(postcss@8.4.38)(typescript@5.5.3): dependencies: bundle-require: 4.2.1(esbuild@0.21.4) cac: 6.7.14 @@ -5596,11 +5887,18 @@ snapshots: tree-kill: 1.2.2 optionalDependencies: postcss: 8.4.38 - typescript: 5.4.5 + typescript: 5.5.3 transitivePeerDependencies: - supports-color - ts-node + tsx@4.16.2: + dependencies: + esbuild: 0.21.5 + get-tsconfig: 4.7.5 + optionalDependencies: + fsevents: 2.3.3 + tty-table@4.2.3: dependencies: chalk: 4.1.2 @@ -5650,6 +5948,8 @@ snapshots: type-fest@0.8.1: {} + type-fest@1.4.0: {} + typed-array-buffer@1.0.2: dependencies: call-bind: 1.0.7 @@ -5682,18 +5982,18 @@ snapshots: is-typed-array: 1.1.13 possible-typed-array-names: 1.0.0 - typescript-eslint@8.0.0-alpha.28(eslint@9.4.0)(typescript@5.4.5): + typescript-eslint@8.0.0-alpha.28(eslint@9.4.0)(typescript@5.5.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.0.0-alpha.28(@typescript-eslint/parser@8.0.0-alpha.28(eslint@9.4.0)(typescript@5.4.5))(eslint@9.4.0)(typescript@5.4.5) - '@typescript-eslint/parser': 8.0.0-alpha.28(eslint@9.4.0)(typescript@5.4.5) - '@typescript-eslint/utils': 8.0.0-alpha.28(eslint@9.4.0)(typescript@5.4.5) + '@typescript-eslint/eslint-plugin': 8.0.0-alpha.28(@typescript-eslint/parser@8.0.0-alpha.28(eslint@9.4.0)(typescript@5.5.3))(eslint@9.4.0)(typescript@5.5.3) + '@typescript-eslint/parser': 8.0.0-alpha.28(eslint@9.4.0)(typescript@5.5.3) + '@typescript-eslint/utils': 8.0.0-alpha.28(eslint@9.4.0)(typescript@5.5.3) optionalDependencies: - typescript: 5.4.5 + typescript: 5.5.3 transitivePeerDependencies: - eslint - supports-color - typescript@5.4.5: {} + typescript@5.5.3: {} ufo@1.5.3: {}