fork of hey-api/openapi-ts because I need some additional things

test: update vitest configuration

Lubos 8a324052 8f53e298

+708 -897
+1
.vscode/settings.json
··· 28 28 "typescript.preferences.autoImportFileExcludePatterns": ["dist/**"], 29 29 "typescript.preferences.autoImportSpecifierExcludeRegexes": ["^(node:)?os$"], 30 30 "typescript.tsdk": "node_modules/typescript/lib", 31 + "vitest.rootConfig": "vitest.config.ts", 31 32 "[javascript]": { 32 33 "editor.defaultFormatter": "oxc.oxc-vscode" 33 34 },
+2 -1
dev/typescript/presets.ts
··· 1 - import { sdk, tanstackReactQuery, transformers, typescript, zod } from './plugins'; 1 + import { sdk, tanstackReactQuery, transformers, typescript, valibot, zod } from './plugins'; 2 2 3 3 export const presets = { 4 4 full: () => [ ··· 33 33 /** SDK + Zod validation */ 34 34 typescript(), 35 35 sdk({ validator: 'zod' }), 36 + valibot({ metadata: true }), 36 37 zod({ metadata: true }), 37 38 ], 38 39 } as const;
-1
examples/openapi-ts-axios/package.json
··· 20 20 "react-dom": "19.0.0" 21 21 }, 22 22 "devDependencies": { 23 - "@config/vite-base": "workspace:*", 24 23 "@hey-api/openapi-ts": "workspace:*", 25 24 "@types/react": "19.0.1", 26 25 "@types/react-dom": "19.0.1",
-1
examples/openapi-ts-axios/tailwind.config.js
··· 1 1 /** @type {import('tailwindcss').Config} */ 2 2 export default { 3 3 content: ['./index.html', './src/**/*.{html,js,ts,jsx,tsx}'], 4 - plugins: [], 5 4 theme: { 6 5 extend: {}, 7 6 },
-1
examples/openapi-ts-fastify/package.json
··· 13 13 "fastify-openapi-glue": "4.8.0" 14 14 }, 15 15 "devDependencies": { 16 - "@config/vite-base": "workspace:*", 17 16 "@hey-api/openapi-ts": "workspace:*", 18 17 "eslint": "9.17.0", 19 18 "oxfmt": "0.27.0",
+2 -7
examples/openapi-ts-fastify/vite.config.ts
··· 1 - import { fileURLToPath } from 'node:url'; 1 + import { defineProject } from 'vitest/config'; 2 2 3 - import { createVitestConfig } from '@config/vite-base'; 4 - 5 - // https://vitejs.dev/config/ 6 - export default createVitestConfig(fileURLToPath(new URL('./', import.meta.url)), { 3 + export default defineProject({ 7 4 resolve: { 8 5 alias: { 9 6 src: new URL('./src', import.meta.url).pathname, ··· 11 8 }, 12 9 test: { 13 10 environment: 'node', 14 - globals: true, 15 11 include: ['test/**/*.test.ts'], 16 - watch: false, 17 12 }, 18 13 });
-1
examples/openapi-ts-fetch/package.json
··· 19 19 "react-dom": "19.0.0" 20 20 }, 21 21 "devDependencies": { 22 - "@config/vite-base": "workspace:*", 23 22 "@hey-api/openapi-ts": "workspace:*", 24 23 "@types/react": "19.0.1", 25 24 "@types/react-dom": "19.0.1",
-1
examples/openapi-ts-fetch/tailwind.config.js
··· 1 1 /** @type {import('tailwindcss').Config} */ 2 2 export default { 3 3 content: ['./index.html', './src/**/*.{html,js,ts,jsx,tsx}'], 4 - plugins: [], 5 4 theme: { 6 5 extend: {}, 7 6 },
-1
examples/openapi-ts-ky/package.json
··· 20 20 "react-dom": "19.0.0" 21 21 }, 22 22 "devDependencies": { 23 - "@config/vite-base": "workspace:*", 24 23 "@hey-api/openapi-ts": "workspace:*", 25 24 "@types/react": "19.0.1", 26 25 "@types/react-dom": "19.0.1",
-1
examples/openapi-ts-ky/tailwind.config.js
··· 1 1 /** @type {import('tailwindcss').Config} */ 2 2 export default { 3 3 content: ['./index.html', './src/**/*.{html,js,ts,jsx,tsx}'], 4 - plugins: [], 5 4 theme: { 6 5 extend: {}, 7 6 },
-1
examples/openapi-ts-next/tailwind.config.ts
··· 6 6 './components/**/*.{js,ts,jsx,tsx,mdx}', 7 7 './app/**/*.{js,ts,jsx,tsx,mdx}', 8 8 ], 9 - plugins: [], 10 9 theme: { 11 10 extend: { 12 11 colors: {
-1
examples/openapi-ts-ofetch/package.json
··· 16 16 "vue": "3.5.13" 17 17 }, 18 18 "devDependencies": { 19 - "@config/vite-base": "workspace:*", 20 19 "@hey-api/openapi-ts": "workspace:*", 21 20 "@rushstack/eslint-patch": "1.10.5", 22 21 "@tsconfig/node24": "24.0.4",
-1
examples/openapi-ts-ofetch/tailwind.config.ts
··· 2 2 3 3 export default { 4 4 content: ['./index.html', './src/**/*.{vue,js,ts,jsx,tsx}'], 5 - plugins: [], 6 5 theme: { 7 6 extend: {}, 8 7 },
-1
examples/openapi-ts-openai/package.json
··· 20 20 "react-dom": "19.0.0" 21 21 }, 22 22 "devDependencies": { 23 - "@config/vite-base": "workspace:*", 24 23 "@hey-api/openapi-ts": "workspace:*", 25 24 "@types/react": "19.0.1", 26 25 "@types/react-dom": "19.0.1",
-1
examples/openapi-ts-openai/tailwind.config.js
··· 1 1 /** @type {import('tailwindcss').Config} */ 2 2 export default { 3 3 content: ['./index.html', './src/**/*.{html,js,ts,jsx,tsx}'], 4 - plugins: [], 5 4 theme: { 6 5 extend: {}, 7 6 },
-1
examples/openapi-ts-pinia-colada/package.json
··· 21 21 "vue-router": "4.5.0" 22 22 }, 23 23 "devDependencies": { 24 - "@config/vite-base": "workspace:*", 25 24 "@hey-api/openapi-ts": "workspace:*", 26 25 "@pinia/colada-devtools": "0.1.6", 27 26 "@rushstack/eslint-patch": "1.10.5",
-1
examples/openapi-ts-pinia-colada/tailwind.config.ts
··· 2 2 3 3 export default { 4 4 content: ['./index.html', './src/**/*.{vue,js,ts,jsx,tsx}'], 5 - plugins: [], 6 5 theme: { 7 6 extend: {}, 8 7 },
+3 -3
examples/openapi-ts-pinia-colada/vitest.config.ts
··· 1 1 import { fileURLToPath } from 'node:url'; 2 2 3 - import { createVitestConfig } from '@config/vite-base'; 4 - import { configDefaults, mergeConfig } from 'vitest/config'; 3 + import { configDefaults, defineProject, mergeConfig } from 'vitest/config'; 5 4 6 5 import viteConfig from './vite.config'; 7 6 8 7 export default mergeConfig( 9 8 viteConfig, 10 - createVitestConfig(fileURLToPath(new URL('./', import.meta.url)), { 9 + defineProject({ 11 10 test: { 12 11 environment: 'jsdom', 13 12 exclude: [...configDefaults.exclude, 'e2e/**'], 13 + root: fileURLToPath(new URL('./', import.meta.url)), 14 14 }, 15 15 }), 16 16 );
-1
examples/openapi-ts-tanstack-react-query/package.json
··· 21 21 "react-dom": "19.0.0" 22 22 }, 23 23 "devDependencies": { 24 - "@config/vite-base": "workspace:*", 25 24 "@hey-api/openapi-ts": "workspace:*", 26 25 "@types/react": "19.0.1", 27 26 "@types/react-dom": "19.0.1",
-1
examples/openapi-ts-tanstack-react-query/tailwind.config.js
··· 1 1 /** @type {import('tailwindcss').Config} */ 2 2 export default { 3 3 content: ['./index.html', './src/**/*.{html,js,ts,jsx,tsx}'], 4 - plugins: [], 5 4 theme: { 6 5 extend: {}, 7 6 },
-1
examples/openapi-ts-tanstack-svelte-query/package.json
··· 19 19 "@tanstack/svelte-query": "5.73.3" 20 20 }, 21 21 "devDependencies": { 22 - "@config/vite-base": "workspace:*", 23 22 "@fontsource/fira-mono": "5.0.0", 24 23 "@hey-api/openapi-ts": "workspace:*", 25 24 "@neoconfetti/svelte": "2.0.0",
+2 -4
examples/openapi-ts-tanstack-svelte-query/vite.config.ts
··· 1 - import { fileURLToPath } from 'node:url'; 2 - 3 - import { createVitestConfig } from '@config/vite-base'; 4 1 import { sveltekit } from '@sveltejs/kit/vite'; 2 + import { defineProject } from 'vitest/config'; 5 3 6 4 export default async () => { 7 5 const sveltekitPlugins = await sveltekit(); 8 - return createVitestConfig(fileURLToPath(new URL('./', import.meta.url)), { 6 + return defineProject({ 9 7 plugins: [sveltekitPlugins], 10 8 test: { 11 9 include: ['src/**/*.{test,spec}.{js,ts}'],
-1
examples/openapi-ts-tanstack-vue-query/package.json
··· 22 22 "vue-router": "4.5.0" 23 23 }, 24 24 "devDependencies": { 25 - "@config/vite-base": "workspace:*", 26 25 "@hey-api/openapi-ts": "workspace:*", 27 26 "@rushstack/eslint-patch": "1.10.5", 28 27 "@tsconfig/node24": "24.0.4",
-1
examples/openapi-ts-tanstack-vue-query/tailwind.config.ts
··· 2 2 3 3 export default { 4 4 content: ['./index.html', './src/**/*.{vue,js,ts,jsx,tsx}'], 5 - plugins: [], 6 5 theme: { 7 6 extend: {}, 8 7 },
+2 -5
examples/openapi-ts-tanstack-vue-query/vitest.config.ts
··· 1 - import { fileURLToPath } from 'node:url'; 2 - 3 - import { createVitestConfig } from '@config/vite-base'; 4 - import { configDefaults, mergeConfig } from 'vitest/config'; 1 + import { configDefaults, defineProject, mergeConfig } from 'vitest/config'; 5 2 6 3 import viteConfig from './vite.config'; 7 4 8 5 export default mergeConfig( 9 6 viteConfig, 10 - createVitestConfig(fileURLToPath(new URL('./', import.meta.url)), { 7 + defineProject({ 11 8 test: { 12 9 environment: 'jsdom', 13 10 exclude: [...configDefaults.exclude, 'e2e/**'],
+7 -8
package.json
··· 33 33 "prepare": "husky", 34 34 "test:changelog": "vitest run __tests__/*.test.ts", 35 35 "test:changelog:watch": "vitest watch __tests__/*.test.ts", 36 - "test:coverage": "turbo run test:coverage", 37 - "test:update": "turbo run test:update", 38 - "test:watch": "turbo run test:watch", 39 - "test": "turbo run test", 36 + "test:coverage": "turbo run build && vitest run --coverage", 37 + "test:update": "turbo run build && vitest watch --update", 38 + "test:watch": "turbo run build && vitest watch", 39 + "test": "turbo run build && vitest", 40 40 "typecheck": "turbo run typecheck", 41 41 "td": "turbo run dev --filter", 42 - "tt": "turbo run test --filter", 43 - "tw": "turbo run test:watch --filter", 44 - "tu": "turbo run test:update --filter", 42 + "tt": "turbo run build && vitest run --project", 43 + "tw": "turbo run build && vitest watch --project", 44 + "tu": "turbo run build && vitest watch --update --project", 45 45 "tb": "turbo run build --filter", 46 46 "ty": "turbo run typecheck --filter", 47 47 "dev:ts": "cd dev && tsx watch --clear-screen=false ../packages/openapi-ts/src/run.ts", ··· 53 53 "@changesets/get-github-info": "0.7.0", 54 54 "@changesets/parse": "0.4.2", 55 55 "@changesets/types": "6.1.0", 56 - "@config/vite-base": "workspace:*", 57 56 "@eslint/js": "9.39.2", 58 57 "@hey-api/custom-client": "workspace:*", 59 58 "@hey-api/openapi-ts": "workspace:*",
-5
packages/codegen-core/package.json
··· 44 44 "check-exports": "attw --pack . --profile esm-only --ignore-rules cjs-resolves-to-esm", 45 45 "dev": "tsdown --watch", 46 46 "prepublishOnly": "pnpm build", 47 - "test:coverage": "vitest run --coverage", 48 - "test:update": "vitest watch --update", 49 - "test:watch": "vitest watch", 50 - "test": "vitest run", 51 47 "typecheck": "tsc --noEmit" 52 48 }, 53 49 "dependencies": { ··· 57 53 "color-support": "1.1.3" 58 54 }, 59 55 "devDependencies": { 60 - "@config/vite-base": "workspace:*", 61 56 "eslint": "9.39.1", 62 57 "typescript": "5.9.3" 63 58 },
-7
packages/codegen-core/vitest.config.ts
··· 1 - import { fileURLToPath } from 'node:url'; 2 - 3 - import { createVitestConfig } from '@config/vite-base'; 4 - 5 - export default createVitestConfig(fileURLToPath(new URL('./', import.meta.url)), { 6 - // Add specific configuration here if needed 7 - });
-43
packages/config-vite-base/README.md
··· 1 - # @config/vite-base 2 - 3 - Base configuration for Vite and Vitest. 4 - 5 - ## Installation 6 - 7 - ```bash 8 - pnpm add -D @config/vite-base 9 - ``` 10 - 11 - ## Usage 12 - 13 - To use the base configuration in your vitest.config.ts: 14 - 15 - ```ts 16 - // vitest.config.ts 17 - import { createVitestConfig } from '@config/vite-base'; 18 - 19 - export default createVitestConfig({ 20 - // Your specific configuration 21 - }); 22 - ``` 23 - 24 - ## Implementation 25 - 26 - To complete the implementation of this package in the workspace: 27 - 28 - 1. Build the package: 29 - 30 - ```bash 31 - cd packages/configs/vite-base 32 - pnpm install 33 - pnpm build 34 - ``` 35 - 36 - 2. Add it as a dependency to your packages: 37 - 38 - ```bash 39 - cd <your-package> 40 - pnpm add -D @config/vite-base@workspace:* 41 - ``` 42 - 43 - 3. Update your vitest.config.ts and vite.config.ts files to use the base configurations.
-31
packages/config-vite-base/package.json
··· 1 - { 2 - "name": "@config/vite-base", 3 - "version": "0.0.1", 4 - "private": true, 5 - "description": "Base configuration for Vite and Vitest", 6 - "license": "MIT", 7 - "files": [ 8 - "dist", 9 - "README.md" 10 - ], 11 - "type": "module", 12 - "main": "./dist/index.mjs", 13 - "types": "./dist/index.d.mts", 14 - "exports": { 15 - ".": { 16 - "types": "./dist/index.d.mts", 17 - "import": "./dist/index.mjs" 18 - }, 19 - "./package.json": "./package.json" 20 - }, 21 - "scripts": { 22 - "build": "tsdown" 23 - }, 24 - "dependencies": { 25 - "vite": "7.3.1", 26 - "vitest": "4.0.18" 27 - }, 28 - "devDependencies": { 29 - "typescript": "5.9.3" 30 - } 31 - }
-24
packages/config-vite-base/src/index.ts
··· 1 - import { platform } from 'node:os'; 2 - 3 - import type { ViteUserConfig } from 'vitest/config'; 4 - import { configDefaults, defineConfig, mergeConfig } from 'vitest/config'; 5 - 6 - export function createVitestConfig(root: string, config: ViteUserConfig = {}): ViteUserConfig { 7 - const baseConfig = defineConfig({ 8 - plugins: [], 9 - test: { 10 - coverage: { 11 - exclude: ['bin', 'dist', 'src/**/*.d.ts'], 12 - include: ['src/**/*.ts', 'src/**/*.tsx', 'src/**/*.vue'], 13 - provider: 'v8', 14 - }, 15 - exclude: [...configDefaults.exclude], 16 - globals: true, 17 - pool: platform() === 'win32' ? 'threads' : 'forks', 18 - root, 19 - testTimeout: platform() === 'win32' ? 10000 : 5000, 20 - }, 21 - }); 22 - 23 - return mergeConfig(baseConfig, config); 24 - }
-21
packages/config-vite-base/tsconfig.json
··· 1 - { 2 - "compilerOptions": { 3 - "allowImportingTsExtensions": true, 4 - "declaration": true, 5 - "isolatedModules": true, 6 - "lib": ["ES2020", "DOM", "DOM.Iterable"], 7 - "module": "ESNext", 8 - "moduleResolution": "bundler", 9 - "noEmit": true, 10 - "noFallthroughCasesInSwitch": true, 11 - "noUnusedLocals": true, 12 - "noUnusedParameters": true, 13 - "resolveJsonModule": true, 14 - "skipLibCheck": true, 15 - "strict": true, 16 - "target": "ES2020", 17 - "types": [], 18 - "useDefineForClassFields": true 19 - }, 20 - "include": ["src"] 21 - }
-8
packages/config-vite-base/tsdown.config.ts
··· 1 - import { defineConfig } from 'tsdown'; 2 - 3 - export default defineConfig({ 4 - clean: true, 5 - dts: true, 6 - entry: ['src/index.ts'], 7 - format: ['esm'], 8 - });
-5
packages/custom-client/package.json
··· 56 56 "check-exports": "attw --profile node16 --pack .", 57 57 "dev": "tsdown --watch", 58 58 "prepublishOnly": "pnpm build", 59 - "test:coverage": "vitest run --coverage", 60 - "test:update": "vitest watch --update", 61 - "test:watch": "vitest watch", 62 - "test": "vitest run", 63 59 "typecheck": "vitest --typecheck --watch=false" 64 60 }, 65 61 "devDependencies": { 66 - "@config/vite-base": "workspace:*", 67 62 "@hey-api/codegen-core": "workspace:*", 68 63 "@hey-api/openapi-ts": "workspace:*", 69 64 "rollup": "4.56.0",
-7
packages/custom-client/vitest.config.ts
··· 1 - import { fileURLToPath } from 'node:url'; 2 - 3 - import { createVitestConfig } from '@config/vite-base'; 4 - 5 - export default createVitestConfig(fileURLToPath(new URL('./', import.meta.url)), { 6 - // Add specific configuration here if needed 7 - });
+2 -3
packages/nuxt/package.json
··· 53 53 "prepublishOnly": "pnpm build" 54 54 }, 55 55 "dependencies": { 56 - "@nuxt/kit": "3.15.4", 56 + "@nuxt/kit": "4.3.1", 57 57 "defu": "6.1.4", 58 58 "mlly": "1.8.0" 59 59 }, 60 60 "devDependencies": { 61 - "@config/vite-base": "workspace:*", 62 61 "@hey-api/openapi-ts": "workspace:*", 63 62 "@nuxt/module-builder": "0.8.4", 64 63 "@nuxt/schema": "3.16.2", 65 - "@nuxt/test-utils": "3.21.0", 64 + "@nuxt/test-utils": "4.0.0", 66 65 "vite": "7.3.1" 67 66 }, 68 67 "peerDependencies": {
+2 -19
packages/nuxt/vitest.config.ts
··· 1 - import { fileURLToPath } from 'node:url'; 2 - 3 - import { createVitestConfig } from '@config/vite-base'; 4 - import { defineVitestConfig } from '@nuxt/test-utils/config'; 1 + import { defineVitestProject } from '@nuxt/test-utils/config'; 5 2 6 - // Create a base configuration with any shared settings 7 - const baseConfig = createVitestConfig(fileURLToPath(new URL('./', import.meta.url)), { 3 + export default defineVitestProject({ 8 4 test: { 9 - coverage: { 10 - exclude: ['dist', 'src/**/*.d.ts'], 11 - include: ['src/**/*.ts'], 12 - provider: 'v8', 13 - }, 14 - }, 15 - }); 16 - 17 - // Use Nuxt's config with our common test settings 18 - export default defineVitestConfig({ 19 - ...baseConfig, 20 - test: { 21 - ...baseConfig.test, 22 5 environment: 'nuxt', 23 6 environmentOptions: { 24 7 nuxt: {
-5
packages/openapi-python/package.json
··· 56 56 "check-exports": "attw --pack . --profile esm-only --ignore-rules cjs-resolves-to-esm", 57 57 "dev": "tsdown --watch", 58 58 "prepublishOnly": "pnpm build", 59 - "test:coverage": "vitest run --coverage", 60 - "test:update": "vitest watch --update", 61 - "test:watch": "vitest watch", 62 - "test": "vitest run", 63 59 "typecheck": "tsc --noEmit", 64 60 "typecheck:next": "tsc --noEmit && uv run mypy src/ts-python/__snapshots__" 65 61 }, ··· 73 69 "commander": "14.0.3" 74 70 }, 75 71 "devDependencies": { 76 - "@config/vite-base": "workspace:*", 77 72 "eslint": "9.39.1", 78 73 "typescript": "5.9.3", 79 74 "yaml": "2.8.2"
+2
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/declarations/class/default.py
··· 1 + class MyClass: 2 + pass
+10
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/declarations/class/with-decorators.py
··· 1 + def my_decorator(func): 2 + return func 3 + 4 + def another_decorator(func): 5 + return func 6 + 7 + @my_decorator 8 + @another_decorator 9 + class MyClass: 10 + pass
+4
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/declarations/class/with-docstring.py
··· 1 + class MyClass: 2 + """This is a class docstring""" 3 + 4 + pass
+5
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/declarations/class/with-extends.py
··· 1 + class BaseClass: 2 + pass 3 + 4 + class MyClass(BaseClass): 5 + pass
+5
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/declarations/class/with-method-docstring.py
··· 1 + class MyClass: 2 + def greet(): 3 + """Greets the user.""" 4 + 5 + pass
+3
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/declarations/class/with-method.py
··· 1 + class MyClass: 2 + def foo(): 3 + return 42
+2
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/declarations/function/default.py
··· 1 + def greet(): 2 + pass
+3
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/declarations/function/with-annotations-defaults-return.py
··· 1 + def greet(name: str = "World", times: int = 1) -> None: 2 + for i in range(times): 3 + print("Hello, " + name)
+2
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/declarations/function/with-body.py
··· 1 + def greet(name): 2 + print(name)
+10
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/declarations/function/with-decorators.py
··· 1 + def my_decorator(func): 2 + return func 3 + 4 + def another_decorator(func): 5 + return func 6 + 7 + @my_decorator 8 + @another_decorator 9 + def greet(): 10 + pass
+4
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/declarations/function/with-docstring.py
··· 1 + def greet(): 2 + """This function prints a greeting.""" 3 + 4 + print("Hello")
+5
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/expressions/await/inside-function.py
··· 1 + def fetchData(): 2 + pass 3 + 4 + async def main(): 5 + await fetchData()
+3
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/expressions/binary/add.py
··· 1 + a = 42 2 + b = 84 3 + z = a + b
+3
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/expressions/binary/subtract.py
··· 1 + a = 42 2 + b = 84 3 + z = a - b
+1
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/expressions/call/call.py
··· 1 + print("hi")
+3
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/expressions/comprehensions/dict/dict.py
··· 1 + async def foo(): 2 + items = {"key1": "value1", "key2": "value2"} 3 + {k: v async for (k, v) in items.items() if k % 2}
+3
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/expressions/comprehensions/list/list.py
··· 1 + async def foo(): 2 + items = [1, 2, 3] 3 + evens = [x async for x in items if x % 2 == 0]
+1
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/expressions/comprehensions/nested/dict-list.py
··· 1 + data = {"numbers": [1, 2, 3], "nestedDict": {"foo": "bar"}}
+3
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/expressions/comprehensions/set/dict.py
··· 1 + async def foo(): 2 + items = [1, 2, 3] 3 + unique_evens = {x for x in items if x % 2}
+1
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/expressions/dict/dict.py
··· 1 + person = {"name": "Alice", "age": 30}
+3
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/expressions/fString/multiple-expressions.py
··· 1 + a = 1 2 + b = 2 3 + print(f"Sum: {a + b}")
+2
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/expressions/fString/simple-interpolation.py
··· 1 + name = "Joe" 2 + print(f"Hello, {name}!")
+2
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/expressions/generator/async.py
··· 1 + x_iter = [1, 2, 3] 2 + (x async for x in x_iter)
+2
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/expressions/generator/simple.py
··· 1 + x_iter = [1, 2, 3] 2 + (x for x in x_iter)
+2
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/expressions/generator/with-filter.py
··· 1 + x_iter = [1, 2, 3] 2 + (x for x in x_iter if x > 10)
+2
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/expressions/identifier/identifier.py
··· 1 + y = 42 2 + x = y
+2
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/expressions/lambda/simple.py
··· 1 + x = 5 2 + lambda : x + 1
+1
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/expressions/lambda/with-params-and-default.py
··· 1 + lambda x, y = 10: x * y
+1
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/expressions/list/list.py
··· 1 + nums = [1, 2, 3]
+4
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/expressions/literal/primitive.py
··· 1 + s = "hello" 2 + n = 123 3 + b = True 4 + none = None
+4
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/expressions/set/set.py
··· 1 + foo = "bar" 2 + emptySet = set() 3 + numberSet = {1, 2, 3} 4 + mixedSet = {"a", True, foo}
+2
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/expressions/tuple/tuple.py
··· 1 + t = (1, 2, 3) 2 + single = (42,)
+2
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/expressions/yield/default.py
··· 1 + def gen(): 2 + yield
+4
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/expressions/yield/from-iterable.py
··· 1 + iterable = [1, 2, 3] 2 + 3 + def gen(): 4 + yield from iterable
+2
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/expressions/yield/with-value.py
··· 1 + def gen(): 2 + yield 42
+1
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/statements/assignment/primitive.py
··· 1 + foo = 42
+12
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/statements/augmentedAssignment/arithmetic.py
··· 1 + x = 0 2 + y = 0 3 + z = 0 4 + a = 0 5 + b = 0 6 + c = 0 7 + x += 1 8 + y -= 2 9 + z *= 3 10 + a /= 4 11 + b //= 5 12 + c %= 6
+12
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/statements/augmentedAssignment/bitwise.py
··· 1 + x = 1 2 + y = 1 3 + z = 1 4 + a = 1 5 + b = 1 6 + c = 1 7 + x **= 2 8 + y &= 1 9 + z |= 1 10 + a ^= 1 11 + b >>= 1 12 + c <<= 1
+2
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/statements/block/function.py
··· 1 + def main(): 2 + print("inside")
+2
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/statements/break/while.py
··· 1 + while True: 2 + break
+2
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/statements/continue/while.py
··· 1 + while True: 2 + continue
+1
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/statements/expression/simple.py
··· 1 + print("hello")
+5
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/statements/for/for-else.py
··· 1 + items = [1, 2, 3] 2 + for x in items: 3 + pass 4 + else: 5 + print("done")
+2
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/statements/for/for.py
··· 1 + for i in range(3): 2 + print(i)
+5
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/statements/if/if-else.py
··· 1 + x = 0 2 + if x > 0: 3 + print("positive") 4 + else: 5 + print("non-positive")
+2
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/statements/if/if.py
··· 1 + if True: 2 + print("positive")
+1
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/statements/import/from-with-alias.py
··· 1 + from os import environ as env
+1
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/statements/import/from-with-asterisk.py
··· 1 + from collections import *
+1
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/statements/import/from-with-name-alias.py
··· 1 + from os import path, environ as env
+1
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/statements/import/from-with-name.py
··· 1 + from sys import argv
+1
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/statements/import/module-with-alias.py
··· 1 + import json as js
+2
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/statements/import/module.py
··· 1 + import math 2 + import loads
+1
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/statements/raise/reraise.py
··· 1 + raise
+1
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/statements/raise/with-exception.py
··· 1 + raise ValueError("Invalid input")
+2
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/statements/return/function.py
··· 1 + def get_message(): 2 + return "hi"
+11
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/statements/try/with-except-else-finally.py
··· 1 + def dangerous_func(): 2 + pass 3 + 4 + try: 5 + dangerous_func() 6 + except Exception as e: 7 + print(e) 8 + else: 9 + pass 10 + finally: 11 + pass
+9
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/statements/try/with-except-else.py
··· 1 + def dangerous_func(): 2 + pass 3 + 4 + try: 5 + dangerous_func() 6 + except: 7 + pass 8 + else: 9 + pass
+9
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/statements/try/with-except-finally.py
··· 1 + def dangerous_func(): 2 + pass 3 + 4 + try: 5 + dangerous_func() 6 + except Exception: 7 + pass 8 + finally: 9 + pass
+7
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/statements/try/with-except.py
··· 1 + def dangerous_func(): 2 + pass 3 + 4 + try: 5 + dangerous_func() 6 + except ValueError as e: 7 + print(e)
+7
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/statements/try/with-finally.py
··· 1 + def dangerous_func(): 2 + pass 3 + 4 + try: 5 + dangerous_func() 6 + finally: 7 + pass
+6
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/statements/while/while-else.py
··· 1 + def should_continue(): 2 + return False 3 + while should_continue(): 4 + pass 5 + else: 6 + print("done")
+4
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/statements/while/while.py
··· 1 + x = 3 2 + while x > 0: 3 + print(x) 4 + x = x - 1
+8
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/statements/with/with-alias.py
··· 1 + class context_manager: 2 + def __enter__(self): 3 + return self 4 + def __exit__(self, exc_type, exc_val, exc_tb): 5 + return False 6 + 7 + with context_manager() as alias: 8 + pass
+9
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/statements/with/with-async.py
··· 1 + class context_manager: 2 + def __enter__(self): 3 + return self 4 + def __exit__(self, exc_type, exc_val, exc_tb): 5 + return False 6 + 7 + async def foo(): 8 + async with context_manager(): 9 + pass
+20
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/statements/with/with-many-items.py
··· 1 + class context_manager: 2 + def __enter__(self): 3 + return self 4 + def __exit__(self, exc_type, exc_val, exc_tb): 5 + return False 6 + 7 + class context_manager2: 8 + def __enter__(self): 9 + return self 10 + def __exit__(self, exc_type, exc_val, exc_tb): 11 + return False 12 + 13 + class context_manager3: 14 + def __enter__(self): 15 + return self 16 + def __exit__(self, exc_type, exc_val, exc_tb): 17 + return False 18 + 19 + with context_manager() as alias, context_manager2() as (a, b), context_manager3(): 20 + pass
+8
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/statements/with/with-tuple-alias.py
··· 1 + class context_manager: 2 + def __enter__(self): 3 + return self 4 + def __exit__(self, exc_type, exc_val, exc_tb): 5 + return False 6 + 7 + with context_manager() as (a, b): 8 + pass
+8
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/statements/with/with.py
··· 1 + class context_manager: 2 + def __enter__(self): 3 + return self 4 + def __exit__(self, exc_type, exc_val, exc_tb): 5 + return False 6 + 7 + with context_manager(): 8 + pass
+1
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/structure/comment/simple.py
··· 1 + # This is a comment
+2
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/structure/sourceFile/simple.py
··· 1 + a = 1 2 + b = 2
+3
packages/openapi-python/packages/openapi-python/src/ts-python/__tests__/nodes/structure/sourceFile/with-docstring.py
··· 1 + """This is a module-level docstring.""" 2 + 3 + foo = 1
-2
packages/openapi-python/src/generate/__tests__/client.test.ts
··· 1 1 import path from 'node:path'; 2 2 3 - import { describe, expect, it } from 'vitest'; 4 - 5 3 describe('isDevMode logic', () => { 6 4 const scenarios: ReadonlyArray<{ 7 5 description: string;
-1
packages/openapi-python/src/plugins/pydantic/shared/index.ts
··· 1 - export type { Ast, IrSchemaToAstOptions, Pipes, PluginState, ResolverContext } from './types';
+19 -37
packages/openapi-python/src/plugins/pydantic/shared/types.ts
··· 1 - import type { Refs, SymbolMeta } from '@hey-api/codegen-core'; 1 + import type { Refs, Symbol, SymbolMeta } from '@hey-api/codegen-core'; 2 2 import type { IR } from '@hey-api/shared'; 3 3 4 + import type { $ } from '../../../py-dsl'; 4 5 import type { PydanticPlugin } from '../types'; 5 6 6 - /** 7 - * Shared types for Pydantic plugin 8 - */ 9 - 10 - export type PluginState = Pick<Required<SymbolMeta>, 'path'> & 11 - Pick<Partial<SymbolMeta>, 'tags'> & { 12 - hasLazyExpression: boolean; 13 - }; 14 - 15 - /** 16 - * AST node representation for Pydantic models 17 - */ 18 - export interface Ast { 19 - /** 20 - * Expression node for the type 21 - */ 22 - expression: unknown; 7 + export type Ast = { 23 8 /** 24 9 * Field constraints for pydantic.Field() 25 10 */ ··· 28 13 * Whether this AST node has a lazy expression (forward reference) 29 14 */ 30 15 hasLazyExpression?: boolean; 31 - /** 32 - * Pipes/chains for building the field definition (similar to Valibot pipes) 33 - */ 34 - pipes?: Pipes; 16 + models: Array<{ 17 + baseName: string; 18 + expression: ReturnType<typeof $.class>; 19 + symbol: Symbol; 20 + }>; 35 21 /** 36 22 * Type annotation for the field 37 23 */ ··· 40 26 * Type name for the model class 41 27 */ 42 28 typeName?: string; 43 - } 29 + }; 30 + 31 + export type IrSchemaToAstOptions = { 32 + plugin: PydanticPlugin['Instance']; 33 + state: Refs<PluginState>; 34 + }; 35 + 36 + export type PluginState = Pick<Required<SymbolMeta>, 'path'> & 37 + Pick<Partial<SymbolMeta>, 'tags'> & { 38 + hasLazyExpression: boolean; 39 + }; 44 40 45 41 /** 46 42 * Pipe system for building field constraints (similar to Valibot pattern) 47 43 */ 48 44 export type Pipes = Array<unknown>; 49 - 50 - /** 51 - * Options for converting IR schema to AST 52 - */ 53 - export interface IrSchemaToAstOptions { 54 - /** 55 - * The plugin instance 56 - */ 57 - plugin: PydanticPlugin['Instance']; 58 - /** 59 - * Current plugin state 60 - */ 61 - state: Refs<PluginState>; 62 - } 63 45 64 46 /** 65 47 * Context for type resolver functions
+19 -9
packages/openapi-python/src/plugins/pydantic/v2/plugin.ts
··· 3 3 import type { IR, SchemaWithType } from '@hey-api/shared'; 4 4 import { applyNaming, deduplicateSchema, pathToJsonPointer, refToName } from '@hey-api/shared'; 5 5 6 - import { $ } from '../../../py-dsl'; 6 + // import { $ } from '../../../py-dsl'; 7 7 import { exportAst } from '../shared/export'; 8 8 import type { Ast, IrSchemaToAstOptions, PluginState } from '../shared/types'; 9 9 import type { PydanticPlugin } from '../types'; ··· 29 29 const refName = typeof refSymbol === 'string' ? refSymbol : refSymbol.name; 30 30 31 31 return { 32 - expression: $.expr(refName), 32 + // expression: $.expr(refName), 33 33 fieldConstraints: optional ? { default: null } : undefined, 34 34 hasLazyExpression: !plugin.isSymbolRegistered(query), 35 - pipes: [], 35 + models: [], 36 + // pipes: [], 36 37 typeAnnotation: refName, 37 38 }; 38 39 } ··· 58 59 return { 59 60 ...typeAst, 60 61 fieldConstraints: { ...typeAst.fieldConstraints, ...constraints }, 61 - pipes: [], 62 + // pipes: [], 62 63 }; 63 64 } 64 65 ··· 86 87 87 88 const unionType = itemsAnnotations.join(' | '); 88 89 return { 89 - expression: $.expr(`list[${unionType}]`), 90 + // expression: $.expr(`list[${unionType}]`), 90 91 fieldConstraints: itemsConstraints.length > 0 ? itemsConstraints[0] : undefined, 91 92 hasLazyExpression: false, 92 - pipes: [], 93 + models: [], 94 + // pipes: [], 93 95 typeAnnotation: `list[${unionType}]`, 94 96 }; 95 97 } 96 98 } 97 99 98 100 return { 99 - expression: $.expr('Any'), 101 + // expression: $.expr('Any'), 100 102 hasLazyExpression: false, 101 - pipes: [], 103 + models: [], 104 + // pipes: [], 102 105 typeAnnotation: 'Any', 103 106 }; 104 107 } ··· 111 114 schema: IR.SchemaObject; 112 115 }): void { 113 116 const $ref = pathToJsonPointer(fromRef(state.path)); 114 - const ast = irSchemaToAst({ plugin, schema, state }); 115 117 const baseName = refToName($ref); 116 118 const symbol = plugin.symbol(applyNaming(baseName, plugin.config.definitions), { 117 119 meta: { ··· 122 124 tags: fromRef(state.tags), 123 125 tool: 'pydantic', 124 126 }, 127 + }); 128 + const ast = irSchemaToAst({ 129 + plugin, 130 + schema, 131 + state, 125 132 }); 126 133 exportAst({ 127 134 ast, ··· 192 199 switch (event.type) { 193 200 case 'parameter': 194 201 handleComponent({ 202 + // baseName: event.name, 195 203 plugin, 196 204 schema: event.parameter.schema, 197 205 state, ··· 199 207 break; 200 208 case 'requestBody': 201 209 handleComponent({ 210 + // baseName: event.name, 202 211 plugin, 203 212 schema: event.requestBody.schema, 204 213 state, ··· 206 215 break; 207 216 case 'schema': 208 217 handleComponent({ 218 + // baseName: event.name, 209 219 plugin, 210 220 schema: event.schema, 211 221 state,
+2 -1
packages/openapi-python/src/plugins/pydantic/v2/toAst/index.ts
··· 23 23 }); 24 24 default: 25 25 return { 26 - expression: 'Any', 26 + // expression: 'Any', 27 + models: [], 27 28 typeAnnotation: 'Any', 28 29 }; 29 30 }
+7 -5
packages/openapi-python/src/plugins/pydantic/v2/toAst/object.ts
··· 5 5 import type { Ast, IrSchemaToAstOptions } from '../../shared/types'; 6 6 // import { irSchemaToAst } from '../plugin'; 7 7 8 - export const objectToAst = ({ 8 + export function objectToAst({ 9 9 plugin, 10 10 // schema, 11 11 // state, 12 12 }: IrSchemaToAstOptions & { 13 13 schema: SchemaWithType<'object'>; 14 - }): Ast => { 14 + }): Ast { 15 15 const symbolBaseModel = plugin.external('pydantic.BaseModel'); 16 16 // const fieldSymbol = plugin.external('pydantic.Field'); 17 17 const symbolTemp = plugin.symbol('temp'); 18 18 19 19 const classDef = $.class(symbolTemp).extends(symbolBaseModel); 20 + console.log(classDef); 20 21 21 22 // if (schema.properties) { 22 23 // for (const name in schema.properties) { ··· 51 52 // } 52 53 53 54 return { 54 - expression: classDef, 55 + // expression: classDef, 55 56 fieldConstraints: {}, 56 57 hasLazyExpression: false, 57 - pipes: [], 58 + models: [], 59 + // pipes: [], 58 60 typeAnnotation: 'DynamicModel', 59 61 typeName: 'DynamicModel', 60 62 }; 61 - }; 63 + }
+7 -5
packages/openapi-python/src/plugins/pydantic/v2/toAst/string.ts
··· 1 1 import type { SchemaWithType } from '@hey-api/shared'; 2 2 3 - import { $ } from '../../../../py-dsl'; 3 + // import { $ } from '../../../../py-dsl'; 4 4 import type { Ast, IrSchemaToAstOptions } from '../../shared/types'; 5 5 6 6 export const stringToNode = ({ ··· 28 28 29 29 if (typeof schema.const === 'string') { 30 30 return { 31 - expression: $.expr(`Literal["${schema.const}"]`), 31 + // expression: $.expr(`Literal["${schema.const}"]`), 32 32 fieldConstraints: constraints, 33 33 hasLazyExpression: false, 34 - pipes: [], 34 + models: [], 35 + // pipes: [], 35 36 typeAnnotation: `Literal["${schema.const}"]`, 36 37 }; 37 38 } 38 39 39 40 return { 40 - expression: $.expr('str'), 41 + // expression: $.expr('str'), 41 42 fieldConstraints: constraints, 42 43 hasLazyExpression: false, 43 - pipes: [], 44 + models: [], 45 + // pipes: [], 44 46 typeAnnotation: 'str', 45 47 }; 46 48 };
-7
packages/openapi-python/vitest.config.ts
··· 1 - import { fileURLToPath } from 'node:url'; 2 - 3 - import { createVitestConfig } from '@config/vite-base'; 4 - 5 - export default createVitestConfig(fileURLToPath(new URL('./', import.meta.url)), { 6 - // Add specific configuration here if needed 7 - });
-5
packages/openapi-ts-tests/main/package.json
··· 4 4 "private": true, 5 5 "type": "module", 6 6 "scripts": { 7 - "test:coverage": "vitest run --coverage", 8 7 "test:types": "tsc -p tsconfig.test.json --noEmit", 9 - "test:update": "vitest watch --update", 10 - "test:watch": "vitest watch", 11 - "test": "vitest run", 12 8 "typecheck": "tsc --noEmit" 13 9 }, 14 10 "devDependencies": { ··· 23 19 "@angular/platform-browser": "21.1.2", 24 20 "@angular/platform-browser-dynamic": "21.1.2", 25 21 "@angular/router": "21.1.2", 26 - "@config/vite-base": "workspace:*", 27 22 "@hey-api/codegen-core": "workspace:*", 28 23 "@hey-api/custom-client": "workspace:*", 29 24 "@hey-api/openapi-ts": "workspace:*",
-15
packages/openapi-ts-tests/main/vitest.config.ts
··· 1 - import path from 'node:path'; 2 - import { fileURLToPath } from 'node:url'; 3 - 4 - import { createVitestConfig } from '@config/vite-base'; 5 - 6 - const rootDir = fileURLToPath(new URL('./', import.meta.url)); 7 - 8 - export default createVitestConfig(rootDir, { 9 - resolve: { 10 - alias: [ 11 - { find: /^~\/(.*)/, replacement: path.resolve(rootDir, 'src/$1') }, 12 - { find: '~', replacement: path.resolve(rootDir, 'src') }, 13 - ], 14 - }, 15 - });
+5
packages/openapi-ts-tests/main/vitest.setup.ts
··· 1 + import { beforeAll } from 'vitest'; 2 + 3 + beforeAll(() => { 4 + process.chdir(new URL('.', import.meta.url).pathname); 5 + });
-5
packages/openapi-ts-tests/sdks/package.json
··· 4 4 "private": true, 5 5 "type": "module", 6 6 "scripts": { 7 - "test:coverage": "vitest run --coverage", 8 - "test:update": "vitest watch --update", 9 - "test:watch": "vitest watch", 10 - "test": "vitest run", 11 7 "typecheck": "tsc --noEmit" 12 8 }, 13 9 "devDependencies": { 14 - "@config/vite-base": "workspace:*", 15 10 "@hey-api/openapi-ts": "workspace:*", 16 11 "typescript": "5.9.3" 17 12 },
-7
packages/openapi-ts-tests/sdks/vitest.config.ts
··· 1 - import { fileURLToPath } from 'node:url'; 2 - 3 - import { createVitestConfig } from '@config/vite-base'; 4 - 5 - const rootDir = fileURLToPath(new URL('./', import.meta.url)); 6 - 7 - export default createVitestConfig(rootDir);
+5
packages/openapi-ts-tests/sdks/vitest.setup.ts
··· 1 + import { beforeAll } from 'vitest'; 2 + 3 + beforeAll(() => { 4 + process.chdir(new URL('.', import.meta.url).pathname); 5 + });
-5
packages/openapi-ts-tests/zod/v3/package.json
··· 4 4 "private": true, 5 5 "type": "module", 6 6 "scripts": { 7 - "test:coverage": "vitest run --coverage", 8 - "test:update": "vitest watch --update", 9 - "test:watch": "vitest watch", 10 - "test": "vitest run", 11 7 "typecheck": "tsc --noEmit" 12 8 }, 13 9 "devDependencies": { 14 - "@config/vite-base": "workspace:*", 15 10 "@hey-api/openapi-ts": "workspace:*", 16 11 "typescript": "5.9.3", 17 12 "zod": "^3.25.0"
-7
packages/openapi-ts-tests/zod/v3/vitest.config.ts
··· 1 - import { fileURLToPath } from 'node:url'; 2 - 3 - import { createVitestConfig } from '@config/vite-base'; 4 - 5 - const rootDir = fileURLToPath(new URL('./', import.meta.url)); 6 - 7 - export default createVitestConfig(rootDir);
+5
packages/openapi-ts-tests/zod/v3/vitest.setup.ts
··· 1 + import { beforeAll } from 'vitest'; 2 + 3 + beforeAll(() => { 4 + process.chdir(new URL('.', import.meta.url).pathname); 5 + });
-5
packages/openapi-ts-tests/zod/v4/package.json
··· 4 4 "private": true, 5 5 "type": "module", 6 6 "scripts": { 7 - "test:coverage": "vitest run --coverage", 8 - "test:update": "vitest watch --update", 9 - "test:watch": "vitest watch", 10 - "test": "vitest run", 11 7 "typecheck": "tsc --noEmit" 12 8 }, 13 9 "devDependencies": { 14 - "@config/vite-base": "workspace:*", 15 10 "@hey-api/openapi-ts": "workspace:*", 16 11 "typescript": "5.9.3", 17 12 "zod": "4.3.6"
-7
packages/openapi-ts-tests/zod/v4/vitest.config.ts
··· 1 - import { fileURLToPath } from 'node:url'; 2 - 3 - import { createVitestConfig } from '@config/vite-base'; 4 - 5 - const rootDir = fileURLToPath(new URL('./', import.meta.url)); 6 - 7 - export default createVitestConfig(rootDir);
+5
packages/openapi-ts-tests/zod/v4/vitest.setup.ts
··· 1 + import { beforeAll } from 'vitest'; 2 + 3 + beforeAll(() => { 4 + process.chdir(new URL('.', import.meta.url).pathname); 5 + });
-5
packages/openapi-ts/package.json
··· 66 66 "check-exports": "attw --pack . --profile esm-only --ignore-rules cjs-resolves-to-esm", 67 67 "dev": "tsdown --watch", 68 68 "prepublishOnly": "pnpm build", 69 - "test:coverage": "vitest run --coverage", 70 - "test:update": "vitest watch --update", 71 - "test:watch": "vitest watch", 72 - "test": "vitest run", 73 69 "typecheck": "tsc --noEmit" 74 70 }, 75 71 "dependencies": { ··· 89 85 "@angular/platform-browser": "21.1.2", 90 86 "@angular/platform-browser-dynamic": "21.1.2", 91 87 "@angular/router": "21.1.2", 92 - "@config/vite-base": "workspace:*", 93 88 "axios": "1.13.4", 94 89 "eslint": "9.39.1", 95 90 "ky": "1.14.3",
-9
packages/openapi-ts/setupTests.ts
··· 1 - import 'zone.js'; // Angular needs zones 2 - 3 - import { TestBed } from '@angular/core/testing'; 4 - import { 5 - BrowserDynamicTestingModule, 6 - platformBrowserDynamicTesting, 7 - } from '@angular/platform-browser-dynamic/testing'; 8 - 9 - TestBed.initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting());
-2
packages/openapi-ts/src/generate/__tests__/client.test.ts
··· 1 1 import path from 'node:path'; 2 2 3 - import { describe, expect, it } from 'vitest'; 4 - 5 3 describe('isDevMode logic', () => { 6 4 const scenarios: ReadonlyArray<{ 7 5 description: string;
+3 -3
packages/openapi-ts/src/plugins/@hey-api/typescript/v1/toAst/boolean.ts
··· 4 4 import { $ } from '../../../../../ts-dsl'; 5 5 import type { IrSchemaToAstOptions } from '../../shared/types'; 6 6 7 - export const booleanToAst = ({ 7 + export function booleanToAst({ 8 8 schema, 9 9 }: IrSchemaToAstOptions & { 10 10 schema: SchemaWithType<'boolean'>; 11 - }): TypeTsDsl => { 11 + }): TypeTsDsl { 12 12 if (schema.const !== undefined) { 13 13 return $.type.literal(schema.const as boolean); 14 14 } 15 15 16 16 return $.type('boolean'); 17 - }; 17 + }
+18 -2
packages/openapi-ts/src/plugins/valibot/v1/plugin.ts
··· 1 1 import type { SymbolMeta } from '@hey-api/codegen-core'; 2 2 import { fromRef, ref, refs } from '@hey-api/codegen-core'; 3 - import type { IR, SchemaWithType } from '@hey-api/shared'; 4 - import { applyNaming, deduplicateSchema, pathToJsonPointer, refToName } from '@hey-api/shared'; 3 + import type { IR, SchemaExtractor, SchemaWithType } from '@hey-api/shared'; 4 + import { 5 + applyNaming, 6 + deduplicateSchema, 7 + inlineSchema, 8 + pathToJsonPointer, 9 + refToName, 10 + } from '@hey-api/shared'; 5 11 6 12 import { maybeBigInt } from '../../../plugins/shared/utils/coerce'; 7 13 import { $ } from '../../../ts-dsl'; ··· 18 24 optional, 19 25 plugin, 20 26 schema, 27 + schemaExtractor = inlineSchema, 21 28 state, 22 29 }: IrSchemaToAstOptions & { 23 30 /** ··· 27 34 */ 28 35 optional?: boolean; 29 36 schema: IR.SchemaObject; 37 + schemaExtractor?: SchemaExtractor; 30 38 }): Ast { 39 + if (!schema.$ref) { 40 + const resolved = schemaExtractor({ path: fromRef(state.path), schema }); 41 + if (resolved !== schema) { 42 + schema = resolved; 43 + } 44 + } 45 + 31 46 const ast: Ast = { 32 47 pipes: [], 33 48 }; ··· 75 90 const itemAst = irSchemaToAst({ 76 91 plugin, 77 92 schema: item, 93 + schemaExtractor, 78 94 state: { 79 95 ...state, 80 96 path: ref([...fromRef(state.path), 'items', index]),
+3 -3
packages/openapi-ts/src/plugins/valibot/v1/toAst/boolean.ts
··· 5 5 import type { IrSchemaToAstOptions } from '../../shared/types'; 6 6 import { identifiers } from '../constants'; 7 7 8 - export const booleanToAst = ({ 8 + export function booleanToAst({ 9 9 plugin, 10 10 schema, 11 11 }: IrSchemaToAstOptions & { 12 12 schema: SchemaWithType<'boolean'>; 13 - }): ReturnType<typeof $.call | typeof $.expr> => { 13 + }): ReturnType<typeof $.call | typeof $.expr> { 14 14 const pipes: Array<ReturnType<typeof $.call>> = []; 15 15 16 16 const v = plugin.external('valibot.v'); ··· 22 22 23 23 pipes.push($(v).attr(identifiers.schemas.boolean).call()); 24 24 return pipesToNode(pipes, plugin); 25 - }; 25 + }
+3 -3
packages/openapi-ts/src/plugins/zod/mini/toAst/boolean.ts
··· 4 4 import { identifiers } from '../../constants'; 5 5 import type { Ast, IrSchemaToAstOptions } from '../../shared/types'; 6 6 7 - export const booleanToAst = ({ 7 + export function booleanToAst({ 8 8 plugin, 9 9 schema, 10 10 }: IrSchemaToAstOptions & { 11 11 schema: SchemaWithType<'boolean'>; 12 - }): Omit<Ast, 'typeName'> => { 12 + }): Omit<Ast, 'typeName'> { 13 13 const result: Partial<Omit<Ast, 'typeName'>> = {}; 14 14 let chain: ReturnType<typeof $.call>; 15 15 ··· 24 24 chain = $(z).attr(identifiers.boolean).call(); 25 25 result.expression = chain; 26 26 return result as Omit<Ast, 'typeName'>; 27 - }; 27 + }
+2 -2
packages/openapi-ts/src/plugins/zod/shared/module.ts
··· 1 1 import type { ZodPlugin } from '../types'; 2 2 3 - export const getZodModule = ({ plugin }: { plugin: ZodPlugin['Instance'] }): string => { 3 + export function getZodModule({ plugin }: { plugin: ZodPlugin['Instance'] }): string { 4 4 const version = plugin.package.getVersion('zod'); 5 5 6 6 if (version) { ··· 26 26 case 'mini': 27 27 return 'zod/mini'; 28 28 } 29 - }; 29 + }
+3 -3
packages/openapi-ts/src/plugins/zod/v3/toAst/boolean.ts
··· 4 4 import { identifiers } from '../../constants'; 5 5 import type { IrSchemaToAstOptions } from '../../shared/types'; 6 6 7 - export const booleanToAst = ({ 7 + export function booleanToAst({ 8 8 plugin, 9 9 schema, 10 10 }: IrSchemaToAstOptions & { 11 11 schema: SchemaWithType<'boolean'>; 12 - }): ReturnType<typeof $.call> => { 12 + }): ReturnType<typeof $.call> { 13 13 let chain: ReturnType<typeof $.call>; 14 14 15 15 const z = plugin.external('zod.z'); ··· 21 21 22 22 chain = $(z).attr(identifiers.boolean).call(); 23 23 return chain; 24 - }; 24 + }
+3 -3
packages/openapi-ts/src/plugins/zod/v4/toAst/boolean.ts
··· 4 4 import { identifiers } from '../../constants'; 5 5 import type { Ast, IrSchemaToAstOptions } from '../../shared/types'; 6 6 7 - export const booleanToAst = ({ 7 + export function booleanToAst({ 8 8 plugin, 9 9 schema, 10 10 }: IrSchemaToAstOptions & { 11 11 schema: SchemaWithType<'boolean'>; 12 - }): Omit<Ast, 'typeName'> => { 12 + }): Omit<Ast, 'typeName'> { 13 13 const result: Partial<Omit<Ast, 'typeName'>> = {}; 14 14 let chain: ReturnType<typeof $.call>; 15 15 ··· 24 24 chain = $(z).attr(identifiers.boolean).call(); 25 25 result.expression = chain; 26 26 return result as Omit<Ast, 'typeName'>; 27 - }; 27 + }
-9
packages/openapi-ts/vitest.config.ts
··· 1 - import { fileURLToPath } from 'node:url'; 2 - 3 - import { createVitestConfig } from '@config/vite-base'; 4 - 5 - export default createVitestConfig(fileURLToPath(new URL('./', import.meta.url)), { 6 - test: { 7 - setupFiles: './setupTests.ts', 8 - }, 9 - });
+6
packages/openapi-ts/vitest.setup.ts
··· 1 + import 'zone.js'; // Angular needs zones 2 + 3 + import { TestBed } from '@angular/core/testing'; 4 + import { BrowserTestingModule, platformBrowserTesting } from '@angular/platform-browser/testing'; 5 + 6 + TestBed.initTestEnvironment(BrowserTestingModule, platformBrowserTesting());
-5
packages/shared/package.json
··· 37 37 "check-exports": "attw --pack . --profile esm-only --ignore-rules cjs-resolves-to-esm", 38 38 "dev": "tsdown --watch", 39 39 "prepublishOnly": "pnpm build", 40 - "test:coverage": "vitest run --coverage", 41 - "test:update": "vitest watch --update", 42 - "test:watch": "vitest watch", 43 - "test": "vitest run", 44 40 "typecheck": "tsc --noEmit" 45 41 }, 46 42 "dependencies": { ··· 53 49 "semver": "7.7.3" 54 50 }, 55 51 "devDependencies": { 56 - "@config/vite-base": "workspace:*", 57 52 "@types/bun": "1.3.8", 58 53 "@types/cross-spawn": "6.0.6", 59 54 "@types/semver": "7.7.1",
+2
packages/shared/src/index.ts
··· 59 59 } from './ir/parameter'; 60 60 export { deduplicateSchema } from './ir/schema'; 61 61 export type { IR } from './ir/types'; 62 + export type { SchemaExtractor, SchemaExtractorContext } from './ir/utils'; 63 + export { addItemsToSchema, createSchemaExtractor, inlineSchema } from './ir/utils'; 62 64 export { parseOpenApiSpec } from './openApi'; 63 65 export type { OpenApiV2_0_X, OpenApiV2_0_XTypes } from './openApi/2.0.x'; 64 66 export { parseV2_0_X } from './openApi/2.0.x';
+35
packages/shared/src/ir/utils.ts
··· 1 + import { pathToJsonPointer } from '../utils/ref'; 1 2 import type { IR } from './types'; 2 3 3 4 /** ··· 42 43 schema.items = items; 43 44 return schema; 44 45 } 46 + 47 + export type SchemaExtractorContext = { 48 + path: ReadonlyArray<string | number>; 49 + schema: IR.SchemaObject; 50 + }; 51 + 52 + export type SchemaExtractor = (ctx: SchemaExtractorContext) => IR.SchemaObject; 53 + 54 + export const inlineSchema: SchemaExtractor = (ctx) => ctx.schema; 55 + 56 + export function createSchemaExtractor({ 57 + callback, 58 + shouldExtract, 59 + }: { 60 + /** Called when a schema should be extracted. Should call irSchemaToAst with the provided path to extract the schema and register the symbol. */ 61 + callback: (ctx: SchemaExtractorContext) => void; 62 + /** Determines whether a schema at a given path should be extracted. */ 63 + shouldExtract: (ctx: SchemaExtractorContext) => boolean; 64 + }): SchemaExtractor { 65 + // track pointers to prevent infinite recursion 66 + const extractedPointers = new Set<string>(); 67 + 68 + const extractor: SchemaExtractor = (ctx) => { 69 + const pointer = pathToJsonPointer(ctx.path); 70 + if (extractedPointers.has(pointer) || !shouldExtract(ctx)) { 71 + return ctx.schema; 72 + } 73 + extractedPointers.add(pointer); 74 + callback(ctx); 75 + return { $ref: pointer }; 76 + }; 77 + 78 + return extractor; 79 + }
+3
packages/shared/src/plugins/shared/types/instance.ts
··· 25 25 type: Extract<IrTopLevelKind, 'operation'>; 26 26 } 27 27 | { 28 + /** Name of the parameter (e.g., "id" for a parameter defined as "#/components/parameters/id"). */ 28 29 name: string; 29 30 parameter: IR.ParameterObject; 30 31 type: Extract<IrTopLevelKind, 'parameter'>; 31 32 } 32 33 | { 34 + /** Name of the request body (e.g., "CreateUserRequest" for a request body defined as "#/components/requestBodies/CreateUserRequest"). */ 33 35 name: string; 34 36 requestBody: IR.RequestBodyObject; 35 37 type: Extract<IrTopLevelKind, 'requestBody'>; 36 38 } 37 39 | { 40 + /** Name of the schema (e.g., "User" for a schema defined as "#/components/schemas/User"). */ 38 41 name: string; 39 42 schema: IR.SchemaObject; 40 43 type: Extract<IrTopLevelKind, 'schema'>;
-7
packages/shared/vitest.config.ts
··· 1 - import { fileURLToPath } from 'node:url'; 2 - 3 - import { createVitestConfig } from '@config/vite-base'; 4 - 5 - export default createVitestConfig(fileURLToPath(new URL('./', import.meta.url)), { 6 - // Add specific configuration here if needed 7 - });
+156 -482
pnpm-lock.yaml
··· 28 28 '@changesets/types': 29 29 specifier: 6.1.0 30 30 version: 6.1.0 31 - '@config/vite-base': 32 - specifier: workspace:* 33 - version: link:packages/config-vite-base 34 31 '@eslint/js': 35 32 specifier: 9.39.2 36 33 version: 9.39.2 ··· 395 392 specifier: 19.0.0 396 393 version: 19.0.0(react@19.0.0) 397 394 devDependencies: 398 - '@config/vite-base': 399 - specifier: workspace:* 400 - version: link:../../packages/config-vite-base 401 395 '@hey-api/openapi-ts': 402 396 specifier: workspace:* 403 397 version: link:../../packages/openapi-ts ··· 453 447 specifier: 4.8.0 454 448 version: 4.8.0 455 449 devDependencies: 456 - '@config/vite-base': 457 - specifier: workspace:* 458 - version: link:../../packages/config-vite-base 459 450 '@hey-api/openapi-ts': 460 451 specifier: workspace:* 461 452 version: link:../../packages/openapi-ts ··· 493 484 specifier: 19.0.0 494 485 version: 19.0.0(react@19.0.0) 495 486 devDependencies: 496 - '@config/vite-base': 497 - specifier: workspace:* 498 - version: link:../../packages/config-vite-base 499 487 '@hey-api/openapi-ts': 500 488 specifier: workspace:* 501 489 version: link:../../packages/openapi-ts ··· 563 551 specifier: 19.0.0 564 552 version: 19.0.0(react@19.0.0) 565 553 devDependencies: 566 - '@config/vite-base': 567 - specifier: workspace:* 568 - version: link:../../packages/config-vite-base 569 554 '@hey-api/openapi-ts': 570 555 specifier: workspace:* 571 556 version: link:../../packages/openapi-ts ··· 683 668 specifier: 3.5.13 684 669 version: 3.5.13(typescript@5.9.3) 685 670 devDependencies: 686 - '@config/vite-base': 687 - specifier: workspace:* 688 - version: link:../../packages/config-vite-base 689 671 '@hey-api/openapi-ts': 690 672 specifier: workspace:* 691 673 version: link:../../packages/openapi-ts ··· 777 759 specifier: 19.0.0 778 760 version: 19.0.0(react@19.0.0) 779 761 devDependencies: 780 - '@config/vite-base': 781 - specifier: workspace:* 782 - version: link:../../packages/config-vite-base 783 762 '@hey-api/openapi-ts': 784 763 specifier: workspace:* 785 764 version: link:../../packages/openapi-ts ··· 841 820 specifier: 4.5.0 842 821 version: 4.5.0(vue@3.5.13(typescript@5.9.3)) 843 822 devDependencies: 844 - '@config/vite-base': 845 - specifier: workspace:* 846 - version: link:../../packages/config-vite-base 847 823 '@hey-api/openapi-ts': 848 824 specifier: workspace:* 849 825 version: link:../../packages/openapi-ts ··· 1023 999 specifier: 19.0.0 1024 1000 version: 19.0.0(react@19.0.0) 1025 1001 devDependencies: 1026 - '@config/vite-base': 1027 - specifier: workspace:* 1028 - version: link:../../packages/config-vite-base 1029 1002 '@hey-api/openapi-ts': 1030 1003 specifier: workspace:* 1031 1004 version: link:../../packages/openapi-ts ··· 1078 1051 specifier: 5.73.3 1079 1052 version: 5.73.3(svelte@5.19.9) 1080 1053 devDependencies: 1081 - '@config/vite-base': 1082 - specifier: workspace:* 1083 - version: link:../../packages/config-vite-base 1084 1054 '@fontsource/fira-mono': 1085 1055 specifier: 5.0.0 1086 1056 version: 5.0.0 ··· 1151 1121 specifier: 4.5.0 1152 1122 version: 4.5.0(vue@3.5.13(typescript@5.9.3)) 1153 1123 devDependencies: 1154 - '@config/vite-base': 1155 - specifier: workspace:* 1156 - version: link:../../packages/config-vite-base 1157 1124 '@hey-api/openapi-ts': 1158 1125 specifier: workspace:* 1159 1126 version: link:../../packages/openapi-ts ··· 1239 1206 specifier: 1.1.3 1240 1207 version: 1.1.3 1241 1208 devDependencies: 1242 - '@config/vite-base': 1243 - specifier: workspace:* 1244 - version: link:../config-vite-base 1245 1209 eslint: 1246 1210 specifier: 9.39.1 1247 1211 version: 9.39.1(jiti@2.6.1) ··· 1249 1213 specifier: 5.9.3 1250 1214 version: 5.9.3 1251 1215 1252 - packages/config-vite-base: 1253 - dependencies: 1254 - vite: 1255 - specifier: 7.3.1 1256 - version: 7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) 1257 - vitest: 1258 - specifier: 4.0.18 1259 - version: 4.0.18(@types/node@25.2.1)(jiti@2.6.1)(jsdom@28.0.0)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) 1260 - devDependencies: 1261 - typescript: 1262 - specifier: 5.9.3 1263 - version: 5.9.3 1264 - 1265 1216 packages/custom-client: 1266 1217 devDependencies: 1267 - '@config/vite-base': 1268 - specifier: workspace:* 1269 - version: link:../config-vite-base 1270 1218 '@hey-api/codegen-core': 1271 1219 specifier: workspace:* 1272 1220 version: link:../codegen-core ··· 1283 1231 packages/nuxt: 1284 1232 dependencies: 1285 1233 '@nuxt/kit': 1286 - specifier: 3.15.4 1287 - version: 3.15.4(magicast@0.3.5) 1234 + specifier: 4.3.1 1235 + version: 4.3.1(magicast@0.3.5) 1288 1236 defu: 1289 1237 specifier: 6.1.4 1290 1238 version: 6.1.4 ··· 1298 1246 specifier: '>=3.5.13' 1299 1247 version: 3.5.13(typescript@5.9.3) 1300 1248 devDependencies: 1301 - '@config/vite-base': 1302 - specifier: workspace:* 1303 - version: link:../config-vite-base 1304 1249 '@hey-api/openapi-ts': 1305 1250 specifier: workspace:* 1306 1251 version: link:../openapi-ts 1307 1252 '@nuxt/module-builder': 1308 1253 specifier: 0.8.4 1309 - version: 0.8.4(@nuxt/kit@3.15.4(magicast@0.3.5))(nuxi@3.28.0)(sass@1.97.1)(typescript@5.9.3)(vue-tsc@3.2.4(typescript@5.9.3)) 1254 + version: 0.8.4(@nuxt/kit@4.3.1(magicast@0.3.5))(nuxi@3.28.0)(sass@1.97.1)(typescript@5.9.3)(vue-tsc@3.2.4(typescript@5.9.3)) 1310 1255 '@nuxt/schema': 1311 1256 specifier: 3.16.2 1312 1257 version: 3.16.2 1313 1258 '@nuxt/test-utils': 1314 - specifier: 3.21.0 1315 - version: 3.21.0(@vue/test-utils@2.4.6)(jsdom@28.0.0)(magicast@0.3.5)(typescript@5.9.3)(vitest@3.2.4(@types/debug@4.1.12)(@types/node@25.2.1)(jiti@2.6.1)(jsdom@28.0.0)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) 1259 + specifier: 4.0.0 1260 + version: 4.0.0(@vue/test-utils@2.4.6)(jsdom@28.0.0)(magicast@0.3.5)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.18(@types/node@25.2.1)(jiti@2.6.1)(jsdom@28.0.0)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) 1316 1261 vite: 1317 1262 specifier: 7.3.1 1318 1263 version: 7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) ··· 1341 1286 specifier: 14.0.3 1342 1287 version: 14.0.3 1343 1288 devDependencies: 1344 - '@config/vite-base': 1345 - specifier: workspace:* 1346 - version: link:../config-vite-base 1347 1289 eslint: 1348 1290 specifier: 9.39.1 1349 1291 version: 9.39.1(jiti@2.6.1) ··· 1399 1341 '@angular/router': 1400 1342 specifier: 21.1.2 1401 1343 version: 21.1.2(@angular/common@21.1.2(@angular/core@21.1.2(@angular/compiler@21.1.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.2(@angular/compiler@21.1.2)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.2(@angular/animations@21.1.2(@angular/core@21.1.2(@angular/compiler@21.1.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.2(@angular/core@21.1.2(@angular/compiler@21.1.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.2(@angular/compiler@21.1.2)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) 1402 - '@config/vite-base': 1403 - specifier: workspace:* 1404 - version: link:../config-vite-base 1405 1344 axios: 1406 1345 specifier: 1.13.4 1407 1346 version: 1.13.4 ··· 1468 1407 '@angular/router': 1469 1408 specifier: 21.1.2 1470 1409 version: 21.1.2(@angular/common@21.1.2(@angular/core@21.1.2(@angular/compiler@21.1.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.2(@angular/compiler@21.1.2)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.2(@angular/animations@21.1.2(@angular/core@21.1.2(@angular/compiler@21.1.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.2(@angular/core@21.1.2(@angular/compiler@21.1.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.2(@angular/compiler@21.1.2)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) 1471 - '@config/vite-base': 1472 - specifier: workspace:* 1473 - version: link:../../config-vite-base 1474 1410 '@hey-api/codegen-core': 1475 1411 specifier: workspace:* 1476 1412 version: link:../../codegen-core ··· 1555 1491 1556 1492 packages/openapi-ts-tests/sdks: 1557 1493 devDependencies: 1558 - '@config/vite-base': 1559 - specifier: workspace:* 1560 - version: link:../../config-vite-base 1561 1494 '@hey-api/openapi-ts': 1562 1495 specifier: workspace:* 1563 1496 version: link:../../openapi-ts ··· 1567 1500 1568 1501 packages/openapi-ts-tests/zod/v3: 1569 1502 devDependencies: 1570 - '@config/vite-base': 1571 - specifier: workspace:* 1572 - version: link:../../../config-vite-base 1573 1503 '@hey-api/openapi-ts': 1574 1504 specifier: workspace:* 1575 1505 version: link:../../../openapi-ts ··· 1582 1512 1583 1513 packages/openapi-ts-tests/zod/v4: 1584 1514 devDependencies: 1585 - '@config/vite-base': 1586 - specifier: workspace:* 1587 - version: link:../../../config-vite-base 1588 1515 '@hey-api/openapi-ts': 1589 1516 specifier: workspace:* 1590 1517 version: link:../../../openapi-ts ··· 1619 1546 specifier: 7.7.3 1620 1547 version: 7.7.3 1621 1548 devDependencies: 1622 - '@config/vite-base': 1623 - specifier: workspace:* 1624 - version: link:../config-vite-base 1625 1549 '@types/bun': 1626 1550 specifier: 1.3.8 1627 1551 version: 1.3.8 ··· 2740 2664 '@changesets/write@0.4.0': 2741 2665 resolution: {integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==} 2742 2666 2667 + '@clack/core@1.0.0': 2668 + resolution: {integrity: sha512-Orf9Ltr5NeiEuVJS8Rk2XTw3IxNC2Bic3ash7GgYeA8LJ/zmSNpSQ/m5UAhe03lA6KFgklzZ5KTHs4OAMA/SAQ==} 2669 + 2743 2670 '@clack/core@1.0.0-alpha.7': 2744 2671 resolution: {integrity: sha512-3vdh6Ar09D14rVxJZIm3VQJkU+ZOKKT5I5cC0cOVazy70CNyYYjiwRj9unwalhESndgxx6bGc/m6Hhs4EKF5XQ==} 2672 + 2673 + '@clack/prompts@1.0.0': 2674 + resolution: {integrity: sha512-rWPXg9UaCFqErJVQ+MecOaWsozjaxol4yjnmYcGNipAWzdaWa2x+VJmKfGq7L0APwBohQOYdHC+9RO4qRXej+A==} 2745 2675 2746 2676 '@clack/prompts@1.0.0-alpha.9': 2747 2677 resolution: {integrity: sha512-sKs0UjiHFWvry4SiRfBi5Qnj0C/6AYx8aKkFPZQSuUZXgAram25ZDmhQmP7vj1aFyLpfHWtLQjWvOvcat0TOLg==} ··· 4887 4817 peerDependencies: 4888 4818 vite: '*' 4889 4819 4820 + '@nuxt/devtools-kit@2.7.0': 4821 + resolution: {integrity: sha512-MIJdah6CF6YOW2GhfKnb8Sivu6HpcQheqdjOlZqShBr+1DyjtKQbAKSCAyKPaoIzZP4QOo2SmTFV6aN8jBeEIQ==} 4822 + peerDependencies: 4823 + vite: '>=6.0' 4824 + 4890 4825 '@nuxt/devtools-kit@3.1.1': 4891 4826 resolution: {integrity: sha512-sjiKFeDCOy1SyqezSgyV4rYNfQewC64k/GhOsuJgRF+wR2qr6KTVhO6u2B+csKs74KrMrnJprQBgud7ejvOXAQ==} 4892 4827 peerDependencies: ··· 4920 4855 resolution: {integrity: sha512-r9r8bISBBisvfcNgNL3dSIQHSBe0v5YkX5zwNblIC2T0CIEgxEVoM5rq9O5wqgb5OEydsHTtT2hL57vdv6VT2w==} 4921 4856 engines: {node: ^14.18.0 || >=16.10.0} 4922 4857 4923 - '@nuxt/kit@3.15.4': 4924 - resolution: {integrity: sha512-dr7I7eZOoRLl4uxdxeL2dQsH0OrbEiVPIyBHnBpA4co24CBnoJoF+JINuP9l3PAM3IhUzc5JIVq3/YY3lEc3Hw==} 4925 - engines: {node: '>=18.12.0'} 4926 - 4927 - '@nuxt/kit@3.20.2': 4928 - resolution: {integrity: sha512-laqfmMcWWNV1FsVmm1+RQUoGY8NIJvCRl0z0K8ikqPukoEry0LXMqlQ+xaf8xJRvoH2/78OhZmsEEsUBTXipcw==} 4929 - engines: {node: '>=18.12.0'} 4930 - 4931 4858 '@nuxt/kit@3.21.0': 4932 4859 resolution: {integrity: sha512-KMTLK/dsGaQioZzkYUvgfN9le4grNW54aNcA1jqzgVZLcFVy4jJfrJr5WZio9NT2EMfajdoZ+V28aD7BRr4Zfw==} 4933 4860 engines: {node: '>=18.12.0'} 4934 4861 4935 - '@nuxt/kit@4.3.0': 4936 - resolution: {integrity: sha512-cD/0UU9RQmlnTbmyJTDyzN8f6CzpziDLv3tFQCnwl0Aoxt3KmFu4k/XA4Sogxqj7jJ/3cdX1kL+Lnsh34sxcQQ==} 4862 + '@nuxt/kit@4.3.1': 4863 + resolution: {integrity: sha512-UjBFt72dnpc+83BV3OIbCT0YHLevJtgJCHpxMX0YRKWLDhhbcDdUse87GtsQBrjvOzK7WUNUYLDS/hQLYev5rA==} 4937 4864 engines: {node: '>=18.12.0'} 4938 4865 4939 4866 '@nuxt/module-builder@0.8.4': ··· 4966 4893 engines: {node: '>=18.12.0'} 4967 4894 hasBin: true 4968 4895 4969 - '@nuxt/test-utils@3.21.0': 4970 - resolution: {integrity: sha512-A6XExfgHq88+XuXAU4MMr5QBHS2mWA5qRVSvsMPP2U+YSsnk+Vt7P7dxbvJPE4+n6LHbC1IM0QjTVteo+VCxOA==} 4971 - engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} 4896 + '@nuxt/test-utils@4.0.0': 4897 + resolution: {integrity: sha512-QJfyCiqYxflUKA5xlEGuXdDApTBhJxoPXxYePIDtA90hkmKbhYs/mrMM+Bi9LiUrI/cCJOPRyIx9jOzhMvTIgg==} 4898 + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} 4972 4899 peerDependencies: 4973 - '@cucumber/cucumber': ^10.3.1 || >=11.0.0 4974 - '@jest/globals': ^29.5.0 || >=30.0.0 4900 + '@cucumber/cucumber': '>=11.0.0' 4901 + '@jest/globals': '>=30.0.0' 4975 4902 '@playwright/test': ^1.43.1 4976 - '@testing-library/vue': ^7.0.0 || ^8.0.1 4903 + '@testing-library/vue': ^8.0.1 4977 4904 '@vitest/ui': '*' 4978 4905 '@vue/test-utils': ^2.4.2 4979 - happy-dom: '*' 4980 - jsdom: '*' 4906 + happy-dom: '>=20.0.11' 4907 + jsdom: '>=27.4.0' 4981 4908 playwright-core: ^1.43.1 4982 - vitest: ^3.2.0 4909 + vitest: ^4.0.2 4983 4910 peerDependenciesMeta: 4984 4911 '@cucumber/cucumber': 4985 4912 optional: true ··· 7492 7419 '@vitest/browser': 7493 7420 optional: true 7494 7421 7495 - '@vitest/expect@3.2.4': 7496 - resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==} 7497 - 7498 7422 '@vitest/expect@4.0.18': 7499 7423 resolution: {integrity: sha512-8sCWUyckXXYvx4opfzVY03EOiYVxyNrHS5QxX3DAIi5dpJAAkyJezHCP77VMX4HKA2LDT/Jpfo8i2r5BE3GnQQ==} 7500 7424 7501 - '@vitest/mocker@3.2.4': 7502 - resolution: {integrity: sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==} 7503 - peerDependencies: 7504 - msw: ^2.4.9 7505 - vite: ^5.0.0 || ^6.0.0 || ^7.0.0-0 7506 - peerDependenciesMeta: 7507 - msw: 7508 - optional: true 7509 - vite: 7510 - optional: true 7511 - 7512 7425 '@vitest/mocker@4.0.18': 7513 7426 resolution: {integrity: sha512-HhVd0MDnzzsgevnOWCBj5Otnzobjy5wLBe4EdeeFGv8luMsGcYqDuFRMcttKWZA5vVO8RFjexVovXvAM4JoJDQ==} 7514 7427 peerDependencies: ··· 7520 7433 vite: 7521 7434 optional: true 7522 7435 7523 - '@vitest/pretty-format@3.2.4': 7524 - resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==} 7525 - 7526 7436 '@vitest/pretty-format@4.0.18': 7527 7437 resolution: {integrity: sha512-P24GK3GulZWC5tz87ux0m8OADrQIUVDPIjjj65vBXYG17ZeU3qD7r+MNZ1RNv4l8CGU2vtTRqixrOi9fYk/yKw==} 7528 7438 7529 - '@vitest/runner@3.2.4': 7530 - resolution: {integrity: sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==} 7531 - 7532 7439 '@vitest/runner@4.0.18': 7533 7440 resolution: {integrity: sha512-rpk9y12PGa22Jg6g5M3UVVnTS7+zycIGk9ZNGN+m6tZHKQb7jrP7/77WfZy13Y/EUDd52NDsLRQhYKtv7XfPQw==} 7534 7441 7535 - '@vitest/snapshot@3.2.4': 7536 - resolution: {integrity: sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==} 7537 - 7538 7442 '@vitest/snapshot@4.0.18': 7539 7443 resolution: {integrity: sha512-PCiV0rcl7jKQjbgYqjtakly6T1uwv/5BQ9SwBLekVg/EaYeQFPiXcgrC2Y7vDMA8dM1SUEAEV82kgSQIlXNMvA==} 7540 - 7541 - '@vitest/spy@3.2.4': 7542 - resolution: {integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==} 7543 7444 7544 7445 '@vitest/spy@4.0.18': 7545 7446 resolution: {integrity: sha512-cbQt3PTSD7P2OARdVW3qWER5EGq7PHlvE+QfzSC0lbwO+xnt7+XH06ZzFjFRgzUX//JmpxrCu92VdwvEPlWSNw==} 7546 - 7547 - '@vitest/utils@3.2.4': 7548 - resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} 7549 7447 7550 7448 '@vitest/utils@4.0.18': 7551 7449 resolution: {integrity: sha512-msMRKLMVLWygpK3u2Hybgi4MNjcYJvwTb0Ru09+fOyCXIgT5raYP041DRRdiJiI3k/2U6SEbAETB3YtBrUkCFA==} ··· 8150 8048 arraybuffer.prototype.slice@1.0.4: 8151 8049 resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} 8152 8050 engines: {node: '>= 0.4'} 8153 - 8154 - assertion-error@2.0.1: 8155 - resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} 8156 - engines: {node: '>=12'} 8157 8051 8158 8052 ast-kit@1.4.3: 8159 8053 resolution: {integrity: sha512-MdJqjpodkS5J149zN0Po+HPshkTdUyrvF7CKTafUgv69vBSPtncrj+3IiUgqdd7ElIEkbeXCsEouBUwLrw9Ilg==} ··· 8446 8340 ccount@2.0.1: 8447 8341 resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} 8448 8342 8449 - chai@5.3.3: 8450 - resolution: {integrity: sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==} 8451 - engines: {node: '>=18'} 8452 - 8453 8343 chai@6.2.2: 8454 8344 resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} 8455 8345 engines: {node: '>=18'} ··· 8477 8367 8478 8368 chardet@2.1.1: 8479 8369 resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==} 8480 - 8481 - check-error@2.1.1: 8482 - resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} 8483 - engines: {node: '>= 16'} 8484 8370 8485 8371 chokidar@3.6.0: 8486 8372 resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} ··· 9034 8920 9035 8921 decode-named-character-reference@1.2.0: 9036 8922 resolution: {integrity: sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==} 9037 - 9038 - deep-eql@5.0.2: 9039 - resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} 9040 - engines: {node: '>=6'} 9041 8923 9042 8924 deep-is@0.1.4: 9043 8925 resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} ··· 10212 10094 h3@1.15.5: 10213 10095 resolution: {integrity: sha512-xEyq3rSl+dhGX2Lm0+eFQIAzlDN6Fs0EcC4f7BNUmzaRX/PTzeuM+Tr2lHB8FoXggsQIeXLj8EDVgs5ywxyxmg==} 10214 10096 10097 + h3@2.0.1-rc.11: 10098 + resolution: {integrity: sha512-2myzjCqy32c1As9TjZW9fNZXtLqNedjFSrdFy2AjFBQQ3LzrnGoDdFDYfC0tV2e4vcyfJ2Sfo/F6NQhO2Ly/Mw==} 10099 + engines: {node: '>=20.11.1'} 10100 + peerDependencies: 10101 + crossws: ^0.4.1 10102 + peerDependenciesMeta: 10103 + crossws: 10104 + optional: true 10105 + 10215 10106 handle-thing@2.0.1: 10216 10107 resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} 10217 10108 ··· 10808 10699 resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} 10809 10700 hasBin: true 10810 10701 10811 - jiti@2.5.1: 10812 - resolution: {integrity: sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==} 10813 - hasBin: true 10814 - 10815 10702 jiti@2.6.1: 10816 10703 resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} 10817 10704 hasBin: true ··· 10980 10867 klona@2.0.6: 10981 10868 resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} 10982 10869 engines: {node: '>= 8'} 10983 - 10984 - knitwork@1.2.0: 10985 - resolution: {integrity: sha512-xYSH7AvuQ6nXkq42x0v5S8/Iry+cfulBz/DJQzhIyESdLD7425jXsPy4vn5cCXU+HhRN2kVw51Vd1K6/By4BQg==} 10986 10870 10987 10871 knitwork@1.3.0: 10988 10872 resolution: {integrity: sha512-4LqMNoONzR43B1W0ek0fhXMsDNW/zxa1NdFAVMY+k28pgZLovR4G3PB5MrpTxCy1QaZCqNoiaKPr5w5qZHfSNw==} ··· 11178 11062 resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} 11179 11063 hasBin: true 11180 11064 11181 - loupe@3.2.1: 11182 - resolution: {integrity: sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==} 11183 - 11184 11065 lru-cache@10.4.3: 11185 11066 resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} 11186 11067 ··· 12270 12151 pathe@2.0.3: 12271 12152 resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} 12272 12153 12273 - pathval@2.0.1: 12274 - resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==} 12275 - engines: {node: '>= 14.16'} 12276 - 12277 12154 pend@1.2.0: 12278 12155 resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} 12279 12156 ··· 12282 12159 12283 12160 perfect-debounce@2.0.0: 12284 12161 resolution: {integrity: sha512-fkEH/OBiKrqqI/yIgjR92lMfs2K8105zt/VT6+7eTjNwisrsh47CeIED9z58zI7DfKdH3uHAn25ziRZn3kgAow==} 12162 + 12163 + perfect-debounce@2.1.0: 12164 + resolution: {integrity: sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==} 12285 12165 12286 12166 picocolors@1.1.1: 12287 12167 resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} ··· 12818 12698 rc9@2.1.2: 12819 12699 resolution: {integrity: sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==} 12820 12700 12701 + rc9@3.0.0: 12702 + resolution: {integrity: sha512-MGOue0VqscKWQ104udASX/3GYDcKyPI4j4F8gu/jHHzglpmy9a/anZK3PNe8ug6aZFl+9GxLtdhe3kVZuMaQbA==} 12703 + 12821 12704 react-dom@19.0.0: 12822 12705 resolution: {integrity: sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==} 12823 12706 peerDependencies: ··· 13269 13152 13270 13153 semver@7.7.3: 13271 13154 resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} 13155 + engines: {node: '>=10'} 13156 + hasBin: true 13157 + 13158 + semver@7.7.4: 13159 + resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} 13272 13160 engines: {node: '>=10'} 13273 13161 hasBin: true 13274 13162 ··· 13887 13775 tinyglobby@0.2.15: 13888 13776 resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} 13889 13777 engines: {node: '>=12.0.0'} 13890 - 13891 - tinypool@1.1.1: 13892 - resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==} 13893 - engines: {node: ^18.0.0 || >=20.0.0} 13894 13778 13895 13779 tinypool@2.0.0: 13896 13780 resolution: {integrity: sha512-/RX9RzeH2xU5ADE7n2Ykvmi9ED3FBGPAjw9u3zucrNNaEBIO0HPSYgL0NT7+3p147ojeSdaVu08F6hjpv31HJg==} ··· 13900 13784 resolution: {integrity: sha512-Pugqs6M0m7Lv1I7FtxN4aoyToKg1C4tu+/381vH35y8oENM/Ai7f7C4StcoK4/+BSw9ebcS8jRiVrORFKCALLw==} 13901 13785 engines: {node: ^20.0.0 || >=22.0.0} 13902 13786 13903 - tinyrainbow@2.0.0: 13904 - resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} 13905 - engines: {node: '>=14.0.0'} 13906 - 13907 13787 tinyrainbow@3.0.3: 13908 13788 resolution: {integrity: sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==} 13909 - engines: {node: '>=14.0.0'} 13910 - 13911 - tinyspy@4.0.3: 13912 - resolution: {integrity: sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==} 13913 13789 engines: {node: '>=14.0.0'} 13914 13790 13915 13791 tldts-core@7.0.22: ··· 14286 14162 unimport@3.14.6: 14287 14163 resolution: {integrity: sha512-CYvbDaTT04Rh8bmD8jz3WPmHYZRG/NnvYVzwD6V1YAlvvKROlAeNDUBhkBGzNav2RKaeuXvlWYaa1V4Lfi/O0g==} 14288 14164 14289 - unimport@4.2.0: 14290 - resolution: {integrity: sha512-mYVtA0nmzrysnYnyb3ALMbByJ+Maosee2+WyE0puXl+Xm2bUwPorPaaeZt0ETfuroPOtG8jj1g/qeFZ6buFnag==} 14291 - engines: {node: '>=18.12.0'} 14292 - 14293 14165 unimport@5.2.0: 14294 14166 resolution: {integrity: sha512-bTuAMMOOqIAyjV4i4UH7P07pO+EsVxmhOzQ2YJ290J6mkLUdozNhb5I/YoOEheeNADC03ent3Qj07X0fWfUpmw==} 14295 14167 engines: {node: '>=18.12.0'} ··· 14380 14252 unplugin@2.3.11: 14381 14253 resolution: {integrity: sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww==} 14382 14254 engines: {node: '>=18.12.0'} 14255 + 14256 + unplugin@3.0.0: 14257 + resolution: {integrity: sha512-0Mqk3AT2TZCXWKdcoaufeXNukv2mTrEZExeXlHIOZXdqYoHHr4n51pymnwV8x2BOVxwXbK2HLlI7usrqMpycdg==} 14258 + engines: {node: ^20.19.0 || >=22.12.0} 14383 14259 14384 14260 unrs-resolver@1.11.1: 14385 14261 resolution: {integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==} ··· 14652 14528 engines: {node: ^18.0.0 || >=20.0.0} 14653 14529 hasBin: true 14654 14530 14655 - vite-node@3.2.4: 14656 - resolution: {integrity: sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==} 14657 - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} 14658 - hasBin: true 14659 - 14660 14531 vite-node@5.3.0: 14661 14532 resolution: {integrity: sha512-8f20COPYJujc3OKPX6OuyBy3ZIv2det4eRRU4GY1y2MjbeGSUmPjedxg1b72KnTagCofwvZ65ThzjxDW2AtQFQ==} 14662 14533 engines: {node: ^20.19.0 || >=22.12.0} ··· 14910 14781 vitest-environment-nuxt@1.0.1: 14911 14782 resolution: {integrity: sha512-eBCwtIQriXW5/M49FjqNKfnlJYlG2LWMSNFsRVKomc8CaMqmhQPBS5LZ9DlgYL9T8xIVsiA6RZn2lk7vxov3Ow==} 14912 14783 14913 - vitest@3.2.4: 14914 - resolution: {integrity: sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==} 14915 - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} 14916 - hasBin: true 14917 - peerDependencies: 14918 - '@edge-runtime/vm': '*' 14919 - '@types/debug': ^4.1.12 14920 - '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 14921 - '@vitest/browser': 3.2.4 14922 - '@vitest/ui': 3.2.4 14923 - happy-dom: '*' 14924 - jsdom: '*' 14925 - peerDependenciesMeta: 14926 - '@edge-runtime/vm': 14927 - optional: true 14928 - '@types/debug': 14929 - optional: true 14930 - '@types/node': 14931 - optional: true 14932 - '@vitest/browser': 14933 - optional: true 14934 - '@vitest/ui': 14935 - optional: true 14936 - happy-dom: 14937 - optional: true 14938 - jsdom: 14939 - optional: true 14940 - 14941 14784 vitest@4.0.18: 14942 14785 resolution: {integrity: sha512-hOQuK7h0FGKgBAas7v0mSAsnvrIgAvWmRFjmzpJ7SwFHH3g1k2u37JtYwOwmEKhK6ZO3v9ggDBBm0La1LCK4uQ==} 14943 14786 engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} ··· 17181 17024 human-id: 4.1.1 17182 17025 prettier: 2.8.8 17183 17026 17027 + '@clack/core@1.0.0': 17028 + dependencies: 17029 + picocolors: 1.1.1 17030 + sisteransi: 1.0.5 17031 + 17184 17032 '@clack/core@1.0.0-alpha.7': 17185 17033 dependencies: 17034 + picocolors: 1.1.1 17035 + sisteransi: 1.0.5 17036 + 17037 + '@clack/prompts@1.0.0': 17038 + dependencies: 17039 + '@clack/core': 1.0.0 17186 17040 picocolors: 1.1.1 17187 17041 sisteransi: 1.0.5 17188 17042 ··· 17250 17104 '@dxup/nuxt@0.3.2(magicast@0.5.2)': 17251 17105 dependencies: 17252 17106 '@dxup/unimport': 0.1.2 17253 - '@nuxt/kit': 4.3.0(magicast@0.5.2) 17107 + '@nuxt/kit': 4.3.1(magicast@0.5.2) 17254 17108 chokidar: 5.0.0 17255 17109 pathe: 2.0.3 17256 17110 tinyglobby: 0.2.15 ··· 18985 18839 18986 18840 '@nuxt/devtools-kit@1.7.0(magicast@0.3.5)(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': 18987 18841 dependencies: 18988 - '@nuxt/kit': 3.15.4(magicast@0.3.5) 18842 + '@nuxt/kit': 3.21.0(magicast@0.3.5) 18989 18843 '@nuxt/schema': 3.16.2 18990 18844 execa: 7.2.0 18991 18845 vite: 7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) 18992 18846 transitivePeerDependencies: 18993 18847 - magicast 18994 - - supports-color 18848 + 18849 + '@nuxt/devtools-kit@2.7.0(magicast@0.3.5)(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': 18850 + dependencies: 18851 + '@nuxt/kit': 3.21.0(magicast@0.3.5) 18852 + execa: 8.0.1 18853 + vite: 7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) 18854 + transitivePeerDependencies: 18855 + - magicast 18995 18856 18996 18857 '@nuxt/devtools-kit@3.1.1(magicast@0.5.2)(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': 18997 18858 dependencies: 18998 - '@nuxt/kit': 4.3.0(magicast@0.5.2) 18859 + '@nuxt/kit': 4.3.1(magicast@0.5.2) 18999 18860 execa: 8.0.1 19000 18861 vite: 7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) 19001 18862 transitivePeerDependencies: ··· 19030 18891 '@antfu/utils': 0.7.10 19031 18892 '@nuxt/devtools-kit': 1.7.0(magicast@0.3.5)(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) 19032 18893 '@nuxt/devtools-wizard': 1.7.0 19033 - '@nuxt/kit': 3.15.4(magicast@0.3.5) 18894 + '@nuxt/kit': 3.21.0(magicast@0.3.5) 19034 18895 '@vue/devtools-core': 7.6.8(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.25(typescript@5.9.3)) 19035 18896 '@vue/devtools-kit': 7.6.8 19036 18897 birpc: 0.2.19 ··· 19061 18922 tinyglobby: 0.2.15 19062 18923 unimport: 3.14.6(rollup@3.29.5) 19063 18924 vite: 7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) 19064 - vite-plugin-inspect: 0.8.9(@nuxt/kit@3.15.4(magicast@0.3.5))(rollup@3.29.5)(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) 18925 + vite-plugin-inspect: 0.8.9(@nuxt/kit@3.21.0(magicast@0.3.5))(rollup@3.29.5)(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) 19065 18926 vite-plugin-vue-inspector: 5.3.2(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) 19066 18927 which: 3.0.1 19067 18928 ws: 8.18.3 ··· 19077 18938 '@antfu/utils': 0.7.10 19078 18939 '@nuxt/devtools-kit': 1.7.0(magicast@0.3.5)(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) 19079 18940 '@nuxt/devtools-wizard': 1.7.0 19080 - '@nuxt/kit': 3.15.4(magicast@0.3.5) 18941 + '@nuxt/kit': 3.21.0(magicast@0.3.5) 19081 18942 '@vue/devtools-core': 7.6.8(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.25(typescript@5.9.3)) 19082 18943 '@vue/devtools-kit': 7.6.8 19083 18944 birpc: 0.2.19 ··· 19108 18969 tinyglobby: 0.2.15 19109 18970 unimport: 3.14.6(rollup@4.56.0) 19110 18971 vite: 7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) 19111 - vite-plugin-inspect: 0.8.9(@nuxt/kit@3.15.4(magicast@0.3.5))(rollup@4.56.0)(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) 18972 + vite-plugin-inspect: 0.8.9(@nuxt/kit@3.21.0(magicast@0.3.5))(rollup@4.56.0)(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) 19112 18973 vite-plugin-vue-inspector: 5.3.2(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) 19113 18974 which: 3.0.1 19114 18975 ws: 8.18.3 ··· 19123 18984 dependencies: 19124 18985 '@nuxt/devtools-kit': 3.1.1(magicast@0.5.2)(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) 19125 18986 '@nuxt/devtools-wizard': 3.1.1 19126 - '@nuxt/kit': 4.3.0(magicast@0.5.2) 18987 + '@nuxt/kit': 4.3.1(magicast@0.5.2) 19127 18988 '@vue/devtools-core': 8.0.6(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.27(typescript@5.9.3)) 19128 18989 '@vue/devtools-kit': 8.0.5 19129 18990 birpc: 2.8.0 ··· 19150 19011 structured-clone-es: 1.0.0 19151 19012 tinyglobby: 0.2.15 19152 19013 vite: 7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) 19153 - vite-plugin-inspect: 11.3.3(@nuxt/kit@4.3.0(magicast@0.5.2))(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) 19014 + vite-plugin-inspect: 11.3.3(@nuxt/kit@4.3.1(magicast@0.5.2))(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) 19154 19015 vite-plugin-vue-tracer: 1.2.0(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.27(typescript@5.9.3)) 19155 19016 which: 5.0.0 19156 19017 ws: 8.18.3 ··· 19214 19075 - rollup 19215 19076 - supports-color 19216 19077 19217 - '@nuxt/kit@3.15.4(magicast@0.3.5)': 19218 - dependencies: 19219 - c12: 2.0.1(magicast@0.3.5) 19220 - consola: 3.4.2 19221 - defu: 6.1.4 19222 - destr: 2.0.5 19223 - globby: 14.1.0 19224 - ignore: 7.0.5 19225 - jiti: 2.5.1 19226 - klona: 2.0.6 19227 - knitwork: 1.2.0 19228 - mlly: 1.8.0 19229 - ohash: 1.1.6 19230 - pathe: 2.0.3 19231 - pkg-types: 1.3.1 19232 - scule: 1.3.0 19233 - semver: 7.7.2 19234 - std-env: 3.9.0 19235 - ufo: 1.6.1 19236 - unctx: 2.4.1 19237 - unimport: 4.2.0 19238 - untyped: 1.5.2 19239 - transitivePeerDependencies: 19240 - - magicast 19241 - - supports-color 19242 - 19243 - '@nuxt/kit@3.15.4(magicast@0.5.2)': 19078 + '@nuxt/kit@3.21.0(magicast@0.3.5)': 19244 19079 dependencies: 19245 - c12: 2.0.1(magicast@0.5.2) 19080 + c12: 3.3.3(magicast@0.3.5) 19246 19081 consola: 3.4.2 19247 19082 defu: 6.1.4 19248 19083 destr: 2.0.5 19249 - globby: 14.1.0 19084 + errx: 0.1.0 19085 + exsolve: 1.0.8 19250 19086 ignore: 7.0.5 19251 - jiti: 2.5.1 19087 + jiti: 2.6.1 19252 19088 klona: 2.0.6 19253 - knitwork: 1.2.0 19089 + knitwork: 1.3.0 19254 19090 mlly: 1.8.0 19255 - ohash: 1.1.6 19091 + ohash: 2.0.11 19256 19092 pathe: 2.0.3 19257 - pkg-types: 1.3.1 19093 + pkg-types: 2.3.0 19094 + rc9: 2.1.2 19258 19095 scule: 1.3.0 19259 - semver: 7.7.2 19260 - std-env: 3.9.0 19261 - ufo: 1.6.1 19262 - unctx: 2.4.1 19263 - unimport: 4.2.0 19264 - untyped: 1.5.2 19096 + semver: 7.7.3 19097 + tinyglobby: 0.2.15 19098 + ufo: 1.6.3 19099 + unctx: 2.5.0 19100 + untyped: 2.0.0 19265 19101 transitivePeerDependencies: 19266 19102 - magicast 19267 - - supports-color 19268 19103 19269 - '@nuxt/kit@3.20.2(magicast@0.3.5)': 19104 + '@nuxt/kit@3.21.0(magicast@0.5.2)': 19270 19105 dependencies: 19271 - c12: 3.3.3(magicast@0.3.5) 19106 + c12: 3.3.3(magicast@0.5.2) 19272 19107 consola: 3.4.2 19273 19108 defu: 6.1.4 19274 19109 destr: 2.0.5 ··· 19286 19121 scule: 1.3.0 19287 19122 semver: 7.7.3 19288 19123 tinyglobby: 0.2.15 19289 - ufo: 1.6.1 19290 - unctx: 2.4.1 19124 + ufo: 1.6.3 19125 + unctx: 2.5.0 19291 19126 untyped: 2.0.0 19292 19127 transitivePeerDependencies: 19293 19128 - magicast 19294 19129 19295 - '@nuxt/kit@3.21.0(magicast@0.5.2)': 19130 + '@nuxt/kit@4.3.1(magicast@0.3.5)': 19296 19131 dependencies: 19297 - c12: 3.3.3(magicast@0.5.2) 19132 + c12: 3.3.3(magicast@0.3.5) 19298 19133 consola: 3.4.2 19299 19134 defu: 6.1.4 19300 19135 destr: 2.0.5 ··· 19303 19138 ignore: 7.0.5 19304 19139 jiti: 2.6.1 19305 19140 klona: 2.0.6 19306 - knitwork: 1.3.0 19307 19141 mlly: 1.8.0 19308 19142 ohash: 2.0.11 19309 19143 pathe: 2.0.3 19310 19144 pkg-types: 2.3.0 19311 - rc9: 2.1.2 19145 + rc9: 3.0.0 19312 19146 scule: 1.3.0 19313 - semver: 7.7.3 19147 + semver: 7.7.4 19314 19148 tinyglobby: 0.2.15 19315 19149 ufo: 1.6.3 19316 19150 unctx: 2.5.0 ··· 19318 19152 transitivePeerDependencies: 19319 19153 - magicast 19320 19154 19321 - '@nuxt/kit@4.3.0(magicast@0.5.2)': 19155 + '@nuxt/kit@4.3.1(magicast@0.5.2)': 19322 19156 dependencies: 19323 19157 c12: 3.3.3(magicast@0.5.2) 19324 19158 consola: 3.4.2 ··· 19333 19167 ohash: 2.0.11 19334 19168 pathe: 2.0.3 19335 19169 pkg-types: 2.3.0 19336 - rc9: 2.1.2 19170 + rc9: 3.0.0 19337 19171 scule: 1.3.0 19338 - semver: 7.7.3 19172 + semver: 7.7.4 19339 19173 tinyglobby: 0.2.15 19340 19174 ufo: 1.6.3 19341 19175 unctx: 2.5.0 ··· 19343 19177 transitivePeerDependencies: 19344 19178 - magicast 19345 19179 19346 - '@nuxt/module-builder@0.8.4(@nuxt/kit@3.15.4(magicast@0.3.5))(nuxi@3.28.0)(sass@1.97.1)(typescript@5.9.3)(vue-tsc@3.2.4(typescript@5.9.3))': 19180 + '@nuxt/module-builder@0.8.4(@nuxt/kit@4.3.1(magicast@0.3.5))(nuxi@3.28.0)(sass@1.97.1)(typescript@5.9.3)(vue-tsc@3.2.4(typescript@5.9.3))': 19347 19181 dependencies: 19348 - '@nuxt/kit': 3.15.4(magicast@0.3.5) 19182 + '@nuxt/kit': 4.3.1(magicast@0.3.5) 19349 19183 citty: 0.1.6 19350 19184 consola: 3.4.2 19351 19185 defu: 6.1.4 ··· 19482 19316 19483 19317 '@nuxt/telemetry@2.6.6(magicast@0.3.5)': 19484 19318 dependencies: 19485 - '@nuxt/kit': 3.15.4(magicast@0.3.5) 19319 + '@nuxt/kit': 3.21.0(magicast@0.3.5) 19486 19320 citty: 0.1.6 19487 19321 consola: 3.4.2 19488 19322 destr: 2.0.5 ··· 19496 19330 std-env: 3.10.0 19497 19331 transitivePeerDependencies: 19498 19332 - magicast 19499 - - supports-color 19500 19333 19501 19334 '@nuxt/telemetry@2.6.6(magicast@0.5.2)': 19502 19335 dependencies: 19503 - '@nuxt/kit': 3.15.4(magicast@0.5.2) 19336 + '@nuxt/kit': 3.21.0(magicast@0.5.2) 19504 19337 citty: 0.1.6 19505 19338 consola: 3.4.2 19506 19339 destr: 2.0.5 ··· 19514 19347 std-env: 3.10.0 19515 19348 transitivePeerDependencies: 19516 19349 - magicast 19517 - - supports-color 19518 19350 19519 - '@nuxt/test-utils@3.21.0(@vue/test-utils@2.4.6)(jsdom@28.0.0)(magicast@0.3.5)(typescript@5.9.3)(vitest@3.2.4(@types/debug@4.1.12)(@types/node@25.2.1)(jiti@2.6.1)(jsdom@28.0.0)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': 19351 + '@nuxt/test-utils@4.0.0(@vue/test-utils@2.4.6)(jsdom@28.0.0)(magicast@0.3.5)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.18(@types/node@25.2.1)(jiti@2.6.1)(jsdom@28.0.0)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': 19520 19352 dependencies: 19521 - '@nuxt/kit': 3.20.2(magicast@0.3.5) 19353 + '@clack/prompts': 1.0.0 19354 + '@nuxt/devtools-kit': 2.7.0(magicast@0.3.5)(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) 19355 + '@nuxt/kit': 3.21.0(magicast@0.3.5) 19522 19356 c12: 3.3.3(magicast@0.3.5) 19523 19357 consola: 3.4.2 19524 19358 defu: 6.1.4 ··· 19527 19361 exsolve: 1.0.8 19528 19362 fake-indexeddb: 6.2.5 19529 19363 get-port-please: 3.2.0 19530 - h3: 1.15.4 19364 + h3: 1.15.5 19365 + h3-next: h3@2.0.1-rc.11 19531 19366 local-pkg: 1.1.2 19532 19367 magic-string: 0.30.21 19533 19368 node-fetch-native: 1.6.7 19534 19369 node-mock-http: 1.0.4 19370 + nypm: 0.6.5 19535 19371 ofetch: 1.5.1 19536 19372 pathe: 2.0.3 19537 - perfect-debounce: 2.0.0 19373 + perfect-debounce: 2.1.0 19538 19374 radix3: 1.1.2 19539 19375 scule: 1.3.0 19540 19376 std-env: 3.10.0 19541 19377 tinyexec: 1.0.2 19542 - ufo: 1.6.1 19543 - unplugin: 2.3.11 19544 - vitest-environment-nuxt: 1.0.1(@vue/test-utils@2.4.6)(jsdom@28.0.0)(magicast@0.3.5)(typescript@5.9.3)(vitest@3.2.4(@types/debug@4.1.12)(@types/node@25.2.1)(jiti@2.6.1)(jsdom@28.0.0)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) 19545 - vue: 3.5.25(typescript@5.9.3) 19378 + ufo: 1.6.3 19379 + unplugin: 3.0.0 19380 + vitest-environment-nuxt: 1.0.1(@vue/test-utils@2.4.6)(jsdom@28.0.0)(magicast@0.3.5)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.18(@types/node@25.2.1)(jiti@2.6.1)(jsdom@28.0.0)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) 19381 + vue: 3.5.27(typescript@5.9.3) 19546 19382 optionalDependencies: 19547 19383 '@vue/test-utils': 2.4.6 19548 19384 jsdom: 28.0.0 19549 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@25.2.1)(jiti@2.6.1)(jsdom@28.0.0)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) 19385 + vitest: 4.0.18(@types/node@25.2.1)(jiti@2.6.1)(jsdom@28.0.0)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) 19550 19386 transitivePeerDependencies: 19387 + - crossws 19551 19388 - magicast 19552 19389 - typescript 19390 + - vite 19553 19391 19554 19392 '@nuxt/vite-builder@3.14.1592(@types/node@25.2.1)(eslint@9.39.1(jiti@2.6.1))(less@4.4.2)(magicast@0.3.5)(optionator@0.9.4)(rolldown@1.0.0-beta.57)(rollup@4.56.0)(sass@1.97.1)(terser@5.44.1)(typescript@5.9.3)(vue-tsc@3.2.4(typescript@5.9.3))(vue@3.5.25(typescript@5.9.3))': 19555 19393 dependencies: ··· 22140 21978 tinyrainbow: 3.0.3 22141 21979 vitest: 4.0.18(@types/node@24.10.10)(jiti@2.6.1)(jsdom@28.0.0)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) 22142 21980 22143 - '@vitest/expect@3.2.4': 22144 - dependencies: 22145 - '@types/chai': 5.2.2 22146 - '@vitest/spy': 3.2.4 22147 - '@vitest/utils': 3.2.4 22148 - chai: 5.3.3 22149 - tinyrainbow: 2.0.0 22150 - optional: true 22151 - 22152 21981 '@vitest/expect@4.0.18': 22153 21982 dependencies: 22154 21983 '@standard-schema/spec': 1.1.0 ··· 22158 21987 chai: 6.2.2 22159 21988 tinyrainbow: 3.0.3 22160 21989 22161 - '@vitest/mocker@3.2.4(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': 22162 - dependencies: 22163 - '@vitest/spy': 3.2.4 22164 - estree-walker: 3.0.3 22165 - magic-string: 0.30.21 22166 - optionalDependencies: 22167 - vite: 7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) 22168 - optional: true 22169 - 22170 21990 '@vitest/mocker@4.0.18(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': 22171 21991 dependencies: 22172 21992 '@vitest/spy': 4.0.18 ··· 22183 22003 optionalDependencies: 22184 22004 vite: 7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) 22185 22005 22186 - '@vitest/pretty-format@3.2.4': 22187 - dependencies: 22188 - tinyrainbow: 2.0.0 22189 - optional: true 22190 - 22191 22006 '@vitest/pretty-format@4.0.18': 22192 22007 dependencies: 22193 22008 tinyrainbow: 3.0.3 22194 22009 22195 - '@vitest/runner@3.2.4': 22196 - dependencies: 22197 - '@vitest/utils': 3.2.4 22198 - pathe: 2.0.3 22199 - strip-literal: 3.1.0 22200 - optional: true 22201 - 22202 22010 '@vitest/runner@4.0.18': 22203 22011 dependencies: 22204 22012 '@vitest/utils': 4.0.18 22205 22013 pathe: 2.0.3 22206 - 22207 - '@vitest/snapshot@3.2.4': 22208 - dependencies: 22209 - '@vitest/pretty-format': 3.2.4 22210 - magic-string: 0.30.21 22211 - pathe: 2.0.3 22212 - optional: true 22213 22014 22214 22015 '@vitest/snapshot@4.0.18': 22215 22016 dependencies: ··· 22217 22018 magic-string: 0.30.21 22218 22019 pathe: 2.0.3 22219 22020 22220 - '@vitest/spy@3.2.4': 22221 - dependencies: 22222 - tinyspy: 4.0.3 22223 - optional: true 22224 - 22225 22021 '@vitest/spy@4.0.18': {} 22226 - 22227 - '@vitest/utils@3.2.4': 22228 - dependencies: 22229 - '@vitest/pretty-format': 3.2.4 22230 - loupe: 3.2.1 22231 - tinyrainbow: 2.0.0 22232 - optional: true 22233 22022 22234 22023 '@vitest/utils@4.0.18': 22235 22024 dependencies: ··· 23072 22861 get-intrinsic: 1.3.0 23073 22862 is-array-buffer: 3.0.5 23074 22863 23075 - assertion-error@2.0.1: 23076 - optional: true 23077 - 23078 22864 ast-kit@1.4.3: 23079 22865 dependencies: 23080 22866 '@babel/parser': 7.29.0 ··· 23375 23161 optionalDependencies: 23376 23162 magicast: 0.3.5 23377 23163 23378 - c12@2.0.1(magicast@0.5.2): 23379 - dependencies: 23380 - chokidar: 4.0.3 23381 - confbox: 0.1.8 23382 - defu: 6.1.4 23383 - dotenv: 16.6.1 23384 - giget: 1.2.5 23385 - jiti: 2.6.1 23386 - mlly: 1.8.0 23387 - ohash: 1.1.6 23388 - pathe: 1.1.2 23389 - perfect-debounce: 1.0.0 23390 - pkg-types: 1.3.1 23391 - rc9: 2.1.2 23392 - optionalDependencies: 23393 - magicast: 0.5.2 23394 - 23395 23164 c12@3.3.3(magicast@0.3.5): 23396 23165 dependencies: 23397 23166 chokidar: 5.0.0 ··· 23478 23247 23479 23248 ccount@2.0.1: {} 23480 23249 23481 - chai@5.3.3: 23482 - dependencies: 23483 - assertion-error: 2.0.1 23484 - check-error: 2.1.1 23485 - deep-eql: 5.0.2 23486 - loupe: 3.2.1 23487 - pathval: 2.0.1 23488 - optional: true 23489 - 23490 23250 chai@6.2.2: {} 23491 23251 23492 23252 chalk@4.1.2: ··· 23505 23265 character-entities@2.0.2: {} 23506 23266 23507 23267 chardet@2.1.1: {} 23508 - 23509 - check-error@2.1.1: 23510 - optional: true 23511 23268 23512 23269 chokidar@3.6.0: 23513 23270 dependencies: ··· 24045 23802 decode-named-character-reference@1.2.0: 24046 23803 dependencies: 24047 23804 character-entities: 2.0.2 24048 - 24049 - deep-eql@5.0.2: 24050 - optional: true 24051 23805 24052 23806 deep-is@0.1.4: {} 24053 23807 ··· 25746 25500 ufo: 1.6.3 25747 25501 uncrypto: 0.1.3 25748 25502 25503 + h3@2.0.1-rc.11: 25504 + dependencies: 25505 + rou3: 0.7.12 25506 + srvx: 0.10.1 25507 + 25749 25508 handle-thing@2.0.1: {} 25750 25509 25751 25510 has-bigints@1.1.0: {} ··· 26350 26109 supports-color: 8.1.1 26351 26110 26352 26111 jiti@1.21.7: {} 26353 - 26354 - jiti@2.5.1: {} 26355 26112 26356 26113 jiti@2.6.1: {} 26357 26114 ··· 26543 26300 26544 26301 klona@2.0.6: {} 26545 26302 26546 - knitwork@1.2.0: {} 26547 - 26548 26303 knitwork@1.3.0: {} 26549 26304 26550 26305 known-css-properties@0.30.0: {} ··· 26779 26534 loose-envify@1.4.0: 26780 26535 dependencies: 26781 26536 js-tokens: 4.0.0 26782 - 26783 - loupe@3.2.1: 26784 - optional: true 26785 26537 26786 26538 lru-cache@10.4.3: {} 26787 26539 ··· 28274 28026 pathe: 1.1.2 28275 28027 pkg-types: 1.3.1 28276 28028 tinyexec: 0.3.2 28277 - ufo: 1.6.1 28029 + ufo: 1.6.3 28278 28030 28279 28031 nypm@0.5.4: 28280 28032 dependencies: ··· 28283 28035 pathe: 2.0.3 28284 28036 pkg-types: 1.3.1 28285 28037 tinyexec: 0.3.2 28286 - ufo: 1.6.1 28038 + ufo: 1.6.3 28287 28039 28288 28040 nypm@0.6.1: 28289 28041 dependencies: ··· 28744 28496 28745 28497 pathe@2.0.3: {} 28746 28498 28747 - pathval@2.0.1: 28748 - optional: true 28749 - 28750 28499 pend@1.2.0: {} 28751 28500 28752 28501 perfect-debounce@1.0.0: {} 28753 28502 28754 28503 perfect-debounce@2.0.0: {} 28504 + 28505 + perfect-debounce@2.1.0: {} 28755 28506 28756 28507 picocolors@1.1.1: {} 28757 28508 ··· 29275 29026 unpipe: 1.0.0 29276 29027 29277 29028 rc9@2.1.2: 29029 + dependencies: 29030 + defu: 6.1.4 29031 + destr: 2.0.5 29032 + 29033 + rc9@3.0.0: 29278 29034 dependencies: 29279 29035 defu: 6.1.4 29280 29036 destr: 2.0.5 ··· 29811 29567 29812 29568 semver@7.7.3: {} 29813 29569 29570 + semver@7.7.4: {} 29571 + 29814 29572 send@0.19.0: 29815 29573 dependencies: 29816 29574 debug: 2.6.9 ··· 30728 30486 fdir: 6.5.0(picomatch@4.0.3) 30729 30487 picomatch: 4.0.3 30730 30488 30731 - tinypool@1.1.1: 30732 - optional: true 30733 - 30734 30489 tinypool@2.0.0: {} 30735 30490 30736 30491 tinypool@2.1.0: {} 30737 30492 30738 - tinyrainbow@2.0.0: 30739 - optional: true 30740 - 30741 30493 tinyrainbow@3.0.3: {} 30742 - 30743 - tinyspy@4.0.3: 30744 - optional: true 30745 30494 30746 30495 tldts-core@7.0.22: {} 30747 30496 ··· 31120 30869 exsolve: 1.0.8 31121 30870 ohash: 2.0.11 31122 30871 pathe: 2.0.3 31123 - ufo: 1.6.1 30872 + ufo: 1.6.3 31124 30873 31125 30874 unenv@2.0.0-rc.24: 31126 30875 dependencies: ··· 31204 30953 transitivePeerDependencies: 31205 30954 - rollup 31206 30955 31207 - unimport@4.2.0: 31208 - dependencies: 31209 - acorn: 8.15.0 31210 - escape-string-regexp: 5.0.0 31211 - estree-walker: 3.0.3 31212 - local-pkg: 1.1.2 31213 - magic-string: 0.30.21 31214 - mlly: 1.8.0 31215 - pathe: 2.0.3 31216 - picomatch: 4.0.3 31217 - pkg-types: 2.3.0 31218 - scule: 1.3.0 31219 - strip-literal: 3.0.0 31220 - tinyglobby: 0.2.15 31221 - unplugin: 2.3.11 31222 - unplugin-utils: 0.2.5 31223 - 31224 30956 unimport@5.2.0: 31225 30957 dependencies: 31226 30958 acorn: 8.15.0 ··· 31422 31154 dependencies: 31423 31155 '@jridgewell/remapping': 2.3.5 31424 31156 acorn: 8.15.0 31157 + picomatch: 4.0.3 31158 + webpack-virtual-modules: 0.6.2 31159 + 31160 + unplugin@3.0.0: 31161 + dependencies: 31162 + '@jridgewell/remapping': 2.3.5 31425 31163 picomatch: 4.0.3 31426 31164 webpack-virtual-modules: 0.6.2 31427 31165 ··· 31663 31401 - supports-color 31664 31402 - terser 31665 31403 31666 - vite-node@3.2.4(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): 31667 - dependencies: 31668 - cac: 6.7.14 31669 - debug: 4.4.3 31670 - es-module-lexer: 1.7.0 31671 - pathe: 2.0.3 31672 - vite: 7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) 31673 - transitivePeerDependencies: 31674 - - '@types/node' 31675 - - jiti 31676 - - less 31677 - - lightningcss 31678 - - sass 31679 - - sass-embedded 31680 - - stylus 31681 - - sugarss 31682 - - supports-color 31683 - - terser 31684 - - tsx 31685 - - yaml 31686 - optional: true 31687 - 31688 31404 vite-node@5.3.0(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): 31689 31405 dependencies: 31690 31406 cac: 6.7.14 ··· 31768 31484 typescript: 5.9.3 31769 31485 vue-tsc: 3.2.4(typescript@5.9.3) 31770 31486 31771 - vite-plugin-inspect@0.8.9(@nuxt/kit@3.15.4(magicast@0.3.5))(rollup@3.29.5)(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)): 31487 + vite-plugin-inspect@0.8.9(@nuxt/kit@3.21.0(magicast@0.3.5))(rollup@3.29.5)(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)): 31772 31488 dependencies: 31773 31489 '@antfu/utils': 0.7.10 31774 31490 '@rollup/pluginutils': 5.2.0(rollup@3.29.5) ··· 31781 31497 sirv: 3.0.2 31782 31498 vite: 7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) 31783 31499 optionalDependencies: 31784 - '@nuxt/kit': 3.15.4(magicast@0.3.5) 31500 + '@nuxt/kit': 3.21.0(magicast@0.3.5) 31785 31501 transitivePeerDependencies: 31786 31502 - rollup 31787 31503 - supports-color 31788 31504 31789 - vite-plugin-inspect@0.8.9(@nuxt/kit@3.15.4(magicast@0.3.5))(rollup@4.56.0)(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)): 31505 + vite-plugin-inspect@0.8.9(@nuxt/kit@3.21.0(magicast@0.3.5))(rollup@4.56.0)(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)): 31790 31506 dependencies: 31791 31507 '@antfu/utils': 0.7.10 31792 31508 '@rollup/pluginutils': 5.2.0(rollup@4.56.0) ··· 31799 31515 sirv: 3.0.2 31800 31516 vite: 7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) 31801 31517 optionalDependencies: 31802 - '@nuxt/kit': 3.15.4(magicast@0.3.5) 31518 + '@nuxt/kit': 3.21.0(magicast@0.3.5) 31803 31519 transitivePeerDependencies: 31804 31520 - rollup 31805 31521 - supports-color 31806 31522 31807 - vite-plugin-inspect@11.3.3(@nuxt/kit@4.3.0(magicast@0.5.2))(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)): 31523 + vite-plugin-inspect@11.3.3(@nuxt/kit@4.3.1(magicast@0.5.2))(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)): 31808 31524 dependencies: 31809 31525 ansis: 4.1.0 31810 31526 debug: 4.4.3 ··· 31817 31533 vite: 7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) 31818 31534 vite-dev-rpc: 1.1.0(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) 31819 31535 optionalDependencies: 31820 - '@nuxt/kit': 4.3.0(magicast@0.5.2) 31536 + '@nuxt/kit': 4.3.1(magicast@0.5.2) 31821 31537 transitivePeerDependencies: 31822 31538 - supports-color 31823 31539 ··· 32047 31763 - universal-cookie 32048 31764 - yaml 32049 31765 32050 - vitest-environment-nuxt@1.0.1(@vue/test-utils@2.4.6)(jsdom@28.0.0)(magicast@0.3.5)(typescript@5.9.3)(vitest@3.2.4(@types/debug@4.1.12)(@types/node@25.2.1)(jiti@2.6.1)(jsdom@28.0.0)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)): 31766 + vitest-environment-nuxt@1.0.1(@vue/test-utils@2.4.6)(jsdom@28.0.0)(magicast@0.3.5)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.18(@types/node@25.2.1)(jiti@2.6.1)(jsdom@28.0.0)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)): 32051 31767 dependencies: 32052 - '@nuxt/test-utils': 3.21.0(@vue/test-utils@2.4.6)(jsdom@28.0.0)(magicast@0.3.5)(typescript@5.9.3)(vitest@3.2.4(@types/debug@4.1.12)(@types/node@25.2.1)(jiti@2.6.1)(jsdom@28.0.0)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) 31768 + '@nuxt/test-utils': 4.0.0(@vue/test-utils@2.4.6)(jsdom@28.0.0)(magicast@0.3.5)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.18(@types/node@25.2.1)(jiti@2.6.1)(jsdom@28.0.0)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) 32053 31769 transitivePeerDependencies: 32054 31770 - '@cucumber/cucumber' 32055 31771 - '@jest/globals' ··· 32057 31773 - '@testing-library/vue' 32058 31774 - '@vitest/ui' 32059 31775 - '@vue/test-utils' 31776 + - crossws 32060 31777 - happy-dom 32061 31778 - jsdom 32062 31779 - magicast 32063 31780 - playwright-core 32064 31781 - typescript 31782 + - vite 32065 31783 - vitest 32066 - 32067 - vitest@3.2.4(@types/debug@4.1.12)(@types/node@25.2.1)(jiti@2.6.1)(jsdom@28.0.0)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): 32068 - dependencies: 32069 - '@types/chai': 5.2.2 32070 - '@vitest/expect': 3.2.4 32071 - '@vitest/mocker': 3.2.4(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) 32072 - '@vitest/pretty-format': 3.2.4 32073 - '@vitest/runner': 3.2.4 32074 - '@vitest/snapshot': 3.2.4 32075 - '@vitest/spy': 3.2.4 32076 - '@vitest/utils': 3.2.4 32077 - chai: 5.3.3 32078 - debug: 4.4.3 32079 - expect-type: 1.2.2 32080 - magic-string: 0.30.21 32081 - pathe: 2.0.3 32082 - picomatch: 4.0.3 32083 - std-env: 3.10.0 32084 - tinybench: 2.9.0 32085 - tinyexec: 0.3.2 32086 - tinyglobby: 0.2.15 32087 - tinypool: 1.1.1 32088 - tinyrainbow: 2.0.0 32089 - vite: 7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) 32090 - vite-node: 3.2.4(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) 32091 - why-is-node-running: 2.3.0 32092 - optionalDependencies: 32093 - '@types/debug': 4.1.12 32094 - '@types/node': 25.2.1 32095 - jsdom: 28.0.0 32096 - transitivePeerDependencies: 32097 - - jiti 32098 - - less 32099 - - lightningcss 32100 - - msw 32101 - - sass 32102 - - sass-embedded 32103 - - stylus 32104 - - sugarss 32105 - - supports-color 32106 - - terser 32107 - - tsx 32108 - - yaml 32109 - optional: true 32110 31784 32111 31785 vitest@4.0.18(@types/node@24.10.10)(jiti@2.6.1)(jsdom@28.0.0)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): 32112 31786 dependencies:
+10 -11
turbo.json
··· 1 1 { 2 2 "$schema": "./node_modules/turbo/schema.json", 3 - "concurrency": "100%", 4 3 "tasks": { 5 4 "build": { 6 5 "dependsOn": ["^build"], ··· 22 21 "dependsOn": ["^build"], 23 22 "inputs": ["src/**", "test/**", "*.config.*", "package.json"] 24 23 }, 25 - "test": { 24 + "//#test": { 26 25 "cache": true, 27 - "dependsOn": ["^build"], 28 - "inputs": ["src/**", "test/**", "*.config.*", "package.json"], 26 + "dependsOn": ["build"], 27 + "inputs": ["src/**", "test/**", "*.config.*", "package.json", "vitest.config.ts"], 29 28 "outputs": ["coverage/**"] 30 29 }, 31 - "test:coverage": { 32 - "dependsOn": ["^build"], 33 - "inputs": ["src/**", "test/**", "*.config.*", "package.json"], 30 + "//#test:coverage": { 31 + "dependsOn": ["build"], 32 + "inputs": ["src/**", "test/**", "*.config.*", "package.json", "vitest.config.ts"], 34 33 "outputs": ["coverage/**"] 35 34 }, 36 - "test:update": { 35 + "//#test:update": { 37 36 "cache": false, 38 - "dependsOn": ["^build"] 37 + "dependsOn": ["build"] 39 38 }, 40 - "test:watch": { 39 + "//#test:watch": { 41 40 "cache": false, 42 - "dependsOn": ["^build"], 41 + "dependsOn": ["build"], 43 42 "persistent": true 44 43 }, 45 44 "typecheck": {
+87
vitest.config.ts
··· 1 + import { platform } from 'node:os'; 2 + 3 + import { defineConfig } from 'vitest/config'; 4 + 5 + export default defineConfig({ 6 + test: { 7 + coverage: { 8 + exclude: ['bin', 'dist', 'src/**/*.d.ts'], 9 + include: ['src/**/*.ts', 'src/**/*.tsx', 'src/**/*.vue'], 10 + provider: 'v8', 11 + }, 12 + globals: true, 13 + pool: platform() === 'win32' ? 'threads' : 'forks', 14 + projects: [ 15 + 'examples/*/vitest.config.ts', 16 + { 17 + extends: true, 18 + test: { 19 + name: '@hey-api/codegen-core', 20 + root: 'packages/codegen-core', 21 + }, 22 + }, 23 + { 24 + extends: true, 25 + test: { 26 + name: '@hey-api/openapi-python', 27 + root: 'packages/openapi-python', 28 + }, 29 + }, 30 + { 31 + extends: true, 32 + test: { 33 + name: '@hey-api/openapi-ts', 34 + root: 'packages/openapi-ts', 35 + setupFiles: ['./vitest.setup.ts'], 36 + }, 37 + }, 38 + { 39 + extends: true, 40 + test: { 41 + name: '@hey-api/shared', 42 + root: 'packages/shared', 43 + }, 44 + }, 45 + { 46 + extends: true, 47 + test: { 48 + name: '@test/openapi-ts', 49 + root: 'packages/openapi-ts-tests/main', 50 + setupFiles: ['./vitest.setup.ts'], 51 + }, 52 + }, 53 + { 54 + extends: true, 55 + test: { 56 + name: '@test/openapi-ts-sdks', 57 + root: 'packages/openapi-ts-tests/sdks', 58 + setupFiles: ['./vitest.setup.ts'], 59 + }, 60 + }, 61 + { 62 + extends: true, 63 + test: { 64 + name: '@test/openapi-ts-zod-v3', 65 + root: 'packages/openapi-ts-tests/zod/v3', 66 + setupFiles: ['./vitest.setup.ts'], 67 + }, 68 + }, 69 + { 70 + extends: true, 71 + test: { 72 + name: '@test/openapi-ts-zod-v4', 73 + root: 'packages/openapi-ts-tests/zod/v4', 74 + setupFiles: ['./vitest.setup.ts'], 75 + }, 76 + }, 77 + { 78 + extends: true, 79 + test: { 80 + name: '@hey-api/custom-client', 81 + root: 'packages/custom-client', 82 + }, 83 + }, 84 + ], 85 + testTimeout: platform() === 'win32' ? 10000 : 5000, 86 + }, 87 + });