diff --git a/login/README.md b/login/README.md index c3601e666b..70db097532 100644 --- a/login/README.md +++ b/login/README.md @@ -35,8 +35,6 @@ We think the easiest path of getting up and running, is the following: - `login`: The login UI used by ZITADEL Cloud, powered by Next.js - `@zitadel/client`: shared client utilities for node and browser environments - `@zitadel/proto`: Protocol Buffers (proto) definitions used by ZITADEL projects -- `@zitadel/tsconfig`: shared `tsconfig.json`s used throughout the monorepo -- `@zitadel/eslint-config`: ESLint preset Each package and app is 100% [TypeScript](https://www.typescriptlang.org/). diff --git a/login/apps/login/.eslintrc.cjs b/login/apps/login/.eslintrc.cjs index c9f29e7b6a..da3473042a 100644 --- a/login/apps/login/.eslintrc.cjs +++ b/login/apps/login/.eslintrc.cjs @@ -1,15 +1,21 @@ module.exports = { - parser: "@babel/eslint-parser", + parser: "@typescript-eslint/parser", extends: ["next", "prettier"], + plugins: ["@typescript-eslint"], rules: { "@next/next/no-html-link-for-pages": "off", "@next/next/no-img-element": "off", - "react/no-unescaped-entities": "off" + "react/no-unescaped-entities": "off", + "no-unused-vars": "off", + "@typescript-eslint/no-unused-vars": ["error", { "argsIgnorePattern": "^_" }], + "no-undef": "off" }, parserOptions: { - requireConfigFile: false, - babelOptions: { - presets: ["next/babel"], + ecmaVersion: "latest", + sourceType: "module", + ecmaFeatures: { + jsx: true, }, + project: "./tsconfig.json", }, }; diff --git a/login/apps/login/package.json b/login/apps/login/package.json index 3c95d97d2c..ede6e32593 100644 --- a/login/apps/login/package.json +++ b/login/apps/login/package.json @@ -57,8 +57,9 @@ "@types/react-dom": "19.1.2", "@types/tinycolor2": "1.4.3", "@types/uuid": "^10.0.0", + "@typescript-eslint/eslint-plugin": "^7.0.0", + "@typescript-eslint/parser": "^7.0.0", "@vercel/git-hooks": "1.0.0", - "@zitadel/tsconfig": "workspace:*", "autoprefixer": "10.4.21", "eslint": "^8.57.0", "eslint-config-next": "15.4.0-canary.86", diff --git a/login/apps/login/package.standalone.json b/login/apps/login/package.standalone.json index a4576e7169..db0c7bbb6f 100644 --- a/login/apps/login/package.standalone.json +++ b/login/apps/login/package.standalone.json @@ -46,6 +46,8 @@ "@types/react-dom": "19.1.2", "@types/tinycolor2": "1.4.3", "@types/uuid": "^10.0.0", + "@typescript-eslint/eslint-plugin": "^7.0.0", + "@typescript-eslint/parser": "^7.0.0", "autoprefixer": "10.4.21", "eslint": "^8.57.0", "eslint-config-next": "15.4.0-canary.86", diff --git a/login/apps/login/scripts/README.md b/login/apps/login/scripts/README.md index 4c3fb5f862..3427fe79b6 100644 --- a/login/apps/login/scripts/README.md +++ b/login/apps/login/scripts/README.md @@ -1,6 +1,6 @@ # Standalone Build Scripts -This directory contains the minimal scripts needed for managing the ZITADEL Login UI standalone conversion. +This directory contains the simplified scripts needed for managing the ZITADEL Login UI standalone conversion. ## 📁 File Overview @@ -8,13 +8,12 @@ This directory contains the minimal scripts needed for managing the ZITADEL Logi - `package.json` - Main package file (monorepo mode with `workspace:*`) - `package.standalone.json` - Pre-configured standalone version (uses `latest`) -- `*.standalone.*` - Configuration templates for standalone mode -- `scripts/` - Conversion scripts +- `tsconfig.standalone.json` - TypeScript configuration for standalone mode +- `scripts/prepare-standalone.js` - Conversion script ### Generated/Temporary Files -- `*.generated.*` - Temporary files (ignored by git) -- `package.monorepo.backup.json` - Backup when switching modes +- `package.monorepo.backup.json` - Backup when switching to standalone mode ## 🛠️ Scripts Overview @@ -31,16 +30,16 @@ node scripts/prepare-standalone.js [--install] **What it does:** - Copies `package.standalone.json` → `package.json` -- Copies all `*.standalone.*` config files to their active versions +- Copies `tsconfig.standalone.json` → `tsconfig.json` - Optionally runs `npm install` ## 🚀 **Simplified Approach** This setup now uses a **much simpler approach**: -1. **Static Configuration**: `package.standalone.json` is pre-configured with `latest` versions -2. **No Version Fetching**: No network calls or complex version management -3. **Manual Maintenance**: Package versions are updated manually when needed +1. **Unified Configuration**: All ESLint, Prettier, and Tailwind configs work for both monorepo and standalone modes +2. **Static Configuration**: `package.standalone.json` is pre-configured with `latest` versions +3. **No Duplicate Configs**: No separate `*.standalone.*` config files needed 4. **Faster Setup**: Conversion is instant with just file copying ## 📋 **Usage for Customers** @@ -50,7 +49,7 @@ This setup now uses a **much simpler approach**: git clone # 2. Prepare standalone mode -./prepare-standalone.sh --install +node scripts/prepare-standalone.js --install # 3. Start developing npm run dev @@ -66,41 +65,18 @@ npm view @zitadel/proto version # Then update package.standalone.json with latest versions ``` -**What it does:** +## ✨ **Key Benefits** -- Converts `workspace:*` dependencies to published package versions -- Removes monorepo-specific devDependencies -- Copies standalone configuration files -- Updates package.json scripts for standalone use - -### `build-standalone.js` - -**Generates package.standalone.json with latest published package versions.** - -```bash -node scripts/build-standalone.js -``` - -**What it does:** - -- Fetches latest versions of `@zitadel/client` and `@zitadel/proto` -- Creates a standalone-ready package.json -- Safe to run in monorepo (doesn't modify current package.json) - -### `config-manager.js` - -**Utility for switching between monorepo and standalone configurations.** - -```bash -# Show current mode -node scripts/config-manager.js status - -# Switch to standalone mode -node scripts/config-manager.js switch standalone +- **Single Config Files**: ESLint, Prettier, and Tailwind configs work for both modes +- **No Duplication**: No need for separate `*.standalone.*` configuration files +- **Faster Conversion**: Only 2 files need to be copied (package.json and tsconfig.json) +- **Simpler Maintenance**: All configuration logic is in one place # Switch back to monorepo mode + node scripts/config-manager.js switch monorepo -``` + +```` ### `validate-standalone.js` @@ -108,7 +84,7 @@ node scripts/config-manager.js switch monorepo ```bash node scripts/validate-standalone.js -``` +```` **Checks:** @@ -122,126 +98,3 @@ node scripts/validate-standalone.js ### For Developers (Monorepo) 1. **Working in monorepo:** - - ```bash - # Normal development - uses workspace:* dependencies - pnpm dev - ``` - -2. **Testing standalone version:** - - ```bash - # Generate standalone package.json (safe, doesn't modify current setup) - node scripts/build-standalone.js - - # Switch to standalone mode for testing - node scripts/config-manager.js switch standalone - npm install - npm run dev - - # Switch back to monorepo mode - node scripts/config-manager.js switch monorepo - ``` - -### For Customers (Standalone) - -1. **Initial setup:** - - ```bash - git clone - cd login - ./prepare-standalone.sh --install - ``` - -2. **Development:** - - ```bash - npm run dev - ``` - -3. **Production:** - ```bash - npm run build:standalone - npm run start - ``` - -### For CI/CD (Package Publishing) - -1. **After publishing new @zitadel packages:** - - ```bash - # Update standalone version with latest packages - node scripts/build-standalone.js - - # Commit and push to standalone branch/repo - git add package.standalone.json - git commit -m "Update standalone package versions" - git push origin standalone - ``` - -## Configuration Files - -The scripts manage these configuration files: - -- `package.standalone.json` - Standalone version of package.json -- `tsconfig.standalone.json` - TypeScript config for standalone -- `.eslintrc.standalone.cjs` - ESLint config for standalone -- `prettier.config.standalone.mjs` - Prettier config for standalone -- `tailwind.config.standalone.mjs` - Tailwind config for standalone - -## File Structure - -``` -scripts/ -├── prepare-standalone.js # Main preparation script -├── build-standalone.js # Package.json generator -├── config-manager.js # Configuration switcher -└── README.md # This file - -# Configuration files -├── package.json # Current active package.json -├── package.standalone.json # Generated standalone version -├── tsconfig.json # Current active TypeScript config -├── tsconfig.standalone.json # Standalone TypeScript config -├── .eslintrc.cjs # Current active ESLint config -├── .eslintrc.standalone.cjs # Standalone ESLint config -└── ... -``` - -## Troubleshooting - -### "Could not fetch latest version" warnings - -This is normal when packages haven't been published yet or npm registry is slow. The scripts will fall back to existing versions. - -### Configuration file not found - -Some configuration files are optional. The scripts will warn but continue without them. - -### Permission denied on scripts - -Make sure scripts are executable: - -```bash -chmod +x scripts/*.js -chmod +x prepare-standalone.sh -``` - -### Package version conflicts - -If you encounter version conflicts, try: - -```bash -# Clean install -rm -rf node_modules package-lock.json -npm install -``` - -## Integration with Monorepo - -These scripts are designed to work seamlessly with the existing monorepo structure: - -- **Development**: Use normal `pnpm` commands in monorepo -- **Testing**: Use `config-manager.js` to test standalone mode -- **Publishing**: Use `build-standalone.js` to generate updated standalone configs -- **Customer Distribution**: Use `prepare-standalone.sh` for easy setup diff --git a/login/apps/login/src/components/consent.tsx b/login/apps/login/src/components/consent.tsx index e60ed2901b..fa5b071de2 100644 --- a/login/apps/login/src/components/consent.tsx +++ b/login/apps/login/src/components/consent.tsx @@ -56,7 +56,7 @@ export function ConsentScreen({ )} {scopes?.map((s) => { const translationKey = `device.scope.${s}`; - const description = t(translationKey, null); + const description = t(translationKey); // Check if the key itself is returned and provide a fallback const resolvedDescription = diff --git a/login/apps/login/src/i18n/request.ts b/login/apps/login/src/i18n/request.ts index 15cfe01548..5ddf7da97c 100644 --- a/login/apps/login/src/i18n/request.ts +++ b/login/apps/login/src/i18n/request.ts @@ -54,6 +54,10 @@ export default getRequestConfig(async () => { return { locale, - messages: deepmerge.all([fallbackMessages, localeMessages, customMessages]), + messages: deepmerge.all([ + fallbackMessages, + localeMessages, + customMessages, + ]) as Record, }; }); diff --git a/login/packages/zitadel-client/.eslintrc.cjs b/login/packages/zitadel-client/.eslintrc.cjs index 0eb32ca20d..2aa38a6ac4 100644 --- a/login/packages/zitadel-client/.eslintrc.cjs +++ b/login/packages/zitadel-client/.eslintrc.cjs @@ -1,4 +1,14 @@ module.exports = { root: true, - extends: ["@zitadel/eslint-config"], + extends: ["eslint:recommended", "@typescript-eslint/recommended"], + parser: "@typescript-eslint/parser", + plugins: ["@typescript-eslint"], + env: { + node: true, + es2022: true, + }, + parserOptions: { + ecmaVersion: 2022, + sourceType: "module", + }, }; diff --git a/login/packages/zitadel-client/package.json b/login/packages/zitadel-client/package.json index bd7d79fec3..21dab5cbab 100644 --- a/login/packages/zitadel-client/package.json +++ b/login/packages/zitadel-client/package.json @@ -65,6 +65,8 @@ "devDependencies": { "@bufbuild/protocompile": "^0.0.1", "@bufbuild/buf": "^1.53.0", - "@zitadel/tsconfig": "workspace:*" + "@typescript-eslint/eslint-plugin": "^8.15.0", + "@typescript-eslint/parser": "^8.15.0", + "eslint": "^8.57.0" } } diff --git a/login/packages/zitadel-client/tsconfig.json b/login/packages/zitadel-client/tsconfig.json index 5f0ea69110..58f445d906 100644 --- a/login/packages/zitadel-client/tsconfig.json +++ b/login/packages/zitadel-client/tsconfig.json @@ -1,5 +1,23 @@ { - "extends": "@zitadel/tsconfig/tsup.json", + "$schema": "https://json.schemastore.org/tsconfig", + "compilerOptions": { + "composite": false, + "declaration": true, + "declarationMap": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "inlineSources": false, + "isolatedModules": true, + "moduleResolution": "node16", + "noUnusedLocals": false, + "noUnusedParameters": false, + "preserveWatchOutput": true, + "skipLibCheck": true, + "strict": true, + "lib": ["es2023"], + "module": "node16", + "target": "es2022" + }, "include": ["./src/**/*"], "exclude": ["dist", "build", "node_modules"] } diff --git a/login/packages/zitadel-tsconfig/CHANGELOG.md b/login/packages/zitadel-tsconfig/CHANGELOG.md deleted file mode 100644 index c2d2e7e31c..0000000000 --- a/login/packages/zitadel-tsconfig/CHANGELOG.md +++ /dev/null @@ -1,13 +0,0 @@ -# @zitadel/tsconfig - -## 0.1.1 - -### Patch Changes - -- README updates - -## 0.1.0 - -### Minor Changes - -- f32ab7f: Initial release diff --git a/login/packages/zitadel-tsconfig/README.md b/login/packages/zitadel-tsconfig/README.md deleted file mode 100644 index b93674b2b1..0000000000 --- a/login/packages/zitadel-tsconfig/README.md +++ /dev/null @@ -1,35 +0,0 @@ -# ZITADEL TypeScript Config - -This package provides the TypeScript configuration used by ZITADEL projects. It includes a set of rules and settings to ensure consistent TypeScript configuration across all ZITADEL codebases. - -## Installation - -To install the package, use npm or yarn: - -```sh -npm install @zitadel/tsconfig -``` - -or - -```sh -yarn add @zitadel/tsconfig -``` - -## Usage - -To use the TypeScript configuration in your project, extend it in your `tsconfig.json` file: - -```json -{ - "extends": "@zitadel/tsconfig/tsup.json" -} -``` - -## Documentation - -For detailed documentation and configuration options, please refer to the [TypeScript documentation](https://www.typescriptlang.org/docs/). - -## Contributing - -Contributions are welcome! Please read the contributing guidelines before getting started. diff --git a/login/packages/zitadel-tsconfig/base.json b/login/packages/zitadel-tsconfig/base.json deleted file mode 100644 index 6d65860cce..0000000000 --- a/login/packages/zitadel-tsconfig/base.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "display": "Default", - "compilerOptions": { - "composite": false, - "declaration": true, - "declarationMap": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "inlineSources": false, - "isolatedModules": true, - "moduleResolution": "node16", - "noUnusedLocals": false, - "noUnusedParameters": false, - "preserveWatchOutput": true, - "skipLibCheck": true, - "strict": true - }, - "exclude": ["node_modules"] -} diff --git a/login/packages/zitadel-tsconfig/nextjs.json b/login/packages/zitadel-tsconfig/nextjs.json deleted file mode 100644 index eaa9942e1e..0000000000 --- a/login/packages/zitadel-tsconfig/nextjs.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "display": "Next.js", - "extends": "./base.json", - "compilerOptions": { - "target": "es5", - "lib": ["dom", "dom.iterable", "esnext"], - "allowJs": true, - "skipLibCheck": true, - "strict": true, - "forceConsistentCasingInFileNames": true, - "noEmit": true, - "esModuleInterop": true, - "module": "esnext", - "moduleResolution": "bundler", - "resolveJsonModule": true, - "isolatedModules": true, - "jsx": "preserve", - "incremental": true, - "preserveSymlinks": true, - "declaration": false, - "declarationMap": false, - "baseUrl": ".", - "plugins": [ - { - "name": "next" - } - ] - }, - "include": ["src", "next-env.d.ts"], - "exclude": ["node_modules"] -} diff --git a/login/packages/zitadel-tsconfig/node20.json b/login/packages/zitadel-tsconfig/node20.json deleted file mode 100644 index bc88cfbee4..0000000000 --- a/login/packages/zitadel-tsconfig/node20.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "display": "Node 20", - "extends": "./base.json", - "compilerOptions": { - "lib": ["es2023"], - "module": "node16", - "target": "es2022" - } -} diff --git a/login/packages/zitadel-tsconfig/package.json b/login/packages/zitadel-tsconfig/package.json deleted file mode 100644 index a4d713db85..0000000000 --- a/login/packages/zitadel-tsconfig/package.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name": "@zitadel/tsconfig", - "version": "0.1.1", - "publishConfig": { - "access": "public" - }, - "type": "module", - "license": "MIT" -} diff --git a/login/packages/zitadel-tsconfig/react-library.json b/login/packages/zitadel-tsconfig/react-library.json deleted file mode 100644 index 3f6e3580f4..0000000000 --- a/login/packages/zitadel-tsconfig/react-library.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "display": "React Library", - "extends": "./base.json", - "compilerOptions": { - "jsx": "react-jsx", - "lib": ["dom", "ES2015"], - "module": "preserve", - "moduleResolution": "Bundler" - } -} diff --git a/login/packages/zitadel-tsconfig/tsup.json b/login/packages/zitadel-tsconfig/tsup.json deleted file mode 100644 index 1e5cbe42be..0000000000 --- a/login/packages/zitadel-tsconfig/tsup.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "display": "tsup", - "extends": "./node20.json" -} diff --git a/login/pnpm-lock.yaml b/login/pnpm-lock.yaml index 853dfb4610..78e78c7230 100644 --- a/login/pnpm-lock.yaml +++ b/login/pnpm-lock.yaml @@ -144,12 +144,15 @@ importers: '@types/uuid': specifier: ^10.0.0 version: 10.0.0 + '@typescript-eslint/eslint-plugin': + specifier: ^7.0.0 + version: 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3) + '@typescript-eslint/parser': + specifier: ^7.0.0 + version: 7.18.0(eslint@8.57.1)(typescript@5.8.3) '@vercel/git-hooks': specifier: 1.0.0 version: 1.0.0 - '@zitadel/tsconfig': - specifier: workspace:* - version: link:../../packages/zitadel-tsconfig autoprefixer: specifier: 10.4.21 version: 10.4.21(postcss@8.5.3) @@ -277,9 +280,15 @@ importers: '@bufbuild/protocompile': specifier: ^0.0.1 version: 0.0.1(@bufbuild/buf@1.53.0) - '@zitadel/tsconfig': - specifier: workspace:* - version: link:../zitadel-tsconfig + '@typescript-eslint/eslint-plugin': + specifier: ^8.15.0 + version: 8.15.0(@typescript-eslint/parser@8.36.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3) + '@typescript-eslint/parser': + specifier: ^8.15.0 + version: 8.36.0(eslint@8.57.1)(typescript@5.8.3) + eslint: + specifier: ^8.57.0 + version: 8.57.1 packages/zitadel-proto: dependencies: @@ -291,8 +300,6 @@ importers: specifier: ^1.53.0 version: 1.53.0 - packages/zitadel-tsconfig: {} - packages: '@adobe/css-tools@4.4.0': @@ -1551,6 +1558,17 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} + '@typescript-eslint/eslint-plugin@7.18.0': + resolution: {integrity: sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + '@typescript-eslint/eslint-plugin@8.15.0': resolution: {integrity: sha512-+zkm9AR1Ds9uLWN3fkoeXgFppaQ+uEVtfOV62dDmsy9QCNqlRHWNEck4yarvRNrvRcHQLGfqBNui3cimoz8XAg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1572,6 +1590,19 @@ packages: typescript: optional: true + '@typescript-eslint/parser@8.36.0': + resolution: {integrity: sha512-FuYgkHwZLuPbZjQHzJXrtXreJdFMKl16BFYyRrLxDhWr6Qr7Kbcu2s1Yhu8tsiMXw1S0W1pjfFfYEt+R604s+Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/project-service@8.36.0': + resolution: {integrity: sha512-JAhQFIABkWccQYeLMrHadu/fhpzmSQ1F1KXkpzqiVxA/iYI6UnRt2trqXHt1sYEcw1mxLnB9rKMsOxXPxowN/g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.9.0' + '@typescript-eslint/scope-manager@7.18.0': resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} engines: {node: ^18.18.0 || >=20.0.0} @@ -1580,6 +1611,26 @@ packages: resolution: {integrity: sha512-QRGy8ADi4J7ii95xz4UoiymmmMd/zuy9azCaamnZ3FM8T5fZcex8UfJcjkiEZjJSztKfEBe3dZ5T/5RHAmw2mA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/scope-manager@8.36.0': + resolution: {integrity: sha512-wCnapIKnDkN62fYtTGv2+RY8FlnBYA3tNm0fm91kc2BjPhV2vIjwwozJ7LToaLAyb1ca8BxrS7vT+Pvvf7RvqA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/tsconfig-utils@8.36.0': + resolution: {integrity: sha512-Nhh3TIEgN18mNbdXpd5Q8mSCBnrZQeY9V7Ca3dqYvNDStNIGRmJA6dmrIPMJ0kow3C7gcQbpsG2rPzy1Ks/AnA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/type-utils@7.18.0': + resolution: {integrity: sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + '@typescript-eslint/type-utils@8.15.0': resolution: {integrity: sha512-UU6uwXDoI3JGSXmcdnP5d8Fffa2KayOhUUqr/AiBnG1Gl7+7ut/oyagVeSkh7bxQ0zSXV9ptRh/4N15nkCqnpw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1598,6 +1649,10 @@ packages: resolution: {integrity: sha512-n3Gt8Y/KyJNe0S3yDCD2RVKrHBC4gTUcLTebVBXacPy091E6tNspFLKRXlk3hwT4G55nfr1n2AdFqi/XMxzmPQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/types@8.36.0': + resolution: {integrity: sha512-xGms6l5cTJKQPZOKM75Dl9yBfNdGeLRsIyufewnxT4vZTrjC0ImQT4fj8QmtJK84F58uSh5HVBSANwcfiXxABQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/typescript-estree@7.18.0': resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==} engines: {node: ^18.18.0 || >=20.0.0} @@ -1616,6 +1671,18 @@ packages: typescript: optional: true + '@typescript-eslint/typescript-estree@8.36.0': + resolution: {integrity: sha512-JaS8bDVrfVJX4av0jLpe4ye0BpAaUW7+tnS4Y4ETa3q7NoZgzYbN9zDQTJ8kPb5fQ4n0hliAt9tA4Pfs2zA2Hg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/utils@7.18.0': + resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + '@typescript-eslint/utils@8.15.0': resolution: {integrity: sha512-k82RI9yGhr0QM3Dnq+egEpz9qB6Un+WLYhmoNcvl8ltMEededhh7otBVVIDDsEEttauwdY/hQoSsOv13lxrFzQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1634,6 +1701,10 @@ packages: resolution: {integrity: sha512-h8vYOulWec9LhpwfAdZf2bjr8xIp0KNKnpgqSz0qqYYKAW/QZKw3ktRndbiAtUz4acH4QLQavwZBYCc0wulA/Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/visitor-keys@8.36.0': + resolution: {integrity: sha512-vZrhV2lRPWDuGoxcmrzRZyxAggPL+qp3WzUrlZD+slFueDiYHxeBa34dUXPuC0RmGKzl4lS5kFJYvKCq9cnNDA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@ungap/structured-clone@1.2.0': resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} @@ -2573,6 +2644,10 @@ packages: resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint-visitor-keys@4.2.1: + resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint@8.57.1: resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4631,6 +4706,12 @@ packages: peerDependencies: typescript: '>=4.2.0' + ts-api-utils@2.1.0: + resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + ts-error@1.0.6: resolution: {integrity: sha512-tLJxacIQUM82IR7JO1UUkKlYuUTmoY9HBJAmNWFzheSlDS5SPMcNIepejHJa4BpPQLAcbRhRf3GDJzyj6rbKvA==} @@ -6286,10 +6367,46 @@ snapshots: '@types/node': 22.14.1 optional: true - '@typescript-eslint/eslint-plugin@8.15.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3)': + '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3)': dependencies: '@eslint-community/regexpp': 4.12.1 '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.8.3) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.1)(typescript@5.8.3) + '@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 7.18.0 + eslint: 8.57.1 + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare: 1.4.0 + ts-api-utils: 1.4.1(typescript@5.8.3) + optionalDependencies: + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@8.36.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3)': + dependencies: + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 8.36.0(eslint@8.57.1)(typescript@5.8.3) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.1)(typescript@5.8.3) + '@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 7.18.0 + eslint: 8.57.1 + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare: 1.4.0 + ts-api-utils: 1.4.1(typescript@5.8.3) + optionalDependencies: + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/eslint-plugin@8.15.0(@typescript-eslint/parser@8.36.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3)': + dependencies: + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 8.36.0(eslint@8.57.1)(typescript@5.8.3) '@typescript-eslint/scope-manager': 8.15.0 '@typescript-eslint/type-utils': 8.15.0(eslint@8.57.1)(typescript@5.8.3) '@typescript-eslint/utils': 8.15.0(eslint@8.57.1)(typescript@5.8.3) @@ -6317,6 +6434,27 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/parser@8.36.0(eslint@8.57.1)(typescript@5.8.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.36.0 + '@typescript-eslint/types': 8.36.0 + '@typescript-eslint/typescript-estree': 8.36.0(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.36.0 + debug: 4.4.0(supports-color@5.5.0) + eslint: 8.57.1 + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/project-service@8.36.0(typescript@5.8.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.36.0(typescript@5.8.3) + '@typescript-eslint/types': 8.36.0 + debug: 4.4.0(supports-color@5.5.0) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/scope-manager@7.18.0': dependencies: '@typescript-eslint/types': 7.18.0 @@ -6327,6 +6465,27 @@ snapshots: '@typescript-eslint/types': 8.15.0 '@typescript-eslint/visitor-keys': 8.15.0 + '@typescript-eslint/scope-manager@8.36.0': + dependencies: + '@typescript-eslint/types': 8.36.0 + '@typescript-eslint/visitor-keys': 8.36.0 + + '@typescript-eslint/tsconfig-utils@8.36.0(typescript@5.8.3)': + dependencies: + typescript: 5.8.3 + + '@typescript-eslint/type-utils@7.18.0(eslint@8.57.1)(typescript@5.8.3)': + dependencies: + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.8.3) + '@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@5.8.3) + debug: 4.4.0(supports-color@5.5.0) + eslint: 8.57.1 + ts-api-utils: 1.4.1(typescript@5.8.3) + optionalDependencies: + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/type-utils@8.15.0(eslint@8.57.1)(typescript@5.8.3)': dependencies: '@typescript-eslint/typescript-estree': 8.15.0(typescript@5.8.3) @@ -6343,6 +6502,8 @@ snapshots: '@typescript-eslint/types@8.15.0': {} + '@typescript-eslint/types@8.36.0': {} + '@typescript-eslint/typescript-estree@7.18.0(typescript@5.8.3)': dependencies: '@typescript-eslint/types': 7.18.0 @@ -6373,6 +6534,33 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/typescript-estree@8.36.0(typescript@5.8.3)': + dependencies: + '@typescript-eslint/project-service': 8.36.0(typescript@5.8.3) + '@typescript-eslint/tsconfig-utils': 8.36.0(typescript@5.8.3) + '@typescript-eslint/types': 8.36.0 + '@typescript-eslint/visitor-keys': 8.36.0 + debug: 4.4.0(supports-color@5.5.0) + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.1 + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@7.18.0(eslint@8.57.1)(typescript@5.8.3)': + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.8.3) + eslint: 8.57.1 + transitivePeerDependencies: + - supports-color + - typescript + '@typescript-eslint/utils@8.15.0(eslint@8.57.1)(typescript@5.8.3)': dependencies: '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) @@ -6395,6 +6583,11 @@ snapshots: '@typescript-eslint/types': 8.15.0 eslint-visitor-keys: 4.2.0 + '@typescript-eslint/visitor-keys@8.36.0': + dependencies: + '@typescript-eslint/types': 8.36.0 + eslint-visitor-keys: 4.2.1 + '@ungap/structured-clone@1.2.0': {} '@vercel/analytics@1.3.1(next@15.4.0-canary.86(@babel/core@7.26.10)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0))(react@19.1.0)': @@ -7439,12 +7632,12 @@ snapshots: dependencies: '@next/eslint-plugin-next': 15.4.0-canary.86 '@rushstack/eslint-patch': 1.10.4 - '@typescript-eslint/eslint-plugin': 8.15.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3) - '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.8.3) + '@typescript-eslint/eslint-plugin': 7.18.0(@typescript-eslint/parser@8.36.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3) + '@typescript-eslint/parser': 8.36.0(eslint@8.57.1)(typescript@5.8.3) eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0)(eslint@8.57.1) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.36.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0)(eslint@8.57.1) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1) eslint-plugin-jsx-a11y: 6.10.2(eslint@8.57.1) eslint-plugin-react: 7.37.5(eslint@8.57.1) eslint-plugin-react-hooks: 5.2.0(eslint@8.57.1) @@ -7467,48 +7660,47 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0)(eslint@8.57.1): + eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.36.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0)(eslint@8.57.1): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.0(supports-color@5.5.0) enhanced-resolve: 5.17.1 eslint: 8.57.1 - eslint-module-utils: 2.8.2(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0)(eslint@8.57.1))(eslint@8.57.1) + eslint-module-utils: 2.8.2(@typescript-eslint/parser@8.36.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.36.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0)(eslint@8.57.1))(eslint@8.57.1) fast-glob: 3.3.3 get-tsconfig: 4.8.0 is-bun-module: 1.1.0 is-glob: 4.0.3 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1) transitivePeerDependencies: - '@typescript-eslint/parser' - eslint-import-resolver-node - eslint-import-resolver-webpack - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0)(eslint@8.57.1))(eslint@8.57.1): + eslint-module-utils@2.12.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1): dependencies: debug: 3.2.7(supports-color@8.1.1) optionalDependencies: '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.8.3) eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0)(eslint@8.57.1) transitivePeerDependencies: - supports-color - eslint-module-utils@2.8.2(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0)(eslint@8.57.1))(eslint@8.57.1): + eslint-module-utils@2.8.2(@typescript-eslint/parser@8.36.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.36.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0)(eslint@8.57.1))(eslint@8.57.1): dependencies: debug: 3.2.7(supports-color@8.1.1) optionalDependencies: - '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.8.3) + '@typescript-eslint/parser': 8.36.0(eslint@8.57.1)(typescript@5.8.3) eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0)(eslint@8.57.1) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.36.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0)(eslint@8.57.1) transitivePeerDependencies: - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -7519,7 +7711,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0)(eslint@8.57.1))(eslint@8.57.1) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -7598,6 +7790,8 @@ snapshots: eslint-visitor-keys@4.2.0: {} + eslint-visitor-keys@4.2.1: {} + eslint@8.57.1: dependencies: '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) @@ -9770,6 +9964,10 @@ snapshots: dependencies: typescript: 5.8.3 + ts-api-utils@2.1.0(typescript@5.8.3): + dependencies: + typescript: 5.8.3 + ts-error@1.0.6: {} ts-interface-checker@0.1.13: {}