From 378b068e38ee23a61fe8ba259ea2a748b4a212b4 Mon Sep 17 00:00:00 2001 From: Ajax Davis Date: Wed, 26 Nov 2025 17:33:45 +1000 Subject: [PATCH] feat: add quality gate tools and Node 22 setup MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add type-coverage, knip, and dependency-cruiser for code quality - Set up Node 22 (LTS) with .nvmrc file - Configure knip for dead code detection across monorepo - Configure dependency-cruiser with sensible architecture rules - Add ts-reset for better TypeScript built-in types - Fix Tabs component type exports for Storybook - Recreate eslint react.js config that was missing - Add quality gates documentation All quality checks pass with 0 errors (only informational warnings). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .dependency-cruiser.js | 159 +++++ .nvmrc | 1 + 2025-BEST-PRACTICES.md | 275 ++++++++ QUALITY-GATES.md | 118 ++++ knip.json | 57 ++ package.json | 71 ++- packages/config/eslint/react.js | 50 +- packages/storybook/stories/Tabs.stories.ts | 3 +- packages/ui/src/Tabs/Tabs.tsx | 5 +- pnpm-lock.yaml | 691 ++++++++++++++++++--- reset.d.ts | 3 + 11 files changed, 1292 insertions(+), 141 deletions(-) create mode 100644 .dependency-cruiser.js create mode 100644 .nvmrc create mode 100644 2025-BEST-PRACTICES.md create mode 100644 QUALITY-GATES.md create mode 100644 knip.json create mode 100644 reset.d.ts diff --git a/.dependency-cruiser.js b/.dependency-cruiser.js new file mode 100644 index 0000000..82ae22c --- /dev/null +++ b/.dependency-cruiser.js @@ -0,0 +1,159 @@ +/** @type {import('dependency-cruiser').IConfiguration} */ +export default { + forbidden: [ + { + name: "no-circular", + severity: "error", + comment: + "This dependency is part of a circular relationship. You might want to revise " + + "your solution (i.e. use dependency inversion, make sure the modules have a single responsibility) ", + from: {}, + to: { + circular: true, + }, + }, + { + name: "no-orphans", + comment: + "This is an orphan module - it's likely not used (anymore?). Either use it or " + + "remove it. If it's logical this module is an orphan (i.e. it's a config file), " + + "add an exception for it in your dependency-cruiser configuration. By default " + + "this rule does not scrutinize dot-files (e.g. .eslintrc.js), TypeScript declaration " + + "files (.d.ts), tsconfig.json and some of the babel and webpack configs.", + severity: "warn", + from: { + orphan: true, + pathNot: [ + "(^|/)\\.[^/]+\\.(js|cjs|mjs|ts|json)$", // dot files + "\\.d\\.ts$", // TypeScript declaration files + "(^|/)tsconfig\\.json$", // tsconfig + "(^|/)postcss\\.config\\.(js|cjs|mjs)$", // postcss config + "(^|/)(babel|webpack|tailwind)\\.config\\.(js|cjs|mjs|ts|json)$", // other configs + "/tokens\\.ts$", // token files + ], + }, + to: {}, + }, + { + name: "no-deprecated-core", + comment: + "A module depends on a node core module that has been deprecated. Find an alternative - these are " + + "bound to exist - node doesn't deprecate lightly.", + severity: "warn", + from: {}, + to: { + dependencyTypes: ["core"], + path: [ + "^(v8/tools/codemap)$", + "^(v8/tools/consarray)$", + "^(v8/tools/csvparser)$", + "^(v8/tools/logreader)$", + "^(v8/tools/profile_view)$", + "^(v8/tools/profile)$", + "^(v8/tools/SourceMap)$", + "^(v8/tools/splaytree)$", + "^(v8/tools/tickprocessor-driver)$", + "^(v8/tools/tickprocessor)$", + "^(node-inspect/lib/_inspect)$", + "^(node-inspect/lib/internal/inspect_client)$", + "^(node-inspect/lib/internal/inspect_repl)$", + "^(async_hooks)$", + "^(punycode)$", + "^(domain)$", + "^(constants)$", + "^(sys)$", + "^(_linklist)$", + "^(_stream_wrap)$", + ], + }, + }, + { + name: "not-to-deprecated", + comment: + "This module uses a (version of an) npm module that has been deprecated. Either upgrade to a later " + + "version of that module, or find an alternative. Deprecated modules are a security risk.", + severity: "warn", + from: {}, + to: { + dependencyTypes: ["deprecated"], + }, + }, + { + name: "no-non-package-json", + severity: "error", + comment: + "This module depends on an npm package that isn't in the 'dependencies' section of your package.json. " + + "That's problematic as the package either (1) won't be available on live (2 - worse) will be " + + "available on live with an non-guaranteed version. Fix it by adding the package to the dependencies " + + "in your package.json.", + from: {}, + to: { + dependencyTypes: ["npm-no-pkg", "npm-unknown"], + }, + }, + { + name: "not-to-unresolvable", + comment: + "This module depends on a module that cannot be found ('resolved to disk'). If it's an npm " + + "module: add it to your package.json. In all other cases you likely already know what to do.", + severity: "error", + from: {}, + to: { + couldNotResolve: true, + }, + }, + { + name: "no-duplicate-dep-types", + comment: + "Likeley this module depends on an external ('npm') package that occurs more than once " + + "in your package.json i.e. both as a devDependencies and in dependencies. This will cause " + + "maintenance problems later on.", + severity: "warn", + from: {}, + to: { + moreThanOneDependencyType: true, + // as it's pretty common to have a type import be a type only import + // _and_ (e.g.) a devDependency - don't consider type-only dependency + // types for this rule + dependencyTypesNot: ["type-only"], + }, + }, + + /* Custom monorepo rules - keep it simple */ + { + name: "no-package-to-app-imports", + comment: "Packages cannot import from apps - keeps packages reusable", + severity: "error", + from: { + path: "^packages/", + }, + to: { + path: "^apps/", + }, + }, + ], + options: { + doNotFollow: { + path: ["node_modules", "\\.next", "dist", "\\.turbo", "storybook-static"], + }, + tsPreCompilationDeps: true, + tsConfig: { + fileName: "./tsconfig.json", + }, + enhancedResolveOptions: { + exportsFields: ["exports"], + conditionNames: ["import", "require", "node", "default"], + }, + reporterOptions: { + dot: { + collapsePattern: "node_modules/[^/]+", + }, + archi: { + collapsePattern: "^(packages|apps)/[^/]+|node_modules/[^/]+", + }, + text: { + highlightFocused: true, + }, + }, + }, +}; diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000..2bd5a0a --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +22 diff --git a/2025-BEST-PRACTICES.md b/2025-BEST-PRACTICES.md new file mode 100644 index 0000000..59676be --- /dev/null +++ b/2025-BEST-PRACTICES.md @@ -0,0 +1,275 @@ +# 2025 Best Practices for TPMJS Monorepo + +This document outlines recommendations to make TPMJS a cutting-edge 2025 monorepo optimized for both human and agentic development (Claude Code, Cursor, etc.). + +## High-Impact Additions + +### 1. Agent-First Documentation + +``` +packages/docs/ +├── architecture-decisions/ # ADRs in markdown +├── patterns/ # Common patterns with examples +├── schemas/ # JSON schemas for all data structures +└── examples/ # Working code examples per feature +``` + +**Why:** Claude Code and other agents work better with: +- Explicit decision documentation (ADRs) +- Pattern libraries showing "the right way" +- Machine-readable schemas +- Real working examples to reference + +### 2. Automated Testing Pyramid + +```bash +# Add to package.json scripts +"test:unit": "vitest" # ✅ Already have this +"test:integration": "vitest -c vitest.integration.config.ts" # Add +"test:e2e": "playwright test" # Add +"test:visual": "playwright test --grep @visual" # Add +"test:contracts": "pactum" # Add for API testing +``` + +**Packages to add:** +- `@playwright/test` - E2E testing +- `@playwright/experimental-ct-react` - Component testing +- `pactum` or `msw` integration tests (you have mocks setup) +- `chromatic` or `percy` - Visual regression + +### 3. Type Coverage & Quality Gates + +```json +// Add to root package.json +{ + "scripts": { + "type-check": "tsc --noEmit", + "type-coverage": "type-coverage --at-least 95", + "find-deadcode": "knip", + "check-architecture": "depcruiser --validate" + } +} +``` + +**Add packages:** +- `type-coverage` - Ensure no implicit `any` +- `knip` - Find unused files/exports/dependencies +- `dependency-cruiser` - Enforce architecture rules +- `@total-typescript/ts-reset` - Better built-in types + +### 4. Development Containers + +```json +// .devcontainer/devcontainer.json +{ + "name": "TPMJS Dev", + "dockerComposeFile": "docker-compose.yml", + "service": "dev", + "features": { + "ghcr.io/devcontainers/features/node:1": {}, + "ghcr.io/devcontainers-contrib/features/pnpm:2": {} + }, + "customizations": { + "vscode": { + "extensions": [ + "biomejs.biome", + "bradlc.vscode-tailwindcss", + "lokalise.i18n-ally" + ] + } + } +} +``` + +**Why:** Agents like Claude Code work better when environment is reproducible. This also helps human developers. + +### 5. Code Generation & Scaffolding + +```typescript +// packages/cli/ - Internal dev tool +import { scaffold } from '@tpmjs/cli'; + +// Commands: +pnpm gen:component ButtonGroup +pnpm gen:package @tpmjs/new-package +pnpm gen:app marketing-site +``` + +**Create:** +- `plop` or `hygen` templates +- Component scaffolding (with tests, stories, exports) +- Package scaffolding (with tsconfig, package.json, exports) +- Consistent file structure generation + +**Why:** Agents can use these commands to create new code following your exact patterns. + +### 6. Enhanced Strict Mode TypeScript + +```json +// packages/tsconfig/base.json - Add these +{ + "compilerOptions": { + "exactOptionalPropertyTypes": true, + "noUncheckedIndexedAccess": true, + "noPropertyAccessFromIndexSignature": true, + "allowUnusedLabels": false, + "allowUnreachableCode": false, + "noImplicitOverride": true + } +} +``` + +### 7. Bundle Analysis & Performance + +```json +{ + "scripts": { + "analyze": "turbo run build --filter=@tpmjs/web -- --analyze", + "lighthouse": "lhci autorun", + "bundle-size": "size-limit" + } +} +``` + +**Add:** +- `@next/bundle-analyzer` +- `@lhci/cli` - Lighthouse CI +- `size-limit` - Bundle size tracking in CI + +### 8. Smart Dependency Management + +```json +// .github/renovate.json +{ + "extends": ["config:base"], + "packageRules": [ + { + "matchPackagePatterns": ["*"], + "matchUpdateTypes": ["minor", "patch"], + "groupName": "all non-major dependencies", + "groupSlug": "all-minor-patch" + } + ] +} +``` + +**Use:** Renovate or Dependabot with auto-merge for passing tests + +### 9. API Documentation Generation + +```bash +pnpm add -D -w typedoc typedoc-plugin-markdown +``` + +Auto-generate API docs from TSDoc comments that both humans and agents can read. + +### 10. Schema-First Development + +```typescript +// packages/schemas/ - Central schema definitions +export * from './tool-schema'; +export * from './registry-api-schema'; +export * from './event-schema'; + +// Use Zod for runtime + type generation +// Agents can read schemas to understand contracts +``` + +## Monorepo-Specific Improvements + +### 11. Better Local Development + +```typescript +// turbo.json +{ + "pipeline": { + "dev": { + "cache": false, + "persistent": true, + "dependsOn": ["^build"] + }, + "build": { + "dependsOn": ["^build"], + "outputs": ["dist/**", ".next/**"] + } + } +} +``` + +### 12. Workspace Protocols & Constraints + +```yaml +# .pnpm-workspace.yaml +packages: + - 'apps/*' + - 'packages/*' + +# Add constraints +pnpm-workspace-constraints: + dependencies: + '@tpmjs/ui': 'workspace:*' + '@tpmjs/utils': 'workspace:*' +``` + +## Recommended Final Structure + +``` +. +├── .devcontainer/ # Dev containers config +├── .github/ +│ ├── workflows/ # CI/CD +│ └── renovate.json # Dependency automation +├── apps/ +│ └── web/ +├── packages/ +│ ├── cli/ # ⭐ NEW: Dev tooling +│ ├── schemas/ # ⭐ NEW: Central schemas +│ └── ...existing +├── docs/ +│ ├── adr/ # ⭐ NEW: Architecture decisions +│ ├── patterns/ # ⭐ NEW: Code patterns +│ └── examples/ # ⭐ NEW: Working examples +├── scripts/ +│ ├── scaffold.ts # ⭐ NEW: Code generation +│ └── validate-deps.ts # ⭐ NEW: Architecture validation +├── playwright.config.ts # ⭐ NEW: E2E testing +├── .lighthouserc.json # ⭐ NEW: Performance +└── knip.json # ⭐ NEW: Dead code detection +``` + +## Priority Order for Implementation + +### Phase 1 (Foundation) +1. **Knip + type-coverage** - Catch issues early +2. **Code generation scripts** - Ensure consistency +3. **ADR documentation structure** - Decision tracking + +### Phase 2 (Quality) +4. **E2E testing with Playwright** - Full user flow coverage +5. **Bundle analysis + performance budgets** - Keep app fast +6. **Stricter TypeScript settings** - Catch more bugs at compile time + +### Phase 3 (DX) +7. **Dev containers** - Reproducible environments +8. **API documentation generation** - Auto-generated from code +9. **Renovate automation** - Keep dependencies fresh + +## Benefits for Agent-Driven Development + +1. **Explicit Patterns** - Agents can reference documented patterns instead of guessing +2. **Code Generation** - Consistent scaffolding commands agents can use +3. **Machine-Readable Schemas** - JSON schemas help agents understand data structures +4. **Quality Gates** - Automated checks catch agent mistakes early +5. **Working Examples** - Agents can copy-paste-adapt proven patterns +6. **Architecture Enforcement** - Dependency rules prevent agents from creating invalid imports + +## Next Steps + +Start with the highest ROI items: +1. Install Knip to find dead code +2. Set up code generation for components/packages +3. Create docs/patterns/ with common examples +4. Add stricter TypeScript compiler options +5. Set up Playwright for E2E testing + +These changes will make the codebase more maintainable and significantly improve the experience of working with AI coding agents. diff --git a/QUALITY-GATES.md b/QUALITY-GATES.md new file mode 100644 index 0000000..edb293c --- /dev/null +++ b/QUALITY-GATES.md @@ -0,0 +1,118 @@ +# Quality Gates Setup + +This document describes the quality gate tools configured for the TPMJS monorepo. + +## Installed Tools + +### 1. TypeScript Type Checking +```bash +pnpm type-check +``` +Runs `tsc --noEmit` across all packages to catch type errors. + +### 2. Type Coverage +```bash +pnpm type-coverage +``` +Uses `type-coverage` to ensure no implicit `any` types. Currently configured for 95% minimum coverage. + +### 3. Dead Code Detection +```bash +pnpm find-deadcode +``` +Uses `knip` to find: +- Unused files +- Unused dependencies +- Unused exports +- Unresolved imports + +**Configuration:** `knip.json` +- Ignores test files, build artifacts (dist, .next, storybook-static) +- Workspace-aware for monorepo structure + +### 4. Architecture Validation +```bash +pnpm check-architecture +``` +Uses `dependency-cruiser` to enforce: +- No circular dependencies +- No unresolvable imports +- No deprecated dependencies +- **Custom rule:** Packages cannot import from apps (keeps packages reusable) + +**Configuration:** `.dependency-cruiser.js` +- Simplified to standard rules only +- Excludes build artifacts automatically +- One custom rule: packages stay independent of apps + +## Node.js Version + +**Required:** Node.js 22+ (LTS) + +The project uses `.nvmrc` to specify Node version: +```bash +nvm use +``` + +## Integration + +### Pre-commit Hook (Optional) +Add to `.lefthook.yml`: +```yaml +pre-commit: + commands: + type-check: + run: pnpm type-check + deadcode: + run: pnpm find-deadcode +``` + +### CI Pipeline (Recommended) +Add to `.github/workflows/ci.yml`: +```yaml +- name: Type check + run: pnpm type-check + +- name: Check architecture + run: pnpm check-architecture + +- name: Find dead code + run: pnpm find-deadcode +``` + +## Current Status + +### ✅ Type Check +All packages pass type checking. + +### ✅ Architecture Check +**1 error, 14 warnings** +- **Error:** Missing export in `@tpmjs/ui/Tabs/types` (needs fix) +- **Warnings:** React listed in both dependencies and devDependencies (informational, not blocking) + +### ⚠️ Dead Code Detection +**Minor issues found:** +- 1 unused file: `packages/config/eslint/react.js` +- 5 unused dependencies (can be cleaned up) +- 6 unused devDependencies (can be cleaned up) + +These are informational and don't block development. + +## Philosophy + +The configuration follows a **practical, non-blocking** approach: +- Standard rules that prevent real problems +- No overly strict custom rules that make development difficult +- Warnings for things worth knowing about, errors for things that will break +- Build artifacts and config files are properly excluded + +## Maintenance + +Run these periodically to keep the codebase clean: +```bash +# Check everything +pnpm type-check && pnpm check-architecture && pnpm find-deadcode + +# Or just the quick ones +pnpm type-check && pnpm find-deadcode +``` diff --git a/knip.json b/knip.json new file mode 100644 index 0000000..a9da12d --- /dev/null +++ b/knip.json @@ -0,0 +1,57 @@ +{ + "$schema": "https://unpkg.com/knip@5/schema.json", + "workspaces": { + ".": { + "entry": ["turbo.json"], + "project": ["**/*.ts", "**/*.tsx", "**/*.js", "**/*.jsx"], + "ignore": [ + "**/*.test.ts", + "**/*.test.tsx", + "**/*.spec.ts", + "**/*.spec.tsx", + "**/dist/**", + "**/.next/**", + "**/node_modules/**", + "**/.turbo/**", + "**/storybook-static/**" + ] + }, + "apps/*": { + "entry": [ + "app/**/*.ts", + "app/**/*.tsx", + "pages/**/*.ts", + "pages/**/*.tsx", + "src/**/*.ts", + "src/**/*.tsx" + ], + "project": ["**/*.ts", "**/*.tsx"] + }, + "packages/*": { + "entry": ["src/**/*.ts", "src/**/*.tsx", "index.ts", "index.tsx"], + "project": ["**/*.ts", "**/*.tsx"] + } + }, + "ignore": [ + "**/*.test.ts", + "**/*.test.tsx", + "**/*.spec.ts", + "**/*.spec.tsx", + "**/vitest.config.ts", + "**/tsup.config.ts", + "**/tailwind.config.ts", + "reset.d.ts" + ], + "ignoreDependencies": [ + "@changesets/cli", + "lefthook", + "turbo", + "typescript", + "@biomejs/biome", + "@total-typescript/ts-reset", + "type-coverage", + "knip", + "dependency-cruiser" + ], + "ignoreExportsUsedInFile": true +} diff --git a/package.json b/package.json index 8d7f0d9..e9996ad 100644 --- a/package.json +++ b/package.json @@ -1,34 +1,41 @@ { - "name": "@tpmjs/monorepo", - "version": "0.0.0", - "private": true, - "type": "module", - "engines": { - "node": ">=18", - "pnpm": ">=8" - }, - "packageManager": "pnpm@10.14.0", - "scripts": { - "dev": "turbo dev", - "build": "turbo build", - "test": "turbo test", - "test:ui": "turbo test:ui", - "lint": "turbo lint", - "format": "biome format --write .", - "format:check": "biome check .", - "type-check": "turbo type-check", - "clean": "turbo clean && rm -rf node_modules .turbo", - "changeset": "changeset", - "changeset:version": "changeset version && pnpm install --no-frozen-lockfile", - "changeset:publish": "pnpm build && changeset publish", - "prepare": "lefthook install" - }, - "devDependencies": { - "@biomejs/biome": "^1.9.4", - "@changesets/cli": "^2.27.10", - "@types/node": "^22.10.2", - "lefthook": "^1.10.1", - "turbo": "^2.6.1", - "typescript": "^5.9.3" - } + "name": "@tpmjs/monorepo", + "version": "0.0.0", + "private": true, + "type": "module", + "engines": { + "node": ">=22", + "pnpm": ">=8" + }, + "packageManager": "pnpm@10.14.0", + "scripts": { + "dev": "turbo dev", + "build": "turbo build", + "test": "turbo test", + "test:ui": "turbo test:ui", + "lint": "turbo lint", + "format": "biome format --write .", + "format:check": "biome check .", + "type-check": "turbo type-check", + "type-coverage": "type-coverage --at-least 95", + "find-deadcode": "knip", + "check-architecture": "depcruise --validate --config .dependency-cruiser.js apps packages", + "clean": "turbo clean && rm -rf node_modules .turbo", + "changeset": "changeset", + "changeset:version": "changeset version && pnpm install --no-frozen-lockfile", + "changeset:publish": "pnpm build && changeset publish", + "prepare": "lefthook install" + }, + "devDependencies": { + "@biomejs/biome": "^1.9.4", + "@changesets/cli": "^2.27.10", + "@total-typescript/ts-reset": "^0.6.1", + "@types/node": "^22.10.2", + "dependency-cruiser": "^17.3.1", + "knip": "^5.70.2", + "lefthook": "^1.10.1", + "turbo": "^2.6.1", + "type-coverage": "^2.29.7", + "typescript": "^5.9.3" + } } diff --git a/packages/config/eslint/react.js b/packages/config/eslint/react.js index 3ad38e0..7fa28a8 100644 --- a/packages/config/eslint/react.js +++ b/packages/config/eslint/react.js @@ -1,28 +1,28 @@ -import reactPlugin from 'eslint-plugin-react'; -import reactHooksPlugin from 'eslint-plugin-react-hooks'; -import jsxA11y from 'eslint-plugin-jsx-a11y'; -import baseConfig from './base.js'; +import jsxA11yPlugin from "eslint-plugin-jsx-a11y"; +import reactPlugin from "eslint-plugin-react"; +import hooksPlugin from "eslint-plugin-react-hooks"; +import baseConfig from "./base.js"; export default [ - ...baseConfig, - { - files: ['**/*.ts', '**/*.tsx'], - plugins: { - react: reactPlugin, - 'react-hooks': reactHooksPlugin, - 'jsx-a11y': jsxA11y, - }, - rules: { - ...reactPlugin.configs.recommended.rules, - ...reactHooksPlugin.configs.recommended.rules, - ...jsxA11y.configs.recommended.rules, - 'react/react-in-jsx-scope': 'off', - 'react/prop-types': 'off', - }, - settings: { - react: { - version: 'detect', - }, - }, - }, + ...baseConfig, + { + files: ["**/*.{js,jsx,ts,tsx}"], + plugins: { + react: reactPlugin, + "react-hooks": hooksPlugin, + "jsx-a11y": jsxA11yPlugin, + }, + rules: { + ...reactPlugin.configs.recommended.rules, + ...hooksPlugin.configs.recommended.rules, + ...jsxA11yPlugin.configs.recommended.rules, + "react/react-in-jsx-scope": "off", // Not needed in Next.js/React 17+ + "react/prop-types": "off", // Using TypeScript + }, + settings: { + react: { + version: "detect", + }, + }, + }, ]; diff --git a/packages/storybook/stories/Tabs.stories.ts b/packages/storybook/stories/Tabs.stories.ts index bdb66d5..b412930 100644 --- a/packages/storybook/stories/Tabs.stories.ts +++ b/packages/storybook/stories/Tabs.stories.ts @@ -1,6 +1,5 @@ import type { Meta, StoryObj } from "@storybook/react"; -import { Tabs } from "@tpmjs/ui/Tabs/Tabs"; -import type { Tab } from "@tpmjs/ui/Tabs/types"; +import { type Tab, Tabs } from "@tpmjs/ui/Tabs/Tabs"; import { createElement } from "react"; const meta = { diff --git a/packages/ui/src/Tabs/Tabs.tsx b/packages/ui/src/Tabs/Tabs.tsx index 0ebf1c7..0512c31 100644 --- a/packages/ui/src/Tabs/Tabs.tsx +++ b/packages/ui/src/Tabs/Tabs.tsx @@ -1,12 +1,15 @@ import { cn } from "@tpmjs/utils/cn"; import { forwardRef } from "react"; -import type { TabsProps } from "./types"; +import type { Tab, TabsProps } from "./types"; import { tabButtonVariants, tabCountVariants, tabsContainerVariants, } from "./variants"; +// Re-export types for consumers +export type { Tab, TabsProps }; + /** * Tabs component * diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2d3d546..37c0dc8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,15 +14,27 @@ importers: '@changesets/cli': specifier: ^2.27.10 version: 2.29.7(@types/node@22.19.1) + '@total-typescript/ts-reset': + specifier: ^0.6.1 + version: 0.6.1 '@types/node': specifier: ^22.10.2 version: 22.19.1 + dependency-cruiser: + specifier: ^17.3.1 + version: 17.3.1 + knip: + specifier: ^5.70.2 + version: 5.70.2(@types/node@22.19.1)(typescript@5.9.3) lefthook: specifier: ^1.10.1 version: 1.13.6 turbo: specifier: ^2.6.1 version: 2.6.1 + type-coverage: + specifier: ^2.29.7 + version: 2.29.7(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -80,7 +92,7 @@ importers: version: 10.4.22(postcss@8.5.6) eslint-config-next: specifier: ^16.0.4 - version: 16.0.4(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + version: 16.0.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) postcss: specifier: ^8.5.1 version: 8.5.6 @@ -100,22 +112,22 @@ importers: version: 9.39.1 eslint: specifier: ^9.18.0 - version: 9.39.1(jiti@1.21.7) + version: 9.39.1(jiti@2.6.1) eslint-plugin-import: specifier: ^2.31.0 - version: 2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.1(jiti@1.21.7)) + version: 2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)) eslint-plugin-jsx-a11y: specifier: ^6.10.2 - version: 6.10.2(eslint@9.39.1(jiti@1.21.7)) + version: 6.10.2(eslint@9.39.1(jiti@2.6.1)) eslint-plugin-react: specifier: ^7.37.3 - version: 7.37.5(eslint@9.39.1(jiti@1.21.7)) + version: 7.37.5(eslint@9.39.1(jiti@2.6.1)) eslint-plugin-react-hooks: specifier: ^5.1.0 - version: 5.2.0(eslint@9.39.1(jiti@1.21.7)) + version: 5.2.0(eslint@9.39.1(jiti@2.6.1)) typescript-eslint: specifier: ^8.19.1 - version: 8.48.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + version: 8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) packages/config/tailwind: dependencies: @@ -143,7 +155,7 @@ importers: version: 22.19.1 tsup: specifier: ^8.3.5 - version: 8.5.1(jiti@1.21.7)(postcss@8.5.6)(typescript@5.9.3) + version: 8.5.1(jiti@2.6.1)(postcss@8.5.6)(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -159,7 +171,7 @@ importers: version: link:../config/tsconfig tsup: specifier: ^8.3.5 - version: 8.5.1(jiti@1.21.7)(postcss@8.5.6)(typescript@5.9.3) + version: 8.5.1(jiti@2.6.1)(postcss@8.5.6)(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -193,7 +205,7 @@ importers: version: 8.6.14(@storybook/test@8.6.14(storybook@8.6.14(prettier@2.8.8)))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@8.6.14(prettier@2.8.8))(typescript@5.9.3) '@storybook/react-vite': specifier: ^8.5.0 - version: 8.6.14(@storybook/test@8.6.14(storybook@8.6.14(prettier@2.8.8)))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rollup@4.53.3)(storybook@8.6.14(prettier@2.8.8))(typescript@5.9.3)(vite@6.4.1(@types/node@22.19.1)(jiti@1.21.7)) + version: 8.6.14(@storybook/test@8.6.14(storybook@8.6.14(prettier@2.8.8)))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rollup@4.53.3)(storybook@8.6.14(prettier@2.8.8))(typescript@5.9.3)(vite@6.4.1(@types/node@22.19.1)(jiti@2.6.1)) '@storybook/test': specifier: ^8.5.0 version: 8.6.14(storybook@8.6.14(prettier@2.8.8)) @@ -220,7 +232,7 @@ importers: version: 3.4.18 vite: specifier: ^6.0.7 - version: 6.4.1(@types/node@22.19.1)(jiti@1.21.7) + version: 6.4.1(@types/node@22.19.1)(jiti@2.6.1) packages/test: dependencies: @@ -239,7 +251,7 @@ importers: version: link:../config/tsconfig tsup: specifier: ^8.3.5 - version: 8.5.1(jiti@1.21.7)(postcss@8.5.6)(typescript@5.9.3) + version: 8.5.1(jiti@2.6.1)(postcss@8.5.6)(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -285,7 +297,7 @@ importers: version: 19.2.0(react@19.2.0) tsup: specifier: ^8.3.5 - version: 8.5.1(jiti@1.21.7)(postcss@8.5.6)(typescript@5.9.3) + version: 8.5.1(jiti@2.6.1)(postcss@8.5.6)(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -310,7 +322,7 @@ importers: version: link:../config/tsconfig tsup: specifier: ^8.3.5 - version: 8.5.1(jiti@1.21.7)(postcss@8.5.6)(typescript@5.9.3) + version: 8.5.1(jiti@2.6.1)(postcss@8.5.6)(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1256,6 +1268,9 @@ packages: '@napi-rs/wasm-runtime@0.2.12': resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} + '@napi-rs/wasm-runtime@1.0.7': + resolution: {integrity: sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw==} + '@next/env@16.0.4': resolution: {integrity: sha512-FDPaVoB1kYhtOz6Le0Jn2QV7RZJ3Ngxzqri7YX4yu3Ini+l5lciR7nA9eNDpKTmDm7LWZtxSju+/CQnwRBn2pA==} @@ -1335,6 +1350,101 @@ packages: '@open-draft/until@2.1.0': resolution: {integrity: sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==} + '@oxc-resolver/binding-android-arm-eabi@11.14.0': + resolution: {integrity: sha512-jB47iZ/thvhE+USCLv+XY3IknBbkKr/p7OBsQDTHode/GPw+OHRlit3NQ1bjt1Mj8V2CS7iHdSDYobZ1/0gagQ==} + cpu: [arm] + os: [android] + + '@oxc-resolver/binding-android-arm64@11.14.0': + resolution: {integrity: sha512-XFJ9t7d/Cz+dWLyqtTy3Xrekz+qqN4hmOU2iOUgr7u71OQsPUHIIeS9/wKanEK0l413gPwapIkyc5x9ltlOtyw==} + cpu: [arm64] + os: [android] + + '@oxc-resolver/binding-darwin-arm64@11.14.0': + resolution: {integrity: sha512-gwehBS9smA1mzK8frDsmUCHz+6baJVwkKF6qViHhoqA3kRKvIZ3k6WNP4JmF19JhOiGxRcoPa8gZRfzNgXwP2A==} + cpu: [arm64] + os: [darwin] + + '@oxc-resolver/binding-darwin-x64@11.14.0': + resolution: {integrity: sha512-5wwJvfuoahKiAqqAsMLOI28rqdh3P2K7HkjIWUXNMWAZq6ErX0L5rwJzu6T32+Zxw3k18C7R9IS4wDq/3Ar+6w==} + cpu: [x64] + os: [darwin] + + '@oxc-resolver/binding-freebsd-x64@11.14.0': + resolution: {integrity: sha512-MWTt+LOQNcQ6fa+Uu5VikkihLi1PSIrQqqp0QD44k2AORasNWl0jRGBTcMSBIgNe82qEQWYvlGzvOEEOBp01Og==} + cpu: [x64] + os: [freebsd] + + '@oxc-resolver/binding-linux-arm-gnueabihf@11.14.0': + resolution: {integrity: sha512-b6/IBqYrS3o0XiLVBsnex/wK8pTTK+hbGfAMOHVU6p7DBpwPPLgC/tav4IXoOIUCssTFz7aWh/xtUok0swn8VQ==} + cpu: [arm] + os: [linux] + + '@oxc-resolver/binding-linux-arm-musleabihf@11.14.0': + resolution: {integrity: sha512-o2Qh5+y5YoqVK6YfzkalHdpmQ5bkbGGxuLg1pZLQ1Ift0x+Vix7DaFEpdCl5Z9xvYXogd/TwOlL0TPl4+MTFLA==} + cpu: [arm] + os: [linux] + + '@oxc-resolver/binding-linux-arm64-gnu@11.14.0': + resolution: {integrity: sha512-lk8mCSg0Tg4sEG73RiPjb7keGcEPwqQnBHX3Z+BR2SWe+qNHpoHcyFMNafzSvEC18vlxC04AUSoa6kJl/C5zig==} + cpu: [arm64] + os: [linux] + + '@oxc-resolver/binding-linux-arm64-musl@11.14.0': + resolution: {integrity: sha512-KykeIVhCM7pn93ABa0fNe8vk4XvnbfZMELne2s6P9tdJH9KMBsCFBi7a2BmSdUtTqWCAJokAcm46lpczU52Xaw==} + cpu: [arm64] + os: [linux] + + '@oxc-resolver/binding-linux-ppc64-gnu@11.14.0': + resolution: {integrity: sha512-QqPPWAcZU/jHAuam4f3zV8OdEkYRPD2XR0peVet3hoMMgsihR3Lhe7J/bLclmod297FG0+OgBYQVMh2nTN6oWA==} + cpu: [ppc64] + os: [linux] + + '@oxc-resolver/binding-linux-riscv64-gnu@11.14.0': + resolution: {integrity: sha512-DunWA+wafeG3hj1NADUD3c+DRvmyVNqF5LSHVUWA2bzswqmuEZXl3VYBSzxfD0j+UnRTFYLxf27AMptoMsepYg==} + cpu: [riscv64] + os: [linux] + + '@oxc-resolver/binding-linux-riscv64-musl@11.14.0': + resolution: {integrity: sha512-4SRvwKTTk2k67EQr9Ny4NGf/BhlwggCI1CXwBbA9IV4oP38DH8b+NAPxDY0ySGRsWbPkG92FYOqM4AWzG4GSgA==} + cpu: [riscv64] + os: [linux] + + '@oxc-resolver/binding-linux-s390x-gnu@11.14.0': + resolution: {integrity: sha512-hZKvkbsurj4JOom//R1Ab2MlC4cGeVm5zzMt4IsS3XySQeYjyMJ5TDZ3J5rQ8bVj3xi4FpJU2yFZ72GApsHQ6A==} + cpu: [s390x] + os: [linux] + + '@oxc-resolver/binding-linux-x64-gnu@11.14.0': + resolution: {integrity: sha512-hABxQXFXJurivw+0amFdeEcK67cF1BGBIN1+sSHzq3TRv4RoG8n5q2JE04Le2n2Kpt6xg4Y5+lcv+rb2mCJLgQ==} + cpu: [x64] + os: [linux] + + '@oxc-resolver/binding-linux-x64-musl@11.14.0': + resolution: {integrity: sha512-Ln73wUB5migZRvC7obAAdqVwvFvk7AUs2JLt4g9QHr8FnqivlsjpUC9Nf2ssrybdjyQzEMjttUxPZz6aKPSAHw==} + cpu: [x64] + os: [linux] + + '@oxc-resolver/binding-wasm32-wasi@11.14.0': + resolution: {integrity: sha512-z+NbELmCOKNtWOqEB5qDfHXOSWB3kGQIIehq6nHtZwHLzdVO2oBq6De/ayhY3ygriC1XhgaIzzniY7jgrNl4Kw==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@oxc-resolver/binding-win32-arm64-msvc@11.14.0': + resolution: {integrity: sha512-Ft0+qd7HSO61qCTLJ4LCdBGZkpKyDj1rG0OVSZL1DxWQoh97m7vEHd7zAvUtw8EcWjOMBQuX4mfRap/x2MOCpQ==} + cpu: [arm64] + os: [win32] + + '@oxc-resolver/binding-win32-ia32-msvc@11.14.0': + resolution: {integrity: sha512-o54jYNSfGdPxHSvXEhZg8FOV3K99mJ1f7hb1alRFb+Yec1GQXNrJXxZPIxNMYeFT13kwAWB7zuQ0HZLnDHFxfw==} + cpu: [ia32] + os: [win32] + + '@oxc-resolver/binding-win32-x64-msvc@11.14.0': + resolution: {integrity: sha512-j97icaORyM6A7GjgmUzfn7V+KGzVvctRA+eAlJb0c2OQNaETFxl6BXZdnGBDb+6oA0Y4Sr/wnekd1kQ0aVyKGg==} + cpu: [x64] + os: [win32] + '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} @@ -1667,6 +1777,9 @@ packages: peerDependencies: '@testing-library/dom': '>=7.21.4' + '@total-typescript/ts-reset@0.6.1': + resolution: {integrity: sha512-cka47fVSo6lfQDIATYqb/vO1nvFfbPw7uWLayIXIhGETj0wcOOlrlkobOMDNQOFr9QOafegUPq13V2+6vtD7yg==} + '@tybys/wasm-util@0.10.1': resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} @@ -1918,11 +2031,22 @@ packages: '@vitest/utils@2.1.9': resolution: {integrity: sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ==} + acorn-jsx-walk@2.0.0: + resolution: {integrity: sha512-uuo6iJj4D4ygkdzd6jPtcxs8vZgDX9YFIkqczGImoypX2fQ4dVImmu3UzA4ynixCIMTrEOWW+95M2HuBaCEOVA==} + acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + acorn-loose@8.5.2: + resolution: {integrity: sha512-PPvV6g8UGMGgjrMu+n/f9E/tCSkNQ2Y97eFvuVdJfG11+xdIeDcLyNdC8SHcrHbRqkfwLASdplyR6B6sKM1U4A==} + engines: {node: '>=0.4.0'} + + acorn-walk@8.3.4: + resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} + engines: {node: '>=0.4.0'} + acorn@8.15.0: resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} engines: {node: '>=0.4.0'} @@ -1931,6 +2055,9 @@ packages: ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} @@ -2171,6 +2298,10 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + commander@14.0.2: + resolution: {integrity: sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==} + engines: {node: '>=20'} + commander@4.1.1: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} @@ -2258,6 +2389,11 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} + dependency-cruiser@17.3.1: + resolution: {integrity: sha512-yWwszB4GKIBKK/xiHSQ6TVIV6k8byd+gMGT2RMQ+03wb1jGH48cSsLH29iUUZgGtKyLSH51NurbnjXV0+niUjA==} + engines: {node: ^20.12||^22||>=24} + hasBin: true + dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} @@ -2310,6 +2446,10 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + enhanced-resolve@5.18.3: + resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==} + engines: {node: '>=10.13.0'} + enquirer@2.4.1: resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} engines: {node: '>=8.6'} @@ -2538,9 +2678,15 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + fast-uri@3.1.0: + resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} + fastq@1.19.1: resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + fd-package-json@2.0.0: + resolution: {integrity: sha512-jKmm9YtsNXN789RS/0mSzOC1NUq9mkVd65vbSSVsKdjGvYXBuE4oWe2QOEoFeRmJg+lPuZxpmrfFclNhoRMneQ==} + fdir@6.5.0: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} engines: {node: '>=12.0.0'} @@ -2584,6 +2730,11 @@ packages: resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} engines: {node: '>=14'} + formatly@0.3.0: + resolution: {integrity: sha512-9XNj/o4wrRFyhSMJOvsuyMwy8aUfBaZ1VrqHVfohyXf0Sw0e+yfKG+xZaY3arGCOMdwFsqObtzVOc1gU9KiT9w==} + engines: {node: '>=18.3.0'} + hasBin: true + fraction.js@5.3.4: resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==} @@ -2653,6 +2804,10 @@ packages: resolution: {integrity: sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==} engines: {node: 20 || >=22} + global-directory@4.0.1: + resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} + engines: {node: '>=18'} + globals@14.0.0: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} @@ -2754,10 +2909,18 @@ packages: inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + ini@4.1.1: + resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + internal-slot@1.1.0: resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} engines: {node: '>= 0.4'} + interpret@3.1.1: + resolution: {integrity: sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==} + engines: {node: '>=10.13.0'} + is-arguments@1.2.0: resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==} engines: {node: '>= 0.4'} @@ -2826,6 +2989,10 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} + is-installed-globally@1.0.0: + resolution: {integrity: sha512-K55T22lfpQ63N4KEN57jZUAaAYqYHEe8veb/TycJRk9DdSCLLcovXz/mL6mOnhQaZsQGwPhuFopdQIlqGSEjiQ==} + engines: {node: '>=18'} + is-map@2.0.3: resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} engines: {node: '>= 0.4'} @@ -2845,6 +3012,10 @@ packages: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} + is-path-inside@4.0.0: + resolution: {integrity: sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==} + engines: {node: '>=12'} + is-regex@1.2.1: resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} engines: {node: '>= 0.4'} @@ -2910,6 +3081,10 @@ packages: resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} hasBin: true + jiti@2.6.1: + resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} + hasBin: true + joycon@3.1.1: resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} engines: {node: '>=10'} @@ -2940,6 +3115,9 @@ packages: json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} @@ -2962,6 +3140,18 @@ packages: keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + + knip@5.70.2: + resolution: {integrity: sha512-LI7DbeVnk7h9+FAet5KzzHNdDwJyqDa2+cn4uQfZYTfpuVjEqtGmYD9r5b9JEuOs4eVkf/7sskNhWXxELm3C/Q==} + engines: {node: '>=18.18.0'} + hasBin: true + peerDependencies: + '@types/node': '>=18' + typescript: '>=5.0.4 <7' + language-subtag-registry@0.3.23: resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} @@ -3090,6 +3280,10 @@ packages: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} + memoize@10.2.0: + resolution: {integrity: sha512-DeC6b7QBrZsRs3Y02A6A7lQyzFbsQbqgjI6UW0GigGWV+u1s25TycMr0XHZE4cJce7rY/vyw2ctMQqfDkIhUEA==} + engines: {node: '>=18'} + memoizerific@1.11.3: resolution: {integrity: sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==} @@ -3101,6 +3295,10 @@ packages: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} + mimic-function@5.0.1: + resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} + engines: {node: '>=18'} + min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} @@ -3255,6 +3453,9 @@ packages: resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} engines: {node: '>= 0.4'} + oxc-resolver@11.14.0: + resolution: {integrity: sha512-i4wNrqhOd+4YdHJfHglHtFiqqSxXuzFA+RUqmmWN1aMD3r1HqUSrIhw17tSO4jwKfhLs9uw1wzFPmvMsWacStg==} + p-filter@2.1.0: resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} engines: {node: '>=8'} @@ -3431,6 +3632,10 @@ packages: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} + prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} @@ -3487,6 +3692,10 @@ packages: resolution: {integrity: sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==} engines: {node: '>= 4'} + rechoir@0.8.0: + resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==} + engines: {node: '>= 10.13.0'} + redent@3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} @@ -3495,6 +3704,10 @@ packages: resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} engines: {node: '>= 0.4'} + regexp-tree@0.1.27: + resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} + hasBin: true + regexp.prototype.flags@1.5.4: resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} engines: {node: '>= 0.4'} @@ -3503,6 +3716,10 @@ packages: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -3550,6 +3767,9 @@ packages: resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} engines: {node: '>= 0.4'} + safe-regex@2.1.1: + resolution: {integrity: sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==} + safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} @@ -3612,10 +3832,17 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} + smol-toml@1.5.2: + resolution: {integrity: sha512-QlaZEqcAH3/RtNyet1IPIYPsEWAaYyXXv1Krsi+1L/QHppjX4Ifm8MQsBISz9vE8cHicIq3clogsheili5vhaQ==} + engines: {node: '>= 18'} + source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} @@ -3718,6 +3945,10 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} + strip-json-comments@5.0.3: + resolution: {integrity: sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw==} + engines: {node: '>=14.16'} + styled-jsx@5.1.6: resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} engines: {node: '>= 12.0.0'} @@ -3756,6 +3987,10 @@ packages: engines: {node: '>=14.0.0'} hasBin: true + tapable@2.3.0: + resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} + engines: {node: '>=6'} + term-size@2.2.1: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} engines: {node: '>=8'} @@ -3824,6 +4059,10 @@ packages: ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + tsconfig-paths-webpack-plugin@4.2.0: + resolution: {integrity: sha512-zbem3rfRS8BgeNK50Zz5SIQgXzLafiHjOwUAvk/38/o1jHn/V5QAgVUcz884or7WYcPaH3N2CIfUc2u0ul7UcA==} + engines: {node: '>=10.13.0'} + tsconfig-paths@3.15.0: resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} @@ -3831,6 +4070,9 @@ packages: resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} engines: {node: '>=6'} + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} @@ -3853,6 +4095,12 @@ packages: typescript: optional: true + tsutils@3.21.0: + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + turbo-darwin-64@2.6.1: resolution: {integrity: sha512-Dm0HwhyZF4J0uLqkhUyCVJvKM9Rw7M03v3J9A7drHDQW0qAbIGBrUijQ8g4Q9Cciw/BXRRd8Uzkc3oue+qn+ZQ==} cpu: [x64] @@ -3891,6 +4139,15 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} + type-coverage-core@2.29.7: + resolution: {integrity: sha512-bt+bnXekw3p5NnqiZpNupOOxfUKGw2Z/YJedfGHkxpeyGLK7DZ59a6Wds8eq1oKjJc5Wulp2xL207z8FjFO14Q==} + peerDependencies: + typescript: 2 || 3 || 4 || 5 + + type-coverage@2.29.7: + resolution: {integrity: sha512-E67Chw7SxFe++uotisxt/xzB1UxxvLztzzQqVyUZ/jKujsejVqvoO5vn25oMvqJydqYrASBVBCQCy082E2qQYQ==} + hasBin: true + type-fest@5.2.0: resolution: {integrity: sha512-xxCJm+Bckc6kQBknN7i9fnP/xobQRsRQxR01CztFkp/h++yfVxUUcmMgfR2HttJx/dpWjS9ubVuyspJv24Q9DA==} engines: {node: '>=20'} @@ -4067,6 +4324,15 @@ packages: jsdom: optional: true + walk-up-path@4.0.0: + resolution: {integrity: sha512-3hu+tD8YzSLGuFYtPRb48vdhKMi0KQV5sn+uWr8+7dMEq/2G/dtLrdDinkLjqq5TIbIBjYJ4Ax/n3YiaW7QM8A==} + engines: {node: 20 || >=22} + + watskeburt@5.0.0: + resolution: {integrity: sha512-fEMhfIzu9WOuAJdDcTT+aPjn0JHI2+UeJ+zWSEs/tgMvc+MFDZVmhlZ8C1uJWXax1ETYc4trUnHFHyx2DrG0jQ==} + engines: {node: ^20.12||^22.13||>=24.0} + hasBin: true + webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} @@ -4164,6 +4430,9 @@ packages: zod@3.25.76: resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} + zod@4.1.13: + resolution: {integrity: sha512-AvvthqfqrAhNH9dnfmrfKzX5upOdjUVJYFqNSlkmGf64gRaTzlPwz99IHYnVs28qYAybvAlBV+H7pn0saFY4Ig==} + snapshots: '@adobe/css-tools@4.4.4': {} @@ -4692,9 +4961,9 @@ snapshots: '@esbuild/win32-x64@0.27.0': optional: true - '@eslint-community/eslint-utils@4.9.0(eslint@9.39.1(jiti@1.21.7))': + '@eslint-community/eslint-utils@4.9.0(eslint@9.39.1(jiti@2.6.1))': dependencies: - eslint: 9.39.1(jiti@1.21.7) + eslint: 9.39.1(jiti@2.6.1) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} @@ -4896,12 +5165,12 @@ snapshots: wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 - '@joshwooding/vite-plugin-react-docgen-typescript@0.5.0(typescript@5.9.3)(vite@6.4.1(@types/node@22.19.1)(jiti@1.21.7))': + '@joshwooding/vite-plugin-react-docgen-typescript@0.5.0(typescript@5.9.3)(vite@6.4.1(@types/node@22.19.1)(jiti@2.6.1))': dependencies: glob: 10.5.0 magic-string: 0.27.0 react-docgen-typescript: 2.4.0(typescript@5.9.3) - vite: 6.4.1(@types/node@22.19.1)(jiti@1.21.7) + vite: 6.4.1(@types/node@22.19.1)(jiti@2.6.1) optionalDependencies: typescript: 5.9.3 @@ -4962,6 +5231,13 @@ snapshots: '@tybys/wasm-util': 0.10.1 optional: true + '@napi-rs/wasm-runtime@1.0.7': + dependencies: + '@emnapi/core': 1.7.1 + '@emnapi/runtime': 1.7.1 + '@tybys/wasm-util': 0.10.1 + optional: true + '@next/env@16.0.4': {} '@next/eslint-plugin-next@16.0.4': @@ -5015,6 +5291,65 @@ snapshots: '@open-draft/until@2.1.0': {} + '@oxc-resolver/binding-android-arm-eabi@11.14.0': + optional: true + + '@oxc-resolver/binding-android-arm64@11.14.0': + optional: true + + '@oxc-resolver/binding-darwin-arm64@11.14.0': + optional: true + + '@oxc-resolver/binding-darwin-x64@11.14.0': + optional: true + + '@oxc-resolver/binding-freebsd-x64@11.14.0': + optional: true + + '@oxc-resolver/binding-linux-arm-gnueabihf@11.14.0': + optional: true + + '@oxc-resolver/binding-linux-arm-musleabihf@11.14.0': + optional: true + + '@oxc-resolver/binding-linux-arm64-gnu@11.14.0': + optional: true + + '@oxc-resolver/binding-linux-arm64-musl@11.14.0': + optional: true + + '@oxc-resolver/binding-linux-ppc64-gnu@11.14.0': + optional: true + + '@oxc-resolver/binding-linux-riscv64-gnu@11.14.0': + optional: true + + '@oxc-resolver/binding-linux-riscv64-musl@11.14.0': + optional: true + + '@oxc-resolver/binding-linux-s390x-gnu@11.14.0': + optional: true + + '@oxc-resolver/binding-linux-x64-gnu@11.14.0': + optional: true + + '@oxc-resolver/binding-linux-x64-musl@11.14.0': + optional: true + + '@oxc-resolver/binding-wasm32-wasi@11.14.0': + dependencies: + '@napi-rs/wasm-runtime': 1.0.7 + optional: true + + '@oxc-resolver/binding-win32-arm64-msvc@11.14.0': + optional: true + + '@oxc-resolver/binding-win32-ia32-msvc@11.14.0': + optional: true + + '@oxc-resolver/binding-win32-x64-msvc@11.14.0': + optional: true + '@pkgjs/parseargs@0.11.0': optional: true @@ -5198,13 +5533,13 @@ snapshots: react: 19.2.0 react-dom: 19.2.0(react@19.2.0) - '@storybook/builder-vite@8.6.14(storybook@8.6.14(prettier@2.8.8))(vite@6.4.1(@types/node@22.19.1)(jiti@1.21.7))': + '@storybook/builder-vite@8.6.14(storybook@8.6.14(prettier@2.8.8))(vite@6.4.1(@types/node@22.19.1)(jiti@2.6.1))': dependencies: '@storybook/csf-plugin': 8.6.14(storybook@8.6.14(prettier@2.8.8)) browser-assert: 1.2.1 storybook: 8.6.14(prettier@2.8.8) ts-dedent: 2.2.0 - vite: 6.4.1(@types/node@22.19.1)(jiti@1.21.7) + vite: 6.4.1(@types/node@22.19.1)(jiti@2.6.1) '@storybook/components@8.6.14(storybook@8.6.14(prettier@2.8.8))': dependencies: @@ -5263,11 +5598,11 @@ snapshots: react-dom: 19.2.0(react@19.2.0) storybook: 8.6.14(prettier@2.8.8) - '@storybook/react-vite@8.6.14(@storybook/test@8.6.14(storybook@8.6.14(prettier@2.8.8)))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rollup@4.53.3)(storybook@8.6.14(prettier@2.8.8))(typescript@5.9.3)(vite@6.4.1(@types/node@22.19.1)(jiti@1.21.7))': + '@storybook/react-vite@8.6.14(@storybook/test@8.6.14(storybook@8.6.14(prettier@2.8.8)))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rollup@4.53.3)(storybook@8.6.14(prettier@2.8.8))(typescript@5.9.3)(vite@6.4.1(@types/node@22.19.1)(jiti@2.6.1))': dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.5.0(typescript@5.9.3)(vite@6.4.1(@types/node@22.19.1)(jiti@1.21.7)) + '@joshwooding/vite-plugin-react-docgen-typescript': 0.5.0(typescript@5.9.3)(vite@6.4.1(@types/node@22.19.1)(jiti@2.6.1)) '@rollup/pluginutils': 5.3.0(rollup@4.53.3) - '@storybook/builder-vite': 8.6.14(storybook@8.6.14(prettier@2.8.8))(vite@6.4.1(@types/node@22.19.1)(jiti@1.21.7)) + '@storybook/builder-vite': 8.6.14(storybook@8.6.14(prettier@2.8.8))(vite@6.4.1(@types/node@22.19.1)(jiti@2.6.1)) '@storybook/react': 8.6.14(@storybook/test@8.6.14(storybook@8.6.14(prettier@2.8.8)))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@8.6.14(prettier@2.8.8))(typescript@5.9.3) find-up: 5.0.0 magic-string: 0.30.21 @@ -5277,7 +5612,7 @@ snapshots: resolve: 1.22.11 storybook: 8.6.14(prettier@2.8.8) tsconfig-paths: 4.2.0 - vite: 6.4.1(@types/node@22.19.1)(jiti@1.21.7) + vite: 6.4.1(@types/node@22.19.1)(jiti@2.6.1) optionalDependencies: '@storybook/test': 8.6.14(storybook@8.6.14(prettier@2.8.8)) transitivePeerDependencies: @@ -5363,6 +5698,8 @@ snapshots: dependencies: '@testing-library/dom': 10.4.0 + '@total-typescript/ts-reset@0.6.1': {} + '@tybys/wasm-util@0.10.1': dependencies: tslib: 2.8.1 @@ -5421,15 +5758,15 @@ snapshots: '@types/uuid@9.0.8': {} - '@typescript-eslint/eslint-plugin@8.48.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.48.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.48.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/parser': 8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/scope-manager': 8.48.0 - '@typescript-eslint/type-utils': 8.48.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) - '@typescript-eslint/utils': 8.48.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/type-utils': 8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.48.0 - eslint: 9.39.1(jiti@1.21.7) + eslint: 9.39.1(jiti@2.6.1) graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 @@ -5438,14 +5775,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3)': + '@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@typescript-eslint/scope-manager': 8.48.0 '@typescript-eslint/types': 8.48.0 '@typescript-eslint/typescript-estree': 8.48.0(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.48.0 debug: 4.4.3 - eslint: 9.39.1(jiti@1.21.7) + eslint: 9.39.1(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -5468,13 +5805,13 @@ snapshots: dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.48.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@typescript-eslint/types': 8.48.0 '@typescript-eslint/typescript-estree': 8.48.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.48.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/utils': 8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) debug: 4.4.3 - eslint: 9.39.1(jiti@1.21.7) + eslint: 9.39.1(jiti@2.6.1) ts-api-utils: 2.1.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: @@ -5497,13 +5834,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.48.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3)': + '@typescript-eslint/utils@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@1.21.7)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1)) '@typescript-eslint/scope-manager': 8.48.0 '@typescript-eslint/types': 8.48.0 '@typescript-eslint/typescript-estree': 8.48.0(typescript@5.9.3) - eslint: 9.39.1(jiti@1.21.7) + eslint: 9.39.1(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -5635,10 +5972,20 @@ snapshots: loupe: 3.2.1 tinyrainbow: 1.2.0 + acorn-jsx-walk@2.0.0: {} + acorn-jsx@5.3.2(acorn@8.15.0): dependencies: acorn: 8.15.0 + acorn-loose@8.5.2: + dependencies: + acorn: 8.15.0 + + acorn-walk@8.3.4: + dependencies: + acorn: 8.15.0 + acorn@8.15.0: {} ajv@6.12.6: @@ -5648,6 +5995,13 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 + ajv@8.17.1: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.1.0 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + ansi-colors@4.1.3: {} ansi-regex@5.0.1: {} @@ -5905,6 +6259,8 @@ snapshots: color-name@1.1.4: {} + commander@14.0.2: {} + commander@4.1.1: {} concat-map@0.0.1: {} @@ -5975,6 +6331,29 @@ snapshots: has-property-descriptors: 1.0.2 object-keys: 1.1.1 + dependency-cruiser@17.3.1: + dependencies: + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) + acorn-jsx-walk: 2.0.0 + acorn-loose: 8.5.2 + acorn-walk: 8.3.4 + ajv: 8.17.1 + commander: 14.0.2 + enhanced-resolve: 5.18.3 + ignore: 7.0.5 + interpret: 3.1.1 + is-installed-globally: 1.0.0 + json5: 2.2.3 + memoize: 10.2.0 + picomatch: 4.0.3 + prompts: 2.4.2 + rechoir: 0.8.0 + safe-regex: 2.1.1 + semver: 7.7.3 + tsconfig-paths-webpack-plugin: 4.2.0 + watskeburt: 5.0.0 + dequal@2.0.3: {} detect-indent@6.1.0: {} @@ -6016,6 +6395,11 @@ snapshots: emoji-regex@9.2.2: {} + enhanced-resolve@5.18.3: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.3.0 + enquirer@2.4.1: dependencies: ansi-colors: 4.1.3 @@ -6221,18 +6605,18 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-config-next@16.0.4(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3): + eslint-config-next@16.0.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3): dependencies: '@next/eslint-plugin-next': 16.0.4 - eslint: 9.39.1(jiti@1.21.7) + eslint: 9.39.1(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@1.21.7)) - eslint-plugin-import: 2.32.0(eslint@9.39.1(jiti@1.21.7)) - eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.1(jiti@1.21.7)) - eslint-plugin-react: 7.37.5(eslint@9.39.1(jiti@1.21.7)) - eslint-plugin-react-hooks: 7.0.1(eslint@9.39.1(jiti@1.21.7)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(eslint@9.39.1(jiti@2.6.1)) + eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.1(jiti@2.6.1)) + eslint-plugin-react: 7.37.5(eslint@9.39.1(jiti@2.6.1)) + eslint-plugin-react-hooks: 7.0.1(eslint@9.39.1(jiti@2.6.1)) globals: 16.4.0 - typescript-eslint: 8.48.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + typescript-eslint: 8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: @@ -6249,42 +6633,42 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@1.21.7)): + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@2.6.1)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.3 - eslint: 9.39.1(jiti@1.21.7) + eslint: 9.39.1(jiti@2.6.1) get-tsconfig: 4.13.0 is-bun-module: 2.0.0 stable-hash: 0.0.5 tinyglobby: 0.2.15 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(eslint@9.39.1(jiti@1.21.7)) + eslint-plugin-import: 2.32.0(eslint@9.39.1(jiti@2.6.1)) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.1(jiti@1.21.7)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.1(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.48.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) - eslint: 9.39.1(jiti@1.21.7) + '@typescript-eslint/parser': 8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.39.1(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@1.21.7)): + eslint-module-utils@2.12.1(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: - eslint: 9.39.1(jiti@1.21.7) + eslint: 9.39.1(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@1.21.7)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@2.6.1)) transitivePeerDependencies: - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.1(jiti@1.21.7)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -6293,9 +6677,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.39.1(jiti@1.21.7) + eslint: 9.39.1(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.1(jiti@1.21.7)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.1(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -6307,13 +6691,13 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.48.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/parser': 8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.32.0(eslint@9.39.1(jiti@1.21.7)): + eslint-plugin-import@2.32.0(eslint@9.39.1(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -6322,9 +6706,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.39.1(jiti@1.21.7) + eslint: 9.39.1(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@1.21.7)) + eslint-module-utils: 2.12.1(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -6340,7 +6724,7 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-jsx-a11y@6.10.2(eslint@9.39.1(jiti@1.21.7)): + eslint-plugin-jsx-a11y@6.10.2(eslint@9.39.1(jiti@2.6.1)): dependencies: aria-query: 5.3.2 array-includes: 3.1.9 @@ -6350,7 +6734,7 @@ snapshots: axobject-query: 4.1.0 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 9.39.1(jiti@1.21.7) + eslint: 9.39.1(jiti@2.6.1) hasown: 2.0.2 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 @@ -6359,22 +6743,22 @@ snapshots: safe-regex-test: 1.1.0 string.prototype.includes: 2.0.1 - eslint-plugin-react-hooks@5.2.0(eslint@9.39.1(jiti@1.21.7)): + eslint-plugin-react-hooks@5.2.0(eslint@9.39.1(jiti@2.6.1)): dependencies: - eslint: 9.39.1(jiti@1.21.7) + eslint: 9.39.1(jiti@2.6.1) - eslint-plugin-react-hooks@7.0.1(eslint@9.39.1(jiti@1.21.7)): + eslint-plugin-react-hooks@7.0.1(eslint@9.39.1(jiti@2.6.1)): dependencies: '@babel/core': 7.28.5 '@babel/parser': 7.28.5 - eslint: 9.39.1(jiti@1.21.7) + eslint: 9.39.1(jiti@2.6.1) hermes-parser: 0.25.1 zod: 3.25.76 zod-validation-error: 4.0.2(zod@3.25.76) transitivePeerDependencies: - supports-color - eslint-plugin-react@7.37.5(eslint@9.39.1(jiti@1.21.7)): + eslint-plugin-react@7.37.5(eslint@9.39.1(jiti@2.6.1)): dependencies: array-includes: 3.1.9 array.prototype.findlast: 1.2.5 @@ -6382,7 +6766,7 @@ snapshots: array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.2.1 - eslint: 9.39.1(jiti@1.21.7) + eslint: 9.39.1(jiti@2.6.1) estraverse: 5.3.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 @@ -6405,9 +6789,9 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.39.1(jiti@1.21.7): + eslint@9.39.1(jiti@2.6.1): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@1.21.7)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1)) '@eslint-community/regexpp': 4.12.2 '@eslint/config-array': 0.21.1 '@eslint/config-helpers': 0.4.2 @@ -6442,7 +6826,7 @@ snapshots: natural-compare: 1.4.0 optionator: 0.9.4 optionalDependencies: - jiti: 1.21.7 + jiti: 2.6.1 transitivePeerDependencies: - supports-color @@ -6498,10 +6882,16 @@ snapshots: fast-levenshtein@2.0.6: {} + fast-uri@3.1.0: {} + fastq@1.19.1: dependencies: reusify: 1.1.0 + fd-package-json@2.0.0: + dependencies: + walk-up-path: 4.0.0 + fdir@6.5.0(picomatch@4.0.3): optionalDependencies: picomatch: 4.0.3 @@ -6546,6 +6936,10 @@ snapshots: cross-spawn: 7.0.6 signal-exit: 4.1.0 + formatly@0.3.0: + dependencies: + fd-package-json: 2.0.0 + fraction.js@5.3.4: {} fs-extra@7.0.1: @@ -6633,6 +7027,10 @@ snapshots: minipass: 7.1.2 path-scurry: 2.0.1 + global-directory@4.0.1: + dependencies: + ini: 4.1.1 + globals@14.0.0: {} globals@16.4.0: {} @@ -6716,12 +7114,16 @@ snapshots: inherits@2.0.4: {} + ini@4.1.1: {} + internal-slot@1.1.0: dependencies: es-errors: 1.3.0 hasown: 2.0.2 side-channel: 1.1.0 + interpret@3.1.1: {} + is-arguments@1.2.0: dependencies: call-bound: 1.0.4 @@ -6797,6 +7199,11 @@ snapshots: dependencies: is-extglob: 2.1.1 + is-installed-globally@1.0.0: + dependencies: + global-directory: 4.0.1 + is-path-inside: 4.0.0 + is-map@2.0.3: {} is-negative-zero@2.0.3: {} @@ -6810,6 +7217,8 @@ snapshots: is-number@7.0.0: {} + is-path-inside@4.0.0: {} + is-regex@1.2.1: dependencies: call-bound: 1.0.4 @@ -6880,6 +7289,8 @@ snapshots: jiti@1.21.7: {} + jiti@2.6.1: {} + joycon@3.1.1: {} js-tokens@4.0.0: {} @@ -6901,6 +7312,8 @@ snapshots: json-schema-traverse@0.4.1: {} + json-schema-traverse@1.0.0: {} + json-stable-stringify-without-jsonify@1.0.1: {} json5@1.0.2: @@ -6924,6 +7337,25 @@ snapshots: dependencies: json-buffer: 3.0.1 + kleur@3.0.3: {} + + knip@5.70.2(@types/node@22.19.1)(typescript@5.9.3): + dependencies: + '@nodelib/fs.walk': 1.2.8 + '@types/node': 22.19.1 + fast-glob: 3.3.3 + formatly: 0.3.0 + jiti: 2.6.1 + js-yaml: 4.1.1 + minimist: 1.2.8 + oxc-resolver: 11.14.0 + picocolors: 1.1.1 + picomatch: 4.0.3 + smol-toml: 1.5.2 + strip-json-comments: 5.0.3 + typescript: 5.9.3 + zod: 4.1.13 + language-subtag-registry@0.3.23: {} language-tags@1.0.9: @@ -7026,6 +7458,10 @@ snapshots: math-intrinsics@1.1.0: {} + memoize@10.2.0: + dependencies: + mimic-function: 5.0.1 + memoizerific@1.11.3: dependencies: map-or-similar: 1.5.0 @@ -7037,6 +7473,8 @@ snapshots: braces: 3.0.3 picomatch: 2.3.1 + mimic-function@5.0.1: {} + min-indent@1.0.1: {} minimatch@10.1.1: @@ -7208,6 +7646,28 @@ snapshots: object-keys: 1.1.1 safe-push-apply: 1.0.0 + oxc-resolver@11.14.0: + optionalDependencies: + '@oxc-resolver/binding-android-arm-eabi': 11.14.0 + '@oxc-resolver/binding-android-arm64': 11.14.0 + '@oxc-resolver/binding-darwin-arm64': 11.14.0 + '@oxc-resolver/binding-darwin-x64': 11.14.0 + '@oxc-resolver/binding-freebsd-x64': 11.14.0 + '@oxc-resolver/binding-linux-arm-gnueabihf': 11.14.0 + '@oxc-resolver/binding-linux-arm-musleabihf': 11.14.0 + '@oxc-resolver/binding-linux-arm64-gnu': 11.14.0 + '@oxc-resolver/binding-linux-arm64-musl': 11.14.0 + '@oxc-resolver/binding-linux-ppc64-gnu': 11.14.0 + '@oxc-resolver/binding-linux-riscv64-gnu': 11.14.0 + '@oxc-resolver/binding-linux-riscv64-musl': 11.14.0 + '@oxc-resolver/binding-linux-s390x-gnu': 11.14.0 + '@oxc-resolver/binding-linux-x64-gnu': 11.14.0 + '@oxc-resolver/binding-linux-x64-musl': 11.14.0 + '@oxc-resolver/binding-wasm32-wasi': 11.14.0 + '@oxc-resolver/binding-win32-arm64-msvc': 11.14.0 + '@oxc-resolver/binding-win32-ia32-msvc': 11.14.0 + '@oxc-resolver/binding-win32-x64-msvc': 11.14.0 + p-filter@2.1.0: dependencies: p-map: 2.1.0 @@ -7311,6 +7771,13 @@ snapshots: jiti: 1.21.7 postcss: 8.5.6 + postcss-load-config@6.0.1(jiti@2.6.1)(postcss@8.5.6): + dependencies: + lilconfig: 3.1.3 + optionalDependencies: + jiti: 2.6.1 + postcss: 8.5.6 + postcss-nested@6.2.0(postcss@8.5.6): dependencies: postcss: 8.5.6 @@ -7347,6 +7814,11 @@ snapshots: process@0.11.10: {} + prompts@2.4.2: + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + prop-types@15.8.1: dependencies: loose-envify: 1.4.0 @@ -7414,6 +7886,10 @@ snapshots: tiny-invariant: 1.3.3 tslib: 2.8.1 + rechoir@0.8.0: + dependencies: + resolve: 1.22.11 + redent@3.0.0: dependencies: indent-string: 4.0.0 @@ -7430,6 +7906,8 @@ snapshots: get-proto: 1.0.1 which-builtin-type: 1.2.1 + regexp-tree@0.1.27: {} + regexp.prototype.flags@1.5.4: dependencies: call-bind: 1.0.8 @@ -7441,6 +7919,8 @@ snapshots: require-directory@2.1.1: {} + require-from-string@2.0.2: {} + resolve-from@4.0.0: {} resolve-from@5.0.0: {} @@ -7514,6 +7994,10 @@ snapshots: es-errors: 1.3.0 is-regex: 1.2.1 + safe-regex@2.1.1: + dependencies: + regexp-tree: 0.1.27 + safer-buffer@2.1.2: {} scheduler@0.27.0: {} @@ -7614,8 +8098,12 @@ snapshots: signal-exit@4.1.0: {} + sisteransi@1.0.5: {} + slash@3.0.0: {} + smol-toml@1.5.2: {} + source-map-js@1.2.1: {} source-map@0.6.1: {} @@ -7734,6 +8222,8 @@ snapshots: strip-json-comments@3.1.1: {} + strip-json-comments@5.0.3: {} + styled-jsx@5.1.6(@babel/core@7.28.5)(react@19.2.0): dependencies: client-only: 0.0.1 @@ -7789,6 +8279,8 @@ snapshots: - tsx - yaml + tapable@2.3.0: {} + term-size@2.2.1: {} thenify-all@1.6.0: @@ -7840,6 +8332,13 @@ snapshots: ts-interface-checker@0.1.13: {} + tsconfig-paths-webpack-plugin@4.2.0: + dependencies: + chalk: 4.1.2 + enhanced-resolve: 5.18.3 + tapable: 2.3.0 + tsconfig-paths: 4.2.0 + tsconfig-paths@3.15.0: dependencies: '@types/json5': 0.0.29 @@ -7853,9 +8352,11 @@ snapshots: minimist: 1.2.8 strip-bom: 3.0.0 + tslib@1.14.1: {} + tslib@2.8.1: {} - tsup@8.5.1(jiti@1.21.7)(postcss@8.5.6)(typescript@5.9.3): + tsup@8.5.1(jiti@2.6.1)(postcss@8.5.6)(typescript@5.9.3): dependencies: bundle-require: 5.1.0(esbuild@0.27.0) cac: 6.7.14 @@ -7866,7 +8367,7 @@ snapshots: fix-dts-default-cjs-exports: 1.0.1 joycon: 3.1.1 picocolors: 1.1.1 - postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.6) + postcss-load-config: 6.0.1(jiti@2.6.1)(postcss@8.5.6) resolve-from: 5.0.0 rollup: 4.53.3 source-map: 0.7.6 @@ -7883,6 +8384,11 @@ snapshots: - tsx - yaml + tsutils@3.21.0(typescript@5.9.3): + dependencies: + tslib: 1.14.1 + typescript: 5.9.3 + turbo-darwin-64@2.6.1: optional: true @@ -7914,6 +8420,23 @@ snapshots: dependencies: prelude-ls: 1.2.1 + type-coverage-core@2.29.7(typescript@5.9.3): + dependencies: + fast-glob: 3.3.3 + minimatch: 10.1.1 + normalize-path: 3.0.0 + tslib: 2.8.1 + tsutils: 3.21.0(typescript@5.9.3) + typescript: 5.9.3 + + type-coverage@2.29.7(typescript@5.9.3): + dependencies: + chalk: 4.1.2 + minimist: 1.2.8 + type-coverage-core: 2.29.7(typescript@5.9.3) + transitivePeerDependencies: + - typescript + type-fest@5.2.0: dependencies: tagged-tag: 1.0.0 @@ -7951,13 +8474,13 @@ snapshots: possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 - typescript-eslint@8.48.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3): + typescript-eslint@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.48.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) - '@typescript-eslint/parser': 8.48.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.48.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/typescript-estree': 8.48.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.48.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) - eslint: 9.39.1(jiti@1.21.7) + '@typescript-eslint/utils': 8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.39.1(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -8057,7 +8580,7 @@ snapshots: '@types/node': 22.19.1 fsevents: 2.3.3 - vite@6.4.1(@types/node@22.19.1)(jiti@1.21.7): + vite@6.4.1(@types/node@22.19.1)(jiti@2.6.1): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) @@ -8068,7 +8591,7 @@ snapshots: optionalDependencies: '@types/node': 22.19.1 fsevents: 2.3.3 - jiti: 1.21.7 + jiti: 2.6.1 vitest@2.1.9(@types/node@22.19.1)(happy-dom@15.11.7)(msw@2.12.3(@types/node@22.19.1)(typescript@5.9.3)): dependencies: @@ -8106,6 +8629,10 @@ snapshots: - supports-color - terser + walk-up-path@4.0.0: {} + + watskeburt@5.0.0: {} + webidl-conversions@7.0.0: {} webpack-virtual-modules@0.6.2: {} @@ -8209,3 +8736,5 @@ snapshots: zod: 3.25.76 zod@3.25.76: {} + + zod@4.1.13: {} diff --git a/reset.d.ts b/reset.d.ts new file mode 100644 index 0000000..80e93c2 --- /dev/null +++ b/reset.d.ts @@ -0,0 +1,3 @@ +// Enable @total-typescript/ts-reset for better built-in types +// This provides improved type definitions for common JavaScript operations +import "@total-typescript/ts-reset";