diff --git a/.changeset/widen-typescript-peer-dep.md b/.changeset/widen-typescript-peer-dep.md new file mode 100644 index 000000000..c80ff5916 --- /dev/null +++ b/.changeset/widen-typescript-peer-dep.md @@ -0,0 +1,9 @@ +--- +"openapi-typescript": patch +"openapi-typescript-helpers": patch +--- + +Add TypeScript 6 support. + +- `openapi-typescript`: widen the `typescript` peer dependency to `^5.x || ^6.x`. +- `openapi-typescript-helpers`: fix `Readable` and `Writable` so callable types (`Date`, `RegExp`, functions, and class instance methods) are preserved through the recursive mapped type. Without this, the mapped type recursed into method signatures and collapsed them to `{}` under `--strict`, breaking patterns like `Readable<{ createdAt: Date }>.createdAt.toISOString()`. Reproduces on both TS 5 and TS 6. diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 014c1f885..42817d8ae 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,14 +28,19 @@ jobs: strategy: matrix: node-version: [22, 24] + typescript-version: ["5", "6"] steps: - uses: actions/checkout@v6 - uses: actions/setup-node@v6 with: node-version: ${{ matrix.node-version }} - uses: pnpm/action-setup@v5 - with: - run_install: true + - name: Override catalog to TypeScript 5 (backward-compat check) + if: matrix.typescript-version == '5' + run: | + sed -i 's/^ typescript: \^6\..*/ typescript: ^5.9.3/' pnpm-workspace.yaml + grep '^ typescript:' pnpm-workspace.yaml + - run: pnpm install --no-frozen-lockfile - run: pnpm test test-e2e: runs-on: ubuntu-latest diff --git a/packages/openapi-fetch/test/helpers.ts b/packages/openapi-fetch/test/helpers.ts index bece1b17a..a58ea57ad 100644 --- a/packages/openapi-fetch/test/helpers.ts +++ b/packages/openapi-fetch/test/helpers.ts @@ -27,14 +27,12 @@ export function createObservedClient): Record { - const iter = - headers instanceof Headers - ? headers - // @ts-expect-error FIXME: this is a missing "lib" in tsconfig.json but dunno what - .entries() - : Object.entries(headers); + // Headers is iterable at runtime in both TS 5 and TS 6, but the lib type only + // declares Iterable in TS 6's lib.dom. Double-cast bridges the gap. + const entries = + headers instanceof Headers ? Array.from(headers as unknown as Iterable<[string, string]>) : Object.entries(headers); const result: Record = {}; - for (const [k, v] of iter) { + for (const [k, v] of entries) { result[k] = v; } return result; diff --git a/packages/openapi-fetch/test/no-strict-null-checks/tsconfig.json b/packages/openapi-fetch/test/no-strict-null-checks/tsconfig.json index bd513a8ea..661f12fa5 100644 --- a/packages/openapi-fetch/test/no-strict-null-checks/tsconfig.json +++ b/packages/openapi-fetch/test/no-strict-null-checks/tsconfig.json @@ -1,6 +1,7 @@ { "extends": "../../tsconfig.json", "compilerOptions": { + "rootDir": "../..", "strictNullChecks": false }, "include": ["."], diff --git a/packages/openapi-fetch/tsconfig.json b/packages/openapi-fetch/tsconfig.json index e17318259..9d0e58a86 100644 --- a/packages/openapi-fetch/tsconfig.json +++ b/packages/openapi-fetch/tsconfig.json @@ -2,7 +2,6 @@ "compilerOptions": { "allowSyntheticDefaultImports": true, "declaration": true, - "downlevelIteration": false, "esModuleInterop": true, "lib": ["ESNext", "DOM"], "module": "NodeNext", diff --git a/packages/openapi-typescript-helpers/package.json b/packages/openapi-typescript-helpers/package.json index 13d34b53f..a672c9ad2 100644 --- a/packages/openapi-typescript-helpers/package.json +++ b/packages/openapi-typescript-helpers/package.json @@ -34,6 +34,6 @@ "lint:ts": "tsc --noEmit" }, "devDependencies": { - "typescript": "5.9.3" + "typescript": "catalog:" } } diff --git a/packages/openapi-typescript-helpers/src/index.ts b/packages/openapi-typescript-helpers/src/index.ts index 391e0a694..6900290f9 100644 --- a/packages/openapi-typescript-helpers/src/index.ts +++ b/packages/openapi-typescript-helpers/src/index.ts @@ -223,9 +223,11 @@ export type Readable = ? Readable : T extends (infer E)[] ? Readable[] - : T extends object - ? { [K in keyof T as NonNullable extends $Write ? never : K]: Readable } - : T; + : T extends (...args: never[]) => unknown + ? T + : T extends object + ? { [K in keyof T as NonNullable extends $Write ? never : K]: Readable } + : T; /** * Resolve type for writing (requests): strips $Read properties, unwraps $Write @@ -240,8 +242,10 @@ export type Writable = ? Writable : T extends (infer E)[] ? Writable[] - : T extends object - ? { [K in keyof T as NonNullable extends $Read ? never : K]: Writable } & { - [K in keyof T as NonNullable extends $Read ? K : never]?: never; - } - : T; + : T extends (...args: never[]) => unknown + ? T + : T extends object + ? { [K in keyof T as NonNullable extends $Read ? never : K]: Writable } & { + [K in keyof T as NonNullable extends $Read ? K : never]?: never; + } + : T; diff --git a/packages/openapi-typescript-helpers/test/readable-writable.test-d.ts b/packages/openapi-typescript-helpers/test/readable-writable.test-d.ts new file mode 100644 index 000000000..3ccb47645 --- /dev/null +++ b/packages/openapi-typescript-helpers/test/readable-writable.test-d.ts @@ -0,0 +1,62 @@ +/** + * Type-level tests for Readable / Writable built-in object passthrough. + * + * These are pure compile-time assertions checked by `tsc --noEmit`. If any + * assertion is wrong, the file fails to type-check. + */ + +import type { $Read, $Write, Readable, Writable } from "../src/index.js"; + +// Bidirectional structural assignability. Looser than the parametric `(() => …)` +// trick but enough for "the resulting shape preserves X" — mapped-type-produced +// objects are structurally identical to their literal twins but fail strict +// parametric equality. +type Equals = [A] extends [B] ? ([B] extends [A] ? true : false) : false; +type Expect = T; + +// --- Date passthrough --- + +type _ReadableDate = Expect, Date>>; +type _WritableDate = Expect, Date>>; + +// $Read unwraps to Date, not to a structurally-mapped Date prototype +type _ReadableReadDate = Expect>, Date>>; +type _WritableWriteDate = Expect>, Date>>; + +// Date inside an object field stays Date +type _ReadableObjectWithDate = Expect, { created: Date }>>; +type _WritableObjectWithDate = Expect, { created: Date }>>; + +// --- RegExp passthrough --- + +type _ReadableRegExp = Expect, RegExp>>; +type _WritableRegExp = Expect, RegExp>>; + +type _ReadableObjectWithRegExp = Expect, { pattern: RegExp }>>; + +// --- Function passthrough --- + +type Fn = (x: number) => string; + +type _ReadableFn = Expect, Fn>>; +type _WritableFn = Expect, Fn>>; + +type _ReadableObjectWithFn = Expect, { handler: Fn }>>; + +// --- Negative control: plain object still gets recursive treatment --- + +// Plain nested object's $Write marker is still stripped from Readable +type _ReadableStripsWrite = Expect< + Equals< + Readable<{ id: number; password: $Write }>, + { id: number } + > +>; + +// Plain nested object's $Read marker is still stripped from Writable +type _WritableStripsRead = Expect< + Equals< + Writable<{ id: $Read; name: string }>, + { name: string } & { id?: never } + > +>; diff --git a/packages/openapi-typescript-helpers/tsconfig.json b/packages/openapi-typescript-helpers/tsconfig.json index 48e008b72..a76880589 100644 --- a/packages/openapi-typescript-helpers/tsconfig.json +++ b/packages/openapi-typescript-helpers/tsconfig.json @@ -3,5 +3,5 @@ "compilerOptions": { "skipLibCheck": false }, - "include": ["src"] + "include": ["src", "test"] } diff --git a/packages/openapi-typescript/package.json b/packages/openapi-typescript/package.json index 2b322a039..5fbc38ea2 100644 --- a/packages/openapi-typescript/package.json +++ b/packages/openapi-typescript/package.json @@ -59,7 +59,7 @@ "version": "pnpm run build" }, "peerDependencies": { - "typescript": "^5.x" + "typescript": "^5.x || ^6.x" }, "dependencies": { "@redocly/openapi-core": "^1.34.6", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3d3b87bc5..e1d5e1246 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,8 +10,8 @@ catalogs: specifier: ^9.6.1 version: 9.6.1 typescript: - specifier: ^5.9.3 - version: 5.9.3 + specifier: ^6.0.2 + version: 6.0.2 vite: specifier: ^7.3.1 version: 7.3.1 @@ -52,13 +52,13 @@ importers: version: 2.9.9 typescript: specifier: 'catalog:' - version: 5.9.3 + version: 6.0.2 unbuild: specifier: 3.6.1 - version: 3.6.1(typescript@5.9.3)(vue-tsc@2.2.12(typescript@5.9.3))(vue@3.5.27(typescript@5.9.3)) + version: 3.6.1(typescript@6.0.2)(vue-tsc@2.2.12(typescript@6.0.2))(vue@3.5.27(typescript@6.0.2)) vitest: specifier: 4.1.5 - version: 4.1.5(@types/node@25.6.0)(jsdom@20.0.3)(msw@2.14.3(@types/node@25.6.0)(typescript@5.9.3))(vite@7.3.1(@types/node@25.6.0)(jiti@2.6.1)(yaml@2.8.2)) + version: 4.1.5(@types/node@25.6.0)(jsdom@20.0.3)(msw@2.14.3(@types/node@25.6.0)(typescript@6.0.2))(vite@7.3.1(@types/node@25.6.0)(jiti@2.6.1)(yaml@2.8.2)) docs: devDependencies: @@ -67,7 +67,7 @@ importers: version: 7.3.1(@types/node@25.6.0)(jiti@2.6.1)(yaml@2.8.2) vitepress: specifier: 1.6.4 - version: 1.6.4(@algolia/client-search@5.48.0)(@types/node@25.6.0)(@types/react@18.3.28)(axios@1.16.0)(change-case@5.4.4)(postcss@8.5.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.13.0)(typescript@5.9.3) + version: 1.6.4(@algolia/client-search@5.48.0)(@types/node@25.6.0)(@types/react@18.3.28)(axios@1.16.0)(change-case@5.4.4)(postcss@8.5.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.13.0)(typescript@6.0.2) packages/openapi-fetch: dependencies: @@ -86,7 +86,7 @@ importers: version: 5.2.1 feature-fetch: specifier: 0.0.55 - version: 0.0.55(graphql@16.13.2) + version: 0.0.55(graphql@16.14.0) node-forge: specifier: 1.4.0 version: 1.4.0 @@ -104,7 +104,7 @@ importers: version: 10.3.0 typescript: specifier: 'catalog:' - version: 5.9.3 + version: 6.0.2 undici: specifier: 7.25.0 version: 7.25.0 @@ -138,16 +138,16 @@ importers: version: link:../../../openapi-typescript typescript: specifier: 'catalog:' - version: 5.9.3 + version: 6.0.2 packages/openapi-fetch/examples/sveltekit: devDependencies: '@sveltejs/adapter-auto': specifier: ^6.1.1 - version: 6.1.1(@sveltejs/kit@2.52.2(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.53.5)(vite@7.3.1(@types/node@25.6.0)(jiti@2.6.1)(yaml@2.8.2)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@25.6.0)(jiti@2.6.1)(yaml@2.8.2))) + version: 6.1.1(@sveltejs/kit@2.52.2(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.53.5)(vite@7.3.1(@types/node@25.6.0)(jiti@2.6.1)(yaml@2.8.2)))(svelte@5.53.5)(typescript@6.0.2)(vite@7.3.1(@types/node@25.6.0)(jiti@2.6.1)(yaml@2.8.2))) '@sveltejs/kit': specifier: ^2.52.2 - version: 2.52.2(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.53.5)(vite@7.3.1(@types/node@25.6.0)(jiti@2.6.1)(yaml@2.8.2)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@25.6.0)(jiti@2.6.1)(yaml@2.8.2)) + version: 2.52.2(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.53.5)(vite@7.3.1(@types/node@25.6.0)(jiti@2.6.1)(yaml@2.8.2)))(svelte@5.53.5)(typescript@6.0.2)(vite@7.3.1(@types/node@25.6.0)(jiti@2.6.1)(yaml@2.8.2)) '@sveltejs/vite-plugin-svelte': specifier: ^5.1.1 version: 5.1.1(svelte@5.53.5)(vite@7.3.1(@types/node@25.6.0)(jiti@2.6.1)(yaml@2.8.2)) @@ -162,10 +162,10 @@ importers: version: 5.53.5 svelte-check: specifier: ^4.3.6 - version: 4.3.6(picomatch@4.0.4)(svelte@5.53.5)(typescript@5.9.3) + version: 4.3.6(picomatch@4.0.4)(svelte@5.53.5)(typescript@6.0.2) typescript: specifier: 'catalog:' - version: 5.9.3 + version: 6.0.2 vite: specifier: 'catalog:' version: 7.3.1(@types/node@25.6.0)(jiti@2.6.1)(yaml@2.8.2) @@ -177,14 +177,14 @@ importers: version: link:../.. vue: specifier: ^3.5.27 - version: 3.5.27(typescript@5.9.3) + version: 3.5.27(typescript@6.0.2) devDependencies: '@tsconfig/node20': specifier: ^20.1.9 version: 20.1.9 '@vitejs/plugin-vue': specifier: ^5.2.4 - version: 5.2.4(vite@7.3.1(@types/node@25.6.0)(jiti@2.6.1)(yaml@2.8.2))(vue@3.5.27(typescript@5.9.3)) + version: 5.2.4(vite@7.3.1(@types/node@25.6.0)(jiti@2.6.1)(yaml@2.8.2))(vue@3.5.27(typescript@6.0.2)) '@vue/tsconfig': specifier: ^0.5.1 version: 0.5.1 @@ -193,13 +193,13 @@ importers: version: link:../../../openapi-typescript typescript: specifier: 'catalog:' - version: 5.9.3 + version: 6.0.2 vite: specifier: 'catalog:' version: 7.3.1(@types/node@25.6.0)(jiti@2.6.1)(yaml@2.8.2) vue-tsc: specifier: ^2.2.12 - version: 2.2.12(typescript@5.9.3) + version: 2.2.12(typescript@6.0.2) packages/openapi-react-query: dependencies: @@ -224,7 +224,7 @@ importers: version: 9.6.1 msw: specifier: 2.14.3 - version: 2.14.3(@types/node@25.6.0)(typescript@5.9.3) + version: 2.14.3(@types/node@25.6.0)(typescript@6.0.2) openapi-fetch: specifier: workspace:^ version: link:../openapi-fetch @@ -279,7 +279,7 @@ importers: version: 7.2.0 typescript: specifier: 'catalog:' - version: 5.9.3 + version: 6.0.2 vite-node: specifier: 5.3.0 version: 5.3.0(@types/node@25.6.0)(jiti@2.6.1)(yaml@2.8.2) @@ -287,8 +287,8 @@ importers: packages/openapi-typescript-helpers: devDependencies: typescript: - specifier: 5.9.3 - version: 5.9.3 + specifier: 'catalog:' + version: 6.0.2 packages: @@ -1407,8 +1407,8 @@ packages: resolution: {integrity: sha512-doc2sWgJpbFQ64UflSVd17ibMGDuxO1yKgOgLMwavzESnXjFWJqUeG8saYosqKpHp4kWiM5x1nXvEjbpx90gzw==} engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} - '@inquirer/confirm@6.0.11': - resolution: {integrity: sha512-pTpHjg0iEIRMYV/7oCZUMf27/383E6Wyhfc/MY+AVQGEoUobffIYWOK9YLP2XFRGz/9i6WlTQh1CkFVIo2Y7XA==} + '@inquirer/confirm@6.0.13': + resolution: {integrity: sha512-wkGPC7yJ5WJk1DJ5SX7fzk+gfj4BM8cf5dDDi71B/551xHrdsZVRJOC0WyikXd0pEsb/9cLniuE4atbsMqmFkw==} engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} peerDependencies: '@types/node': '>=18' @@ -1416,8 +1416,8 @@ packages: '@types/node': optional: true - '@inquirer/core@11.1.8': - resolution: {integrity: sha512-/u+yJk2pOKNDOh1ZgdUH2RQaRx6OOH4I0uwL95qPvTFTIL38YBsuSC4r1yXBB3Q6JvNqFFc202gk0Ew79rrcjA==} + '@inquirer/core@11.1.10': + resolution: {integrity: sha512-a4Q5BXHQAHa9eO202sTaFCHFYVB3x5fauDuThEAdZ9gfn76pSxiKU7wWcEH0N1O0XmQvNfQNU6QXpiRxmYQx+A==} engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} peerDependencies: '@types/node': '>=18' @@ -1472,8 +1472,8 @@ packages: '@manypkg/get-packages@1.1.3': resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} - '@mswjs/interceptors@0.41.3': - resolution: {integrity: sha512-cXu86tF4VQVfwz8W1SPbhoRyHJkti6mjH/XJIxp40jhO4j2k1m4KYrEykxqWPkFF3vrK4rgQppBh//AwyGSXPA==} + '@mswjs/interceptors@0.41.9': + resolution: {integrity: sha512-VVPPgHyQ6ShqnrmDWuxjmUIsO9gWyOZFmuOfLd9LfBGQJwZfy0gvv9pbHSJuoFNIYC7ZDX9aoFwowjcdSC4E8w==} engines: {node: '>=18'} '@next/env@15.5.12': @@ -2816,8 +2816,8 @@ packages: fast-uri@3.1.0: resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} - fast-wrap-ansi@0.2.0: - resolution: {integrity: sha512-rLV8JHxTyhVmFYhBJuMujcrHqOT2cnO5Zxj37qROj23CP39GXubJRBUFF0z8KFK77Uc0SukZUf7JZhsVEQ6n8w==} + fast-wrap-ansi@0.2.2: + resolution: {integrity: sha512-7F2Fl+TjRSenLqlU3UjSH0iyqopqoZIu7eZVpEirP2g1GtWa2G/ecEmBdgz31+Mxr+ELclgg6sokpSFIQiZ02Q==} fastq@1.20.1: resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} @@ -2947,8 +2947,8 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - graphql@16.13.2: - resolution: {integrity: sha512-5bJ+nf/UCpAjHM8i06fl7eLyVC9iuNAjm9qzkiu2ZGhM0VscSvS6WDPfAwkdkBuoXGM9FJSbKl6wylMwP9Ktig==} + graphql@16.14.0: + resolution: {integrity: sha512-BBvQ/406p+4CZbTpCbVPSxfzrZrbnuWSP1ELYgyS6B+hNeKzgrdB4JczCa5VZUBQrDa9hUngm0KnexY6pJRN5Q==} engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} handlebars@4.7.8: @@ -4236,8 +4236,8 @@ packages: resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} engines: {node: '>=16'} - type-fest@5.5.0: - resolution: {integrity: sha512-PlBfpQwiUvGViBNX84Yxwjsdhd1TUlXr6zjX7eoirtCPIr08NAmxwa+fcYBTeRQxHo9YC9wwF3m9i700sHma8g==} + type-fest@5.6.0: + resolution: {integrity: sha512-8ZiHFm91orbSAe2PSAiSVBVko18pbhbiB3U9GglSzF/zCGkR+rxpHx6sEMCUm4kxY4LjDIUGgCfUMtwfZfjfUA==} engines: {node: '>=20'} type-is@2.0.1: @@ -4249,8 +4249,8 @@ packages: engines: {node: '>=14.17'} hasBin: true - typescript@5.9.3: - resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + typescript@6.0.2: + resolution: {integrity: sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ==} engines: {node: '>=14.17'} hasBin: true @@ -4613,9 +4613,9 @@ packages: snapshots: - '@0no-co/graphql.web@1.2.0(graphql@16.13.2)': + '@0no-co/graphql.web@1.2.0(graphql@16.14.0)': optionalDependencies: - graphql: 16.13.2 + graphql: 16.14.0 '@algolia/abtesting@1.14.0': dependencies: @@ -5513,20 +5513,20 @@ snapshots: '@inquirer/ansi@2.0.5': {} - '@inquirer/confirm@6.0.11(@types/node@25.6.0)': + '@inquirer/confirm@6.0.13(@types/node@25.6.0)': dependencies: - '@inquirer/core': 11.1.8(@types/node@25.6.0) + '@inquirer/core': 11.1.10(@types/node@25.6.0) '@inquirer/type': 4.0.5(@types/node@25.6.0) optionalDependencies: '@types/node': 25.6.0 - '@inquirer/core@11.1.8(@types/node@25.6.0)': + '@inquirer/core@11.1.10(@types/node@25.6.0)': dependencies: '@inquirer/ansi': 2.0.5 '@inquirer/figures': 2.0.5 '@inquirer/type': 4.0.5(@types/node@25.6.0) cli-width: 4.1.0 - fast-wrap-ansi: 0.2.0 + fast-wrap-ansi: 0.2.2 mute-stream: 3.0.0 signal-exit: 4.1.0 optionalDependencies: @@ -5584,7 +5584,7 @@ snapshots: globby: 11.1.0 read-yaml-file: 1.1.0 - '@mswjs/interceptors@0.41.3': + '@mswjs/interceptors@0.41.9': dependencies: '@open-draft/deferred-promise': 2.2.0 '@open-draft/logger': 0.3.0 @@ -5688,10 +5688,10 @@ snapshots: '@rollup/pluginutils': 5.3.0(rollup@4.57.1) commondir: 1.0.1 estree-walker: 2.0.2 - fdir: 6.5.0(picomatch@4.0.4) + fdir: 6.5.0(picomatch@4.0.3) is-reference: 1.2.1 magic-string: 0.30.21 - picomatch: 4.0.4 + picomatch: 4.0.3 optionalDependencies: rollup: 4.57.1 @@ -5722,7 +5722,7 @@ snapshots: dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 - picomatch: 4.0.4 + picomatch: 4.0.3 optionalDependencies: rollup: 4.57.1 @@ -5869,11 +5869,11 @@ snapshots: dependencies: acorn: 8.16.0 - '@sveltejs/adapter-auto@6.1.1(@sveltejs/kit@2.52.2(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.53.5)(vite@7.3.1(@types/node@25.6.0)(jiti@2.6.1)(yaml@2.8.2)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@25.6.0)(jiti@2.6.1)(yaml@2.8.2)))': + '@sveltejs/adapter-auto@6.1.1(@sveltejs/kit@2.52.2(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.53.5)(vite@7.3.1(@types/node@25.6.0)(jiti@2.6.1)(yaml@2.8.2)))(svelte@5.53.5)(typescript@6.0.2)(vite@7.3.1(@types/node@25.6.0)(jiti@2.6.1)(yaml@2.8.2)))': dependencies: - '@sveltejs/kit': 2.52.2(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.53.5)(vite@7.3.1(@types/node@25.6.0)(jiti@2.6.1)(yaml@2.8.2)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@25.6.0)(jiti@2.6.1)(yaml@2.8.2)) + '@sveltejs/kit': 2.52.2(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.53.5)(vite@7.3.1(@types/node@25.6.0)(jiti@2.6.1)(yaml@2.8.2)))(svelte@5.53.5)(typescript@6.0.2)(vite@7.3.1(@types/node@25.6.0)(jiti@2.6.1)(yaml@2.8.2)) - '@sveltejs/kit@2.52.2(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.53.5)(vite@7.3.1(@types/node@25.6.0)(jiti@2.6.1)(yaml@2.8.2)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@25.6.0)(jiti@2.6.1)(yaml@2.8.2))': + '@sveltejs/kit@2.52.2(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.53.5)(vite@7.3.1(@types/node@25.6.0)(jiti@2.6.1)(yaml@2.8.2)))(svelte@5.53.5)(typescript@6.0.2)(vite@7.3.1(@types/node@25.6.0)(jiti@2.6.1)(yaml@2.8.2))': dependencies: '@standard-schema/spec': 1.1.0 '@sveltejs/acorn-typescript': 1.0.9(acorn@8.16.0) @@ -5891,7 +5891,7 @@ snapshots: svelte: 5.53.5 vite: 7.3.1(@types/node@25.6.0)(jiti@2.6.1)(yaml@2.8.2) optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.53.5)(vite@7.3.1(@types/node@25.6.0)(jiti@2.6.1)(yaml@2.8.2)))(svelte@5.53.5)(vite@7.3.1(@types/node@25.6.0)(jiti@2.6.1)(yaml@2.8.2))': dependencies: @@ -6082,15 +6082,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@5.2.4(vite@5.4.21(@types/node@25.6.0))(vue@3.5.27(typescript@5.9.3))': + '@vitejs/plugin-vue@5.2.4(vite@5.4.21(@types/node@25.6.0))(vue@3.5.27(typescript@6.0.2))': dependencies: vite: 5.4.21(@types/node@25.6.0) - vue: 3.5.27(typescript@5.9.3) + vue: 3.5.27(typescript@6.0.2) - '@vitejs/plugin-vue@5.2.4(vite@7.3.1(@types/node@25.6.0)(jiti@2.6.1)(yaml@2.8.2))(vue@3.5.27(typescript@5.9.3))': + '@vitejs/plugin-vue@5.2.4(vite@7.3.1(@types/node@25.6.0)(jiti@2.6.1)(yaml@2.8.2))(vue@3.5.27(typescript@6.0.2))': dependencies: vite: 7.3.1(@types/node@25.6.0)(jiti@2.6.1)(yaml@2.8.2) - vue: 3.5.27(typescript@5.9.3) + vue: 3.5.27(typescript@6.0.2) '@vitest/expect@4.1.5': dependencies: @@ -6101,13 +6101,13 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.1.0 - '@vitest/mocker@4.1.5(msw@2.14.3(@types/node@25.6.0)(typescript@5.9.3))(vite@7.3.1(@types/node@25.6.0)(jiti@2.6.1)(yaml@2.8.2))': + '@vitest/mocker@4.1.5(msw@2.14.3(@types/node@25.6.0)(typescript@6.0.2))(vite@7.3.1(@types/node@25.6.0)(jiti@2.6.1)(yaml@2.8.2))': dependencies: '@vitest/spy': 4.1.5 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - msw: 2.14.3(@types/node@25.6.0)(typescript@5.9.3) + msw: 2.14.3(@types/node@25.6.0)(typescript@6.0.2) vite: 7.3.1(@types/node@25.6.0)(jiti@2.6.1)(yaml@2.8.2) '@vitest/pretty-format@4.1.5': @@ -6199,7 +6199,7 @@ snapshots: dependencies: rfdc: 1.4.1 - '@vue/language-core@2.2.12(typescript@5.9.3)': + '@vue/language-core@2.2.12(typescript@6.0.2)': dependencies: '@volar/language-core': 2.4.15 '@vue/compiler-dom': 3.5.27 @@ -6210,7 +6210,7 @@ snapshots: muggle-string: 0.4.1 path-browserify: 1.0.1 optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 '@vue/reactivity@3.5.27': dependencies: @@ -6228,30 +6228,30 @@ snapshots: '@vue/shared': 3.5.27 csstype: 3.2.3 - '@vue/server-renderer@3.5.27(vue@3.5.27(typescript@5.9.3))': + '@vue/server-renderer@3.5.27(vue@3.5.27(typescript@6.0.2))': dependencies: '@vue/compiler-ssr': 3.5.27 '@vue/shared': 3.5.27 - vue: 3.5.27(typescript@5.9.3) + vue: 3.5.27(typescript@6.0.2) '@vue/shared@3.5.27': {} '@vue/tsconfig@0.5.1': {} - '@vueuse/core@12.8.2(typescript@5.9.3)': + '@vueuse/core@12.8.2(typescript@6.0.2)': dependencies: '@types/web-bluetooth': 0.0.21 '@vueuse/metadata': 12.8.2 - '@vueuse/shared': 12.8.2(typescript@5.9.3) - vue: 3.5.27(typescript@5.9.3) + '@vueuse/shared': 12.8.2(typescript@6.0.2) + vue: 3.5.27(typescript@6.0.2) transitivePeerDependencies: - typescript - '@vueuse/integrations@12.8.2(axios@1.16.0)(change-case@5.4.4)(focus-trap@7.8.0)(typescript@5.9.3)': + '@vueuse/integrations@12.8.2(axios@1.16.0)(change-case@5.4.4)(focus-trap@7.8.0)(typescript@6.0.2)': dependencies: - '@vueuse/core': 12.8.2(typescript@5.9.3) - '@vueuse/shared': 12.8.2(typescript@5.9.3) - vue: 3.5.27(typescript@5.9.3) + '@vueuse/core': 12.8.2(typescript@6.0.2) + '@vueuse/shared': 12.8.2(typescript@6.0.2) + vue: 3.5.27(typescript@6.0.2) optionalDependencies: axios: 1.16.0 change-case: 5.4.4 @@ -6261,9 +6261,9 @@ snapshots: '@vueuse/metadata@12.8.2': {} - '@vueuse/shared@12.8.2(typescript@5.9.3)': + '@vueuse/shared@12.8.2(typescript@6.0.2)': dependencies: - vue: 3.5.27(typescript@5.9.3) + vue: 3.5.27(typescript@6.0.2) transitivePeerDependencies: - typescript @@ -7001,7 +7001,7 @@ snapshots: fast-uri@3.1.0: {} - fast-wrap-ansi@0.2.0: + fast-wrap-ansi@0.2.2: dependencies: fast-string-width: 3.0.2 @@ -7017,9 +7017,9 @@ snapshots: optionalDependencies: picomatch: 4.0.4 - feature-fetch@0.0.55(graphql@16.13.2): + feature-fetch@0.0.55(graphql@16.14.0): dependencies: - '@0no-co/graphql.web': 1.2.0(graphql@16.13.2) + '@0no-co/graphql.web': 1.2.0(graphql@16.14.0) '@blgc/types': 0.0.22 '@blgc/utils': 0.0.62 tuple-result: 0.0.12 @@ -7154,7 +7154,7 @@ snapshots: graceful-fs@4.2.11: {} - graphql@16.13.2: {} + graphql@16.14.0: {} handlebars@4.7.8: dependencies: @@ -7505,7 +7505,7 @@ snapshots: mitt@3.0.1: {} - mkdist@2.4.1(typescript@5.9.3)(vue-tsc@2.2.12(typescript@5.9.3))(vue@3.5.27(typescript@5.9.3)): + mkdist@2.4.1(typescript@6.0.2)(vue-tsc@2.2.12(typescript@6.0.2))(vue@3.5.27(typescript@6.0.2)): dependencies: autoprefixer: 10.4.24(postcss@8.5.6) citty: 0.1.6 @@ -7519,11 +7519,11 @@ snapshots: postcss: 8.5.6 postcss-nested: 7.0.2(postcss@8.5.6) semver: 7.7.4 - tinyglobby: 0.2.16 + tinyglobby: 0.2.15 optionalDependencies: - typescript: 5.9.3 - vue: 3.5.27(typescript@5.9.3) - vue-tsc: 2.2.12(typescript@5.9.3) + typescript: 6.0.2 + vue: 3.5.27(typescript@6.0.2) + vue-tsc: 2.2.12(typescript@6.0.2) mlly@1.8.0: dependencies: @@ -7538,14 +7538,14 @@ snapshots: ms@2.1.3: {} - msw@2.14.3(@types/node@25.6.0)(typescript@5.9.3): + msw@2.14.3(@types/node@25.6.0)(typescript@6.0.2): dependencies: - '@inquirer/confirm': 6.0.11(@types/node@25.6.0) - '@mswjs/interceptors': 0.41.3 + '@inquirer/confirm': 6.0.13(@types/node@25.6.0) + '@mswjs/interceptors': 0.41.9 '@open-draft/deferred-promise': 3.0.0 '@types/statuses': 2.0.6 cookie: 1.1.1 - graphql: 16.13.2 + graphql: 16.14.0 headers-polyfill: 5.0.1 is-node-process: 1.2.0 outvariant: 1.4.3 @@ -7555,11 +7555,11 @@ snapshots: statuses: 2.0.2 strict-event-emitter: 0.5.1 tough-cookie: 6.0.1 - type-fest: 5.5.0 + type-fest: 5.6.0 until-async: 3.0.2 yargs: 17.7.2 optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 transitivePeerDependencies: - '@types/node' @@ -8054,11 +8054,11 @@ snapshots: rfdc@1.4.1: {} - rollup-plugin-dts@6.3.0(rollup@4.57.1)(typescript@5.9.3): + rollup-plugin-dts@6.3.0(rollup@4.57.1)(typescript@6.0.2): dependencies: magic-string: 0.30.21 rollup: 4.57.1 - typescript: 5.9.3 + typescript: 6.0.2 optionalDependencies: '@babel/code-frame': 7.29.0 @@ -8352,7 +8352,7 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svelte-check@4.3.6(picomatch@4.0.4)(svelte@5.53.5)(typescript@5.9.3): + svelte-check@4.3.6(picomatch@4.0.4)(svelte@5.53.5)(typescript@6.0.2): dependencies: '@jridgewell/trace-mapping': 0.3.31 chokidar: 4.0.3 @@ -8360,7 +8360,7 @@ snapshots: picocolors: 1.1.1 sade: 1.8.1 svelte: 5.53.5 - typescript: 5.9.3 + typescript: 6.0.2 transitivePeerDependencies: - picomatch @@ -8416,8 +8416,8 @@ snapshots: tinyglobby@0.2.15: dependencies: - fdir: 6.5.0(picomatch@4.0.4) - picomatch: 4.0.4 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 tinyglobby@0.2.16: dependencies: @@ -8476,7 +8476,7 @@ snapshots: type-fest@4.41.0: {} - type-fest@5.5.0: + type-fest@5.6.0: dependencies: tagged-tag: 1.0.0 @@ -8488,14 +8488,14 @@ snapshots: typescript@5.6.1-rc: {} - typescript@5.9.3: {} + typescript@6.0.2: {} ufo@1.6.3: {} uglify-js@3.19.3: optional: true - unbuild@3.6.1(typescript@5.9.3)(vue-tsc@2.2.12(typescript@5.9.3))(vue@3.5.27(typescript@5.9.3)): + unbuild@3.6.1(typescript@6.0.2)(vue-tsc@2.2.12(typescript@6.0.2))(vue@3.5.27(typescript@6.0.2)): dependencies: '@rollup/plugin-alias': 5.1.1(rollup@4.57.1) '@rollup/plugin-commonjs': 28.0.9(rollup@4.57.1) @@ -8511,18 +8511,18 @@ snapshots: hookable: 5.5.3 jiti: 2.6.1 magic-string: 0.30.21 - mkdist: 2.4.1(typescript@5.9.3)(vue-tsc@2.2.12(typescript@5.9.3))(vue@3.5.27(typescript@5.9.3)) + mkdist: 2.4.1(typescript@6.0.2)(vue-tsc@2.2.12(typescript@6.0.2))(vue@3.5.27(typescript@6.0.2)) mlly: 1.8.0 pathe: 2.0.3 pkg-types: 2.3.0 pretty-bytes: 7.1.0 rollup: 4.57.1 - rollup-plugin-dts: 6.3.0(rollup@4.57.1)(typescript@5.9.3) + rollup-plugin-dts: 6.3.0(rollup@4.57.1)(typescript@6.0.2) scule: 1.3.0 tinyglobby: 0.2.15 untyped: 2.0.0 optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 transitivePeerDependencies: - sass - vue @@ -8654,7 +8654,7 @@ snapshots: optionalDependencies: vite: 7.3.1(@types/node@25.6.0)(jiti@2.6.1)(yaml@2.8.2) - vitepress@1.6.4(@algolia/client-search@5.48.0)(@types/node@25.6.0)(@types/react@18.3.28)(axios@1.16.0)(change-case@5.4.4)(postcss@8.5.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.13.0)(typescript@5.9.3): + vitepress@1.6.4(@algolia/client-search@5.48.0)(@types/node@25.6.0)(@types/react@18.3.28)(axios@1.16.0)(change-case@5.4.4)(postcss@8.5.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.13.0)(typescript@6.0.2): dependencies: '@docsearch/css': 3.8.2 '@docsearch/js': 3.8.2(@algolia/client-search@5.48.0)(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.13.0) @@ -8663,17 +8663,17 @@ snapshots: '@shikijs/transformers': 2.5.0 '@shikijs/types': 2.5.0 '@types/markdown-it': 14.1.2 - '@vitejs/plugin-vue': 5.2.4(vite@5.4.21(@types/node@25.6.0))(vue@3.5.27(typescript@5.9.3)) + '@vitejs/plugin-vue': 5.2.4(vite@5.4.21(@types/node@25.6.0))(vue@3.5.27(typescript@6.0.2)) '@vue/devtools-api': 7.7.9 '@vue/shared': 3.5.27 - '@vueuse/core': 12.8.2(typescript@5.9.3) - '@vueuse/integrations': 12.8.2(axios@1.16.0)(change-case@5.4.4)(focus-trap@7.8.0)(typescript@5.9.3) + '@vueuse/core': 12.8.2(typescript@6.0.2) + '@vueuse/integrations': 12.8.2(axios@1.16.0)(change-case@5.4.4)(focus-trap@7.8.0)(typescript@6.0.2) focus-trap: 7.8.0 mark.js: 8.11.1 minisearch: 7.2.0 shiki: 2.5.0 vite: 5.4.21(@types/node@25.6.0) - vue: 3.5.27(typescript@5.9.3) + vue: 3.5.27(typescript@6.0.2) optionalDependencies: postcss: 8.5.6 transitivePeerDependencies: @@ -8703,10 +8703,10 @@ snapshots: - typescript - universal-cookie - vitest@4.1.5(@types/node@25.6.0)(jsdom@20.0.3)(msw@2.14.3(@types/node@25.6.0)(typescript@5.9.3))(vite@7.3.1(@types/node@25.6.0)(jiti@2.6.1)(yaml@2.8.2)): + vitest@4.1.5(@types/node@25.6.0)(jsdom@20.0.3)(msw@2.14.3(@types/node@25.6.0)(typescript@6.0.2))(vite@7.3.1(@types/node@25.6.0)(jiti@2.6.1)(yaml@2.8.2)): dependencies: '@vitest/expect': 4.1.5 - '@vitest/mocker': 4.1.5(msw@2.14.3(@types/node@25.6.0)(typescript@5.9.3))(vite@7.3.1(@types/node@25.6.0)(jiti@2.6.1)(yaml@2.8.2)) + '@vitest/mocker': 4.1.5(msw@2.14.3(@types/node@25.6.0)(typescript@6.0.2))(vite@7.3.1(@types/node@25.6.0)(jiti@2.6.1)(yaml@2.8.2)) '@vitest/pretty-format': 4.1.5 '@vitest/runner': 4.1.5 '@vitest/snapshot': 4.1.5 @@ -8733,21 +8733,21 @@ snapshots: vscode-uri@3.1.0: {} - vue-tsc@2.2.12(typescript@5.9.3): + vue-tsc@2.2.12(typescript@6.0.2): dependencies: '@volar/typescript': 2.4.15 - '@vue/language-core': 2.2.12(typescript@5.9.3) - typescript: 5.9.3 + '@vue/language-core': 2.2.12(typescript@6.0.2) + typescript: 6.0.2 - vue@3.5.27(typescript@5.9.3): + vue@3.5.27(typescript@6.0.2): dependencies: '@vue/compiler-dom': 3.5.27 '@vue/compiler-sfc': 3.5.27 '@vue/runtime-dom': 3.5.27 - '@vue/server-renderer': 3.5.27(vue@3.5.27(typescript@5.9.3)) + '@vue/server-renderer': 3.5.27(vue@3.5.27(typescript@6.0.2)) '@vue/shared': 3.5.27 optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 w3c-xmlserializer@4.0.0: dependencies: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 85eba97d8..8a3e1bb3b 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -4,7 +4,7 @@ packages: catalog: execa: ^9.6.1 - typescript: ^5.9.3 + typescript: ^6.0.2 vite: ^7.3.1 ignoredBuiltDependencies: