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

fix(client): Nuxt client receives raw body in request validators

Lubos 03f37ea9 2a0c7989

+104 -15
+5
.changeset/fuzzy-roses-stare.md
··· 1 + --- 2 + '@hey-api/openapi-ts': patch 3 + --- 4 + 5 + fix(client): Nuxt client receives raw body in request validators
+1 -1
.changeset/soft-penguins-fetch.md
··· 2 2 '@hey-api/openapi-ts': patch 3 3 --- 4 4 5 - feat(input): input supports Hey API Registry shorthand 5 + feat(parser): input supports Hey API Registry shorthand
+1 -1
docs/package.json
··· 20 20 "vitepress-plugin-llms": "1.7.3", 21 21 "vue": "3.5.13" 22 22 }, 23 - "packageManager": "pnpm@10.14.0" 23 + "packageManager": "pnpm@10.15.0" 24 24 }
+23 -1
examples/openapi-ts-nuxt/components/home.vue
··· 8 8 petId.value++; 9 9 } 10 10 11 - function addNewPet() { 11 + async function addNewPet() { 12 12 name.value = name.value === 'foo' ? 'bar' : 'foo'; 13 + 14 + const pet = await addPet({ 15 + body: { 16 + category: { 17 + id: BigInt(0), 18 + name: 'cats', 19 + }, 20 + id: BigInt(0), 21 + name: 'doggy', 22 + photoUrls: ['string'], 23 + status: 'available', 24 + tags: [ 25 + { 26 + id: BigInt(0), 27 + name: 'string', 28 + }, 29 + ], 30 + }, 31 + composable: '$fetch', 32 + }); 33 + 34 + console.log('Added new pet:', pet); 13 35 } 14 36 15 37 function changeStatus() {
+1 -1
package.json
··· 69 69 "typescript-eslint": "8.29.1", 70 70 "vitest": "3.1.1" 71 71 }, 72 - "packageManager": "pnpm@10.14.0" 72 + "packageManager": "pnpm@10.15.0" 73 73 }
+6 -1
packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-false/client/client.gen.ts
··· 67 67 } 68 68 69 69 if (requestValidator) { 70 - await requestValidator(options); 70 + await requestValidator({ 71 + ...options, 72 + // @ts-expect-error 73 + body: options.rawBody, 74 + }); 71 75 } 72 76 }, 73 77 ...opts.onRequest, ··· 109 113 } 110 114 111 115 if (composable === 'useFetch' || composable === 'useLazyFetch') { 116 + opts.rawBody = opts.body; 112 117 const bodyParams = reactive({ 113 118 body: opts.body, 114 119 bodySerializer: opts.bodySerializer,
+1
packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-false/client/types.gen.ts
··· 74 74 body?: unknown; 75 75 path?: FetchOptions<unknown>['query']; 76 76 query?: FetchOptions<unknown>['query']; 77 + rawBody?: unknown; 77 78 }> { 78 79 asyncDataOptions?: AsyncDataOptions<ResT, ResT, KeysOf<ResT>, DefaultT>; 79 80 composable: TComposable;
+1
packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-false/client/utils.gen.ts
··· 371 371 fetchFn: Required<Config>['$fetch'], 372 372 ) => { 373 373 const unwrappedOpts = unwrapRefs(opts); 374 + unwrappedOpts.rawBody = unwrappedOpts.body; 374 375 unwrappedOpts.body = serializeBody(unwrappedOpts); 375 376 return fetchFn( 376 377 buildUrl(opts),
+6 -1
packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-number/client/client.gen.ts
··· 67 67 } 68 68 69 69 if (requestValidator) { 70 - await requestValidator(options); 70 + await requestValidator({ 71 + ...options, 72 + // @ts-expect-error 73 + body: options.rawBody, 74 + }); 71 75 } 72 76 }, 73 77 ...opts.onRequest, ··· 109 113 } 110 114 111 115 if (composable === 'useFetch' || composable === 'useLazyFetch') { 116 + opts.rawBody = opts.body; 112 117 const bodyParams = reactive({ 113 118 body: opts.body, 114 119 bodySerializer: opts.bodySerializer,
+1
packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-number/client/types.gen.ts
··· 74 74 body?: unknown; 75 75 path?: FetchOptions<unknown>['query']; 76 76 query?: FetchOptions<unknown>['query']; 77 + rawBody?: unknown; 77 78 }> { 78 79 asyncDataOptions?: AsyncDataOptions<ResT, ResT, KeysOf<ResT>, DefaultT>; 79 80 composable: TComposable;
+1
packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-number/client/utils.gen.ts
··· 371 371 fetchFn: Required<Config>['$fetch'], 372 372 ) => { 373 373 const unwrappedOpts = unwrapRefs(opts); 374 + unwrappedOpts.rawBody = unwrappedOpts.body; 374 375 unwrappedOpts.body = serializeBody(unwrappedOpts); 375 376 return fetchFn( 376 377 buildUrl(opts),
+6 -1
packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-strict/client/client.gen.ts
··· 67 67 } 68 68 69 69 if (requestValidator) { 70 - await requestValidator(options); 70 + await requestValidator({ 71 + ...options, 72 + // @ts-expect-error 73 + body: options.rawBody, 74 + }); 71 75 } 72 76 }, 73 77 ...opts.onRequest, ··· 109 113 } 110 114 111 115 if (composable === 'useFetch' || composable === 'useLazyFetch') { 116 + opts.rawBody = opts.body; 112 117 const bodyParams = reactive({ 113 118 body: opts.body, 114 119 bodySerializer: opts.bodySerializer,
+1
packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-strict/client/types.gen.ts
··· 74 74 body?: unknown; 75 75 path?: FetchOptions<unknown>['query']; 76 76 query?: FetchOptions<unknown>['query']; 77 + rawBody?: unknown; 77 78 }> { 78 79 asyncDataOptions?: AsyncDataOptions<ResT, ResT, KeysOf<ResT>, DefaultT>; 79 80 composable: TComposable;
+1
packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-strict/client/utils.gen.ts
··· 371 371 fetchFn: Required<Config>['$fetch'], 372 372 ) => { 373 373 const unwrappedOpts = unwrapRefs(opts); 374 + unwrappedOpts.rawBody = unwrappedOpts.body; 374 375 unwrappedOpts.body = serializeBody(unwrappedOpts); 375 376 return fetchFn( 376 377 buildUrl(opts),
+6 -1
packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-string/client/client.gen.ts
··· 67 67 } 68 68 69 69 if (requestValidator) { 70 - await requestValidator(options); 70 + await requestValidator({ 71 + ...options, 72 + // @ts-expect-error 73 + body: options.rawBody, 74 + }); 71 75 } 72 76 }, 73 77 ...opts.onRequest, ··· 109 113 } 110 114 111 115 if (composable === 'useFetch' || composable === 'useLazyFetch') { 116 + opts.rawBody = opts.body; 112 117 const bodyParams = reactive({ 113 118 body: opts.body, 114 119 bodySerializer: opts.bodySerializer,
+1
packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-string/client/types.gen.ts
··· 74 74 body?: unknown; 75 75 path?: FetchOptions<unknown>['query']; 76 76 query?: FetchOptions<unknown>['query']; 77 + rawBody?: unknown; 77 78 }> { 78 79 asyncDataOptions?: AsyncDataOptions<ResT, ResT, KeysOf<ResT>, DefaultT>; 79 80 composable: TComposable;
+1
packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-string/client/utils.gen.ts
··· 371 371 fetchFn: Required<Config>['$fetch'], 372 372 ) => { 373 373 const unwrappedOpts = unwrapRefs(opts); 374 + unwrappedOpts.rawBody = unwrappedOpts.body; 374 375 unwrappedOpts.body = serializeBody(unwrappedOpts); 375 376 return fetchFn( 376 377 buildUrl(opts),
+6 -1
packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/default/client/client.gen.ts
··· 67 67 } 68 68 69 69 if (requestValidator) { 70 - await requestValidator(options); 70 + await requestValidator({ 71 + ...options, 72 + // @ts-expect-error 73 + body: options.rawBody, 74 + }); 71 75 } 72 76 }, 73 77 ...opts.onRequest, ··· 109 113 } 110 114 111 115 if (composable === 'useFetch' || composable === 'useLazyFetch') { 116 + opts.rawBody = opts.body; 112 117 const bodyParams = reactive({ 113 118 body: opts.body, 114 119 bodySerializer: opts.bodySerializer,
+1
packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/default/client/types.gen.ts
··· 74 74 body?: unknown; 75 75 path?: FetchOptions<unknown>['query']; 76 76 query?: FetchOptions<unknown>['query']; 77 + rawBody?: unknown; 77 78 }> { 78 79 asyncDataOptions?: AsyncDataOptions<ResT, ResT, KeysOf<ResT>, DefaultT>; 79 80 composable: TComposable;
+1
packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/default/client/utils.gen.ts
··· 371 371 fetchFn: Required<Config>['$fetch'], 372 372 ) => { 373 373 const unwrappedOpts = unwrapRefs(opts); 374 + unwrappedOpts.rawBody = unwrappedOpts.body; 374 375 unwrappedOpts.body = serializeBody(unwrappedOpts); 375 376 return fetchFn( 376 377 buildUrl(opts),
+6 -1
packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/sdk-client-optional/client/client.gen.ts
··· 67 67 } 68 68 69 69 if (requestValidator) { 70 - await requestValidator(options); 70 + await requestValidator({ 71 + ...options, 72 + // @ts-expect-error 73 + body: options.rawBody, 74 + }); 71 75 } 72 76 }, 73 77 ...opts.onRequest, ··· 109 113 } 110 114 111 115 if (composable === 'useFetch' || composable === 'useLazyFetch') { 116 + opts.rawBody = opts.body; 112 117 const bodyParams = reactive({ 113 118 body: opts.body, 114 119 bodySerializer: opts.bodySerializer,
+1
packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/sdk-client-optional/client/types.gen.ts
··· 74 74 body?: unknown; 75 75 path?: FetchOptions<unknown>['query']; 76 76 query?: FetchOptions<unknown>['query']; 77 + rawBody?: unknown; 77 78 }> { 78 79 asyncDataOptions?: AsyncDataOptions<ResT, ResT, KeysOf<ResT>, DefaultT>; 79 80 composable: TComposable;
+1
packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/sdk-client-optional/client/utils.gen.ts
··· 371 371 fetchFn: Required<Config>['$fetch'], 372 372 ) => { 373 373 const unwrappedOpts = unwrapRefs(opts); 374 + unwrappedOpts.rawBody = unwrappedOpts.body; 374 375 unwrappedOpts.body = serializeBody(unwrappedOpts); 375 376 return fetchFn( 376 377 buildUrl(opts),
+6 -1
packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/sdk-client-required/client/client.gen.ts
··· 67 67 } 68 68 69 69 if (requestValidator) { 70 - await requestValidator(options); 70 + await requestValidator({ 71 + ...options, 72 + // @ts-expect-error 73 + body: options.rawBody, 74 + }); 71 75 } 72 76 }, 73 77 ...opts.onRequest, ··· 109 113 } 110 114 111 115 if (composable === 'useFetch' || composable === 'useLazyFetch') { 116 + opts.rawBody = opts.body; 112 117 const bodyParams = reactive({ 113 118 body: opts.body, 114 119 bodySerializer: opts.bodySerializer,
+1
packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/sdk-client-required/client/types.gen.ts
··· 74 74 body?: unknown; 75 75 path?: FetchOptions<unknown>['query']; 76 76 query?: FetchOptions<unknown>['query']; 77 + rawBody?: unknown; 77 78 }> { 78 79 asyncDataOptions?: AsyncDataOptions<ResT, ResT, KeysOf<ResT>, DefaultT>; 79 80 composable: TComposable;
+1
packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/sdk-client-required/client/utils.gen.ts
··· 371 371 fetchFn: Required<Config>['$fetch'], 372 372 ) => { 373 373 const unwrappedOpts = unwrapRefs(opts); 374 + unwrappedOpts.rawBody = unwrappedOpts.body; 374 375 unwrappedOpts.body = serializeBody(unwrappedOpts); 375 376 return fetchFn( 376 377 buildUrl(opts),
+6 -1
packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/tsconfig-nodenext-sdk/client/client.gen.ts
··· 67 67 } 68 68 69 69 if (requestValidator) { 70 - await requestValidator(options); 70 + await requestValidator({ 71 + ...options, 72 + // @ts-expect-error 73 + body: options.rawBody, 74 + }); 71 75 } 72 76 }, 73 77 ...opts.onRequest, ··· 109 113 } 110 114 111 115 if (composable === 'useFetch' || composable === 'useLazyFetch') { 116 + opts.rawBody = opts.body; 112 117 const bodyParams = reactive({ 113 118 body: opts.body, 114 119 bodySerializer: opts.bodySerializer,
+1
packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/tsconfig-nodenext-sdk/client/types.gen.ts
··· 74 74 body?: unknown; 75 75 path?: FetchOptions<unknown>['query']; 76 76 query?: FetchOptions<unknown>['query']; 77 + rawBody?: unknown; 77 78 }> { 78 79 asyncDataOptions?: AsyncDataOptions<ResT, ResT, KeysOf<ResT>, DefaultT>; 79 80 composable: TComposable;
+1
packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/tsconfig-nodenext-sdk/client/utils.gen.ts
··· 371 371 fetchFn: Required<Config>['$fetch'], 372 372 ) => { 373 373 const unwrappedOpts = unwrapRefs(opts); 374 + unwrappedOpts.rawBody = unwrappedOpts.body; 374 375 unwrappedOpts.body = serializeBody(unwrappedOpts); 375 376 return fetchFn( 376 377 buildUrl(opts),
+1 -2
packages/openapi-ts-tests/main/test/openapi-ts.config.ts
··· 124 124 { 125 125 // baseUrl: false, 126 126 // exportFromIndex: true, 127 - name: '@hey-api/client-fetch', 128 - // name: '@hey-api/client-angular', 127 + name: '@hey-api/client-nuxt', 129 128 // name: 'legacy/angular', 130 129 // strictBaseUrl: true, 131 130 // throwOnError: true,
+6 -1
packages/openapi-ts/src/plugins/@hey-api/client-nuxt/bundle/client.ts
··· 65 65 } 66 66 67 67 if (requestValidator) { 68 - await requestValidator(options); 68 + await requestValidator({ 69 + ...options, 70 + // @ts-expect-error 71 + body: options.rawBody, 72 + }); 69 73 } 70 74 }, 71 75 ...opts.onRequest, ··· 107 111 } 108 112 109 113 if (composable === 'useFetch' || composable === 'useLazyFetch') { 114 + opts.rawBody = opts.body; 110 115 const bodyParams = reactive({ 111 116 body: opts.body, 112 117 bodySerializer: opts.bodySerializer,
+1
packages/openapi-ts/src/plugins/@hey-api/client-nuxt/bundle/types.ts
··· 72 72 body?: unknown; 73 73 path?: FetchOptions<unknown>['query']; 74 74 query?: FetchOptions<unknown>['query']; 75 + rawBody?: unknown; 75 76 }> { 76 77 asyncDataOptions?: AsyncDataOptions<ResT, ResT, KeysOf<ResT>, DefaultT>; 77 78 composable: TComposable;
+1
packages/openapi-ts/src/plugins/@hey-api/client-nuxt/bundle/utils.ts
··· 369 369 fetchFn: Required<Config>['$fetch'], 370 370 ) => { 371 371 const unwrappedOpts = unwrapRefs(opts); 372 + unwrappedOpts.rawBody = unwrappedOpts.body; 372 373 unwrappedOpts.body = serializeBody(unwrappedOpts); 373 374 return fetchFn( 374 375 buildUrl(opts),