diff --git a/.github/actions/generate-coverage/action.yml b/.github/actions/generate-coverage/action.yml new file mode 100644 index 0000000..52b9ccd --- /dev/null +++ b/.github/actions/generate-coverage/action.yml @@ -0,0 +1,24 @@ +name: 🧪 Generate coverage +description: Generate a kcov coverage report in Docker +inputs: + kcov-image: + description: Pinned kcov Docker image + required: false + default: kcov/kcov@sha256:481289ae32e55e5b733019515acd10948a4f76dfed381765577db909664fc603 +runs: + using: composite + steps: + - name: 🧪 Generate coverage + shell: bash + env: + KCOV_IMAGE: ${{ inputs.kcov-image }} + run: | + docker run --rm \ + --cap-add=SYS_PTRACE \ + --security-opt seccomp=unconfined \ + --volume "$GITHUB_WORKSPACE:$GITHUB_WORKSPACE" \ + --workdir "$GITHUB_WORKSPACE" \ + --user "$(id -u):$(id -g)" \ + --entrypoint /bin/sh \ + "$KCOV_IMAGE" \ + "$GITHUB_WORKSPACE/scripts/coverage.sh" diff --git a/.github/actions/report-pr/action.yml b/.github/actions/report-pr/action.yml index f450dfa..ac28427 100644 --- a/.github/actions/report-pr/action.yml +++ b/.github/actions/report-pr/action.yml @@ -22,7 +22,7 @@ runs: hide_complexity: true indicators: true output: both - thresholds: '60 80' + thresholds: '70 80' - name: 💬 Add coverage PR comment uses: marocchino/sticky-pull-request-comment@v2 diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 7c3f106..eec6566 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -8,7 +8,7 @@ _None_ ## ✅ Checklist before requesting a review -- [ ] I have performed a self-review of my code -- [ ] If it is a core feature, I have added thorough tests -- [ ] I have checked that affected pages are responsive -- [ ] I have checked that there are no z-index issues on affected pages +- [ ] I have performed a self-review of my code. +- [ ] If it is a core feature, I have added thorough tests. +- [ ] I have run `yarn validate` when required. +- [ ] If CLI behavior changed, I have smoke-tested the affected commands. diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index b13e922..373e96a 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -26,7 +26,7 @@ jobs: - name: 🗜️ Setup Node uses: actions/setup-node@v6 with: - node-version: 24 + node-version-file: .nvmrc registry-url: https://registry.npmjs.org - name: 🗜️ Setup Zig @@ -79,7 +79,7 @@ jobs: if: startsWith(github.ref, 'refs/tags/v') && contains(github.ref, 'beta') == false uses: actions/setup-node@v6 with: - node-version: 24 + node-version-file: .nvmrc registry-url: https://npm.pkg.github.com scope: '@celtian' diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index 7cea68a..6c6cab3 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -6,10 +6,6 @@ permissions: contents: read pull-requests: write -env: - # kcov/kcov:latest, pinned for reproducible builds - KCOV_IMAGE: kcov/kcov@sha256:481289ae32e55e5b733019515acd10948a4f76dfed381765577db909664fc603 - jobs: test: name: 🛠️ Validate & Package @@ -21,7 +17,7 @@ jobs: - name: 🗜️ Setup Node uses: actions/setup-node@v6 with: - node-version: 24 + node-version-file: .nvmrc registry-url: https://registry.npmjs.org - name: 🗜️ Setup Zig @@ -42,16 +38,7 @@ jobs: run: yarn coverage:build - name: 🧪 Generate coverage - run: | - docker run --rm \ - --cap-add=SYS_PTRACE \ - --security-opt seccomp=unconfined \ - --volume "$PWD:$PWD" \ - --workdir "$PWD" \ - --user "$(id -u):$(id -g)" \ - --entrypoint /bin/sh \ - "$KCOV_IMAGE" \ - "$PWD/scripts/coverage.sh" + uses: ./.github/actions/generate-coverage - name: 📊 Report coverage if: github.event.pull_request.head.repo.full_name == github.repository @@ -91,7 +78,7 @@ jobs: - name: 🗜️ Setup Node uses: actions/setup-node@v6 with: - node-version: 24 + node-version-file: .nvmrc - name: 🗜️ Setup Zig uses: mlugg/setup-zig@v2 diff --git a/README.md b/README.md index d227015..6937ea5 100644 --- a/README.md +++ b/README.md @@ -32,24 +32,66 @@ ## 🚀 Install +With npm: + ```bash npm install quick-commitlint --save-dev ``` +With Yarn: + ```bash yarn add quick-commitlint --dev ``` +With pnpm: + +```bash +pnpm add -D quick-commitlint +``` + +With Bun: + +```bash +bun add quick-commitlint --dev +``` + The package includes native executables for macOS arm64/x64, Linux arm64/x64, and Windows x64. The launcher requires Node.js 24 or 25. ## 🪝 Use in a commit hook Pass the commit-message file as the only positional argument: +```sh +quick-commitlint "$1" +``` + +### Husky 9 + +Install and initialize Husky with npm: + +```bash +npm install husky --save-dev +npx husky init +``` + +Or with Yarn: + ```bash +yarn add husky --dev +yarn exec husky init +``` + +`husky init` configures Git hooks and creates an example `.husky/pre-commit` hook. Customize or remove that example hook if you do not need it. + +Then create `.husky/commit-msg`: + +```sh quick-commitlint "$1" ``` +Husky adds local `node_modules/.bin` commands to the hook's `PATH`, so this runs the installed Quick Commitlint development dependency. Git supplies the proposed commit-message file as `$1`. + Or lint a message from standard input: ```bash diff --git a/docs/assets/terminal-demo.gif b/docs/assets/terminal-demo.gif index be8ce11..4ebcf4a 100644 Binary files a/docs/assets/terminal-demo.gif and b/docs/assets/terminal-demo.gif differ diff --git a/package.json b/package.json index 504d584..d0fbbf9 100644 --- a/package.json +++ b/package.json @@ -49,19 +49,19 @@ }, "devDependencies": { "@angular-eslint/builder": "22.1.0", - "@angular/build": "^22.0.4", - "@angular/cdk": "^22.0.5", - "@angular/cli": "^22.0.4", - "@angular/common": "^22.0.0", - "@angular/compiler": "^22.0.0", - "@angular/compiler-cli": "^22.0.0", - "@angular/core": "^22.0.0", - "@angular/forms": "^22.0.0", - "@angular/material": "^22.0.5", - "@angular/platform-browser": "^22.0.0", - "@angular/platform-server": "^22.0.0", - "@angular/router": "^22.0.0", - "@angular/ssr": "^22.0.4", + "@angular/build": "^22.0.8", + "@angular/cdk": "^22.0.6", + "@angular/cli": "^22.0.8", + "@angular/common": "^22.0.8", + "@angular/compiler": "^22.0.8", + "@angular/compiler-cli": "^22.0.8", + "@angular/core": "^22.0.8", + "@angular/forms": "^22.0.8", + "@angular/material": "^22.0.6", + "@angular/platform-browser": "^22.0.8", + "@angular/platform-server": "^22.0.8", + "@angular/router": "^22.0.8", + "@angular/ssr": "^22.0.8", "@commitlint/cli": "21.2.1", "@commitlint/config-angular": "21.2.0", "@commitlint/config-conventional": "21.2.0", @@ -71,24 +71,24 @@ "@types/node": "^24", "angular-eslint": "22.1.0", "auto-changelog": "^2.6.0", - "axe-core": "^4.10.3", - "eslint": "^10.6.0", - "fs-extra": "^11.3.6", + "axe-core": "^4.12.1", + "eslint": "^10.8.0", + "fs-extra": "^11.4.0", "husky": "^9.1.7", - "jsdom": "^28.0.0", - "marked": "^18.0.6", + "jsdom": "^29.1.1", + "marked": "^18.0.7", "ngx-markdown": "^22.0.0", "ngx-scrolltop": "^22.0.0", - "postcss": "^8.5.3", - "prettier": "^3.8.1", + "postcss": "^8.5.23", + "prettier": "^3.9.6", "rimraf": "^6.1.3", - "rxjs": "~7.8.0", + "rxjs": "^7.8.2", "tailwindcss": "^4.3.3", - "tslib": "^2.3.0", + "tslib": "^2.8.1", "tsx": "^4.23.1", "typescript": "~6.0.2", - "typescript-eslint": "8.62.1", - "vitest": "^4.0.8" + "typescript-eslint": "^8.65.0", + "vitest": "^4.1.10" }, "bin": { "quick-commitlint": "zig-out/bin/quick-commitlint" diff --git a/projects/portal/src/app/core/theme-selector/theme-selector.css b/projects/portal/src/app/core/theme-selector/theme-selector.css index 91d9e1d..f9d6386 100644 --- a/projects/portal/src/app/core/theme-selector/theme-selector.css +++ b/projects/portal/src/app/core/theme-selector/theme-selector.css @@ -3,11 +3,16 @@ } button { + align-items: center; + display: inline-flex; min-width: auto; } -button > span:first-child { +.theme-icon { + align-items: center; + display: inline-flex; font-size: 1.25rem; + line-height: 1; margin-inline-end: 0.4rem; } diff --git a/projects/portal/src/app/core/theme-selector/theme-selector.html b/projects/portal/src/app/core/theme-selector/theme-selector.html index cad3087..7cd8aa4 100644 --- a/projects/portal/src/app/core/theme-selector/theme-selector.html +++ b/projects/portal/src/app/core/theme-selector/theme-selector.html @@ -5,7 +5,7 @@ [matMenuTriggerFor]="themeMenu" [attr.aria-description]="'Current theme: ' + currentLabel()" > - + {{ currentLabel() }} diff --git a/projects/portal/src/app/docs/content/getting-started.md b/projects/portal/src/app/docs/content/getting-started.md index 0313270..8dd5b02 100644 --- a/projects/portal/src/app/docs/content/getting-started.md +++ b/projects/portal/src/app/docs/content/getting-started.md @@ -16,6 +16,18 @@ With Yarn: yarn add quick-commitlint --dev ``` +With pnpm: + +```bash +pnpm add -D quick-commitlint +``` + +With Bun: + +```bash +bun add quick-commitlint --dev +``` + ## Lint your first message Pipe a Conventional Commit message to the command: diff --git a/projects/portal/src/app/docs/content/usage.md b/projects/portal/src/app/docs/content/usage.md index a6a27d4..6f7026e 100644 --- a/projects/portal/src/app/docs/content/usage.md +++ b/projects/portal/src/app/docs/content/usage.md @@ -46,12 +46,32 @@ Git calls `commit-msg` with the path to the proposed message. A minimal hook is: quick-commitlint "$1" ``` -With Husky, put the command in `.husky/commit-msg`: +### Husky 9 + +Install and initialize Husky with npm: + +```bash +npm install husky --save-dev +npx husky init +``` + +Or with Yarn: + +```bash +yarn add husky --dev +yarn exec husky init +``` + +`husky init` configures Git hooks and creates an example `.husky/pre-commit` hook. Customize or remove that example hook if you do not need it. + +Then create `.husky/commit-msg`: ```sh quick-commitlint "$1" ``` +Husky adds local `node_modules/.bin` commands to the hook's `PATH`, so this runs the installed Quick Commitlint development dependency. Git supplies the proposed commit-message file as `$1`. + Make sure the hook file is executable when it is managed directly by Git. ## Introduce a rule gradually diff --git a/projects/portal/src/app/pages/docs-layout/docs-layout.css b/projects/portal/src/app/pages/docs-layout/docs-layout.css index 391d344..20cb28a 100644 --- a/projects/portal/src/app/pages/docs-layout/docs-layout.css +++ b/projects/portal/src/app/pages/docs-layout/docs-layout.css @@ -10,24 +10,38 @@ mat-sidenav-container { } mat-sidenav { + --mat-sidenav-container-shape: 0; + background: var(--mat-sys-surface-container-low); border-right: 1px solid var(--mat-sys-outline-variant); - padding: 1rem 0.75rem; width: 17.5rem; } +nav { + display: grid; + padding: 1rem 0.75rem; +} + +.nav-group { + min-width: 0; +} + +.nav-group + .nav-group { + border-block-start: 1px solid var(--mat-sys-outline-variant); + margin-block-start: 1.25rem; + padding-block-start: 1.25rem; +} + .nav-heading { color: var(--mat-sys-on-surface-variant); - font: var(--mat-sys-label-large); - letter-spacing: 0.06em; - margin: 1.25rem 1rem 0.25rem; + font: var(--mat-sys-title-large); + font-size: 1.25rem; + font-weight: var(--mat-sys-label-large-weight-prominent); + letter-spacing: 0.04em; + margin: 0 1rem 0.5rem; text-transform: uppercase; } -.nav-heading:first-child { - margin-block-start: 0.5rem; -} - .mobile-docs-bar { background: var(--mat-sys-surface); border-bottom: 1px solid var(--mat-sys-outline-variant); diff --git a/projects/portal/src/app/pages/docs-layout/docs-layout.html b/projects/portal/src/app/pages/docs-layout/docs-layout.html index 802da95..4f54f16 100644 --- a/projects/portal/src/app/pages/docs-layout/docs-layout.html +++ b/projects/portal/src/app/pages/docs-layout/docs-layout.html @@ -8,24 +8,26 @@ [fixedTopGap]="64" > diff --git a/projects/portal/src/app/pages/home/home.html b/projects/portal/src/app/pages/home/home.html index cdcd722..f6250c1 100644 --- a/projects/portal/src/app/pages/home/home.html +++ b/projects/portal/src/app/pages/home/home.html @@ -61,6 +61,8 @@

Install as a development tool

npm install quick-commitlint --save-dev
yarn add quick-commitlint --dev
+
pnpm add -D quick-commitlint
+
bun add quick-commitlint --dev
diff --git a/scripts/integration.ts b/scripts/integration.ts index ae3b9ca..d838a0e 100644 --- a/scripts/integration.ts +++ b/scripts/integration.ts @@ -6,6 +6,7 @@ import { join, resolve } from 'path'; const native = resolve(__dirname, '..', 'zig-out', 'bin', 'quick-commitlint'); const expectedVersion = JSON.parse(readFileSync(resolve(__dirname, '..', 'package.json'), 'utf8')).version; const temp = mkdtempSync(join(tmpdir(), 'quick-commitlint-integration-')); +const lintStatus = '\x1b[36m...\x1b[0m\x1b[2mChecking commit message…\x1b[0m\n'; function run(args: string[], input?: string | Buffer, cwd = temp) { return spawnSync(native, args, { input, cwd, encoding: input instanceof Buffer ? undefined : 'utf8' }); @@ -19,15 +20,32 @@ function expectTimedSummary(output: string, context: string): void { if (!/\d+\.\d{2} ms/.test(output)) throw new Error(`${context}: missing two-decimal timing.`); } +function expectLintStatus(output: string, context: string): string { + if (!output.startsWith(lintStatus)) throw new Error(`${context}: missing lint status.`); + return output.slice(lintStatus.length); +} + +function expectOperationalFailure(output: string, context: string): void { + const failure = expectLintStatus(output, context); + if (!failure.startsWith('\n\x1b[31merror\x1b[0m')) { + throw new Error(`${context}: expected one blank line before operational error.`); + } +} + function expectReportSpacing(output: string, context: string, hasIssues: boolean): void { - if (!output.startsWith('\n ') || output.startsWith('\n\n')) { - throw new Error(`${context}: expected exactly one leading blank line.`); + const report = expectLintStatus(output, context); + if (hasIssues && !report.startsWith('\n ')) { + throw new Error(`${context}: expected one blank line before indented issues.`); + } + if (!hasIssues && report.startsWith('\n')) { + throw new Error(`${context}: successful report must follow lint status without a blank line.`); } - if (!output.endsWith('\n\n') || output.endsWith('\n\n\n')) { - throw new Error(`${context}: expected exactly one trailing blank line.`); + const summaryOffset = hasIssues ? report.indexOf('\n\n', 1) + 2 : 0; + if ((hasIssues && summaryOffset === 1) || report[summaryOffset] === ' ' || report[summaryOffset] === '\n') { + throw new Error(`${context}: unexpected whitespace before summary.`); } - if (hasIssues && !output.includes(']\x1b[0m\n\n ')) { - throw new Error(`${context}: missing blank line between issues and summary.`); + if (!report.endsWith('\n') || report.endsWith('\n\n')) { + throw new Error(`${context}: expected exactly one terminating newline.`); } } @@ -69,6 +87,24 @@ try { expectTimedSummary(warningOutput, 'warning summary'); expectReportSpacing(warningOutput, 'warning report', true); + const mixed = run([], 'wat: Subject.\nbody without blank'); + expectStatus(mixed.status, 1, 'mixed severity stdin'); + const mixedOutput = String(mixed.stderr); + expectReportSpacing(mixedOutput, 'mixed severity report', true); + const subjectCaseIndex = mixedOutput.indexOf('[subject-case]'); + const subjectFullStopIndex = mixedOutput.indexOf('[subject-full-stop]'); + const typeEnumIndex = mixedOutput.indexOf('[type-enum]'); + const warningIndex = mixedOutput.indexOf('[body-leading-blank]'); + if ( + subjectCaseIndex === -1 || + subjectFullStopIndex === -1 || + typeEnumIndex === -1 || + warningIndex === -1 || + !(subjectCaseIndex < subjectFullStopIndex && subjectFullStopIndex < typeEnumIndex && typeEnumIndex < warningIndex) + ) { + throw new Error('Mixed severity report must preserve error rule order and display warnings last.'); + } + const messagePath = join(temp, 'COMMIT_EDITMSG'); writeFileSync(messagePath, 'fix(core): handle CRLF\r\n\r\nbody\r\n'); expectStatus(run([messagePath]).status, 0, 'message file with CRLF'); @@ -85,32 +121,49 @@ try { const malformed = join(temp, 'malformed.json'); writeFileSync(malformed, '{"unknown":true}\n'); - expectStatus(run(['--config', malformed], 'feat: parser').status, 2, 'unknown config key'); + const malformedResult = run(['--config', malformed], 'feat: parser'); + expectStatus(malformedResult.status, 2, 'unknown config key'); + expectOperationalFailure(String(malformedResult.stderr), 'unknown config key'); - expectStatus(run([], Buffer.from([0x66, 0x65, 0x61, 0x74, 0x3a, 0x20, 0xff])).status, 2, 'invalid UTF-8'); + const invalidUtf8 = run([], Buffer.from([0x66, 0x65, 0x61, 0x74, 0x3a, 0x20, 0xff])); + expectStatus(invalidUtf8.status, 2, 'invalid UTF-8'); + expectOperationalFailure(String(invalidUtf8.stderr), 'invalid UTF-8'); const unknown = run(['--unknown']); expectStatus(unknown.status, 2, 'unknown CLI option'); if (!String(unknown.stderr).includes('\x1b[31merror\x1b[0m')) throw new Error('CLI error is not red.'); + if (String(unknown.stderr).includes('Checking commit message')) { + throw new Error('Invalid argument output must not include lint status.'); + } const oversized = join(temp, 'oversized-message'); writeFileSync(oversized, Buffer.alloc(1024 * 1024 + 1, 0x61)); - expectStatus(run([oversized]).status, 2, 'message size limit'); + const oversizedResult = run([oversized]); + expectStatus(oversizedResult.status, 2, 'message size limit'); + expectOperationalFailure(String(oversizedResult.stderr), 'message size limit'); const oversizedConfig = join(temp, 'oversized-config.json'); writeFileSync(oversizedConfig, Buffer.alloc(256 * 1024 + 1, 0x20)); - expectStatus(run(['--config', oversizedConfig], 'feat: parser').status, 2, 'config size limit'); + const oversizedConfigResult = run(['--config', oversizedConfig], 'feat: parser'); + expectStatus(oversizedConfigResult.status, 2, 'config size limit'); + expectOperationalFailure(String(oversizedConfigResult.stderr), 'config size limit'); const version = run(['--version']); expectStatus(version.status, 0, 'version'); if (String(version.stdout).trim() !== `quick-commitlint ${expectedVersion}`) { throw new Error('Incorrect version output.'); } + if (String(version.stderr).includes('Checking commit message')) { + throw new Error('Version output must not include lint status.'); + } const help = run(['--help']); expectStatus(help.status, 0, 'help'); if (!String(help.stdout).includes('\x1b[96mQuick Commitlint\x1b[0m')) throw new Error('Help title is not cyan.'); if (!String(help.stdout).includes('\x1b[33mUsage:\x1b[0m')) throw new Error('Help section is not yellow.'); if (!String(help.stdout).includes('\x1b[32m-c, --config \x1b[0m')) throw new Error('Help option is not green.'); + if (String(help.stderr).includes('Checking commit message')) { + throw new Error('Help output must not include lint status.'); + } } finally { rmSync(temp, { recursive: true, force: true }); } diff --git a/scripts/package-npm.ts b/scripts/package-npm.ts index 00dc40b..134169b 100644 --- a/scripts/package-npm.ts +++ b/scripts/package-npm.ts @@ -16,7 +16,7 @@ const pkg = require(join(rootDir, 'package.json')); pkg.scripts = undefined; pkg.devDependencies = undefined; pkg.packageManager = undefined; -pkg.engines = { node: pkg.engines.node }; +pkg.engines = undefined; pkg.files = undefined; pkg.bin = { 'quick-commitlint': 'bin/quick-commitlint.js', diff --git a/scripts/smoke-package.ts b/scripts/smoke-package.ts index 441aebe..366c744 100644 --- a/scripts/smoke-package.ts +++ b/scripts/smoke-package.ts @@ -24,8 +24,8 @@ if ('os' in manifest || 'cpu' in manifest) { if (manifest.dependencies && Object.keys(manifest.dependencies).length !== 0) { throw new Error('The published package has runtime package dependencies.'); } -if (manifest.engines?.node !== projectManifest.engines.node || 'npm' in manifest.engines) { - throw new Error('The published package must declare only the supported Node.js runtime.'); +if ('engines' in manifest) { + throw new Error('The published package must not declare runtime engine requirements.'); } const dryRun = JSON.parse(runNpm(['pack', '--dry-run', '--json'], distDir).stdout); diff --git a/src/main.zig b/src/main.zig index f2c097a..2361eed 100644 --- a/src/main.zig +++ b/src/main.zig @@ -8,6 +8,7 @@ const color = struct { const green = "\x1b[32m"; const yellow = "\x1b[33m"; const cyan = "\x1b[36m"; + const dim = "\x1b[2m"; const dim_cyan = "\x1b[2;36m"; }; @@ -33,7 +34,7 @@ pub fn main(init: std.process.Init) !void { .lint => |options| execute(init, options) catch |err| { var buffer: [4096]u8 = undefined; var writer = std.Io.File.stderr().writer(init.io, &buffer); - try writer.interface.print(color.red ++ "error" ++ color.reset ++ ": {s}\n", .{@errorName(err)}); + try writer.interface.print("\n" ++ color.red ++ "error" ++ color.reset ++ ": {s}\n", .{@errorName(err)}); try writer.interface.flush(); std.process.exit(2); }, @@ -42,6 +43,13 @@ pub fn main(init: std.process.Init) !void { fn execute(init: std.process.Init, options: cli.Options) !void { const started: std.Io.Clock.Timestamp = .now(init.io, .awake); + { + var buffer: [4096]u8 = undefined; + var writer = std.Io.File.stderr().writer(init.io, &buffer); + try writer.interface.writeAll(color.cyan ++ "..." ++ color.reset ++ color.dim ++ "Checking commit message…" ++ color.reset ++ "\n"); + try writer.interface.flush(); + } + const message = if (options.message_path) |path| try readFileAlloc(init.gpa, init.io, path, message_limit) else @@ -69,19 +77,22 @@ fn execute(init: std.process.Init, options: cli.Options) !void { var buffer: [4096]u8 = undefined; var writer = std.Io.File.stderr().writer(init.io, &buffer); - try writer.interface.writeByte('\n'); - for (report.issues()) |issue| { - const symbol = if (issue.severity == .err) "✖" else "⚠"; - const symbol_color = if (issue.severity == .err) color.red else color.yellow; - try writer.interface.print(" {s}{s}{s} {s} {s}[{s}]{s}\n", .{ - symbol_color, - symbol, - color.reset, - issue.message, - color.cyan, - issue.rule.name(), - color.reset, - }); + if (report.len > 0) try writer.interface.writeByte('\n'); + for ([_]quick.config.Severity{ .err, .warning }) |severity| { + for (report.issues()) |issue| { + if (issue.severity != severity) continue; + const symbol = if (issue.severity == .err) "✖" else "⚠"; + const symbol_color = if (issue.severity == .err) color.red else color.yellow; + try writer.interface.print(" {s}{s}{s} {s} {s}[{s}]{s}\n", .{ + symbol_color, + symbol, + color.reset, + issue.message, + color.cyan, + issue.rule.name(), + color.reset, + }); + } } if (report.len > 0) try writer.interface.writeByte('\n'); @@ -89,7 +100,7 @@ fn execute(init: std.process.Init, options: cli.Options) !void { const summary_color = if (report.errors > 0) color.red else if (report.warnings > 0) color.yellow else color.green; const error_suffix = if (report.errors == 1) "" else "s"; const warning_suffix = if (report.warnings == 1) "" else "s"; - try writer.interface.print(" {s}{s}{s} {s}{d} error{s}{s} · {s}{d} warning{s}{s} · {s}{d:.2} ms{s}\n\n", .{ + try writer.interface.print("{s}{s}{s} {s}{d} error{s}{s} · {s}{d} warning{s}{s} · {s}{d:.2} ms{s}\n", .{ summary_color, summary_symbol, color.reset, diff --git a/yarn.lock b/yarn.lock index 99c827a..da7c0d2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,11 +2,6 @@ # yarn lockfile v1 -"@acemir/cssom@^0.9.31": - version "0.9.31" - resolved "https://registry.yarnpkg.com/@acemir/cssom/-/cssom-0.9.31.tgz#bd5337d290fb8be2ac18391f37386bc53778b0bc" - integrity sha512-ZnR3GSaH+/vJ0YlHau21FjfLYjMpYVIzTD8M8vIEQvIGxeOXyXdzCI140rrCY862p/C/BbzWsjc1dgnM9mkoTA== - "@algolia/abtesting@1.18.0": version "1.18.0" resolved "https://registry.yarnpkg.com/@algolia/abtesting/-/abtesting-1.18.0.tgz#af659fa59032eb3a31891ad0701dbf6b3242ca43" @@ -146,7 +141,15 @@ "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.24" -"@angular-devkit/architect@0.2200.7", "@angular-devkit/architect@>= 0.2200.0 < 0.2300.0": +"@angular-devkit/architect@0.2200.8": + version "0.2200.8" + resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.2200.8.tgz#fa787d77c951cb3354b10f9ac2a6520de5daa021" + integrity sha512-LFKK2v96nO0ESM9nftlCkTy+O/66AxNkwUpG+Q1er7LLNR2S8UReZnQ1/RhMkldCWxsmp2rQzdgHWnubaY/ZfA== + dependencies: + "@angular-devkit/core" "22.0.8" + rxjs "7.8.2" + +"@angular-devkit/architect@>= 0.2200.0 < 0.2300.0": version "0.2200.7" resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.2200.7.tgz#fcabfa87a0171704935f7d63db0b4cdf1c9beefb" integrity sha512-t03YYe5amlcpsX5gpMGi96kpBNTMKY7/rJsRDNO3v98mSy7kzNXlgzy/jyfdFev7AJusuwVM5TKVsUAgQxCgCw== @@ -166,7 +169,30 @@ rxjs "7.8.2" source-map "0.7.6" -"@angular-devkit/schematics@22.0.7", "@angular-devkit/schematics@>= 22.0.0 < 23.0.0": +"@angular-devkit/core@22.0.8": + version "22.0.8" + resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-22.0.8.tgz#32ae524ffb609f682515520b189cabe9104b188a" + integrity sha512-Hnr4SCkxQM+xtq4uERC09qwTZpt97t4CwDZYzv/HbQA4pMYDfTxvIRHCyl+UHf4NbkC7ZVgyiab+KzTfuc609Q== + dependencies: + ajv "8.20.0" + ajv-formats "3.0.1" + jsonc-parser "3.3.1" + picomatch "4.0.4" + rxjs "7.8.2" + source-map "0.7.6" + +"@angular-devkit/schematics@22.0.8": + version "22.0.8" + resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-22.0.8.tgz#2624fba7289fa8fb777ca4e58c18f232afc476c8" + integrity sha512-9WjTKnW/5oIw4hNNcd0rSYtgHRrHKKAkG6+bdLqTCY68P2brO2yEJM2JjYtMYk/WSovknb0GxUP4n3dY3IxPug== + dependencies: + "@angular-devkit/core" "22.0.8" + jsonc-parser "3.3.1" + magic-string "0.30.21" + ora "9.4.0" + rxjs "7.8.2" + +"@angular-devkit/schematics@>= 22.0.0 < 23.0.0": version "22.0.7" resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-22.0.7.tgz#09e4f23940888df6f9277ec4c23295c5819b8e82" integrity sha512-bKgnBB0LPAj44uVXfW0UO1rQBb3HGXDZxa1bLtESr/KCK4j5iiaXlHqvJjc/z0em1Ds9WNQOfNXjV3IdJo9sSw== @@ -237,13 +263,13 @@ dependencies: "@angular-eslint/bundled-angular-compiler" "22.1.0" -"@angular/build@^22.0.4": - version "22.0.7" - resolved "https://registry.yarnpkg.com/@angular/build/-/build-22.0.7.tgz#0609d6cf88fee93b91a2aa65069926322f0c8094" - integrity sha512-cm/QJmrIgsjzZJeBeqeNwgdgK6BGBKk7ca21jnSsrwlae3F9u1E8cImFbLeZSjEGghx4wFUacFDG+6lFEICntw== +"@angular/build@^22.0.8": + version "22.0.8" + resolved "https://registry.yarnpkg.com/@angular/build/-/build-22.0.8.tgz#5de35b5119190a2beda2048abcd12f4b5165ac8a" + integrity sha512-QJVVTROVb27Ixk+RU4FSKwwyRbLdtNH20zFm1CwOKzA0wQHrWfxHTqlwMhnTOsOt5Cb3eX+6IjDXoGmAfJ81mA== dependencies: "@ampproject/remapping" "2.3.0" - "@angular-devkit/architect" "0.2200.7" + "@angular-devkit/architect" "0.2200.8" "@babel/core" "7.29.7" "@babel/helper-annotate-as-pure" "7.29.7" "@babel/helper-split-export-declaration" "7.24.7" @@ -265,31 +291,31 @@ semver "7.7.4" source-map-support "0.5.21" tinyglobby "0.2.16" - vite "7.3.5" + vite "7.3.6" watchpack "2.5.1" optionalDependencies: lmdb "3.5.4" -"@angular/cdk@^22.0.5": - version "22.0.5" - resolved "https://registry.yarnpkg.com/@angular/cdk/-/cdk-22.0.5.tgz#449c5bf568f26081c880647ae6e548b9dc73a8bc" - integrity sha512-qy1scYkkhedGxrU2GjOUoh76xjsxCDOODWdVfg4aXLXG7RBIH6hOuKdcNpR/sWhfSdY02a11QYRN2CqoqWDvZQ== +"@angular/cdk@^22.0.6": + version "22.0.6" + resolved "https://registry.yarnpkg.com/@angular/cdk/-/cdk-22.0.6.tgz#159accfd6b4ba655f756669d585f2ab544020eb6" + integrity sha512-b36f4b+7yQpuulG9Ai2O38SV2tsqyNeYTYCH9TehMir18XlTx+NtLELwA8Sfi24tHByJHEDADQZtHPWWUj71/w== dependencies: parse5 "^8.0.0" tslib "^2.3.0" -"@angular/cli@^22.0.4": - version "22.0.7" - resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-22.0.7.tgz#bc1be29c13517d04b7acc0d49357c9c4958ecc0b" - integrity sha512-5r+fgP8ARnXZeylAGt5BuToVcR8Vn2QQZ6dPMe7V9o4NdvJqqOKmE7fEiRe7KaxIx5WSDhuAhgW9t+scLZQbvw== +"@angular/cli@^22.0.8": + version "22.0.8" + resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-22.0.8.tgz#40ee23fa13d8a2f48bcb77d573b9768ee9d8cd15" + integrity sha512-kefbTsmf7sEmW5g3NIRvH0OrM18I1jjZHlB9KABgRQhsDfD/WgfLt6aSLJQeFDlAOs+ehDPzzOwd9l48wyBlFQ== dependencies: - "@angular-devkit/architect" "0.2200.7" - "@angular-devkit/core" "22.0.7" - "@angular-devkit/schematics" "22.0.7" + "@angular-devkit/architect" "0.2200.8" + "@angular-devkit/core" "22.0.8" + "@angular-devkit/schematics" "22.0.8" "@inquirer/prompts" "8.4.2" "@listr2/prompt-adapter-inquirer" "4.2.3" "@modelcontextprotocol/sdk" "1.29.0" - "@schematics/angular" "22.0.7" + "@schematics/angular" "22.0.8" "@yarnpkg/lockfile" "1.1.0" algoliasearch "5.52.0" ini "6.0.0" @@ -302,17 +328,17 @@ yargs "18.0.0" zod "4.4.2" -"@angular/common@^22.0.0": - version "22.0.7" - resolved "https://registry.yarnpkg.com/@angular/common/-/common-22.0.7.tgz#48bc77d92293977f4261c529dfd5d143f0cfb57d" - integrity sha512-iun8auXVnpPzunhtaPHMF0gSpByxv7kHhG3Nb6r34eJITW5p06LYyZbkAnl5ERArmgQvEV4pTjoo7ZTK3cJzzw== +"@angular/common@^22.0.8": + version "22.0.8" + resolved "https://registry.yarnpkg.com/@angular/common/-/common-22.0.8.tgz#833d0c8ad1a1b07f868dab3db28c9ceb4c969e98" + integrity sha512-FnwkXndUgAyWk1/p5flMfocIUtuuneJ01mxC1FxRc5/bdWTyNVeQDsM9Lw4PEAPc0AHu//EnblegRq8o6LGdUQ== dependencies: tslib "^2.3.0" -"@angular/compiler-cli@^22.0.0": - version "22.0.7" - resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-22.0.7.tgz#b0836e3d7f336e46195d0fc77a557c86ff920bd9" - integrity sha512-/3HjBJUzljyPgb77R679+FN1+27xIGuLCAhuqzfj6DxX5WJOOmQOWE/k12eAZujE+ZypSf8ZGkfaukZV43FwoA== +"@angular/compiler-cli@^22.0.8": + version "22.0.8" + resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-22.0.8.tgz#5617692e712e7193d6ae327eb696ebd0817a7399" + integrity sha512-shBqaUxMtqriv4UG2MHmYT8GSvDizI40mUFkOfeQ1yRJ2C9dk0TnWKPwjSO7o6bs6UiU6V8Y3uSWdmfCGVVZAA== dependencies: "@babel/core" "7.29.7" "@jridgewell/sourcemap-codec" "^1.4.14" @@ -323,66 +349,66 @@ tslib "^2.3.0" yargs "^18.0.0" -"@angular/compiler@^22.0.0": - version "22.0.7" - resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-22.0.7.tgz#8683fa3f248179b9dabebe6e05d761d180f4375a" - integrity sha512-zhFPKYJzpml5bt58DkJq8S6S2bSJBomebgLYtUvZNLdQMicd5qmRGX6I3LO7Jd+HgjB2Flne/sloI+Jcyz1aOQ== +"@angular/compiler@^22.0.8": + version "22.0.8" + resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-22.0.8.tgz#ac3b7d3d8efff7a23e79cef189146f8a751526a9" + integrity sha512-ot7rvntfkZsPHmp8yl6PWUj/yG4e50X0+YeR7QYy/rEYKBiIg91w8GwjxSzaF4g5+bzJGDv7l/XnachKm0IySg== dependencies: tslib "^2.3.0" -"@angular/core@^22.0.0": - version "22.0.7" - resolved "https://registry.yarnpkg.com/@angular/core/-/core-22.0.7.tgz#0d9bec31fd996712447ab13bacbbd8bcf2e0bf0b" - integrity sha512-A5xKJx5wuuZfeJhShyZvbgicYtT3Jpw/5wJd1cfrcKU+i63CagRIg9jSktTW/e+2hxG1tIQrfKQUGeclmsAUUA== +"@angular/core@^22.0.8": + version "22.0.8" + resolved "https://registry.yarnpkg.com/@angular/core/-/core-22.0.8.tgz#583a71d7d8e589643f5e1e681bd3d38473faf271" + integrity sha512-HagZZVzbtXd+ZhMb++k/HOtr/UTiBROHHH7xutgYgnSnPRXX0kCca5EQ02OZ/OCWfsMP5liSJDfwiePFULKA6Q== dependencies: tslib "^2.3.0" -"@angular/forms@^22.0.0": - version "22.0.7" - resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-22.0.7.tgz#453cdbb8b7a5b3dba4ecdaab6ffa2da8d0c9eaa8" - integrity sha512-24ldrCORVCi3SoqtshjD8PcT5zg4aIXy9p8+GsO/c3yuhAouVOwL4z1/btNdo7UZv1asyaT3w4lgzprN8TGpjA== +"@angular/forms@^22.0.8": + version "22.0.8" + resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-22.0.8.tgz#38cb5da27c03d9f44efa0a13b5690127cd53aaea" + integrity sha512-KlLJE8rgziSBqCQy+cqCHPEQPGjJEY53i1vZbpnBoLXhnwswLJ3O0c76RHNpIrlrvr9v4p3b2/LxSE8wQmdStg== dependencies: "@standard-schema/spec" "^1.0.0" tslib "^2.3.0" zod "^4.0.10" -"@angular/material@^22.0.5": - version "22.0.5" - resolved "https://registry.yarnpkg.com/@angular/material/-/material-22.0.5.tgz#20209873339e6acda496d2cd68f5b0907f2f4ea8" - integrity sha512-A0SnDMvWQBxv3dB2w33GXwuo1/puKtFe8ZMQmIiurS5bbTQpV7UHAM0pWzg7L4DG2cvaH4WZGRPfNG3f8fh+yA== +"@angular/material@^22.0.6": + version "22.0.6" + resolved "https://registry.yarnpkg.com/@angular/material/-/material-22.0.6.tgz#24ac244219c26b716c5ed31dab14d2c4468eb175" + integrity sha512-EVKhP3689o+7J4TD7KMzmypxKGAUdvU3UsIhXYEoJ2IyxF/jAfuWSVKBmR8Ig6w74wSayBglfOTVoI3RuDL9NA== dependencies: tslib "^2.3.0" -"@angular/platform-browser@^22.0.0": - version "22.0.7" - resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-22.0.7.tgz#30024afdfeb9ef46ac6a67a90f0748fda53eb598" - integrity sha512-iCuREIWRnDCsd7mI5vn5ovXjcSwseWR4qfd+zo6QUrY2O9zkUNV79YuCqVjSzvWyvU2rtR5iRBvpB5JQgBELeg== +"@angular/platform-browser@^22.0.8": + version "22.0.8" + resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-22.0.8.tgz#00f73953298d4b5a0596d7a54f16812fffb075ec" + integrity sha512-FllGHCayu5Dv82HAA9ORL04Xf+In9JGMbQ1Vn4QnhrAVxBz182vm+ZwszLzRDSAwmfeIjZDeK49tKAcqHR9XNg== dependencies: tslib "^2.3.0" -"@angular/platform-server@^22.0.0": - version "22.0.7" - resolved "https://registry.yarnpkg.com/@angular/platform-server/-/platform-server-22.0.7.tgz#83233dd161ce997029f0c7a07265c21677854921" - integrity sha512-/X1IMcq7fruViTOS09plfSC/VXnbTOHxlFieF5M817pcwOwOS7m+UUQ3W9ZU7U6ZRMNXPz2QsNS3g1ZKH0NaXg== +"@angular/platform-server@^22.0.8": + version "22.0.8" + resolved "https://registry.yarnpkg.com/@angular/platform-server/-/platform-server-22.0.8.tgz#c51c535b48a86ac9daf0e0566b9b64150e7467c2" + integrity sha512-uG2/7vqb4hKnGVYN0khcA0W46AssKnYEa2l1kYoKcjz6JH/3ExHJohY3mgH5gwkpJCXT/xePv9S9AQsvwluh6w== dependencies: tslib "^2.3.0" xhr2 "^0.2.0" -"@angular/router@^22.0.0": - version "22.0.7" - resolved "https://registry.yarnpkg.com/@angular/router/-/router-22.0.7.tgz#f623cbbe580e2ab4b0b8519acd5c98626884c1cd" - integrity sha512-uMh+2S5y5Z6hTeFL85tDehfqAwVYjnTlHxpCrW+75RD4Z+rLl0/ff2ag3bXknzNyg0Q9LPOH6t/eCcQYajNOQQ== +"@angular/router@^22.0.8": + version "22.0.8" + resolved "https://registry.yarnpkg.com/@angular/router/-/router-22.0.8.tgz#5971cb3b96c4cda4d3fe6e7fcafe75c4130e9f87" + integrity sha512-9NO5K03QqfWMWWZ+Uu4WqBSLw/YAot918cBUFdgl6mTUOfoHi/xWO5pAt0SEpbXMHmWafJBdb99GRlAGybGSTg== dependencies: tslib "^2.3.0" -"@angular/ssr@^22.0.4": - version "22.0.7" - resolved "https://registry.yarnpkg.com/@angular/ssr/-/ssr-22.0.7.tgz#62a8cd0b19a95e97bbabfb9d372a7827c260a63e" - integrity sha512-IsdHaerKedUjEliuAhYHLi0bk8svitm3UVMt3GwcN7DSwVJDU2phC57OCenxn6267esCltBYVZ32y5cnECw6AA== +"@angular/ssr@^22.0.8": + version "22.0.8" + resolved "https://registry.yarnpkg.com/@angular/ssr/-/ssr-22.0.8.tgz#f4a4823b8e8e088085cd32a31eeb5726568018d3" + integrity sha512-T3N0w40R7rQQ3oBhkbupNf0g6Vt1F1huQqNgdblImdOFAt05nXPlrwjV37MJ78vYpJnAjNSuGmqIfnm3OyflhQ== dependencies: tslib "^2.3.0" -"@asamuzakjp/css-color@^5.0.1": +"@asamuzakjp/css-color@^5.1.11": version "5.1.11" resolved "https://registry.yarnpkg.com/@asamuzakjp/css-color/-/css-color-5.1.11.tgz#28a0aac8220a4cc19045ac3bd9a813d4060bd375" integrity sha512-KVw6qIiCTUQhByfTd78h2yD1/00waTmm9uy/R7Ck/ctUyAPj+AEDLkQIdJW0T8+qGgj3j5bpNKK7Q3G+LedJWg== @@ -393,16 +419,16 @@ "@csstools/css-parser-algorithms" "^4.0.0" "@csstools/css-tokenizer" "^4.0.0" -"@asamuzakjp/dom-selector@^6.8.1": - version "6.8.1" - resolved "https://registry.yarnpkg.com/@asamuzakjp/dom-selector/-/dom-selector-6.8.1.tgz#39b20993672b106f7cd9a3a9a465212e87e0bfd1" - integrity sha512-MvRz1nCqW0fsy8Qz4dnLIvhOlMzqDVBabZx6lH+YywFDdjXhMY37SmpV1XFX3JzG5GWHn63j6HX6QPr3lZXHvQ== +"@asamuzakjp/dom-selector@^7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@asamuzakjp/dom-selector/-/dom-selector-7.1.1.tgz#01880086bb2490098f167beb58555da1a6c9adbd" + integrity sha512-67RZDnYRc8H/8MLDgQCDE//zoqVFwajkepHZgmXrbwybzXOEwOWGPYGmALYl9J2DOLfFPPs6kKCqmbzV895hTQ== dependencies: + "@asamuzakjp/generational-cache" "^1.0.1" "@asamuzakjp/nwsapi" "^2.3.9" bidi-js "^1.0.3" - css-tree "^3.1.0" + css-tree "^3.2.1" is-potential-custom-element-name "^1.0.1" - lru-cache "^11.2.6" "@asamuzakjp/generational-cache@^1.0.1": version "1.0.1" @@ -772,10 +798,10 @@ resolved "https://registry.yarnpkg.com/@csstools/css-parser-algorithms/-/css-parser-algorithms-4.0.0.tgz#e1c65dc09378b42f26a111fca7f7075fc2c26164" integrity sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w== -"@csstools/css-syntax-patches-for-csstree@^1.0.28": - version "1.1.6" - resolved "https://registry.yarnpkg.com/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.1.6.tgz#3a1e91cefb65b4a74ae7dd78c9b2dd60cdbf3ad4" - integrity sha512-TcJCWFbXLPpJYq6z7bfOyjWYJDiDg2/I4gyUC9pqPNqHFRIey0EB0q0L5cSnQDfWJg8Jd6VadakxdIez/3zkqQ== +"@csstools/css-syntax-patches-for-csstree@^1.1.3": + version "1.1.7" + resolved "https://registry.yarnpkg.com/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.1.7.tgz#67a65f4b26766c315ddfd2bdb89ac4c53fdd51e7" + integrity sha512-fQ+05118eQS1cofO3aJpB5efgpBZMvIzwr/sbC8kDLVA5XLG8q1kJV5yzrUAI1f7lvhPnm8fgIjzFB8/O/5Dig== "@csstools/css-tokenizer@^4.0.0": version "4.0.0" @@ -819,261 +845,131 @@ dependencies: tslib "^2.4.0" -"@esbuild/aix-ppc64@0.27.7": - version "0.27.7" - resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.27.7.tgz#82b74f92aa78d720b714162939fb248c90addf53" - integrity sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg== - "@esbuild/aix-ppc64@0.28.1": version "0.28.1" resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz#7a01a8d2ec2fbb2dac78adad09b0fa781e4082be" integrity sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ== -"@esbuild/android-arm64@0.27.7": - version "0.27.7" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.27.7.tgz#f78cb8a3121fc205a53285adb24972db385d185d" - integrity sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ== - "@esbuild/android-arm64@0.28.1": version "0.28.1" resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.28.1.tgz#b540a27d14e4afd058496a4dbec4d3f414db110a" integrity sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg== -"@esbuild/android-arm@0.27.7": - version "0.27.7" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.27.7.tgz#593e10a1450bbfcac6cb321f61f468453bac209d" - integrity sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ== - "@esbuild/android-arm@0.28.1": version "0.28.1" resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.28.1.tgz#704bd297de6d762de54eabbeafbf55f6756abe2f" integrity sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ== -"@esbuild/android-x64@0.27.7": - version "0.27.7" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.27.7.tgz#453143d073326033d2d22caf9e48de4bae274b07" - integrity sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg== - "@esbuild/android-x64@0.28.1": version "0.28.1" resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.28.1.tgz#d1cb166d34b0fbf0fe8ab460a5594f24a378701e" integrity sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng== -"@esbuild/darwin-arm64@0.27.7": - version "0.27.7" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.27.7.tgz#6f23000fb9b40b7e04b7d0606c0693bd0632f322" - integrity sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw== - "@esbuild/darwin-arm64@0.28.1": version "0.28.1" resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.28.1.tgz#1034b26457fc886368fe61bbd09f653f6afa8e54" integrity sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q== -"@esbuild/darwin-x64@0.27.7": - version "0.27.7" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.27.7.tgz#27393dd18bb1263c663979c5f1576e00c2d024be" - integrity sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ== - "@esbuild/darwin-x64@0.28.1": version "0.28.1" resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.28.1.tgz#65556a432a1e4d72032d8218c1932fcca1a49772" integrity sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ== -"@esbuild/freebsd-arm64@0.27.7": - version "0.27.7" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.7.tgz#22e4638fa502d1c0027077324c97640e3adf3a62" - integrity sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w== - "@esbuild/freebsd-arm64@0.28.1": version "0.28.1" resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.1.tgz#2e61e0592f9030d7e3dae18ee25ebc535918aef6" integrity sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw== -"@esbuild/freebsd-x64@0.27.7": - version "0.27.7" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.27.7.tgz#9224b8e4fea924ce2194e3efc3e9aebf822192d6" - integrity sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ== - "@esbuild/freebsd-x64@0.28.1": version "0.28.1" resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.28.1.tgz#c95ec289959ef8079c4dca817a1e2c4be66b9bd3" integrity sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ== -"@esbuild/linux-arm64@0.27.7": - version "0.27.7" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.27.7.tgz#4f5d1c27527d817b35684ae21419e57c2bda0966" - integrity sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A== - "@esbuild/linux-arm64@0.28.1": version "0.28.1" resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.28.1.tgz#40b22175dda06182f3ee8141186c5ff304c4a717" integrity sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g== -"@esbuild/linux-arm@0.27.7": - version "0.27.7" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.27.7.tgz#b9e9d070c8c1c0449cf12b20eac37d70a4595921" - integrity sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA== - "@esbuild/linux-arm@0.28.1": version "0.28.1" resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.28.1.tgz#c09a0f67917592ac0de892a9be4d3814debd2a6c" integrity sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ== -"@esbuild/linux-ia32@0.27.7": - version "0.27.7" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.27.7.tgz#3f80fb696aa96051a94047f35c85b08b21c36f9e" - integrity sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg== - "@esbuild/linux-ia32@0.28.1": version "0.28.1" resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.28.1.tgz#a580f9c676797833891e519fc7a1337c8afd8db3" integrity sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w== -"@esbuild/linux-loong64@0.27.7": - version "0.27.7" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.27.7.tgz#9be1f2c28210b13ebb4156221bba356fe1675205" - integrity sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q== - "@esbuild/linux-loong64@0.28.1": version "0.28.1" resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.28.1.tgz#46452cf321dc7f9e91c2fa780a56bb56e79cd68b" integrity sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg== -"@esbuild/linux-mips64el@0.27.7": - version "0.27.7" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.27.7.tgz#4ab5ee67a3dfcbcb5e8fd7883dae6e735b1163b8" - integrity sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw== - "@esbuild/linux-mips64el@0.28.1": version "0.28.1" resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.28.1.tgz#4211b3184dd6608f53dcb22e39f5d34ee08852c8" integrity sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ== -"@esbuild/linux-ppc64@0.27.7": - version "0.27.7" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.27.7.tgz#dac78c689f6499459c4321e5c15032c12307e7ea" - integrity sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ== - "@esbuild/linux-ppc64@0.28.1": version "0.28.1" resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.28.1.tgz#697857c2a61cb9b0b6bb6652e40c1dc5e1ca8e5d" integrity sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ== -"@esbuild/linux-riscv64@0.27.7": - version "0.27.7" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.27.7.tgz#050f7d3b355c3a98308e935bc4d6325da91b0027" - integrity sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ== - "@esbuild/linux-riscv64@0.28.1": version "0.28.1" resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.28.1.tgz#d192943eb146a40ac4c6497d0cf7be35b986bf08" integrity sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ== -"@esbuild/linux-s390x@0.27.7": - version "0.27.7" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.27.7.tgz#d61f715ce61d43fe5844ad0d8f463f88cbe4fef6" - integrity sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw== - "@esbuild/linux-s390x@0.28.1": version "0.28.1" resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.28.1.tgz#acea0356da0e0ebc08f97cf7b9c2e401e1e648dc" integrity sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag== -"@esbuild/linux-x64@0.27.7": - version "0.27.7" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.27.7.tgz#ca8e1aa478fc8209257bf3ac8f79c4dc2982f32a" - integrity sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA== - "@esbuild/linux-x64@0.28.1": version "0.28.1" resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.28.1.tgz#6f0c3ce0cb64c534b70c4c45ecb2c16d34e35dfd" integrity sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA== -"@esbuild/netbsd-arm64@0.27.7": - version "0.27.7" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.7.tgz#1650f2c1b948deeb3ef948f2fc30614723c09690" - integrity sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w== - "@esbuild/netbsd-arm64@0.28.1": version "0.28.1" resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.1.tgz#8bcd77077a0dce3378b574fedb26d2a253b73d36" integrity sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw== -"@esbuild/netbsd-x64@0.27.7": - version "0.27.7" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.27.7.tgz#65772ab342c4b3319bf0705a211050aac1b6e320" - integrity sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw== - "@esbuild/netbsd-x64@0.28.1": version "0.28.1" resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.28.1.tgz#e7fb2a01e99c830c94e6623cd9fefb4c8fb58347" integrity sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg== -"@esbuild/openbsd-arm64@0.27.7": - version "0.27.7" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.7.tgz#37ed7cfa66549d7955852fce37d0c3de4e715ea1" - integrity sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A== - "@esbuild/openbsd-arm64@0.28.1": version "0.28.1" resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.1.tgz#c52909372db8b86e2c55e05a8940033b5660a3b2" integrity sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q== -"@esbuild/openbsd-x64@0.27.7": - version "0.27.7" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.27.7.tgz#01bf3d385855ef50cb33db7c4b52f957c34cd179" - integrity sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg== - "@esbuild/openbsd-x64@0.28.1": version "0.28.1" resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.28.1.tgz#c427b9be5a64c262ff9a7eb70b5fbbaadf446c6c" integrity sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw== -"@esbuild/openharmony-arm64@0.27.7": - version "0.27.7" - resolved "https://registry.yarnpkg.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.7.tgz#6c1f94b34086599aabda4eac8f638294b9877410" - integrity sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw== - "@esbuild/openharmony-arm64@0.28.1": version "0.28.1" resolved "https://registry.yarnpkg.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.1.tgz#dc9b147baca2e6c4b3c85571741ef4860a489097" integrity sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg== -"@esbuild/sunos-x64@0.27.7": - version "0.27.7" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.27.7.tgz#4b0dd17ae0a6941d2d0fd35a906392517071a90d" - integrity sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA== - "@esbuild/sunos-x64@0.28.1": version "0.28.1" resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.28.1.tgz#ce866d12df13c15e4c99f073a3d466f6e0649b3a" integrity sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ== -"@esbuild/win32-arm64@0.27.7": - version "0.27.7" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.27.7.tgz#34193ab5565d6ff68ca928ac04be75102ccb2e77" - integrity sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA== - "@esbuild/win32-arm64@0.28.1": version "0.28.1" resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.28.1.tgz#7468e3692d01d629d5941e5d83817bb80f9e39b4" integrity sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA== -"@esbuild/win32-ia32@0.27.7": - version "0.27.7" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.27.7.tgz#eb67f0e4482515d8c1894ede631c327a4da9fc4d" - integrity sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw== - "@esbuild/win32-ia32@0.28.1": version "0.28.1" resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.28.1.tgz#a5bc0063fb2bcab6d0ed63f2a1537958bc269ec6" integrity sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg== -"@esbuild/win32-x64@0.27.7": - version "0.27.7" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.27.7.tgz#8fe30b3088b89b4873c3a6cc87597ae3920c0a8b" - integrity sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg== - "@esbuild/win32-x64@0.28.1": version "0.28.1" resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.28.1.tgz#10064ee44f4347b90c9a02b446bbf80a91632b12" @@ -1100,10 +996,10 @@ debug "^4.3.1" minimatch "^10.2.4" -"@eslint/config-helpers@^0.6.0": - version "0.6.0" - resolved "https://registry.yarnpkg.com/@eslint/config-helpers/-/config-helpers-0.6.0.tgz#ef9a36881d39dfd5dbeac22b0da997fabfb08b03" - integrity sha512-ii6Bw9jJ2zi2cWA2Z+9/QZ/+3DX6kwaV5Q986D/CdP3Lap3w/pgQZ373FV7byY/i7L4IRH/G43I5dz1ClsCbpA== +"@eslint/config-helpers@^0.7.0": + version "0.7.0" + resolved "https://registry.yarnpkg.com/@eslint/config-helpers/-/config-helpers-0.7.0.tgz#09ee4aa07b73f059ec2d4c74bf4b2ff02b322377" + integrity sha512-DObd/KKUsU+FaFv4PLxSRenpXfQWmPXXP3pPZ6/K1PCrMu2vQpMDMuQe/BqYeoLcz8ro0bVDF1RxOJgfVEdhUw== dependencies: "@eslint/core" "^1.2.1" @@ -1132,7 +1028,7 @@ "@eslint/core" "^1.2.1" levn "^0.4.1" -"@exodus/bytes@^1.11.0", "@exodus/bytes@^1.6.0": +"@exodus/bytes@^1.11.0", "@exodus/bytes@^1.15.0", "@exodus/bytes@^1.6.0": version "1.15.1" resolved "https://registry.yarnpkg.com/@exodus/bytes/-/bytes-1.15.1.tgz#b13bc464ca162c17abf0837fb3a11aeab79e45d1" integrity sha512-S6mL0yNB/Abt9Ei4tq8gDhcczc4S3+vQ4ra7vxnAf+YHC02srtqxKKZghx2Dq6p0e66THKwR6r8N6P95wEty7Q== @@ -2090,13 +1986,13 @@ resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.62.2.tgz#3671ce3f9b928d5c01f879792d5c0b60ae14d4ad" integrity sha512-BfzEnDJOt9T8M989/lA37EcJgat01wLRnoi5dQf3QzOH7jzpqTAzdDbVfRljVr5r+jzKqpbHeyOfAaXxAd0PAA== -"@schematics/angular@22.0.7": - version "22.0.7" - resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-22.0.7.tgz#4b91930d27096b5e2205d4aaad627bbd2b7f6908" - integrity sha512-/GVLhB5zaxYGIaC4GFfsfk81SDq9ht0HbEHhHB+t1SqNPV8gnULDV2ZE0Cg+LGj+3YnPtSwpb7tS0vaHUcihVg== +"@schematics/angular@22.0.8": + version "22.0.8" + resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-22.0.8.tgz#6c9aefbddcc4577da37fd1fbed8dc467afe78472" + integrity sha512-zD2WLe15SoKYyBZH1GTLLaVABNNObHkH4soQqXb9agN6zkrpE0naeWaBSFSWD+95VKCiMZl8LkiOXvK+6b8S6w== dependencies: - "@angular-devkit/core" "22.0.7" - "@angular-devkit/schematics" "22.0.7" + "@angular-devkit/core" "22.0.8" + "@angular-devkit/schematics" "22.0.8" jsonc-parser "3.3.1" typescript "6.0.3" @@ -2354,38 +2250,29 @@ dependencies: undici-types "~7.18.0" -"@typescript-eslint/eslint-plugin@8.62.1": - version "8.62.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.62.1.tgz#1736dcdca6cae3359d818456a47d18b674761f7f" - integrity sha512-4EQM77WgVNxj7OkL/5b/D/xZsw00G577+UriYTC7JF5opcF3T2AuoeY7ueLaZgSVjSgCS6yOAJB5bRGLPSJUzA== +"@typescript-eslint/eslint-plugin@8.65.0": + version "8.65.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.65.0.tgz#0a58df6fea8c0bf6b396f518077099bc8b762bb5" + integrity sha512-IEgob78X12rHpUmtcwFsXhZdVGJtwTVP8FiCLZkR6GlYVrl2PcuB+KhCE5BlVC/eQpQnu8WXRtkHZuPar+gCRA== dependencies: "@eslint-community/regexpp" "^4.12.2" - "@typescript-eslint/scope-manager" "8.62.1" - "@typescript-eslint/type-utils" "8.62.1" - "@typescript-eslint/utils" "8.62.1" - "@typescript-eslint/visitor-keys" "8.62.1" + "@typescript-eslint/scope-manager" "8.65.0" + "@typescript-eslint/type-utils" "8.65.0" + "@typescript-eslint/utils" "8.65.0" + "@typescript-eslint/visitor-keys" "8.65.0" ignore "^7.0.5" natural-compare "^1.4.0" ts-api-utils "^2.5.0" -"@typescript-eslint/parser@8.62.1": - version "8.62.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.62.1.tgz#d3f7ba18f1bf78bfb7256fea021d1927b48e7080" - integrity sha512-sPhE4iHuJDSvoAiec+Ro8JyXw8f0ql13HFR82P99nCm9GwTEKG0KYLvDe6REk8BCXuit6vJAv/Yxg5ABaNS2rA== +"@typescript-eslint/parser@8.65.0": + version "8.65.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.65.0.tgz#5295c1058c0a1dd746ef28baaf9c0341dbdf03dc" + integrity sha512-CZ4nMxWwgu1HEEFNkeaCptra9QCtkmKdgf3sWh1rl1trIhmxLilgTV4cwcbQ4wemnT4sWQN8CaKOmdYx+g2gMA== dependencies: - "@typescript-eslint/scope-manager" "8.62.1" - "@typescript-eslint/types" "8.62.1" - "@typescript-eslint/typescript-estree" "8.62.1" - "@typescript-eslint/visitor-keys" "8.62.1" - debug "^4.4.3" - -"@typescript-eslint/project-service@8.62.1": - version "8.62.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.62.1.tgz#78d880eb1cf6859b5ec263d04f95403e9f90ae47" - integrity sha512-yQ3RgY5RkSBpsNS1Bx/JQEcA24FOSdfGktoyprAr5u18390UQdtVcfnEv4nIrIshNnavlVyZBKxQwT1fIAE6cg== - dependencies: - "@typescript-eslint/tsconfig-utils" "^8.62.1" - "@typescript-eslint/types" "^8.62.1" + "@typescript-eslint/scope-manager" "8.65.0" + "@typescript-eslint/types" "8.65.0" + "@typescript-eslint/typescript-estree" "8.65.0" + "@typescript-eslint/visitor-keys" "8.65.0" debug "^4.4.3" "@typescript-eslint/project-service@8.64.0": @@ -2397,13 +2284,14 @@ "@typescript-eslint/types" "^8.64.0" debug "^4.4.3" -"@typescript-eslint/scope-manager@8.62.1": - version "8.62.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.62.1.tgz#7ee65e9a6eb3ccdc4816593a4ff38840306de88a" - integrity sha512-r4d249KbQ1SFdpeStvob8Ih6aPPIzfqllPVOtvhve6ZcpuVcYo5/7zUWckKpHE7StASX4kTKZTLf0WQm/wPkcg== +"@typescript-eslint/project-service@8.65.0": + version "8.65.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.65.0.tgz#65fbbc9a1591abffaeab5513200f848271cb0aa5" + integrity sha512-SxnPhbTsGahizDgbu7oqFH/xVtzIqMd/s+WtnSxNxJZJpLbdT5IPdzg8EZxO3+PoKahXmwJLeNQOpKJb3/bi7Q== dependencies: - "@typescript-eslint/types" "8.62.1" - "@typescript-eslint/visitor-keys" "8.62.1" + "@typescript-eslint/tsconfig-utils" "^8.65.0" + "@typescript-eslint/types" "^8.65.0" + debug "^4.4.3" "@typescript-eslint/scope-manager@8.64.0": version "8.64.0" @@ -2413,51 +2301,44 @@ "@typescript-eslint/types" "8.64.0" "@typescript-eslint/visitor-keys" "8.64.0" -"@typescript-eslint/tsconfig-utils@8.62.1": - version "8.62.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.62.1.tgz#e2b5f24fe721044189cb7e81117c96d75979d627" - integrity sha512-xadytJqX9vJVQ2fdQjkcIVigwaOJNWkpjdLt6cEQ+xPnrI1fkp+/jZE/I97k9KUjqtpd25i0HeyZf3T6dutv2g== +"@typescript-eslint/scope-manager@8.65.0": + version "8.65.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.65.0.tgz#9547202ce7e608e7b6283df585703b980a0ea70d" + integrity sha512-Esbl8OSYiVxBokYgWPf7VVWg/BE798wXhimnn9ML9Pt5qoDf8bfQlgjlKXR/k98+AcNzlLKYrpCcrcuZ9DZLgg== + dependencies: + "@typescript-eslint/types" "8.65.0" + "@typescript-eslint/visitor-keys" "8.65.0" -"@typescript-eslint/tsconfig-utils@8.64.0", "@typescript-eslint/tsconfig-utils@^8.62.1", "@typescript-eslint/tsconfig-utils@^8.64.0": +"@typescript-eslint/tsconfig-utils@8.64.0", "@typescript-eslint/tsconfig-utils@^8.64.0": version "8.64.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.64.0.tgz#c62ac8ea9173c3cac8b38b8e66e30a046b548851" integrity sha512-2yo8rRNKuzbVWQp5kslhANqZ2uDAeROQHBRZNPu8JDsHmeFNj/XJJhX/FhNUWmkHHvoNsKa6+tHJiig87EzsQw== -"@typescript-eslint/type-utils@8.62.1": - version "8.62.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.62.1.tgz#ebd30b13bacb13070917259a23309cf644121f9a" - integrity sha512-aXM5xlqXiTxPibXB93cLAURfT3rlizf7uMXISCXy66Isr/9hISJx3yDsKl0L7lKa51b8JpFuNKby0/O0pEm9jg== +"@typescript-eslint/tsconfig-utils@8.65.0", "@typescript-eslint/tsconfig-utils@^8.65.0": + version "8.65.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.65.0.tgz#36f168fcdbb1295f7446ff0379667f98c3cf1bf3" + integrity sha512-j6GzGqCiRdA7Qhur2VVmKZAkBLfnHFQfx4TaJGL9RMveZqCo48jSHHO0DTgizEnGhtWnqmbtCUSrqSkdiY/0Hg== + +"@typescript-eslint/type-utils@8.65.0": + version "8.65.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.65.0.tgz#d316d7522d93cff4cd14f305e02f3df2d804f9c1" + integrity sha512-YjaZ7PRI5qY7ax2L3PbvX0rRyGtipAReCWs0mhhDBHjH/vl0g0BonaGXrKdKpMbIIsMIwDgbk/xzkBTyAltS5g== dependencies: - "@typescript-eslint/types" "8.62.1" - "@typescript-eslint/typescript-estree" "8.62.1" - "@typescript-eslint/utils" "8.62.1" + "@typescript-eslint/types" "8.65.0" + "@typescript-eslint/typescript-estree" "8.65.0" + "@typescript-eslint/utils" "8.65.0" debug "^4.4.3" ts-api-utils "^2.5.0" -"@typescript-eslint/types@8.62.1": - version "8.62.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.62.1.tgz#c58be954e483b2fc98275374d5bcb40b99842dc1" - integrity sha512-ooCzJFaf+Hg+uG6fA3NRFGuFjlfNlDhBthbv4ZPU/0elCAFUfnyXUvf/WOpHz/jYwSmvU2GkR2LtyUfy1AxZ1Q== - -"@typescript-eslint/types@8.64.0", "@typescript-eslint/types@^8.0.0", "@typescript-eslint/types@^8.62.1", "@typescript-eslint/types@^8.64.0": +"@typescript-eslint/types@8.64.0", "@typescript-eslint/types@^8.0.0", "@typescript-eslint/types@^8.64.0": version "8.64.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.64.0.tgz#b41f8ef5dd40616908658b991197a9d486cda60b" integrity sha512-qjhfuTfLXjA4IOzXvz0rTjT01BqEiIgPoUeMwiEjnaHKJMTNo8rH5pYW1a2L/0Dnux2fPC85AeyJoWaGa8WxTA== -"@typescript-eslint/typescript-estree@8.62.1": - version "8.62.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.62.1.tgz#98c1bb17635d5b026b24193a8d29188ac64380ff" - integrity sha512-xMcW9oP9u7fAMXYs9A65CVmtLQe2r//oXINHfi8HV+oiqhih17sbLdhXr4540YWlgpDKQdY854OL5ZrdCiQsAA== - dependencies: - "@typescript-eslint/project-service" "8.62.1" - "@typescript-eslint/tsconfig-utils" "8.62.1" - "@typescript-eslint/types" "8.62.1" - "@typescript-eslint/visitor-keys" "8.62.1" - debug "^4.4.3" - minimatch "^10.2.2" - semver "^7.7.3" - tinyglobby "^0.2.15" - ts-api-utils "^2.5.0" +"@typescript-eslint/types@8.65.0", "@typescript-eslint/types@^8.65.0": + version "8.65.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.65.0.tgz#3e86738416a777c8b8925ab46745f48ecf904c9f" + integrity sha512-JSSwWNy+H0E/01jJEM+hrX6N0OFDzFzeIhHFSAS01tlVaevpG8cFyYRPhS5yjGOvBUx3sqQHVMjCL1CAZZMxBg== "@typescript-eslint/typescript-estree@8.64.0": version "8.64.0" @@ -2474,15 +2355,30 @@ tinyglobby "^0.2.15" ts-api-utils "^2.5.0" -"@typescript-eslint/utils@8.62.1": - version "8.62.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.62.1.tgz#1622b75c7e6df308181dd0b44855dc4228da0457" - integrity sha512-sHtbPfuKNZCG+ih8SyjjucqRntSVmp8XgL5u6o9mAhiSn8ds5o/M/XdM0abweme2Tln3szOstOrZ9OXitvPh0g== +"@typescript-eslint/typescript-estree@8.65.0": + version "8.65.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.65.0.tgz#f1f514808f6aa713e2d678ae8ff592a65e1632af" + integrity sha512-JboAE2swaYt4tb1fHhHTABE2K+OLy09XfcTbhnk4Pw96f9dd2e9iYsJ28gBggHlo5z5x1rkyWvcPoTuNTd4oGg== + dependencies: + "@typescript-eslint/project-service" "8.65.0" + "@typescript-eslint/tsconfig-utils" "8.65.0" + "@typescript-eslint/types" "8.65.0" + "@typescript-eslint/visitor-keys" "8.65.0" + debug "^4.4.3" + minimatch "^10.2.2" + semver "^7.7.3" + tinyglobby "^0.2.15" + ts-api-utils "^2.5.0" + +"@typescript-eslint/utils@8.65.0": + version "8.65.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.65.0.tgz#afedd974a0c8deeef553b509df5800bafd615a72" + integrity sha512-gXiwIHsYreboxeJucHKPvgwl7dXt50mF8s1/c00cP/WoVTyWKFdtfhRWwZiXYFU5H2O8vVoSLNrexFZjYS/SGA== dependencies: "@eslint-community/eslint-utils" "^4.9.1" - "@typescript-eslint/scope-manager" "8.62.1" - "@typescript-eslint/types" "8.62.1" - "@typescript-eslint/typescript-estree" "8.62.1" + "@typescript-eslint/scope-manager" "8.65.0" + "@typescript-eslint/types" "8.65.0" + "@typescript-eslint/typescript-estree" "8.65.0" "@typescript-eslint/utils@^8.0.0": version "8.64.0" @@ -2494,14 +2390,6 @@ "@typescript-eslint/types" "8.64.0" "@typescript-eslint/typescript-estree" "8.64.0" -"@typescript-eslint/visitor-keys@8.62.1": - version "8.62.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.62.1.tgz#499657d77ffafb8a99eb1d6c97847ca430234722" - integrity sha512-4g3BLxfdTMy8iZG0MaBkadnlRrCJ74cQiFbyEVMrkwIoqdyaXXQM22cotDvrl4x28wgIZ9rEJRoM+mmhSJpJ1g== - dependencies: - "@typescript-eslint/types" "8.62.1" - eslint-visitor-keys "^5.0.0" - "@typescript-eslint/visitor-keys@8.64.0": version "8.64.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.64.0.tgz#7a08421d10e54960733352cd7c95fab1784e8473" @@ -2510,6 +2398,14 @@ "@typescript-eslint/types" "8.64.0" eslint-visitor-keys "^5.0.0" +"@typescript-eslint/visitor-keys@8.65.0": + version "8.65.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.65.0.tgz#e3704c13cb4a1c22454c1abf28ff4737e15018c6" + integrity sha512-8C71BQkGjiMmXtop7pHVJu1l2NNShFdkCyD6a2ezzs5vU/L3LRtb69EtcteFwz0mYMPzIgOw0n6OV4VBUWZd7A== + dependencies: + "@typescript-eslint/types" "8.65.0" + eslint-visitor-keys "^5.0.0" + "@vitejs/plugin-basic-ssl@2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-2.3.0.tgz#f505b1c197d8cb4fd6e213a78847574ecc51e2f9" @@ -2723,7 +2619,7 @@ auto-changelog@^2.6.0: parse-github-url "^1.0.4" semver "^7.8.1" -axe-core@^4.10.3: +axe-core@^4.12.1: version "4.12.1" resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.12.1.tgz#69fe2bf6dfc0b24973af91b1d8e945f79e1b7c44" integrity sha512-s7iGf5GaVMxEG0ENN9x+xTr7GFZCb1ZP/1uATUpCEK2X78nDB3RwbtFCo9pGAf9ru+VwoQ464DkaLEeRM08wJA== @@ -3030,7 +2926,7 @@ css-select@^6.0.0: domutils "^3.2.2" nth-check "^2.1.1" -css-tree@^3.0.0, css-tree@^3.1.0: +css-tree@^3.0.0, css-tree@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-3.2.1.tgz#86cac7011561272b30e6b1e042ba6ce047aa7518" integrity sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA== @@ -3043,16 +2939,6 @@ css-what@^7.0.0: resolved "https://registry.yarnpkg.com/css-what/-/css-what-7.0.0.tgz#5796fbebd43571d73c60ba0dd7a6e75dd0d22fe4" integrity sha512-wD5oz5xibMOPHzy13CyGmogB3phdvcDaB5t0W/Nr5Z2O/agcB8YwOz6e2Lsp10pNDzBoDO9nVa3RGs/2BttpHQ== -cssstyle@^6.0.1: - version "6.2.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-6.2.0.tgz#c41b59955c19c7a1223352d67ca462750204ad0f" - integrity sha512-Fm5NvhYathRnXNVndkUsCCuR63DCLVVwGOOwQw782coXFi5HhkXdu289l59HlXZBawsyNccXfWRYvLzcDCdDig== - dependencies: - "@asamuzakjp/css-color" "^5.0.1" - "@csstools/css-syntax-patches-for-csstree" "^1.0.28" - css-tree "^3.1.0" - lru-cache "^11.2.6" - data-urls@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-7.0.0.tgz#6dce8b63226a1ecfdd907ce18a8ccfb1eee506d3" @@ -3214,7 +3100,7 @@ es-toolkit@^1.46.0: resolved "https://registry.yarnpkg.com/es-toolkit/-/es-toolkit-1.49.0.tgz#93c5b031865792fc03cbf5bd20c132a4f976a52a" integrity sha512-G5iZ6Pc/FNRY/soKZHC+TxGDD83rHUDXxzaWhGCX44vAv/tMs56WMusnm/KMNK+luUPsgA9U28cGr4RDlSzL2g== -esbuild@0.28.1, esbuild@~0.28.0: +esbuild@0.28.1, "esbuild@^0.27.0 || ^0.28.0", esbuild@~0.28.0: version "0.28.1" resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.28.1.tgz#ef45b4634c9c9d97a296aea4114a5f9840f95578" integrity sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw== @@ -3246,38 +3132,6 @@ esbuild@0.28.1, esbuild@~0.28.0: "@esbuild/win32-ia32" "0.28.1" "@esbuild/win32-x64" "0.28.1" -esbuild@^0.27.0: - version "0.27.7" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.27.7.tgz#bcadce22b2f3fd76f257e3a64f83a64986fea11f" - integrity sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w== - optionalDependencies: - "@esbuild/aix-ppc64" "0.27.7" - "@esbuild/android-arm" "0.27.7" - "@esbuild/android-arm64" "0.27.7" - "@esbuild/android-x64" "0.27.7" - "@esbuild/darwin-arm64" "0.27.7" - "@esbuild/darwin-x64" "0.27.7" - "@esbuild/freebsd-arm64" "0.27.7" - "@esbuild/freebsd-x64" "0.27.7" - "@esbuild/linux-arm" "0.27.7" - "@esbuild/linux-arm64" "0.27.7" - "@esbuild/linux-ia32" "0.27.7" - "@esbuild/linux-loong64" "0.27.7" - "@esbuild/linux-mips64el" "0.27.7" - "@esbuild/linux-ppc64" "0.27.7" - "@esbuild/linux-riscv64" "0.27.7" - "@esbuild/linux-s390x" "0.27.7" - "@esbuild/linux-x64" "0.27.7" - "@esbuild/netbsd-arm64" "0.27.7" - "@esbuild/netbsd-x64" "0.27.7" - "@esbuild/openbsd-arm64" "0.27.7" - "@esbuild/openbsd-x64" "0.27.7" - "@esbuild/openharmony-arm64" "0.27.7" - "@esbuild/sunos-x64" "0.27.7" - "@esbuild/win32-arm64" "0.27.7" - "@esbuild/win32-ia32" "0.27.7" - "@esbuild/win32-x64" "0.27.7" - escalade@^3.1.1, escalade@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" @@ -3313,15 +3167,15 @@ eslint-visitor-keys@^5.0.0, eslint-visitor-keys@^5.0.1: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz#9e3c9489697824d2d4ce3a8ad12628f91e9f59be" integrity sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA== -eslint@^10.6.0: - version "10.7.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-10.7.0.tgz#cd3b8022f3b1e3b183760d90dfc58e9d3644106b" - integrity sha512-GVTD7s1vdIl6UYvAfriOPeY1Df8LIZjfofLvHwde+erDHGGuHyuM6xoxRxmHiebhYuD2p1vN4wWh0XzPARSGDQ== +eslint@^10.8.0: + version "10.8.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-10.8.0.tgz#e6d19907a3f090a53a022261ba34c5ff6d04908b" + integrity sha512-nuKKvN+oIBO0koN7Tm7dlkmnkc21mtt0QJLwAKzjLq14y6lRTdVG36MZHJ8eQHwdJMwZbQNMlPOYedMq/oVJvQ== dependencies: "@eslint-community/eslint-utils" "^4.8.0" "@eslint-community/regexpp" "^4.12.2" "@eslint/config-array" "^0.23.5" - "@eslint/config-helpers" "^0.6.0" + "@eslint/config-helpers" "^0.7.0" "@eslint/core" "^1.2.1" "@eslint/plugin-kit" "^0.7.2" "@humanfs/node" "^0.16.6" @@ -3345,7 +3199,7 @@ eslint@^10.6.0: imurmurhash "^0.1.4" is-glob "^4.0.0" json-stable-stringify-without-jsonify "^1.0.1" - minimatch "^10.2.4" + minimatch "^10.2.5" natural-compare "^1.4.0" optionator "^0.9.3" @@ -3557,10 +3411,10 @@ fresh@^2.0.0: resolved "https://registry.yarnpkg.com/fresh/-/fresh-2.0.0.tgz#8dd7df6a1b3a1b3a5cf186c05a5dd267622635a4" integrity sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A== -fs-extra@^11.3.6: - version "11.3.6" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.3.6.tgz#f7cb80e9df550cd1db6f537fa5cdd568d3e70d10" - integrity sha512-w8ZNZr2mKIc7qeNaQ9AVPT1+iFaI+Avd4xudVOvdDJ8VytREi1Ft5Ih7hd9jjehod8vAM5GMsfQ/TpPf4EyoEA== +fs-extra@^11.4.0: + version "11.4.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.4.0.tgz#f88ed6d180ac9e14b61b08e679468f0b1b6b4730" + integrity sha512-EQsFzMUJkCKGr1ePqlYADkIUmHW1s3ZXr5Yqy6wbGrfUCphpl2maM/kyOIRA2HpP3AaFQTZXD4ldjek+nccddA== dependencies: graceful-fs "^4.2.0" jsonfile "^6.0.1" @@ -3729,7 +3583,7 @@ http-errors@^2.0.0, http-errors@^2.0.1, http-errors@~2.0.1: statuses "~2.0.2" toidentifier "~1.0.1" -http-proxy-agent@^7.0.0, http-proxy-agent@^7.0.2: +http-proxy-agent@^7.0.0: version "7.0.2" resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e" integrity sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig== @@ -3745,7 +3599,7 @@ https-proxy-agent@9.0.0: agent-base "9.0.0" debug "^4.3.4" -https-proxy-agent@^7.0.1, https-proxy-agent@^7.0.6: +https-proxy-agent@^7.0.1: version "7.0.6" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz#da8dfeac7da130b05c2ba4b59c9b6cd66611a6b9" integrity sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw== @@ -3925,31 +3779,31 @@ js-yaml@^4.1.0: dependencies: argparse "^2.0.1" -jsdom@^28.0.0: - version "28.1.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-28.1.0.tgz#ac4203e58fd24d7b0f34359ab00d6d9caebd4b62" - integrity sha512-0+MoQNYyr2rBHqO1xilltfDjV9G7ymYGlAUazgcDLQaUf8JDHbuGwsxN6U9qWaElZ4w1B2r7yEGIL3GdeW3Rug== +jsdom@^29.1.1: + version "29.1.1" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-29.1.1.tgz#5b9704906f3cd510c34aa941ae2f8f7f8179df01" + integrity sha512-ECi4Fi2f7BdJtUKTflYRTiaMxIB0O6zfR1fX0GXpUrf6flp8QIYn1UT20YQqdSOfk2dfkCwS8LAFoJDEppNK5Q== dependencies: - "@acemir/cssom" "^0.9.31" - "@asamuzakjp/dom-selector" "^6.8.1" + "@asamuzakjp/css-color" "^5.1.11" + "@asamuzakjp/dom-selector" "^7.1.1" "@bramus/specificity" "^2.4.2" - "@exodus/bytes" "^1.11.0" - cssstyle "^6.0.1" + "@csstools/css-syntax-patches-for-csstree" "^1.1.3" + "@exodus/bytes" "^1.15.0" + css-tree "^3.2.1" data-urls "^7.0.0" decimal.js "^10.6.0" html-encoding-sniffer "^6.0.0" - http-proxy-agent "^7.0.2" - https-proxy-agent "^7.0.6" is-potential-custom-element-name "^1.0.1" - parse5 "^8.0.0" + lru-cache "^11.3.5" + parse5 "^8.0.1" saxes "^6.0.0" symbol-tree "^3.2.4" - tough-cookie "^6.0.0" - undici "^7.21.0" + tough-cookie "^6.0.1" + undici "^7.25.0" w3c-xmlserializer "^5.0.0" webidl-conversions "^8.0.1" whatwg-mimetype "^5.0.0" - whatwg-url "^16.0.0" + whatwg-url "^16.0.1" xml-name-validator "^5.0.0" jsesc@^3.0.2: @@ -4167,7 +4021,7 @@ log-update@^6.1.0: strip-ansi "^7.1.0" wrap-ansi "^9.0.0" -lru-cache@^11.0.0, lru-cache@^11.1.0, lru-cache@^11.2.1, lru-cache@^11.2.6: +lru-cache@^11.0.0, lru-cache@^11.1.0, lru-cache@^11.2.1, lru-cache@^11.3.5: version "11.5.2" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-11.5.2.tgz#00e16665c90c620fba14a3c368732a976493f760" integrity sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g== @@ -4204,10 +4058,10 @@ make-fetch-happen@^15.0.0, make-fetch-happen@^15.0.1, make-fetch-happen@^15.0.4: proc-log "^6.0.0" ssri "^13.0.0" -marked@^18.0.6: - version "18.0.6" - resolved "https://registry.yarnpkg.com/marked/-/marked-18.0.6.tgz#7faf26fd580b9c8daa75984f18db25631fc4ad63" - integrity sha512-MrV5puXBfuiy6wl6DLaq3BtIJQAJToAd5zt/ZKhRfGRAuFPALE7/4Y7jnxRQoEgK/pBgurGqLyAuRgZ2xOjr6w== +marked@^18.0.7: + version "18.0.7" + resolved "https://registry.yarnpkg.com/marked/-/marked-18.0.7.tgz#6d8d4dd777730263e7e25bedad56a26bb2809232" + integrity sha512-iDVQ5ldaiKXn6b2JroX5kgRfmwgqolW7NpaEzTl1k/2Zh1njIEN9yniyLV/mOvWwtsE8OGgkjsCYvijuPk1dtA== math-intrinsics@^1.1.0: version "1.1.0" @@ -4246,7 +4100,7 @@ mimic-function@^5.0.0: resolved "https://registry.yarnpkg.com/mimic-function/-/mimic-function-5.0.1.tgz#acbe2b3349f99b9deaca7fb70e48b83e94e67076" integrity sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA== -minimatch@^10.0.3, minimatch@^10.1.1, minimatch@^10.2.2, minimatch@^10.2.4: +minimatch@^10.0.3, minimatch@^10.1.1, minimatch@^10.2.2, minimatch@^10.2.4, minimatch@^10.2.5: version "10.2.5" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.2.5.tgz#bd48687a0be38ed2961399105600f832095861d1" integrity sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg== @@ -4352,7 +4206,7 @@ mute-stream@^3.0.0: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-3.0.0.tgz#cd8014dd2acb72e1e91bb67c74f0019e620ba2d1" integrity sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw== -nanoid@^3.3.12: +nanoid@^3.3.12, nanoid@^3.3.16: version "3.3.16" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.16.tgz#a04d8ec4b1f10009d2d533947aefe4293737816c" integrity sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q== @@ -4652,7 +4506,7 @@ parse5-sax-parser@^8.0.0: dependencies: parse5 "^8.0.0" -parse5@^8.0.0: +parse5@^8.0.0, parse5@^8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/parse5/-/parse5-8.0.1.tgz#f43bcd2cd683efe084075333e9ce0da7d06da31e" integrity sha512-z1e/HMG90obSGeidlli3hj7cbocou0/wa5HacvI3ASx34PecNjNQeaHNo5WIZpWofN9kgkqV1q5YvXe3F0FoPw== @@ -4729,7 +4583,7 @@ postcss-safe-parser@^7.0.1: resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-7.0.1.tgz#36e4f7e608111a0ca940fd9712ce034718c40ec0" integrity sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A== -postcss@^8.4.49, postcss@^8.5.16, postcss@^8.5.17, postcss@^8.5.3, postcss@^8.5.6: +postcss@^8.4.49, postcss@^8.5.16, postcss@^8.5.17, postcss@^8.5.6: version "8.5.19" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.19.tgz#45ad5cfde499408e20147348237551381a922037" integrity sha512-Mz8SaolMd8nB+G13WkORcxQKHZ/NE4xXevtkJHVuG+guo9/wYKlIMTKAqGdEmYOXR2ijPjTYNHssizdaVSUNdQ== @@ -4738,15 +4592,24 @@ postcss@^8.4.49, postcss@^8.5.16, postcss@^8.5.17, postcss@^8.5.3, postcss@^8.5. picocolors "^1.1.1" source-map-js "^1.2.1" +postcss@^8.5.23: + version "8.5.23" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.23.tgz#3493550116f478487298301d2c2e8dc5a56e6594" + integrity sha512-g50586zr4bZmwFiTlflMu8E0bDTb5I5gertgwAKmsdUlTQIhZtunzUlD1WSzwcVWPoAVpsrA6vlfCD7oXvRwgg== + dependencies: + nanoid "^3.3.16" + picocolors "^1.1.1" + source-map-js "^1.2.1" + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== -prettier@^3.8.1: - version "3.9.5" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.9.5.tgz#4fec97736e33b9d0b620b48914fe93b530e835ad" - integrity sha512-/FVl766LpUfB5vXgCYOYa0MeV/441Ia99AeICQIQFTY/Nw0roZwULcXpku5i1/m5kt/baz+s4Zogspd839HSMg== +prettier@^3.9.6: + version "3.9.6" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.9.6.tgz#b3ea5146515d40fc53f18aa63f74dfab1e10dbf6" + integrity sha512-OpN0zzVdiaiAhxpuuj5efpIS4sY9j7bY6uR5mnj5yPzGkdkjNKSJeUThPb60Jw29QuAZgA4o+/iB49kFiaBX6g== proc-log@^6.0.0, proc-log@^6.1.0: version "6.1.0" @@ -4943,7 +4806,7 @@ router@^2.2.0: parseurl "^1.3.3" path-to-regexp "^8.0.0" -rxjs@7.8.2, rxjs@~7.8.0: +rxjs@7.8.2, rxjs@^7.8.2: version "7.8.2" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.2.tgz#955bc473ed8af11a002a2be52071bf475638607b" integrity sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA== @@ -5308,7 +5171,7 @@ toidentifier@~1.0.1: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== -tough-cookie@^6.0.0: +tough-cookie@^6.0.1: version "6.0.2" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-6.0.2.tgz#7b1f22fcf2daf06c4ff9d53ec1845f44c6627062" integrity sha512-exgYmnmL/sJpR3upZfXG5PoatXQii55xAiXGXzY+sROLZ/Y+SLcp9PgJNI9Vz37HpQ74WvDcLT8eqm+kV3FzrA== @@ -5366,15 +5229,15 @@ type-is@^2.0.1, type-is@^2.1.0: media-typer "^1.1.0" mime-types "^3.0.0" -typescript-eslint@8.62.1: - version "8.62.1" - resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.62.1.tgz#eb93fd94d527aa04ec5b844fb0b4ada613cc7d3f" - integrity sha512-vymnnM5g0AKQDSAyfP12nMIBvgwgA42syg74kkuZ4x1VuTzwQKwc5h9rGxeShCjny5o+zWAb6OEoz7XLgrIkIw== +typescript-eslint@^8.65.0: + version "8.65.0" + resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.65.0.tgz#754c953fd6a9a3d36fa54015bdba80a6eb2a4957" + integrity sha512-/ggrHAwyjENDusvyxbuqxAC2dTnZg/Z8F+fgQtYIz+L6n/9HfSlEZcFGV/NsMNa6CkGk0xUjUAFwC0vHOflvIA== dependencies: - "@typescript-eslint/eslint-plugin" "8.62.1" - "@typescript-eslint/parser" "8.62.1" - "@typescript-eslint/typescript-estree" "8.62.1" - "@typescript-eslint/utils" "8.62.1" + "@typescript-eslint/eslint-plugin" "8.65.0" + "@typescript-eslint/parser" "8.65.0" + "@typescript-eslint/typescript-estree" "8.65.0" + "@typescript-eslint/utils" "8.65.0" typescript@6.0.3, typescript@~6.0.2: version "6.0.3" @@ -5401,10 +5264,10 @@ undici@^6.25.0: resolved "https://registry.yarnpkg.com/undici/-/undici-6.27.0.tgz#41f9e48f7c5a40d27376caaead8c9a9fc7bca9c4" integrity sha512-YmfV3YnEDzXRC5lZ2jWtWWHKGUm1zIt8AhesR1tens+HTNv+YZlN/dp6G727LOvMJ8xjP9Be7Y2Sdr96LDm+pg== -undici@^7.21.0: - version "7.28.0" - resolved "https://registry.yarnpkg.com/undici/-/undici-7.28.0.tgz#97d64564198b285bc281f0e8e29597e3d11fe7ec" - integrity sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA== +undici@^7.25.0: + version "7.29.0" + resolved "https://registry.yarnpkg.com/undici/-/undici-7.29.0.tgz#ae0f6f62e06e057a9cbb7b2b5fde2bb74f791b8f" + integrity sha512-IDxfleLmmbSskfWSUATiN1nfn2rDuvnMOqb5CWR92iIfojA0Ud+ulOAAEQ57LPr9rWmsreUyf5lwyao+7GNNVw== universalify@^2.0.0: version "2.0.1" @@ -5441,12 +5304,12 @@ vary@^1, vary@^1.1.2: resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== -vite@7.3.5: - version "7.3.5" - resolved "https://registry.yarnpkg.com/vite/-/vite-7.3.5.tgz#90c2d0b7b94a224e7e7dcf22d2912ff0b5291165" - integrity sha512-KuOaNhcnGFN2zIPGA7wRmzF+lJA1sea7rHq17aiJ++9lzY1WWG6Jpwqwe1KNbRVPIqHmr8GLYx7jbrQcN/7/ww== +vite@7.3.6: + version "7.3.6" + resolved "https://registry.yarnpkg.com/vite/-/vite-7.3.6.tgz#0547a395e68d3746e9a505f1fd4469fe09b49cc4" + integrity sha512-4XP60spRGjSZFf1qYH+dJIkK2znL3zQfl9KkOV9MkkRR/3Dls0dxaBsQPTloEc5BLXWPL9vsOxopxyKoMmDueg== dependencies: - esbuild "^0.27.0" + esbuild "^0.27.0 || ^0.28.0" fdir "^6.5.0" picomatch "^4.0.3" postcss "^8.5.6" @@ -5468,7 +5331,7 @@ vite@7.3.5: optionalDependencies: fsevents "~2.3.3" -vitest@^4.0.8: +vitest@^4.1.10: version "4.1.10" resolved "https://registry.yarnpkg.com/vitest/-/vitest-4.1.10.tgz#7e9285efe264b1167050b7a3a7ff34788e1b7afc" integrity sha512-R9jUTe5S4Qb0HCd4TNqpC7oGcrMssMRGXLW80ubjWsW9VH5GF8y1Y0SFLY9AbqSk6nt0PnOx4H4WNJYZ13GUPw== @@ -5524,7 +5387,7 @@ whatwg-mimetype@^5.0.0: resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-5.0.0.tgz#d8232895dbd527ceaee74efd4162008fb8a8cf48" integrity sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw== -whatwg-url@^16.0.0: +whatwg-url@^16.0.0, whatwg-url@^16.0.1: version "16.0.1" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-16.0.1.tgz#047f7f4bd36ef76b7198c172d1b1cebc66f764dd" integrity sha512-1to4zXBxmXHV3IiSSEInrreIlu02vUOvrhxJJH5vcxYTBDAx51cqZiKdyTxlecdKNSjj8EcxGBxNf6Vg+945gw==