Skip to content
16 changes: 16 additions & 0 deletions packages/openapi-ts-tests/main/test/3.1.x.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,22 @@ describe(`OpenAPI ${version}`, () => {
}),
description: 'handles contentMediaType schema property for file uploads',
},
{
config: createConfig({
input: 'content-binary.json',
output: 'content-binary-zod',
plugins: ['@hey-api/typescript', 'zod'],
}),
description: 'generates z.instanceof(Blob/File) for binary format with zod',
},
{
config: createConfig({
input: 'content-media-type.yaml',
output: 'content-media-type-zod',
plugins: ['@hey-api/typescript', 'zod'],
}),
description: 'generates z.instanceof(Blob/File) for contentMediaType with zod',
},
{
config: createConfig({
input: 'content-types.yaml',
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
// This file is auto-generated by @hey-api/openapi-ts

export type { ClientOptions, GetBarData, GetBarResponse, GetBarResponses, GetFooData, GetFooResponse, GetFooResponses } from './types.gen';
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
// This file is auto-generated by @hey-api/openapi-ts

export type ClientOptions = {
baseUrl: `${string}://${string}` | (string & {});
};

export type GetFooData = {
body?: never;
path?: never;
query?: never;
url: '/foo';
};

export type GetFooResponses = {
200: string;
};

export type GetFooResponse = GetFooResponses[keyof GetFooResponses];

export type GetBarData = {
body?: never;
path?: never;
query?: never;
url: '/bar';
};

export type GetBarResponses = {
200: Blob | File;
};

export type GetBarResponse = GetBarResponses[keyof GetBarResponses];
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
// This file is auto-generated by @hey-api/openapi-ts

import * as z from 'zod';

export const zGetFooData = z.object({
body: z.never().optional(),
path: z.never().optional(),
query: z.never().optional()
});

export const zGetFooResponse = z.string();

export const zGetBarData = z.object({
body: z.never().optional(),
path: z.never().optional(),
query: z.never().optional()
});

export const zGetBarResponse = z.union([z.instanceof(Blob), z.instanceof(File)]);
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
// This file is auto-generated by @hey-api/openapi-ts

export type { ClientOptions, FileUploadRequest, FileUploadRequestTyped, UploadFileData, UploadFileResponses, UploadFileTypedData, UploadFileTypedResponses } from './types.gen';
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
// This file is auto-generated by @hey-api/openapi-ts

export type ClientOptions = {
baseUrl: `${string}://${string}` | (string & {});
};

export type FileUploadRequest = {
/**
* Binary file content
*/
file: Blob | File;
};

export type FileUploadRequestTyped = {
/**
* Binary file content with explicit string type
*/
file: Blob | File;
};

export type UploadFileData = {
body?: FileUploadRequest;
path?: never;
query?: never;
url: '/upload';
};

export type UploadFileResponses = {
/**
* OK
*/
200: unknown;
};

export type UploadFileTypedData = {
body?: FileUploadRequestTyped;
path?: never;
query?: never;
url: '/upload-typed';
};

export type UploadFileTypedResponses = {
/**
* OK
*/
200: unknown;
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
// This file is auto-generated by @hey-api/openapi-ts

import * as z from 'zod';

export const zFileUploadRequest = z.object({
file: z.union([z.instanceof(Blob), z.instanceof(File)])
});

export const zFileUploadRequestTyped = z.object({
file: z.union([z.instanceof(Blob), z.instanceof(File)])
});

export const zUploadFileData = z.object({
body: zFileUploadRequest.optional(),
path: z.never().optional(),
query: z.never().optional()
});

export const zUploadFileTypedData = z.object({
body: zFileUploadRequestTyped.optional(),
path: z.never().optional(),
query: z.never().optional()
});
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ export const zNonAsciiStringæøåÆøÅöôêÊ字符串 = z.string();
/**
* This is a simple file
*/
export const zSimpleFile = z.string();
export const zSimpleFile = z.union([z.instanceof(Blob), z.instanceof(File)]);

/**
* This is a simple string
Expand Down Expand Up @@ -272,7 +272,7 @@ export const zModelWithNestedEnums = z.object({
*/
export const zModelWithArray = z.object({
prop: z.optional(z.array(zModelWithString)),
propWithFile: z.optional(z.array(z.string())),
propWithFile: z.optional(z.array(z.union([z.instanceof(Blob), z.instanceof(File)]))),
propWithNumber: z.optional(z.array(z.number()))
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ export const zNonAsciiStringæøåÆøÅöôêÊ字符串 = z.string();
/**
* This is a simple file
*/
export const zSimpleFile = z.string();
export const zSimpleFile = z.union([z.instanceof(Blob), z.instanceof(File)]);

/**
* This is a simple string
Expand Down Expand Up @@ -272,7 +272,7 @@ export const zModelWithNestedEnums = z.object({
*/
export const zModelWithArray = z.object({
prop: z.array(zModelWithString).optional(),
propWithFile: z.array(z.string()).optional(),
propWithFile: z.array(z.union([z.instanceof(Blob), z.instanceof(File)])).optional(),
propWithNumber: z.array(z.number()).optional()
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ export const zNonAsciiStringæøåÆøÅöôêÊ字符串 = z.string();
/**
* This is a simple file
*/
export const zSimpleFile = z.string();
export const zSimpleFile = z.union([z.instanceof(Blob), z.instanceof(File)]);

/**
* This is a simple string
Expand Down Expand Up @@ -272,7 +272,7 @@ export const zModelWithNestedEnums = z.object({
*/
export const zModelWithArray = z.object({
prop: z.array(zModelWithString).optional(),
propWithFile: z.array(z.string()).optional(),
propWithFile: z.array(z.union([z.instanceof(Blob), z.instanceof(File)])).optional(),
propWithNumber: z.array(z.number()).optional()
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ export const zNonAsciiStringæøåÆøÅöôêÊ字符串 = z.string();
/**
* This is a simple file
*/
export const zSimpleFile = z.string();
export const zSimpleFile = z.union([z.instanceof(Blob), z.instanceof(File)]);

/**
* This is a simple string
Expand Down Expand Up @@ -352,7 +352,7 @@ export const zModelWithNestedEnums = z.object({
*/
export const zModelWithArray = z.object({
prop: z.optional(z.array(zModelWithString)),
propWithFile: z.optional(z.array(z.string())),
propWithFile: z.optional(z.array(z.union([z.instanceof(Blob), z.instanceof(File)]))),
propWithNumber: z.optional(z.array(z.number()))
});

Expand Down Expand Up @@ -775,7 +775,7 @@ export const zModelWithReadOnlyAndWriteOnly = z.object({
*/
export const zModelWithArrayReadOnlyAndWriteOnly = z.object({
prop: z.optional(z.array(zModelWithReadOnlyAndWriteOnly)),
propWithFile: z.optional(z.array(z.string())),
propWithFile: z.optional(z.array(z.union([z.instanceof(Blob), z.instanceof(File)]))),
propWithNumber: z.optional(z.array(z.number()))
});

Expand Down Expand Up @@ -1011,7 +1011,7 @@ export const zModelWithReadOnlyAndWriteOnlyWritable = z.object({
*/
export const zModelWithArrayReadOnlyAndWriteOnlyWritable = z.object({
prop: z.optional(z.array(zModelWithReadOnlyAndWriteOnlyWritable)),
propWithFile: z.optional(z.array(z.string())),
propWithFile: z.optional(z.array(z.union([z.instanceof(Blob), z.instanceof(File)]))),
propWithNumber: z.optional(z.array(z.number()))
});

Expand Down Expand Up @@ -1472,7 +1472,7 @@ export const zTypesResponse = z.union([
]);

export const zUploadFileData = z.object({
body: z.string(),
body: z.union([z.instanceof(Blob), z.instanceof(File)]),
path: z.object({
'api-version': z.nullable(z.string())
}),
Expand All @@ -1493,7 +1493,7 @@ export const zFileResponseData = z.object({
/**
* Success
*/
export const zFileResponseResponse = z.string();
export const zFileResponseResponse = z.union([z.instanceof(Blob), z.instanceof(File)]);

export const zComplexTypesData = z.object({
body: z.optional(z.never()),
Expand Down Expand Up @@ -1525,7 +1525,7 @@ export const zMultipartResponseData = z.object({
* OK
*/
export const zMultipartResponseResponse = z.object({
file: z.optional(z.string()),
file: z.optional(z.union([z.instanceof(Blob), z.instanceof(File)])),
metadata: z.optional(z.object({
foo: z.optional(z.string()),
bar: z.optional(z.string())
Expand All @@ -1534,7 +1534,7 @@ export const zMultipartResponseResponse = z.object({

export const zMultipartRequestData = z.object({
body: z.optional(z.object({
content: z.optional(z.string()),
content: z.optional(z.union([z.instanceof(Blob), z.instanceof(File)])),
data: z.nullish(zModelWithString)
})),
path: z.optional(z.never()),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ export const zNonAsciiStringæøåÆøÅöôêÊ字符串 = z.string();
/**
* This is a simple file
*/
export const zSimpleFile = z.string();
export const zSimpleFile = z.union([z.instanceof(Blob), z.instanceof(File)]);

/**
* This is a simple string
Expand Down Expand Up @@ -352,7 +352,7 @@ export const zModelWithNestedEnums = z.object({
*/
export const zModelWithArray = z.object({
prop: z.array(zModelWithString).optional(),
propWithFile: z.array(z.string()).optional(),
propWithFile: z.array(z.union([z.instanceof(Blob), z.instanceof(File)])).optional(),
propWithNumber: z.array(z.number()).optional()
});

Expand Down Expand Up @@ -775,7 +775,7 @@ export const zModelWithReadOnlyAndWriteOnly = z.object({
*/
export const zModelWithArrayReadOnlyAndWriteOnly = z.object({
prop: z.array(zModelWithReadOnlyAndWriteOnly).optional(),
propWithFile: z.array(z.string()).optional(),
propWithFile: z.array(z.union([z.instanceof(Blob), z.instanceof(File)])).optional(),
propWithNumber: z.array(z.number()).optional()
});

Expand Down Expand Up @@ -1011,7 +1011,7 @@ export const zModelWithReadOnlyAndWriteOnlyWritable = z.object({
*/
export const zModelWithArrayReadOnlyAndWriteOnlyWritable = z.object({
prop: z.array(zModelWithReadOnlyAndWriteOnlyWritable).optional(),
propWithFile: z.array(z.string()).optional(),
propWithFile: z.array(z.union([z.instanceof(Blob), z.instanceof(File)])).optional(),
propWithNumber: z.array(z.number()).optional()
});

Expand Down Expand Up @@ -1472,7 +1472,7 @@ export const zTypesResponse = z.union([
]);

export const zUploadFileData = z.object({
body: z.string(),
body: z.union([z.instanceof(Blob), z.instanceof(File)]),
path: z.object({
'api-version': z.string().nullable()
}),
Expand All @@ -1493,7 +1493,7 @@ export const zFileResponseData = z.object({
/**
* Success
*/
export const zFileResponseResponse = z.string();
export const zFileResponseResponse = z.union([z.instanceof(Blob), z.instanceof(File)]);

export const zComplexTypesData = z.object({
body: z.never().optional(),
Expand Down Expand Up @@ -1525,7 +1525,7 @@ export const zMultipartResponseData = z.object({
* OK
*/
export const zMultipartResponseResponse = z.object({
file: z.string().optional(),
file: z.union([z.instanceof(Blob), z.instanceof(File)]).optional(),
metadata: z.object({
foo: z.string().optional(),
bar: z.string().optional()
Expand All @@ -1534,7 +1534,7 @@ export const zMultipartResponseResponse = z.object({

export const zMultipartRequestData = z.object({
body: z.object({
content: z.string().optional(),
content: z.union([z.instanceof(Blob), z.instanceof(File)]).optional(),
data: zModelWithString.nullish()
}).optional(),
path: z.never().optional(),
Expand Down
Loading
Loading