@sdk-it/rpc 0.46.3 → 0.46.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +0 -8
- package/dist/index.js.map +2 -2
- package/dist/lib/zod.d.ts.map +1 -1
- package/package.json +4 -4
package/dist/index.js
CHANGED
|
@@ -885,14 +885,6 @@ var RuntimeZodConverter = class {
|
|
|
885
885
|
const defaultValue = (schema["x-zod-type"] === "date" || schema["x-zod-type"] === "coerce-date") && schema.default ? new Date(schema.default) : schema.default;
|
|
886
886
|
base = base.default(defaultValue);
|
|
887
887
|
}
|
|
888
|
-
if (schema["x-prefix"]) {
|
|
889
|
-
const prefix = schema["x-prefix"];
|
|
890
|
-
if (!required) {
|
|
891
|
-
base = base.transform((val) => val ? `${prefix}${val}` : void 0);
|
|
892
|
-
} else {
|
|
893
|
-
base = base.transform((val) => `${prefix}${val}`);
|
|
894
|
-
}
|
|
895
|
-
}
|
|
896
888
|
return base;
|
|
897
889
|
}
|
|
898
890
|
handle(schema, required = false) {
|
package/dist/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/lib/http/dispatcher.ts", "../src/lib/http/interceptors.ts", "../src/lib/http/request.ts", "../src/lib/http/parse-response.ts", "../src/lib/http/response.ts", "../src/lib/http/parser.ts", "../src/lib/rpc.ts", "../src/lib/zod.ts"],
|
|
4
|
-
"sourcesContent": ["import z from 'zod';\n\nimport { type Interceptor } from '../http/interceptors.ts';\nimport { type RequestConfig } from '../http/request.ts';\nimport { buffered } from './parse-response.ts';\nimport {\n APIError,\n APIResponse,\n type RebindSuccessPayload,\n type SuccessfulResponse,\n} from './response.ts';\nimport { type SSEListener } from './sse.ts';\n\nexport type Unionize<T> = T extends [infer Single extends OutputType]\n ? InstanceType<Single>\n : T extends readonly [...infer Tuple extends OutputType[]]\n ? { [I in keyof Tuple]: InstanceType<Tuple[I]> }[number]\n : never;\n\nexport type InstanceType<T> =\n T extends Type<infer U>\n ? U\n : T extends { type: Type<infer U> }\n ? U\n : T extends Array<unknown>\n ? Unionize<T>\n : never;\n\ntype ResponseData<T extends OutputType[]> =\n Extract<InstanceType<T>, SuccessfulResponse> extends SuccessfulResponse<\n infer P\n >\n ? P\n : unknown;\n\ntype ResponseMapper<T extends OutputType[], R> = (data: ResponseData<T>) => R;\n\nexport interface Type<T> {\n new (...args: any[]): T;\n}\nexport type Parser = (\n response: Response,\n) => Promise<unknown> | ReadableStream<any> | SSEListener;\nexport type OutputType =\n Type<APIResponse> | { parser: Parser; type: Type<APIResponse> };\n\n// Bare z.custom (no predicate) on purpose: Request/Response from another\n// realm (undici vs global fetch) fail instanceof checks. The output is\n// typed as a Promise directly \u2014 zod 4 deprecated z.promise.\nexport const fetchType = z\n .function({\n input: [z.custom<Request>()],\n output: z.custom<Promise<Response>>(),\n })\n .optional();\n\nexport async function parse<T extends OutputType[]>(\n outputs: T,\n response: Response,\n): Promise<Extract<Unionize<T>, SuccessfulResponse<unknown>>>;\nexport async function parse<T extends OutputType[], R>(\n outputs: T,\n response: Response,\n mapper: ResponseMapper<T, R>,\n): Promise<\n RebindSuccessPayload<Extract<Unionize<T>, SuccessfulResponse<unknown>>, R>\n>;\nexport async function parse<T extends OutputType[], R = ResponseData<T>>(\n outputs: T,\n response: Response,\n mapper?: ResponseMapper<T, R>,\n) {\n let output: typeof APIResponse | null = null;\n let parser: Parser = buffered;\n for (const outputType of outputs) {\n if ('parser' in outputType) {\n if (isTypeOf(outputType.type, APIResponse)) {\n if (response.status === outputType.type.status) {\n parser = outputType.parser;\n output = outputType.type;\n break;\n }\n }\n } else if (isTypeOf(outputType, APIResponse)) {\n if (response.status === outputType.status) {\n output = outputType;\n break;\n }\n }\n }\n\n if (response.ok) {\n const data = (await parser(response)) as ResponseData<T>;\n const mapped = mapper ? mapper(data) : data;\n const apiresponse = (output || APIResponse).create(\n response.status,\n response.headers,\n mapped,\n );\n\n return apiresponse as Extract<Unionize<T>, SuccessfulResponse<unknown>>;\n }\n\n throw (output || APIError).create(\n response.status,\n response.headers,\n await parser(response),\n );\n}\n\nexport function isTypeOf<T extends Type<APIResponse>>(\n instance: any,\n baseType: T,\n): instance is T {\n if (instance === baseType) {\n return true;\n }\n const prototype = Object.getPrototypeOf(instance);\n if (prototype === null) {\n return false;\n }\n return isTypeOf(prototype, baseType);\n}\n\nexport class Dispatcher {\n #interceptors: Interceptor[] = [];\n #fetch: z.infer<typeof fetchType>;\n constructor(interceptors: Interceptor[], fetch?: z.infer<typeof fetchType>) {\n this.#interceptors = interceptors;\n this.#fetch = fetch;\n }\n\n async send<T extends OutputType[]>(\n config: RequestConfig,\n outputs: T,\n signal?: AbortSignal,\n ): Promise<Extract<Unionize<T>, SuccessfulResponse<unknown>>>;\n async send<T extends OutputType[], R>(\n config: RequestConfig,\n outputs: T,\n signal: AbortSignal | undefined,\n mapper: ResponseMapper<T, R>,\n ): Promise<\n RebindSuccessPayload<Extract<Unionize<T>, SuccessfulResponse<unknown>>, R>\n >;\n async send<T extends OutputType[], R = ResponseData<T>>(\n config: RequestConfig,\n outputs: T,\n signal?: AbortSignal,\n mapper?: ResponseMapper<T, R>,\n ) {\n for (const interceptor of this.#interceptors) {\n if (interceptor.before) {\n config = await interceptor.before(config);\n }\n }\n\n const init =\n signal === undefined ? config.init : { ...config.init, signal };\n\n let response = await (this.#fetch ?? fetch)(new Request(config.url, init));\n\n for (let i = this.#interceptors.length - 1; i >= 0; i--) {\n const interceptor = this.#interceptors[i];\n if (interceptor.after) {\n response = await interceptor.after(response.clone());\n }\n }\n\n if (mapper) {\n return await parse(outputs, response, mapper);\n }\n return await parse(outputs, response);\n }\n}\n", "import type { HeadersInit, RequestConfig } from './request.ts';\n\nexport interface Interceptor {\n before?: (config: RequestConfig) => Promise<RequestConfig> | RequestConfig;\n after?: (response: Response) => Promise<Response> | Response;\n}\n\nexport const createHeadersInterceptor = (\n headers: Record<string, string | undefined>,\n requestHeaders: HeadersInit,\n): Interceptor => {\n return {\n before({ init, url }) {\n // Priority Levels\n // 1. Headers Input\n // 2. Request Headers\n // 3. Default Headers\n\n for (const [key, value] of new Headers(requestHeaders)) {\n // Only set the header if it doesn't already exist and has a value\n // even though these headers are passed at operation level\n // still they are lower priority compared to the headers input\n if (value !== undefined && !init.headers.has(key)) {\n init.headers.set(key, value);\n }\n }\n\n for (const [key, value] of Object.entries(headers)) {\n // Only set the header if it doesn't already exist and has a value\n if (value !== undefined && !init.headers.has(key)) {\n init.headers.set(key, value);\n }\n }\n\n return { init, url };\n },\n };\n};\n\nexport const createBaseUrlInterceptor = (baseUrl: string): Interceptor => {\n return {\n before({ init, url }) {\n if (url.protocol === 'local:') {\n return {\n init,\n url: new URL(url.href.replace('local://', baseUrl)),\n };\n }\n return { init, url };\n },\n };\n};\n\nexport const logInterceptor: Interceptor = {\n before({ url, init }) {\n console.log('Request:', { url, init });\n return { url, init };\n },\n after(response) {\n console.log('Response:', response);\n return response;\n },\n};\n\n/**\n * Creates an interceptor that logs detailed information about requests and responses.\n * @param options Configuration options for the logger\n * @returns An interceptor object with before and after handlers\n */\nexport const createDetailedLogInterceptor = (options?: {\n logLevel?: 'debug' | 'info' | 'warn' | 'error';\n includeRequestBody?: boolean;\n includeResponseBody?: boolean;\n}) => {\n const logLevel = options?.logLevel || 'info';\n const includeRequestBody = options?.includeRequestBody || false;\n const includeResponseBody = options?.includeResponseBody || false;\n\n return {\n async before(request: Request) {\n const logData = {\n url: request.url,\n method: request.method,\n contentType: request.headers.get('Content-Type'),\n headers: Object.fromEntries([...request.headers.entries()]),\n };\n\n console[logLevel]('\uD83D\uDE80 Outgoing Request:', logData);\n\n if (includeRequestBody) {\n try {\n // Clone the request to avoid consuming the body stream\n const clonedRequest = request.clone();\n if (\n clonedRequest.headers\n .get('Content-Type')\n ?.includes('application/json')\n ) {\n const body = await clonedRequest.json().catch(() => null);\n console[logLevel]('Request Body:', body);\n } else {\n const body = await clonedRequest.text().catch(() => null);\n console[logLevel]('Request Body:', body);\n }\n } catch (error) {\n console.error('Could not log request body:', error);\n }\n }\n\n return request;\n },\n\n async after(response: Response) {\n const logData = {\n status: response.status,\n statusText: response.statusText,\n url: response.url,\n headers: Object.fromEntries([...response.headers.entries()]),\n };\n\n console[logLevel]('\uD83D\uDCE5 Incoming Response:', logData);\n\n if (includeResponseBody && response.body) {\n try {\n // Clone the response to avoid consuming the body stream\n const clonedResponse = response.clone();\n if (\n clonedResponse.headers\n .get('Content-Type')\n ?.includes('application/json')\n ) {\n const body = await clonedResponse.json().catch(() => null);\n console[logLevel]('Response Body:', body);\n } else {\n const body = await clonedResponse.text().catch(() => null);\n if (body) {\n console[logLevel](\n 'Response Body:',\n body.substring(0, 500) + (body.length > 500 ? '...' : ''),\n );\n } else {\n console[logLevel]('No response body');\n }\n }\n } catch (error) {\n console.error('Could not log response body:', error);\n }\n }\n\n return response;\n },\n };\n};\n", "type Init = Omit<RequestInit, 'headers'> & { headers: Headers };\nexport type RequestConfig = { init: Init; url: URL };\nexport type Method =\n 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'HEAD' | 'OPTIONS';\nexport type ContentType =\n 'xml' | 'json' | 'urlencoded' | 'multipart' | 'formdata';\nexport type HeadersInit = [string, string][] | Record<string, string>;\nexport type Endpoint =\n `${ContentType} ${Method} ${string}` | `${Method} ${string}`;\n\nexport type BodyInit =\n ArrayBuffer | Blob | FormData | URLSearchParams | null | string;\n\nfunction template(\n templateString: string,\n templateVariables: Record<string, any>,\n): string {\n const nargs = /{([0-9a-zA-Z_]+)}/g;\n return templateString.replace(nargs, (match, key: string, index: number) => {\n // Handle escaped double braces\n if (\n templateString[index - 1] === '{' &&\n templateString[index + match.length] === '}'\n ) {\n return key;\n }\n\n const result = key in templateVariables ? templateVariables[key] : null;\n return result === null || result === undefined ? '' : String(result);\n });\n}\n\ntype Input = Record<string, any>;\n\n// Validated inputs can carry Date (coerce-date) values; String(new Date())\n// yields a local-time RFC 2822 string, so serialize Dates as ISO 8601.\nfunction toWireValue(value: any): string {\n return value instanceof Date ? value.toISOString() : String(value);\n}\n\ntype Props = {\n inputHeaders: string[];\n inputQuery: string[];\n inputBody: string[];\n inputParams: string[];\n};\n\nabstract class Serializer {\n protected input: Input;\n protected props: Props;\n\n constructor(input: Input, props: Props) {\n this.input = input;\n this.props = props;\n }\n\n abstract getBody(): BodyInit | null;\n abstract getHeaders(): Record<string, string>;\n serialize(path: string): Serialized {\n const params = this.props.inputParams.reduce<Record<string, any>>(\n (acc, key) => {\n acc[key] = this.input[key];\n return acc;\n },\n {},\n );\n const url = new URL(template(path, params), `local://`);\n\n const headers: Record<string, string> = { ...this.getHeaders() };\n for (const header of this.props.inputHeaders) {\n const value = this.input[header];\n if (value !== undefined) {\n headers[header] = toWireValue(value);\n }\n }\n\n for (const key of this.props.inputQuery) {\n const value = this.input[key];\n if (value !== undefined) {\n if (Array.isArray(value)) {\n for (const item of value) {\n url.searchParams.append(key, toWireValue(item));\n }\n } else {\n url.searchParams.set(key, toWireValue(value));\n }\n }\n }\n\n return {\n body: this.getBody(),\n url,\n headers,\n };\n }\n}\n\ninterface Serialized {\n body: BodyInit | null;\n headers: Record<string, string>;\n url: URL;\n}\n\nclass JsonSerializer extends Serializer {\n getBody(): BodyInit | null {\n const body: Record<string, any> = {};\n if (\n this.props.inputBody.length === 1 &&\n this.props.inputBody[0] === '$body'\n ) {\n return JSON.stringify(this.input.$body);\n }\n\n for (const prop of this.props.inputBody) {\n body[prop] = this.input[prop];\n }\n return JSON.stringify(body);\n }\n getHeaders(): Record<string, string> {\n return {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n };\n }\n}\n\nclass UrlencodedSerializer extends Serializer {\n getBody(): BodyInit | null {\n const body = new URLSearchParams();\n for (const prop of this.props.inputBody) {\n body.set(prop, toWireValue(this.input[prop]));\n }\n return body;\n }\n getHeaders(): Record<string, string> {\n return {\n 'Content-Type': 'application/x-www-form-urlencoded',\n Accept: 'application/json',\n };\n }\n}\n\nclass EmptySerializer extends Serializer {\n getBody(): BodyInit | null {\n return null;\n }\n getHeaders(): Record<string, string> {\n return {};\n }\n}\n\nclass FormDataSerializer extends Serializer {\n getBody(): BodyInit | null {\n const body = new FormData();\n for (const prop of this.props.inputBody) {\n body.append(prop, this.input[prop]);\n }\n return body;\n }\n getHeaders(): Record<string, string> {\n return {\n Accept: 'application/json',\n };\n }\n}\n\nexport function json(input: Input, props: Props) {\n return new JsonSerializer(input, props);\n}\nexport function urlencoded(input: Input, props: Props) {\n return new UrlencodedSerializer(input, props);\n}\nexport function empty(input: Input, props: Props) {\n return new EmptySerializer(input, props);\n}\nexport function formdata(input: Input, props: Props) {\n return new FormDataSerializer(input, props);\n}\n\nexport function toRequest<T extends Endpoint>(\n endpoint: T,\n serializer: Serializer,\n): RequestConfig {\n const [method, path] = endpoint.split(' ');\n const input = serializer.serialize(path);\n return {\n url: input.url,\n init: {\n method: method,\n headers: new Headers(input.headers),\n body: method === 'GET' ? undefined : input.body,\n },\n };\n}\n", "import { parse } from 'fast-content-type-parse';\n\nfunction isBinaryContentType(contentType: string) {\n const type = contentType.toLowerCase();\n if (type.startsWith('image/')) {\n return true;\n }\n if (type.startsWith('audio/')) {\n return true;\n }\n if (type.startsWith('video/')) {\n return true;\n }\n switch (type) {\n case 'application/pdf':\n case 'application/zip':\n case 'application/gzip':\n case 'application/x-7z-compressed':\n case 'application/x-tar':\n case 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet':\n case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document':\n case 'application/vnd.openxmlformats-officedocument.presentationml.presentation':\n case 'application/vnd.ms-excel':\n case 'application/vnd.ms-powerpoint':\n case 'application/msword':\n case 'application/octet-stream':\n return true;\n default:\n return false;\n }\n}\n\nexport function chunked(response: Response) {\n return response.body!;\n}\n\nexport async function buffered(response: Response) {\n // Statuses that, per the HTTP spec, carry no message body. These responses\n // usually omit Content-Type entirely, so this must run before the guard below.\n if (\n response.status === 204 ||\n response.status === 205 ||\n response.status === 304\n ) {\n return null;\n }\n\n const contentType = response.headers.get('Content-Type');\n if (!contentType) {\n throw new Error('Content-Type header is missing');\n }\n\n const { type } = parse(contentType);\n if (isBinaryContentType(type)) {\n return response.blob();\n }\n if (type.startsWith('text/')) {\n return response.text();\n }\n switch (type) {\n case 'application/json':\n return response.json();\n case 'application/xml':\n return response.text();\n case 'application/x-www-form-urlencoded': {\n const text = await response.text();\n return Object.fromEntries(new URLSearchParams(text));\n }\n case 'multipart/form-data':\n return response.formData();\n default:\n throw new Error(`Unsupported content type: ${contentType}`);\n }\n}\n", "export class APIResponse<Body = unknown, Status extends number = number> {\n static readonly status: number;\n readonly status: Status;\n data: Body;\n readonly headers: Headers;\n\n constructor(status: Status, headers: Headers, data: Body) {\n this.status = status;\n this.headers = headers;\n this.data = data;\n }\n\n static create<Body = unknown>(status: number, headers: Headers, data: Body) {\n return new this(status, headers, data);\n }\n}\n\nexport class APIError<Body, Status extends number = number> extends APIResponse<\n Body,\n Status\n> {\n static override create<T>(status: number, headers: Headers, data: T) {\n return new this(status, headers, data);\n }\n}\n\n// 2xx Success\nexport class Ok<T> extends APIResponse<T, 200> {\n static override readonly status = 200 as const;\n constructor(headers: Headers, data: T) {\n super(Ok.status, headers, data);\n }\n static override create<T>(status: number, headers: Headers, data: T) {\n return new this(headers, data);\n }\n}\n\nexport class Created<T> extends APIResponse<T, 201> {\n static override status = 201 as const;\n constructor(headers: Headers, data: T) {\n super(Created.status, headers, data);\n }\n static override create<T>(status: number, headers: Headers, data: T) {\n return new this(headers, data);\n }\n}\nexport class Accepted<T> extends APIResponse<T, 202> {\n static override status = 202 as const;\n constructor(headers: Headers, data: T) {\n super(Accepted.status, headers, data);\n }\n static override create<T>(status: number, headers: Headers, data: T) {\n return new this(headers, data);\n }\n}\nexport class NoContent extends APIResponse<never, 204> {\n static override status = 204 as const;\n constructor(headers: Headers) {\n super(NoContent.status, headers, null as never);\n }\n static override create(\n status: number,\n headers: Headers,\n _data?: unknown,\n ): NoContent {\n return new this(headers);\n }\n}\n\n// 4xx Client Errors\nexport class BadRequest<T> extends APIError<T, 400> {\n static override status = 400 as const;\n constructor(headers: Headers, data: T) {\n super(BadRequest.status, headers, data);\n }\n static override create<T>(status: number, headers: Headers, data: T) {\n return new this(headers, data);\n }\n}\nexport class Unauthorized<T = { message: string }> extends APIError<T, 401> {\n static override status = 401 as const;\n constructor(headers: Headers, data: T) {\n super(Unauthorized.status, headers, data);\n }\n static override create<T>(status: number, headers: Headers, data: T) {\n return new this(headers, data);\n }\n}\nexport class PaymentRequired<T = { message: string }> extends APIError<T, 402> {\n static override status = 402 as const;\n constructor(headers: Headers, data: T) {\n super(PaymentRequired.status, headers, data);\n }\n static override create<T>(status: number, headers: Headers, data: T) {\n return new this(headers, data);\n }\n}\nexport class Forbidden<T = { message: string }> extends APIError<T, 403> {\n static override status = 403 as const;\n constructor(headers: Headers, data: T) {\n super(Forbidden.status, headers, data);\n }\n static override create<T>(status: number, headers: Headers, data: T) {\n return new this(headers, data);\n }\n}\nexport class NotFound<T = { message: string }> extends APIError<T, 404> {\n static override status = 404 as const;\n constructor(headers: Headers, data: T) {\n super(NotFound.status, headers, data);\n }\n static override create<T>(status: number, headers: Headers, data: T) {\n return new this(headers, data);\n }\n}\nexport class MethodNotAllowed<T = { message: string }> extends APIError<\n T,\n 405\n> {\n static override status = 405 as const;\n constructor(headers: Headers, data: T) {\n super(MethodNotAllowed.status, headers, data);\n }\n static override create<T>(status: number, headers: Headers, data: T) {\n return new this(headers, data);\n }\n}\nexport class NotAcceptable<T = { message: string }> extends APIError<T, 406> {\n static override status = 406 as const;\n constructor(headers: Headers, data: T) {\n super(NotAcceptable.status, headers, data);\n }\n static override create<T>(status: number, headers: Headers, data: T) {\n return new this(headers, data);\n }\n}\nexport class Conflict<T = { message: string }> extends APIError<T, 409> {\n static override status = 409 as const;\n constructor(headers: Headers, data: T) {\n super(Conflict.status, headers, data);\n }\n static override create<T>(status: number, headers: Headers, data: T) {\n return new this(headers, data);\n }\n}\nexport class Gone<T = { message: string }> extends APIError<T, 410> {\n static override status = 410 as const;\n constructor(headers: Headers, data: T) {\n super(Gone.status, headers, data);\n }\n static override create<T>(status: number, headers: Headers, data: T) {\n return new this(headers, data);\n }\n}\nexport class PreconditionFailed<T = { message: string }> extends APIError<\n T,\n 412\n> {\n static override status = 412 as const;\n constructor(headers: Headers, data: T) {\n super(PreconditionFailed.status, headers, data);\n }\n static override create<T>(status: number, headers: Headers, data: T) {\n return new this(headers, data);\n }\n}\nexport class UnprocessableEntity<\n T = { message: string; errors?: Record<string, string[]> },\n> extends APIError<T, 422> {\n static override status = 422 as const;\n constructor(headers: Headers, data: T) {\n super(UnprocessableEntity.status, headers, data);\n }\n static override create<T>(status: number, headers: Headers, data: T) {\n return new this(headers, data);\n }\n}\nexport class TooManyRequests<\n T = { message: string; retryAfter?: string },\n> extends APIError<T, 429> {\n static override status = 429 as const;\n constructor(headers: Headers, data: T) {\n super(TooManyRequests.status, headers, data);\n }\n static override create<T>(status: number, headers: Headers, data: T) {\n return new this(headers, data);\n }\n}\nexport class PayloadTooLarge<T = { message: string }> extends APIError<T, 413> {\n static override status = 413 as const;\n constructor(headers: Headers, data: T) {\n super(PayloadTooLarge.status, headers, data);\n }\n static override create<T>(status: number, headers: Headers, data: T) {\n return new this(headers, data);\n }\n}\nexport class UnsupportedMediaType<T = { message: string }> extends APIError<\n T,\n 415\n> {\n static override status = 415 as const;\n constructor(headers: Headers, data: T) {\n super(UnsupportedMediaType.status, headers, data);\n }\n static override create<T>(status: number, headers: Headers, data: T) {\n return new this(headers, data);\n }\n}\n\n// 5xx Server Errors\nexport class InternalServerError<T = { message: string }> extends APIError<\n T,\n 500\n> {\n static override status = 500 as const;\n constructor(headers: Headers, data: T) {\n super(InternalServerError.status, headers, data);\n }\n static override create<T>(status: number, headers: Headers, data: T) {\n return new this(headers, data);\n }\n}\nexport class NotImplemented<T = { message: string }> extends APIError<T, 501> {\n static override status = 501 as const;\n constructor(headers: Headers, data: T) {\n super(NotImplemented.status, headers, data);\n }\n static override create<T>(status: number, headers: Headers, data: T) {\n return new this(headers, data);\n }\n}\nexport class BadGateway<T = { message: string }> extends APIError<T, 502> {\n static override status = 502 as const;\n constructor(headers: Headers, data: T) {\n super(BadGateway.status, headers, data);\n }\n static override create<T>(status: number, headers: Headers, data: T) {\n return new this(headers, data);\n }\n}\nexport class ServiceUnavailable<\n T = { message: string; retryAfter?: string },\n> extends APIError<T, 503> {\n static override status = 503 as const;\n constructor(headers: Headers, data: T) {\n super(ServiceUnavailable.status, headers, data);\n }\n static override create<T>(status: number, headers: Headers, data: T) {\n return new this(headers, data);\n }\n}\nexport class GatewayTimeout<T = { message: string }> extends APIError<T, 504> {\n static override status = 504 as const;\n constructor(headers: Headers, data: T) {\n super(GatewayTimeout.status, headers, data);\n }\n static override create<T>(status: number, headers: Headers, data: T) {\n return new this(headers, data);\n }\n}\n\nexport type ClientError =\n | BadRequest<unknown>\n | Unauthorized<unknown>\n | PaymentRequired<unknown>\n | Forbidden<unknown>\n | NotFound<unknown>\n | MethodNotAllowed<unknown>\n | NotAcceptable<unknown>\n | Conflict<unknown>\n | Gone<unknown>\n | PreconditionFailed<unknown>\n | PayloadTooLarge<unknown>\n | UnsupportedMediaType<unknown>\n | UnprocessableEntity<unknown>\n | TooManyRequests<unknown>;\n\nexport type ServerError =\n | InternalServerError<unknown>\n | NotImplemented<unknown>\n | BadGateway<unknown>\n | ServiceUnavailable<unknown>\n | GatewayTimeout<unknown>;\n\nexport type ProblematicResponse = ClientError | ServerError;\n\nexport type SuccessfulResponse<T = unknown> =\n Ok<T> | Created<T> | Accepted<T> | NoContent;\n\nexport type RebindSuccessPayload<Resp, New> =\n Resp extends Ok<infer _>\n ? Ok<New>\n : Resp extends Created<infer _>\n ? Created<New>\n : Resp extends Accepted<infer _>\n ? Accepted<New>\n : Resp extends NoContent\n ? NoContent\n : Resp extends SuccessfulResponse<infer _>\n ? APIResponse<New, Resp['status']>\n : never;\n", "import { z } from 'zod';\n\nexport class ParseError<T extends z.ZodType> extends Error {\n public data: z.core.$ZodFlattenedError<z.output<T>, z.core.$ZodIssue>;\n constructor(data: z.core.$ZodFlattenedError<z.output<T>, z.core.$ZodIssue>) {\n super('Validation failed');\n this.name = 'ParseError';\n this.data = data;\n }\n}\n\nexport function parseInput<T extends z.ZodType>(\n schema: T,\n input: unknown,\n): z.infer<T> {\n const result = schema.safeParse(input);\n if (!result.success) {\n const error = z.flattenError(result.error, (issue) => issue);\n throw new ParseError<T>(error);\n }\n return result.data as z.infer<T>;\n}\n", "/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { type Tool, jsonSchema, tool } from 'ai';\nimport { z } from 'zod';\n\nimport {\n type IR,\n type TunedOperationObject,\n forEachOperation,\n loadSpec,\n toIR,\n} from '@sdk-it/spec';\nimport {\n type OperationInput,\n buildInput,\n operationSchema,\n toHttpOutput,\n} from '@sdk-it/typescript';\n\nimport { Dispatcher, fetchType } from './http/dispatcher.ts';\nimport {\n type Interceptor,\n createBaseUrlInterceptor,\n createHeadersInterceptor,\n} from './http/interceptors.ts';\nimport { parseInput } from './http/parser.ts';\nimport {\n type Endpoint,\n type HeadersInit,\n type Method,\n empty,\n formdata,\n json,\n toRequest,\n urlencoded,\n} from './http/request.ts';\nimport * as http from './http/response.ts';\nimport { schemaToZod } from './zod.ts';\n\nconst callable = z.custom<() => string | Promise<string>>(\n (value) => typeof value === 'function',\n);\n\nconst baseUrlSchema = z\n .union([z.string(), callable])\n .transform(async (baseUrl, ctx) => {\n const value = typeof baseUrl === 'function' ? await baseUrl() : baseUrl;\n if (typeof value !== 'string') {\n ctx.addIssue({\n code: 'custom',\n message: 'baseUrl must resolve to a string',\n });\n return z.NEVER;\n }\n return value;\n });\n\nconst optionsSchema = z.object({\n token: z\n .union([z.string(), callable])\n .optional()\n .transform(async (token, ctx) => {\n if (!token) return undefined;\n const value = typeof token === 'function' ? await token() : token;\n if (typeof value !== 'string') {\n ctx.addIssue({\n code: 'custom',\n message: 'token must resolve to a string',\n });\n return z.NEVER;\n }\n return `Bearer ${value}`;\n }),\n fetch: fetchType,\n baseUrl: baseUrlSchema,\n headers: z.record(z.string(), z.string()).optional(),\n});\n\nexport type ClientOptions = z.input<typeof optionsSchema>;\n\nexport function inputToPath(\n operation: TunedOperationObject,\n inputs: Record<string, OperationInput>,\n) {\n const inputHeaders: string[] = [];\n const inputQuery: string[] = [];\n const inputBody: string[] = [];\n const inputParams: string[] = [];\n for (const [name, prop] of Object.entries(inputs)) {\n if (prop.in === 'headers' || prop.in === 'header') {\n inputHeaders.push(name);\n } else if (prop.in === 'query') {\n inputQuery.push(name);\n } else if (prop.in === 'body') {\n inputBody.push(name);\n } else if (prop.in === 'path') {\n inputParams.push(name);\n } else {\n throw new Error(\n `Unknown source ${prop.in} in ${name} ${JSON.stringify(\n prop,\n )} in ${operation.operationId}`,\n );\n }\n }\n\n return {\n inputHeaders,\n inputQuery,\n inputBody,\n inputParams,\n };\n}\n\nexport class Client {\n public options: ClientOptions;\n public schemas: Record<string, any>;\n constructor(options: ClientOptions, schemas: Record<string, any>) {\n this.options = options;\n this.schemas = schemas;\n }\n\n async request(\n endpoint: string,\n input: any,\n options?: { signal?: AbortSignal; headers?: HeadersInit },\n ) {\n const route = this.schemas[endpoint];\n const withDefaultInputs = Object.assign({}, this.#defaultInputs, input);\n const parsedInput = parseInput(route.schema, withDefaultInputs);\n const clientOptions = await optionsSchema.parseAsync(this.options);\n const result = await route.dispatch(parsedInput as never, {\n fetch: clientOptions.fetch,\n interceptors: [\n createHeadersInterceptor(\n await this.#defaultHeaders(),\n options?.headers ?? {},\n ),\n createBaseUrlInterceptor(clientOptions.baseUrl),\n ],\n signal: options?.signal,\n });\n return result;\n }\n\n async #defaultHeaders() {\n const clientOptions = await optionsSchema.parseAsync(this.options);\n return {\n authorization: clientOptions['token'],\n ...clientOptions.headers,\n };\n }\n\n get #defaultInputs() {\n return {};\n }\n\n setOptions(options: Partial<ClientOptions>) {\n this.options = {\n ...this.options,\n ...options,\n };\n }\n}\n\nexport function createRpc(ir: IR, options: Partial<ClientOptions> = {}) {\n const schemas: Record<Endpoint, any> = {};\n forEachOperation(ir, (entry, operation) => {\n const endpoint: Endpoint = `${entry.method.toUpperCase() as Method} ${entry.path}`;\n const details = buildInput(ir, operation);\n const contentTypeMap = {\n json: json,\n urlencoded: urlencoded,\n formdata: formdata,\n empty: empty,\n } as const;\n const outputs = Object.keys(operation.responses).flatMap((status) =>\n toHttpOutput(\n ir,\n operation.operationId,\n status,\n operation.responses[status],\n false,\n ),\n );\n const inputSchema = schemaToZod(\n operationSchema(ir, operation, details.ct),\n ir,\n { required: true },\n );\n schemas[endpoint] = {\n operationId: operation.operationId,\n output: outputs.map((it) => http[it.replace('http.', '') as never]),\n schema: inputSchema,\n async dispatch(\n input: any,\n options: {\n signal?: AbortSignal;\n interceptors: Interceptor[];\n fetch: z.infer<typeof fetchType>;\n },\n ) {\n const dispatcher = new Dispatcher(options.interceptors, options.fetch);\n const serializer =\n contentTypeMap[\n details.outgoingContentType as keyof typeof contentTypeMap\n ] || defaultSerializer(details.outgoingContentType);\n const request = toRequest(\n endpoint,\n serializer(input, inputToPath(operation, details.inputs)),\n );\n return dispatcher.send(request, this.output, options.signal);\n },\n };\n });\n\n return new Client(\n {\n ...options,\n baseUrl: options?.baseUrl ?? ir.servers[0].url,\n },\n schemas,\n );\n}\n\nexport async function rpc(\n openapi: string,\n options?: Partial<ClientOptions>,\n): Promise<Client> {\n const spec = await loadSpec(openapi);\n const ir = await toIR({\n spec,\n responses: { flattenErrorResponses: true },\n });\n return createRpc(ir, options);\n}\n\nexport async function toAgents(\n openapi: string,\n options: ClientOptions & {\n useTools?: 'defined';\n },\n) {\n const spec = await loadSpec(openapi);\n const ir = await toIR({\n spec,\n responses: { flattenErrorResponses: true },\n });\n const client = createRpc(ir, options);\n const groups: Record<\n string,\n {\n tools: Record<string, Tool>;\n instructions: string;\n handoffDescription: string;\n displayName: string;\n name: string;\n }\n > = {};\n\n forEachOperation(ir, (entry, operation) => {\n const tagDef = ir.tags.find((tag) => tag.name === entry.tag);\n if (!tagDef) {\n console.warn(`No tag details found for tag: ${entry.tag}`);\n return;\n }\n\n groups[entry.tag] ??= {\n tools: {},\n instructions: '',\n displayName: '',\n name: '',\n handoffDescription: '',\n };\n const endpoint = `${entry.method.toUpperCase()} ${entry.path}`;\n const toolInfo = operation['x-tool'];\n\n let includeTool = true;\n if (options.useTools === 'defined') {\n includeTool = !!toolInfo;\n }\n if (includeTool) {\n groups[entry.tag].tools[toolInfo?.name || operation['x-fn-name']] = tool({\n type: 'function',\n description:\n toolInfo?.description || operation.description || operation.summary,\n inputSchema: toToolSchema(client.schemas[endpoint].schema),\n execute: async (input) => {\n const response = await client.request(endpoint, input);\n return JSON.stringify(response);\n },\n });\n }\n groups[entry.tag].handoffDescription = tagDef['x-handoff-description'];\n groups[entry.tag].instructions = tagDef['x-instructions'];\n groups[entry.tag].name = tagDef.name;\n groups[entry.tag].displayName = tagDef['x-name'];\n });\n const agents: Record<string, any> = {};\n for (const [\n agentName,\n { tools, instructions, displayName },\n ] of Object.entries(groups)) {\n agents[agentName] = {\n name: displayName,\n instructions,\n tools,\n };\n }\n\n return agents;\n}\n\nfunction defaultSerializer(ct: string) {\n throw new Error(`Unsupported content type: ${ct}`);\n}\n\nconst TOOL_COERCE_MARKER = 'x-sdkit-tool-coerce';\n\n/**\n * Rebuild JSON tool-call values into what the zod schema validates: date\n * params are z.date()/z.coerce.date(), which JSON cannot carry. Without this,\n * every tool call shaped exactly as the advertised schema instructs would be\n * rejected by the validator.\n */\nfunction coerceToolValue(value: any, schema: any): any {\n if (\n !schema ||\n typeof schema !== 'object' ||\n value === null ||\n value === undefined\n ) {\n return value;\n }\n const marker = schema[TOOL_COERCE_MARKER];\n if (marker === 'date' && typeof value === 'string') {\n const date = new Date(value);\n return Number.isNaN(date.getTime()) ? value : date;\n }\n if (Array.isArray(value)) {\n if (Array.isArray(schema.items)) {\n return value.map((item, index) =>\n coerceToolValue(item, schema.items[index] ?? schema.additionalItems),\n );\n }\n if (schema.items) {\n return value.map((item) => coerceToolValue(item, schema.items));\n }\n return value;\n }\n if (\n typeof value === 'object' &&\n (schema.properties || schema.additionalProperties)\n ) {\n const out: Record<string, any> = { ...value };\n for (const [key, propValue] of Object.entries(out)) {\n const propSchema =\n schema.properties?.[key] ??\n (typeof schema.additionalProperties === 'object'\n ? schema.additionalProperties\n : undefined);\n if (propSchema) out[key] = coerceToolValue(propValue, propSchema);\n }\n return out;\n }\n for (const key of ['anyOf', 'oneOf', 'allOf']) {\n if (Array.isArray(schema[key])) {\n for (const member of schema[key]) {\n const coerced = coerceToolValue(value, member);\n if (coerced !== value) return coerced;\n }\n }\n }\n return value;\n}\n\n/**\n * The ai SDK serializes zod schemas with `unrepresentable: 'throw'`, so a\n * schema containing date/custom/transform (coerce-date, binary, x-prefix\n * inputs) would crash every agent invocation. Precompute a serializable JSON\n * schema and keep argument validation on the zod schema.\n */\nfunction toToolSchema(schema: z.ZodType) {\n const marked = z.toJSONSchema(schema, {\n target: 'draft-7',\n io: 'input',\n unrepresentable: 'any',\n override(ctx) {\n const def = ctx.zodSchema._zod.def;\n const json = ctx.jsonSchema as Record<string, unknown>;\n if (def.type === 'date') {\n json.type = 'string';\n json.format = 'date-time';\n json[TOOL_COERCE_MARKER] = 'date';\n }\n },\n }) as Record<string, unknown>;\n const advertised = JSON.parse(\n JSON.stringify(marked, (key, value) =>\n key === TOOL_COERCE_MARKER ? undefined : value,\n ),\n );\n return jsonSchema(advertised as never, {\n validate: (value) => {\n const coerced = coerceToolValue(value, marked);\n const result = schema.safeParse(coerced);\n // Return the input-form value, not result.data: Client.request runs\n // parseInput itself, so returning the parsed output here would apply\n // schema transforms twice (e.g. x-prefix -> 'Bearer Bearer <token>').\n return result.success\n ? { success: true, value: coerced }\n : { success: false, error: result.error };\n },\n });\n}\n", "import type { ReferenceObject, SchemaObject } from 'openapi3-ts/oas31';\nimport { type ZodType, z } from 'zod';\n\nimport { followRef, isEmpty, isRef } from '@sdk-it/core';\nimport type { IR } from '@sdk-it/spec';\n\n// z.iso.time() rejects RFC 3339 zone suffixes ('10:30:00Z', '10:30:00+02:00'),\n// which JSON Schema's format: time allows. Accept both local and\n// zone-qualified times.\nconst isoTime = z\n .string()\n .regex(\n /^([01]\\d|2[0-3]):[0-5]\\d(:[0-5]\\d(\\.\\d+)?)?(Z|[+-]([01]\\d|2[0-3]):[0-5]\\d)?$/,\n );\n\n/**\n * Convert an OpenAPI (JSON Schema style) object into a runtime Zod schema,\n */\nexport class RuntimeZodConverter {\n readonly #spec: IR;\n\n constructor(spec: IR) {\n this.#spec = spec;\n }\n\n #object(schema: SchemaObject): ZodType {\n const properties = schema.properties || {};\n const required = schema.required || [];\n\n // Convert each property\n const shape: Record<string, ZodType> = {};\n\n for (const [key, propSchema] of Object.entries(properties)) {\n const isRequired = required.includes(key);\n shape[key] = this.handle(propSchema, isRequired);\n }\n\n let result = z.object(shape);\n\n // Handle additional properties\n if (schema.additionalProperties) {\n if (typeof schema.additionalProperties === 'object') {\n const addPropSchema = this.handle(schema.additionalProperties, true);\n result = result.catchall(addPropSchema);\n } else if (schema.additionalProperties === true) {\n result = result.catchall(z.unknown());\n }\n }\n\n return result;\n }\n\n #array(schema: SchemaObject): ZodType {\n const { items } = schema;\n if (!items) {\n let result: ZodType = z.array(z.unknown());\n\n // Apply default if present\n if (schema.default !== undefined) {\n result = z.array(z.unknown()).default(schema.default);\n }\n\n return result;\n }\n\n // If items is an array => tuple\n if (Array.isArray(items)) {\n const tupleItems = items.map((sub) => this.handle(sub, true));\n return z.tuple(tupleItems as [ZodType, ...ZodType[]]);\n }\n\n // If items is a single schema => standard z.array(...)\n const itemsSchema = this.handle(items, true);\n let result: ZodType = z.array(itemsSchema);\n\n // Apply default if present\n if (schema.default !== undefined) {\n result = z.array(itemsSchema).default(schema.default);\n }\n\n return result;\n }\n\n #ref($ref: string): ZodType {\n const resolvedSchema = followRef(this.#spec, $ref);\n const zodSchema = this.handle(resolvedSchema, true);\n return zodSchema;\n }\n\n #toIntersection(schemas: ZodType[]): ZodType {\n const [left, ...right] = schemas;\n if (!right.length) {\n return left;\n }\n return z.intersection(left, this.#toIntersection(right));\n }\n\n allOf(schemas: (SchemaObject | ReferenceObject)[]): ZodType {\n const allOfSchemas = schemas.map((sub) => this.handle(sub, true));\n if (allOfSchemas.length === 0) {\n return z.unknown();\n }\n if (allOfSchemas.length === 1) {\n return allOfSchemas[0];\n }\n return this.#toIntersection(allOfSchemas);\n }\n\n anyOf(schemas: (SchemaObject | ReferenceObject)[]): ZodType {\n const anyOfSchemas = schemas.map((sub) => this.handle(sub, true));\n if (anyOfSchemas.length === 1) {\n return anyOfSchemas[0];\n }\n return z.union(anyOfSchemas);\n }\n\n oneOf(schemas: (SchemaObject | ReferenceObject)[]): ZodType {\n const oneOfSchemas = schemas.map((sub) => this.handle(sub, true));\n if (oneOfSchemas.length === 1) {\n return oneOfSchemas[0];\n }\n // oneOf is exclusive-or per JSON Schema; z.xor rejects values matching\n // more than one branch, unlike z.union's anyOf semantics.\n return z.xor(oneOfSchemas);\n }\n\n enum(type: string, values: unknown[]): ZodType {\n if (values.length === 1) {\n return z.literal(values[0] as z.core.util.Literal);\n }\n // z.enum only supports string values; zod 4 silently filters numeric\n // entries as reverse mappings, so any non-string enum must be a literal.\n if (values.every((value) => typeof value === 'string')) {\n return z.enum(values as string[]);\n }\n return z.literal(values as z.core.util.Literal[]);\n }\n\n /**\n * Handle a `string` schema with possible format keywords (JSON Schema).\n */\n string(schema: SchemaObject): ZodType {\n if (schema.contentEncoding === 'binary') {\n // Bare z.custom (no predicate) on purpose: referencing Blob as a\n // runtime value throws ReferenceError in environments without the\n // global, and cross-realm/polyfill Blobs fail instanceof checks\n // (see e62c4e1 and docs/recipes/file-upload.md). Bad inputs surface\n // in fetch/FormData instead.\n return z.custom<Blob>();\n }\n\n const coerced = schema['x-zod-type'] === 'coerce-string';\n const base = coerced ? z.coerce.string() : z.string();\n const withFormat = (format: ZodType<string, string>): ZodType =>\n coerced ? base.pipe(format) : format;\n\n switch (schema.format) {\n case 'date-time':\n case 'datetime':\n if (schema['x-zod-type'] === 'coerce-date') {\n return z.coerce.date();\n } else if (schema['x-zod-type'] === 'date') {\n return z.date();\n } else {\n // RFC 3339 date-time allows numeric zone offsets, which\n // z.iso.datetime() rejects by default.\n return withFormat(z.iso.datetime({ offset: true }));\n }\n case 'date':\n return withFormat(z.iso.date());\n case 'time':\n return withFormat(isoTime);\n case 'email':\n return withFormat(z.email());\n case 'uuid':\n // z.guid() preserves zod v3's looser .uuid() semantics; z.uuid()\n // enforces RFC 9562 variant bits and rejects Microsoft-style GUIDs.\n return withFormat(z.guid());\n case 'url':\n case 'uri':\n return withFormat(z.url());\n case 'ipv4':\n return withFormat(z.ipv4());\n case 'ipv6':\n return withFormat(z.ipv6());\n case 'cidrv4':\n return withFormat(z.cidrv4());\n case 'cidrv6':\n return withFormat(z.cidrv6());\n case 'byte':\n case 'binary':\n // Bare z.custom on purpose \u2014 see the contentEncoding branch above.\n return z.custom<Blob>();\n default:\n // No special format\n return base;\n }\n }\n\n /**\n * Handle number/integer constraints from OpenAPI/JSON Schema.\n */\n #number(schema: SchemaObject): ZodType {\n let base =\n schema['x-zod-type'] === 'coerce-number' ? z.coerce.number() : z.number();\n\n if (schema.type === 'integer' || schema.format === 'int32') {\n base = base.int();\n }\n\n // Exclusive bounds\n if (typeof schema.exclusiveMinimum === 'number') {\n base = base.gt(schema.exclusiveMinimum);\n }\n\n if (typeof schema.exclusiveMaximum === 'number') {\n base = base.lt(schema.exclusiveMaximum);\n }\n\n // Inclusive bounds\n if (typeof schema.minimum === 'number') {\n base = base.min(schema.minimum);\n }\n\n if (typeof schema.maximum === 'number') {\n base = base.max(schema.maximum);\n }\n\n // multipleOf\n if (typeof schema.multipleOf === 'number') {\n const multipleOf = schema.multipleOf;\n return base.refine(\n (val) => Number.isInteger(Number(val) / multipleOf),\n `Must be a multiple of ${multipleOf}`,\n );\n }\n\n return base;\n }\n\n /**\n * Convert a basic type to Zod schema with proper chaining\n */\n normal(\n type: string,\n schema: SchemaObject,\n required = false,\n nullable = false,\n ): ZodType {\n let base: ZodType;\n\n switch (type) {\n case 'string':\n base = this.string(schema);\n break;\n case 'number':\n case 'integer':\n base = this.#number(schema);\n break;\n case 'boolean':\n // z.stringbool parses boolean-ish strings ('true'/'1'/'yes'...)\n // semantically; zod's Boolean(x) coercion turns 'false' into true.\n base =\n schema['x-zod-type'] === 'coerce-boolean'\n ? z.union([z.boolean(), z.stringbool()])\n : z.boolean();\n break;\n case 'object':\n base = this.#object(schema);\n break;\n case 'array':\n base = this.#array(schema);\n break;\n case 'null':\n base = z.null();\n break;\n default:\n base = z.unknown();\n break;\n }\n\n // Apply nullable to the base type before optional/default wrapping.\n if (nullable) {\n base = base.nullable();\n }\n\n if (!required) {\n base = base.optional();\n }\n\n if (schema.default !== undefined) {\n const defaultValue =\n (schema['x-zod-type'] === 'date' ||\n schema['x-zod-type'] === 'coerce-date') &&\n schema.default\n ? new Date(schema.default)\n : schema.default;\n base = base.default(defaultValue);\n }\n\n // Handle x-prefix transform (this should be last)\n if (schema['x-prefix']) {\n const prefix = schema['x-prefix'];\n if (!required) {\n base = base.transform((val) => (val ? `${prefix}${val}` : undefined));\n } else {\n base = base.transform((val) => `${prefix}${val}`);\n }\n }\n\n return base;\n }\n\n handle(schema: SchemaObject | ReferenceObject, required = false): ZodType {\n // Handle reference\n if (isRef(schema)) {\n let result = this.#ref(schema.$ref);\n if (!required) {\n result = result.optional();\n }\n if (schema.description) {\n result = result.describe(schema.description);\n }\n return result;\n }\n\n let result: ZodType = z.unknown();\n\n if (schema.not && isEmpty(schema.not)) {\n result = required ? z.never() : z.never().optional();\n }\n\n // Handle allOf \u2192 intersection\n else if (schema.allOf && Array.isArray(schema.allOf)) {\n result = this.allOf(schema.allOf);\n if (!required) {\n result = result.optional();\n }\n }\n\n // anyOf \u2192 union\n else if (schema.anyOf && Array.isArray(schema.anyOf)) {\n result = this.anyOf(schema.anyOf);\n if (!required) {\n result = result.optional();\n }\n }\n\n // oneOf \u2192 union\n else if (\n schema.oneOf &&\n Array.isArray(schema.oneOf) &&\n schema.oneOf.length\n ) {\n result = this.oneOf(schema.oneOf);\n if (!required) {\n result = result.optional();\n }\n }\n\n // enum\n else if (schema.enum && Array.isArray(schema.enum)) {\n result = this.enum(schema.type as string, schema.enum);\n\n // Apply default if it exists and is in the enum. Only for required\n // schemas: the optional wrapper below must keep shadowing the default\n // (zod v3 semantics), while zod v4 would surface it through .optional().\n if (\n schema.default !== undefined &&\n schema.enum.includes(schema.default) &&\n required\n ) {\n result = result.default(schema.default);\n }\n\n if (!required) {\n result = result.optional();\n }\n } else {\n // Parse types (can be string or array in OpenAPI 3.1)\n const types = Array.isArray(schema.type)\n ? schema.type\n : schema.type\n ? [schema.type]\n : [];\n\n // Backward compatibility with OpenAPI 3.0 nullable\n if ('nullable' in schema && schema.nullable) {\n types.push('null');\n } else if (schema.default === null) {\n types.push('null');\n }\n\n // If no explicit \"type\", fallback to unknown\n if (!types.length) {\n result = required ? z.unknown() : z.unknown().optional();\n }\n\n // Handle union types\n else if (types.length > 1) {\n const realTypes = types.filter((t) => t !== 'null');\n if (realTypes.length === 1 && types.includes('null')) {\n // Single real type + \"null\"\n result = this.normal(realTypes[0], schema, required, true);\n } else {\n // Multiple different types, build a union\n result = z.union(types.map((t) => this.normal(t, schema, true)));\n if (!required) {\n result = result.optional();\n }\n }\n } else {\n result = this.normal(types[0], schema, required, false);\n }\n }\n\n if (schema.description) {\n result = result.describe(schema.description);\n }\n\n return result;\n }\n}\n\n/**\n * Convert a runtime SchemaObject to a Zod schema\n */\nexport function schemaToZod(\n schema: SchemaObject,\n spec: IR,\n options?: {\n required?: boolean;\n },\n): ZodType {\n const converter = new RuntimeZodConverter(spec);\n return converter.handle(schema, options?.required ?? false);\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["import z from 'zod';\n\nimport { type Interceptor } from '../http/interceptors.ts';\nimport { type RequestConfig } from '../http/request.ts';\nimport { buffered } from './parse-response.ts';\nimport {\n APIError,\n APIResponse,\n type RebindSuccessPayload,\n type SuccessfulResponse,\n} from './response.ts';\nimport { type SSEListener } from './sse.ts';\n\nexport type Unionize<T> = T extends [infer Single extends OutputType]\n ? InstanceType<Single>\n : T extends readonly [...infer Tuple extends OutputType[]]\n ? { [I in keyof Tuple]: InstanceType<Tuple[I]> }[number]\n : never;\n\nexport type InstanceType<T> =\n T extends Type<infer U>\n ? U\n : T extends { type: Type<infer U> }\n ? U\n : T extends Array<unknown>\n ? Unionize<T>\n : never;\n\ntype ResponseData<T extends OutputType[]> =\n Extract<InstanceType<T>, SuccessfulResponse> extends SuccessfulResponse<\n infer P\n >\n ? P\n : unknown;\n\ntype ResponseMapper<T extends OutputType[], R> = (data: ResponseData<T>) => R;\n\nexport interface Type<T> {\n new (...args: any[]): T;\n}\nexport type Parser = (\n response: Response,\n) => Promise<unknown> | ReadableStream<any> | SSEListener;\nexport type OutputType =\n Type<APIResponse> | { parser: Parser; type: Type<APIResponse> };\n\n// Bare z.custom (no predicate) on purpose: Request/Response from another\n// realm (undici vs global fetch) fail instanceof checks. The output is\n// typed as a Promise directly \u2014 zod 4 deprecated z.promise.\nexport const fetchType = z\n .function({\n input: [z.custom<Request>()],\n output: z.custom<Promise<Response>>(),\n })\n .optional();\n\nexport async function parse<T extends OutputType[]>(\n outputs: T,\n response: Response,\n): Promise<Extract<Unionize<T>, SuccessfulResponse<unknown>>>;\nexport async function parse<T extends OutputType[], R>(\n outputs: T,\n response: Response,\n mapper: ResponseMapper<T, R>,\n): Promise<\n RebindSuccessPayload<Extract<Unionize<T>, SuccessfulResponse<unknown>>, R>\n>;\nexport async function parse<T extends OutputType[], R = ResponseData<T>>(\n outputs: T,\n response: Response,\n mapper?: ResponseMapper<T, R>,\n) {\n let output: typeof APIResponse | null = null;\n let parser: Parser = buffered;\n for (const outputType of outputs) {\n if ('parser' in outputType) {\n if (isTypeOf(outputType.type, APIResponse)) {\n if (response.status === outputType.type.status) {\n parser = outputType.parser;\n output = outputType.type;\n break;\n }\n }\n } else if (isTypeOf(outputType, APIResponse)) {\n if (response.status === outputType.status) {\n output = outputType;\n break;\n }\n }\n }\n\n if (response.ok) {\n const data = (await parser(response)) as ResponseData<T>;\n const mapped = mapper ? mapper(data) : data;\n const apiresponse = (output || APIResponse).create(\n response.status,\n response.headers,\n mapped,\n );\n\n return apiresponse as Extract<Unionize<T>, SuccessfulResponse<unknown>>;\n }\n\n throw (output || APIError).create(\n response.status,\n response.headers,\n await parser(response),\n );\n}\n\nexport function isTypeOf<T extends Type<APIResponse>>(\n instance: any,\n baseType: T,\n): instance is T {\n if (instance === baseType) {\n return true;\n }\n const prototype = Object.getPrototypeOf(instance);\n if (prototype === null) {\n return false;\n }\n return isTypeOf(prototype, baseType);\n}\n\nexport class Dispatcher {\n #interceptors: Interceptor[] = [];\n #fetch: z.infer<typeof fetchType>;\n constructor(interceptors: Interceptor[], fetch?: z.infer<typeof fetchType>) {\n this.#interceptors = interceptors;\n this.#fetch = fetch;\n }\n\n async send<T extends OutputType[]>(\n config: RequestConfig,\n outputs: T,\n signal?: AbortSignal,\n ): Promise<Extract<Unionize<T>, SuccessfulResponse<unknown>>>;\n async send<T extends OutputType[], R>(\n config: RequestConfig,\n outputs: T,\n signal: AbortSignal | undefined,\n mapper: ResponseMapper<T, R>,\n ): Promise<\n RebindSuccessPayload<Extract<Unionize<T>, SuccessfulResponse<unknown>>, R>\n >;\n async send<T extends OutputType[], R = ResponseData<T>>(\n config: RequestConfig,\n outputs: T,\n signal?: AbortSignal,\n mapper?: ResponseMapper<T, R>,\n ) {\n for (const interceptor of this.#interceptors) {\n if (interceptor.before) {\n config = await interceptor.before(config);\n }\n }\n\n const init =\n signal === undefined ? config.init : { ...config.init, signal };\n\n let response = await (this.#fetch ?? fetch)(new Request(config.url, init));\n\n for (let i = this.#interceptors.length - 1; i >= 0; i--) {\n const interceptor = this.#interceptors[i];\n if (interceptor.after) {\n response = await interceptor.after(response.clone());\n }\n }\n\n if (mapper) {\n return await parse(outputs, response, mapper);\n }\n return await parse(outputs, response);\n }\n}\n", "import type { HeadersInit, RequestConfig } from './request.ts';\n\nexport interface Interceptor {\n before?: (config: RequestConfig) => Promise<RequestConfig> | RequestConfig;\n after?: (response: Response) => Promise<Response> | Response;\n}\n\nexport const createHeadersInterceptor = (\n headers: Record<string, string | undefined>,\n requestHeaders: HeadersInit,\n): Interceptor => {\n return {\n before({ init, url }) {\n // Priority Levels\n // 1. Headers Input\n // 2. Request Headers\n // 3. Default Headers\n\n for (const [key, value] of new Headers(requestHeaders)) {\n // Only set the header if it doesn't already exist and has a value\n // even though these headers are passed at operation level\n // still they are lower priority compared to the headers input\n if (value !== undefined && !init.headers.has(key)) {\n init.headers.set(key, value);\n }\n }\n\n for (const [key, value] of Object.entries(headers)) {\n // Only set the header if it doesn't already exist and has a value\n if (value !== undefined && !init.headers.has(key)) {\n init.headers.set(key, value);\n }\n }\n\n return { init, url };\n },\n };\n};\n\nexport const createBaseUrlInterceptor = (baseUrl: string): Interceptor => {\n return {\n before({ init, url }) {\n if (url.protocol === 'local:') {\n return {\n init,\n url: new URL(url.href.replace('local://', baseUrl)),\n };\n }\n return { init, url };\n },\n };\n};\n\nexport const logInterceptor: Interceptor = {\n before({ url, init }) {\n console.log('Request:', { url, init });\n return { url, init };\n },\n after(response) {\n console.log('Response:', response);\n return response;\n },\n};\n\n/**\n * Creates an interceptor that logs detailed information about requests and responses.\n * @param options Configuration options for the logger\n * @returns An interceptor object with before and after handlers\n */\nexport const createDetailedLogInterceptor = (options?: {\n logLevel?: 'debug' | 'info' | 'warn' | 'error';\n includeRequestBody?: boolean;\n includeResponseBody?: boolean;\n}) => {\n const logLevel = options?.logLevel || 'info';\n const includeRequestBody = options?.includeRequestBody || false;\n const includeResponseBody = options?.includeResponseBody || false;\n\n return {\n async before(request: Request) {\n const logData = {\n url: request.url,\n method: request.method,\n contentType: request.headers.get('Content-Type'),\n headers: Object.fromEntries([...request.headers.entries()]),\n };\n\n console[logLevel]('\uD83D\uDE80 Outgoing Request:', logData);\n\n if (includeRequestBody) {\n try {\n // Clone the request to avoid consuming the body stream\n const clonedRequest = request.clone();\n if (\n clonedRequest.headers\n .get('Content-Type')\n ?.includes('application/json')\n ) {\n const body = await clonedRequest.json().catch(() => null);\n console[logLevel]('Request Body:', body);\n } else {\n const body = await clonedRequest.text().catch(() => null);\n console[logLevel]('Request Body:', body);\n }\n } catch (error) {\n console.error('Could not log request body:', error);\n }\n }\n\n return request;\n },\n\n async after(response: Response) {\n const logData = {\n status: response.status,\n statusText: response.statusText,\n url: response.url,\n headers: Object.fromEntries([...response.headers.entries()]),\n };\n\n console[logLevel]('\uD83D\uDCE5 Incoming Response:', logData);\n\n if (includeResponseBody && response.body) {\n try {\n // Clone the response to avoid consuming the body stream\n const clonedResponse = response.clone();\n if (\n clonedResponse.headers\n .get('Content-Type')\n ?.includes('application/json')\n ) {\n const body = await clonedResponse.json().catch(() => null);\n console[logLevel]('Response Body:', body);\n } else {\n const body = await clonedResponse.text().catch(() => null);\n if (body) {\n console[logLevel](\n 'Response Body:',\n body.substring(0, 500) + (body.length > 500 ? '...' : ''),\n );\n } else {\n console[logLevel]('No response body');\n }\n }\n } catch (error) {\n console.error('Could not log response body:', error);\n }\n }\n\n return response;\n },\n };\n};\n", "type Init = Omit<RequestInit, 'headers'> & { headers: Headers };\nexport type RequestConfig = { init: Init; url: URL };\nexport type Method =\n 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'HEAD' | 'OPTIONS';\nexport type ContentType =\n 'xml' | 'json' | 'urlencoded' | 'multipart' | 'formdata';\nexport type HeadersInit = [string, string][] | Record<string, string>;\nexport type Endpoint =\n `${ContentType} ${Method} ${string}` | `${Method} ${string}`;\n\nexport type BodyInit =\n ArrayBuffer | Blob | FormData | URLSearchParams | null | string;\n\nfunction template(\n templateString: string,\n templateVariables: Record<string, any>,\n): string {\n const nargs = /{([0-9a-zA-Z_]+)}/g;\n return templateString.replace(nargs, (match, key: string, index: number) => {\n // Handle escaped double braces\n if (\n templateString[index - 1] === '{' &&\n templateString[index + match.length] === '}'\n ) {\n return key;\n }\n\n const result = key in templateVariables ? templateVariables[key] : null;\n return result === null || result === undefined ? '' : String(result);\n });\n}\n\ntype Input = Record<string, any>;\n\n// Validated inputs can carry Date (coerce-date) values; String(new Date())\n// yields a local-time RFC 2822 string, so serialize Dates as ISO 8601.\nfunction toWireValue(value: any): string {\n return value instanceof Date ? value.toISOString() : String(value);\n}\n\ntype Props = {\n inputHeaders: string[];\n inputQuery: string[];\n inputBody: string[];\n inputParams: string[];\n};\n\nabstract class Serializer {\n protected input: Input;\n protected props: Props;\n\n constructor(input: Input, props: Props) {\n this.input = input;\n this.props = props;\n }\n\n abstract getBody(): BodyInit | null;\n abstract getHeaders(): Record<string, string>;\n serialize(path: string): Serialized {\n const params = this.props.inputParams.reduce<Record<string, any>>(\n (acc, key) => {\n acc[key] = this.input[key];\n return acc;\n },\n {},\n );\n const url = new URL(template(path, params), `local://`);\n\n const headers: Record<string, string> = { ...this.getHeaders() };\n for (const header of this.props.inputHeaders) {\n const value = this.input[header];\n if (value !== undefined) {\n headers[header] = toWireValue(value);\n }\n }\n\n for (const key of this.props.inputQuery) {\n const value = this.input[key];\n if (value !== undefined) {\n if (Array.isArray(value)) {\n for (const item of value) {\n url.searchParams.append(key, toWireValue(item));\n }\n } else {\n url.searchParams.set(key, toWireValue(value));\n }\n }\n }\n\n return {\n body: this.getBody(),\n url,\n headers,\n };\n }\n}\n\ninterface Serialized {\n body: BodyInit | null;\n headers: Record<string, string>;\n url: URL;\n}\n\nclass JsonSerializer extends Serializer {\n getBody(): BodyInit | null {\n const body: Record<string, any> = {};\n if (\n this.props.inputBody.length === 1 &&\n this.props.inputBody[0] === '$body'\n ) {\n return JSON.stringify(this.input.$body);\n }\n\n for (const prop of this.props.inputBody) {\n body[prop] = this.input[prop];\n }\n return JSON.stringify(body);\n }\n getHeaders(): Record<string, string> {\n return {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n };\n }\n}\n\nclass UrlencodedSerializer extends Serializer {\n getBody(): BodyInit | null {\n const body = new URLSearchParams();\n for (const prop of this.props.inputBody) {\n body.set(prop, toWireValue(this.input[prop]));\n }\n return body;\n }\n getHeaders(): Record<string, string> {\n return {\n 'Content-Type': 'application/x-www-form-urlencoded',\n Accept: 'application/json',\n };\n }\n}\n\nclass EmptySerializer extends Serializer {\n getBody(): BodyInit | null {\n return null;\n }\n getHeaders(): Record<string, string> {\n return {};\n }\n}\n\nclass FormDataSerializer extends Serializer {\n getBody(): BodyInit | null {\n const body = new FormData();\n for (const prop of this.props.inputBody) {\n body.append(prop, this.input[prop]);\n }\n return body;\n }\n getHeaders(): Record<string, string> {\n return {\n Accept: 'application/json',\n };\n }\n}\n\nexport function json(input: Input, props: Props) {\n return new JsonSerializer(input, props);\n}\nexport function urlencoded(input: Input, props: Props) {\n return new UrlencodedSerializer(input, props);\n}\nexport function empty(input: Input, props: Props) {\n return new EmptySerializer(input, props);\n}\nexport function formdata(input: Input, props: Props) {\n return new FormDataSerializer(input, props);\n}\n\nexport function toRequest<T extends Endpoint>(\n endpoint: T,\n serializer: Serializer,\n): RequestConfig {\n const [method, path] = endpoint.split(' ');\n const input = serializer.serialize(path);\n return {\n url: input.url,\n init: {\n method: method,\n headers: new Headers(input.headers),\n body: method === 'GET' ? undefined : input.body,\n },\n };\n}\n", "import { parse } from 'fast-content-type-parse';\n\nfunction isBinaryContentType(contentType: string) {\n const type = contentType.toLowerCase();\n if (type.startsWith('image/')) {\n return true;\n }\n if (type.startsWith('audio/')) {\n return true;\n }\n if (type.startsWith('video/')) {\n return true;\n }\n switch (type) {\n case 'application/pdf':\n case 'application/zip':\n case 'application/gzip':\n case 'application/x-7z-compressed':\n case 'application/x-tar':\n case 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet':\n case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document':\n case 'application/vnd.openxmlformats-officedocument.presentationml.presentation':\n case 'application/vnd.ms-excel':\n case 'application/vnd.ms-powerpoint':\n case 'application/msword':\n case 'application/octet-stream':\n return true;\n default:\n return false;\n }\n}\n\nexport function chunked(response: Response) {\n return response.body!;\n}\n\nexport async function buffered(response: Response) {\n // Statuses that, per the HTTP spec, carry no message body. These responses\n // usually omit Content-Type entirely, so this must run before the guard below.\n if (\n response.status === 204 ||\n response.status === 205 ||\n response.status === 304\n ) {\n return null;\n }\n\n const contentType = response.headers.get('Content-Type');\n if (!contentType) {\n throw new Error('Content-Type header is missing');\n }\n\n const { type } = parse(contentType);\n if (isBinaryContentType(type)) {\n return response.blob();\n }\n if (type.startsWith('text/')) {\n return response.text();\n }\n switch (type) {\n case 'application/json':\n return response.json();\n case 'application/xml':\n return response.text();\n case 'application/x-www-form-urlencoded': {\n const text = await response.text();\n return Object.fromEntries(new URLSearchParams(text));\n }\n case 'multipart/form-data':\n return response.formData();\n default:\n throw new Error(`Unsupported content type: ${contentType}`);\n }\n}\n", "export class APIResponse<Body = unknown, Status extends number = number> {\n static readonly status: number;\n readonly status: Status;\n data: Body;\n readonly headers: Headers;\n\n constructor(status: Status, headers: Headers, data: Body) {\n this.status = status;\n this.headers = headers;\n this.data = data;\n }\n\n static create<Body = unknown>(status: number, headers: Headers, data: Body) {\n return new this(status, headers, data);\n }\n}\n\nexport class APIError<Body, Status extends number = number> extends APIResponse<\n Body,\n Status\n> {\n static override create<T>(status: number, headers: Headers, data: T) {\n return new this(status, headers, data);\n }\n}\n\n// 2xx Success\nexport class Ok<T> extends APIResponse<T, 200> {\n static override readonly status = 200 as const;\n constructor(headers: Headers, data: T) {\n super(Ok.status, headers, data);\n }\n static override create<T>(status: number, headers: Headers, data: T) {\n return new this(headers, data);\n }\n}\n\nexport class Created<T> extends APIResponse<T, 201> {\n static override status = 201 as const;\n constructor(headers: Headers, data: T) {\n super(Created.status, headers, data);\n }\n static override create<T>(status: number, headers: Headers, data: T) {\n return new this(headers, data);\n }\n}\nexport class Accepted<T> extends APIResponse<T, 202> {\n static override status = 202 as const;\n constructor(headers: Headers, data: T) {\n super(Accepted.status, headers, data);\n }\n static override create<T>(status: number, headers: Headers, data: T) {\n return new this(headers, data);\n }\n}\nexport class NoContent extends APIResponse<never, 204> {\n static override status = 204 as const;\n constructor(headers: Headers) {\n super(NoContent.status, headers, null as never);\n }\n static override create(\n status: number,\n headers: Headers,\n _data?: unknown,\n ): NoContent {\n return new this(headers);\n }\n}\n\n// 4xx Client Errors\nexport class BadRequest<T> extends APIError<T, 400> {\n static override status = 400 as const;\n constructor(headers: Headers, data: T) {\n super(BadRequest.status, headers, data);\n }\n static override create<T>(status: number, headers: Headers, data: T) {\n return new this(headers, data);\n }\n}\nexport class Unauthorized<T = { message: string }> extends APIError<T, 401> {\n static override status = 401 as const;\n constructor(headers: Headers, data: T) {\n super(Unauthorized.status, headers, data);\n }\n static override create<T>(status: number, headers: Headers, data: T) {\n return new this(headers, data);\n }\n}\nexport class PaymentRequired<T = { message: string }> extends APIError<T, 402> {\n static override status = 402 as const;\n constructor(headers: Headers, data: T) {\n super(PaymentRequired.status, headers, data);\n }\n static override create<T>(status: number, headers: Headers, data: T) {\n return new this(headers, data);\n }\n}\nexport class Forbidden<T = { message: string }> extends APIError<T, 403> {\n static override status = 403 as const;\n constructor(headers: Headers, data: T) {\n super(Forbidden.status, headers, data);\n }\n static override create<T>(status: number, headers: Headers, data: T) {\n return new this(headers, data);\n }\n}\nexport class NotFound<T = { message: string }> extends APIError<T, 404> {\n static override status = 404 as const;\n constructor(headers: Headers, data: T) {\n super(NotFound.status, headers, data);\n }\n static override create<T>(status: number, headers: Headers, data: T) {\n return new this(headers, data);\n }\n}\nexport class MethodNotAllowed<T = { message: string }> extends APIError<\n T,\n 405\n> {\n static override status = 405 as const;\n constructor(headers: Headers, data: T) {\n super(MethodNotAllowed.status, headers, data);\n }\n static override create<T>(status: number, headers: Headers, data: T) {\n return new this(headers, data);\n }\n}\nexport class NotAcceptable<T = { message: string }> extends APIError<T, 406> {\n static override status = 406 as const;\n constructor(headers: Headers, data: T) {\n super(NotAcceptable.status, headers, data);\n }\n static override create<T>(status: number, headers: Headers, data: T) {\n return new this(headers, data);\n }\n}\nexport class Conflict<T = { message: string }> extends APIError<T, 409> {\n static override status = 409 as const;\n constructor(headers: Headers, data: T) {\n super(Conflict.status, headers, data);\n }\n static override create<T>(status: number, headers: Headers, data: T) {\n return new this(headers, data);\n }\n}\nexport class Gone<T = { message: string }> extends APIError<T, 410> {\n static override status = 410 as const;\n constructor(headers: Headers, data: T) {\n super(Gone.status, headers, data);\n }\n static override create<T>(status: number, headers: Headers, data: T) {\n return new this(headers, data);\n }\n}\nexport class PreconditionFailed<T = { message: string }> extends APIError<\n T,\n 412\n> {\n static override status = 412 as const;\n constructor(headers: Headers, data: T) {\n super(PreconditionFailed.status, headers, data);\n }\n static override create<T>(status: number, headers: Headers, data: T) {\n return new this(headers, data);\n }\n}\nexport class UnprocessableEntity<\n T = { message: string; errors?: Record<string, string[]> },\n> extends APIError<T, 422> {\n static override status = 422 as const;\n constructor(headers: Headers, data: T) {\n super(UnprocessableEntity.status, headers, data);\n }\n static override create<T>(status: number, headers: Headers, data: T) {\n return new this(headers, data);\n }\n}\nexport class TooManyRequests<\n T = { message: string; retryAfter?: string },\n> extends APIError<T, 429> {\n static override status = 429 as const;\n constructor(headers: Headers, data: T) {\n super(TooManyRequests.status, headers, data);\n }\n static override create<T>(status: number, headers: Headers, data: T) {\n return new this(headers, data);\n }\n}\nexport class PayloadTooLarge<T = { message: string }> extends APIError<T, 413> {\n static override status = 413 as const;\n constructor(headers: Headers, data: T) {\n super(PayloadTooLarge.status, headers, data);\n }\n static override create<T>(status: number, headers: Headers, data: T) {\n return new this(headers, data);\n }\n}\nexport class UnsupportedMediaType<T = { message: string }> extends APIError<\n T,\n 415\n> {\n static override status = 415 as const;\n constructor(headers: Headers, data: T) {\n super(UnsupportedMediaType.status, headers, data);\n }\n static override create<T>(status: number, headers: Headers, data: T) {\n return new this(headers, data);\n }\n}\n\n// 5xx Server Errors\nexport class InternalServerError<T = { message: string }> extends APIError<\n T,\n 500\n> {\n static override status = 500 as const;\n constructor(headers: Headers, data: T) {\n super(InternalServerError.status, headers, data);\n }\n static override create<T>(status: number, headers: Headers, data: T) {\n return new this(headers, data);\n }\n}\nexport class NotImplemented<T = { message: string }> extends APIError<T, 501> {\n static override status = 501 as const;\n constructor(headers: Headers, data: T) {\n super(NotImplemented.status, headers, data);\n }\n static override create<T>(status: number, headers: Headers, data: T) {\n return new this(headers, data);\n }\n}\nexport class BadGateway<T = { message: string }> extends APIError<T, 502> {\n static override status = 502 as const;\n constructor(headers: Headers, data: T) {\n super(BadGateway.status, headers, data);\n }\n static override create<T>(status: number, headers: Headers, data: T) {\n return new this(headers, data);\n }\n}\nexport class ServiceUnavailable<\n T = { message: string; retryAfter?: string },\n> extends APIError<T, 503> {\n static override status = 503 as const;\n constructor(headers: Headers, data: T) {\n super(ServiceUnavailable.status, headers, data);\n }\n static override create<T>(status: number, headers: Headers, data: T) {\n return new this(headers, data);\n }\n}\nexport class GatewayTimeout<T = { message: string }> extends APIError<T, 504> {\n static override status = 504 as const;\n constructor(headers: Headers, data: T) {\n super(GatewayTimeout.status, headers, data);\n }\n static override create<T>(status: number, headers: Headers, data: T) {\n return new this(headers, data);\n }\n}\n\nexport type ClientError =\n | BadRequest<unknown>\n | Unauthorized<unknown>\n | PaymentRequired<unknown>\n | Forbidden<unknown>\n | NotFound<unknown>\n | MethodNotAllowed<unknown>\n | NotAcceptable<unknown>\n | Conflict<unknown>\n | Gone<unknown>\n | PreconditionFailed<unknown>\n | PayloadTooLarge<unknown>\n | UnsupportedMediaType<unknown>\n | UnprocessableEntity<unknown>\n | TooManyRequests<unknown>;\n\nexport type ServerError =\n | InternalServerError<unknown>\n | NotImplemented<unknown>\n | BadGateway<unknown>\n | ServiceUnavailable<unknown>\n | GatewayTimeout<unknown>;\n\nexport type ProblematicResponse = ClientError | ServerError;\n\nexport type SuccessfulResponse<T = unknown> =\n Ok<T> | Created<T> | Accepted<T> | NoContent;\n\nexport type RebindSuccessPayload<Resp, New> =\n Resp extends Ok<infer _>\n ? Ok<New>\n : Resp extends Created<infer _>\n ? Created<New>\n : Resp extends Accepted<infer _>\n ? Accepted<New>\n : Resp extends NoContent\n ? NoContent\n : Resp extends SuccessfulResponse<infer _>\n ? APIResponse<New, Resp['status']>\n : never;\n", "import { z } from 'zod';\n\nexport class ParseError<T extends z.ZodType> extends Error {\n public data: z.core.$ZodFlattenedError<z.output<T>, z.core.$ZodIssue>;\n constructor(data: z.core.$ZodFlattenedError<z.output<T>, z.core.$ZodIssue>) {\n super('Validation failed');\n this.name = 'ParseError';\n this.data = data;\n }\n}\n\nexport function parseInput<T extends z.ZodType>(\n schema: T,\n input: unknown,\n): z.infer<T> {\n const result = schema.safeParse(input);\n if (!result.success) {\n const error = z.flattenError(result.error, (issue) => issue);\n throw new ParseError<T>(error);\n }\n return result.data as z.infer<T>;\n}\n", "/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { type Tool, jsonSchema, tool } from 'ai';\nimport { z } from 'zod';\n\nimport {\n type IR,\n type TunedOperationObject,\n forEachOperation,\n loadSpec,\n toIR,\n} from '@sdk-it/spec';\nimport {\n type OperationInput,\n buildInput,\n operationSchema,\n toHttpOutput,\n} from '@sdk-it/typescript';\n\nimport { Dispatcher, fetchType } from './http/dispatcher.ts';\nimport {\n type Interceptor,\n createBaseUrlInterceptor,\n createHeadersInterceptor,\n} from './http/interceptors.ts';\nimport { parseInput } from './http/parser.ts';\nimport {\n type Endpoint,\n type HeadersInit,\n type Method,\n empty,\n formdata,\n json,\n toRequest,\n urlencoded,\n} from './http/request.ts';\nimport * as http from './http/response.ts';\nimport { schemaToZod } from './zod.ts';\n\nconst callable = z.custom<() => string | Promise<string>>(\n (value) => typeof value === 'function',\n);\n\nconst baseUrlSchema = z\n .union([z.string(), callable])\n .transform(async (baseUrl, ctx) => {\n const value = typeof baseUrl === 'function' ? await baseUrl() : baseUrl;\n if (typeof value !== 'string') {\n ctx.addIssue({\n code: 'custom',\n message: 'baseUrl must resolve to a string',\n });\n return z.NEVER;\n }\n return value;\n });\n\nconst optionsSchema = z.object({\n token: z\n .union([z.string(), callable])\n .optional()\n .transform(async (token, ctx) => {\n if (!token) return undefined;\n const value = typeof token === 'function' ? await token() : token;\n if (typeof value !== 'string') {\n ctx.addIssue({\n code: 'custom',\n message: 'token must resolve to a string',\n });\n return z.NEVER;\n }\n return `Bearer ${value}`;\n }),\n fetch: fetchType,\n baseUrl: baseUrlSchema,\n headers: z.record(z.string(), z.string()).optional(),\n});\n\nexport type ClientOptions = z.input<typeof optionsSchema>;\n\nexport function inputToPath(\n operation: TunedOperationObject,\n inputs: Record<string, OperationInput>,\n) {\n const inputHeaders: string[] = [];\n const inputQuery: string[] = [];\n const inputBody: string[] = [];\n const inputParams: string[] = [];\n for (const [name, prop] of Object.entries(inputs)) {\n if (prop.in === 'headers' || prop.in === 'header') {\n inputHeaders.push(name);\n } else if (prop.in === 'query') {\n inputQuery.push(name);\n } else if (prop.in === 'body') {\n inputBody.push(name);\n } else if (prop.in === 'path') {\n inputParams.push(name);\n } else {\n throw new Error(\n `Unknown source ${prop.in} in ${name} ${JSON.stringify(\n prop,\n )} in ${operation.operationId}`,\n );\n }\n }\n\n return {\n inputHeaders,\n inputQuery,\n inputBody,\n inputParams,\n };\n}\n\nexport class Client {\n public options: ClientOptions;\n public schemas: Record<string, any>;\n constructor(options: ClientOptions, schemas: Record<string, any>) {\n this.options = options;\n this.schemas = schemas;\n }\n\n async request(\n endpoint: string,\n input: any,\n options?: { signal?: AbortSignal; headers?: HeadersInit },\n ) {\n const route = this.schemas[endpoint];\n const withDefaultInputs = Object.assign({}, this.#defaultInputs, input);\n const parsedInput = parseInput(route.schema, withDefaultInputs);\n const clientOptions = await optionsSchema.parseAsync(this.options);\n const result = await route.dispatch(parsedInput as never, {\n fetch: clientOptions.fetch,\n interceptors: [\n createHeadersInterceptor(\n await this.#defaultHeaders(),\n options?.headers ?? {},\n ),\n createBaseUrlInterceptor(clientOptions.baseUrl),\n ],\n signal: options?.signal,\n });\n return result;\n }\n\n async #defaultHeaders() {\n const clientOptions = await optionsSchema.parseAsync(this.options);\n return {\n authorization: clientOptions['token'],\n ...clientOptions.headers,\n };\n }\n\n get #defaultInputs() {\n return {};\n }\n\n setOptions(options: Partial<ClientOptions>) {\n this.options = {\n ...this.options,\n ...options,\n };\n }\n}\n\nexport function createRpc(ir: IR, options: Partial<ClientOptions> = {}) {\n const schemas: Record<Endpoint, any> = {};\n forEachOperation(ir, (entry, operation) => {\n const endpoint: Endpoint = `${entry.method.toUpperCase() as Method} ${entry.path}`;\n const details = buildInput(ir, operation);\n const contentTypeMap = {\n json: json,\n urlencoded: urlencoded,\n formdata: formdata,\n empty: empty,\n } as const;\n const outputs = Object.keys(operation.responses).flatMap((status) =>\n toHttpOutput(\n ir,\n operation.operationId,\n status,\n operation.responses[status],\n false,\n ),\n );\n const inputSchema = schemaToZod(\n operationSchema(ir, operation, details.ct),\n ir,\n { required: true },\n );\n schemas[endpoint] = {\n operationId: operation.operationId,\n output: outputs.map((it) => http[it.replace('http.', '') as never]),\n schema: inputSchema,\n async dispatch(\n input: any,\n options: {\n signal?: AbortSignal;\n interceptors: Interceptor[];\n fetch: z.infer<typeof fetchType>;\n },\n ) {\n const dispatcher = new Dispatcher(options.interceptors, options.fetch);\n const serializer =\n contentTypeMap[\n details.outgoingContentType as keyof typeof contentTypeMap\n ] || defaultSerializer(details.outgoingContentType);\n const request = toRequest(\n endpoint,\n serializer(input, inputToPath(operation, details.inputs)),\n );\n return dispatcher.send(request, this.output, options.signal);\n },\n };\n });\n\n return new Client(\n {\n ...options,\n baseUrl: options?.baseUrl ?? ir.servers[0].url,\n },\n schemas,\n );\n}\n\nexport async function rpc(\n openapi: string,\n options?: Partial<ClientOptions>,\n): Promise<Client> {\n const spec = await loadSpec(openapi);\n const ir = await toIR({\n spec,\n responses: { flattenErrorResponses: true },\n });\n return createRpc(ir, options);\n}\n\nexport async function toAgents(\n openapi: string,\n options: ClientOptions & {\n useTools?: 'defined';\n },\n) {\n const spec = await loadSpec(openapi);\n const ir = await toIR({\n spec,\n responses: { flattenErrorResponses: true },\n });\n const client = createRpc(ir, options);\n const groups: Record<\n string,\n {\n tools: Record<string, Tool>;\n instructions: string;\n handoffDescription: string;\n displayName: string;\n name: string;\n }\n > = {};\n\n forEachOperation(ir, (entry, operation) => {\n const tagDef = ir.tags.find((tag) => tag.name === entry.tag);\n if (!tagDef) {\n console.warn(`No tag details found for tag: ${entry.tag}`);\n return;\n }\n\n groups[entry.tag] ??= {\n tools: {},\n instructions: '',\n displayName: '',\n name: '',\n handoffDescription: '',\n };\n const endpoint = `${entry.method.toUpperCase()} ${entry.path}`;\n const toolInfo = operation['x-tool'];\n\n let includeTool = true;\n if (options.useTools === 'defined') {\n includeTool = !!toolInfo;\n }\n if (includeTool) {\n groups[entry.tag].tools[toolInfo?.name || operation['x-fn-name']] = tool({\n type: 'function',\n description:\n toolInfo?.description || operation.description || operation.summary,\n inputSchema: toToolSchema(client.schemas[endpoint].schema),\n execute: async (input) => {\n const response = await client.request(endpoint, input);\n return JSON.stringify(response);\n },\n });\n }\n groups[entry.tag].handoffDescription = tagDef['x-handoff-description'];\n groups[entry.tag].instructions = tagDef['x-instructions'];\n groups[entry.tag].name = tagDef.name;\n groups[entry.tag].displayName = tagDef['x-name'];\n });\n const agents: Record<string, any> = {};\n for (const [\n agentName,\n { tools, instructions, displayName },\n ] of Object.entries(groups)) {\n agents[agentName] = {\n name: displayName,\n instructions,\n tools,\n };\n }\n\n return agents;\n}\n\nfunction defaultSerializer(ct: string) {\n throw new Error(`Unsupported content type: ${ct}`);\n}\n\nconst TOOL_COERCE_MARKER = 'x-sdkit-tool-coerce';\n\n/**\n * Rebuild JSON tool-call values into what the zod schema validates: date\n * params are z.date()/z.coerce.date(), which JSON cannot carry. Without this,\n * every tool call shaped exactly as the advertised schema instructs would be\n * rejected by the validator.\n */\nfunction coerceToolValue(value: any, schema: any): any {\n if (\n !schema ||\n typeof schema !== 'object' ||\n value === null ||\n value === undefined\n ) {\n return value;\n }\n const marker = schema[TOOL_COERCE_MARKER];\n if (marker === 'date' && typeof value === 'string') {\n const date = new Date(value);\n return Number.isNaN(date.getTime()) ? value : date;\n }\n if (Array.isArray(value)) {\n if (Array.isArray(schema.items)) {\n return value.map((item, index) =>\n coerceToolValue(item, schema.items[index] ?? schema.additionalItems),\n );\n }\n if (schema.items) {\n return value.map((item) => coerceToolValue(item, schema.items));\n }\n return value;\n }\n if (\n typeof value === 'object' &&\n (schema.properties || schema.additionalProperties)\n ) {\n const out: Record<string, any> = { ...value };\n for (const [key, propValue] of Object.entries(out)) {\n const propSchema =\n schema.properties?.[key] ??\n (typeof schema.additionalProperties === 'object'\n ? schema.additionalProperties\n : undefined);\n if (propSchema) out[key] = coerceToolValue(propValue, propSchema);\n }\n return out;\n }\n for (const key of ['anyOf', 'oneOf', 'allOf']) {\n if (Array.isArray(schema[key])) {\n for (const member of schema[key]) {\n const coerced = coerceToolValue(value, member);\n if (coerced !== value) return coerced;\n }\n }\n }\n return value;\n}\n\n/**\n * The ai SDK serializes zod schemas with `unrepresentable: 'throw'`, so a\n * schema containing date/custom/transform (coerce-date, binary inputs) would\n * crash every agent invocation. Precompute a serializable JSON schema and keep\n * argument validation on the zod schema.\n */\nfunction toToolSchema(schema: z.ZodType) {\n const marked = z.toJSONSchema(schema, {\n target: 'draft-7',\n io: 'input',\n unrepresentable: 'any',\n override(ctx) {\n const def = ctx.zodSchema._zod.def;\n const json = ctx.jsonSchema as Record<string, unknown>;\n if (def.type === 'date') {\n json.type = 'string';\n json.format = 'date-time';\n json[TOOL_COERCE_MARKER] = 'date';\n }\n },\n }) as Record<string, unknown>;\n const advertised = JSON.parse(\n JSON.stringify(marked, (key, value) =>\n key === TOOL_COERCE_MARKER ? undefined : value,\n ),\n );\n return jsonSchema(advertised as never, {\n validate: (value) => {\n const coerced = coerceToolValue(value, marked);\n const result = schema.safeParse(coerced);\n // Return the input-form value, not result.data: Client.request runs\n // parseInput itself, so returning the parsed output here would apply\n // schema transforms twice.\n return result.success\n ? { success: true, value: coerced }\n : { success: false, error: result.error };\n },\n });\n}\n", "import type { ReferenceObject, SchemaObject } from 'openapi3-ts/oas31';\nimport { type ZodType, z } from 'zod';\n\nimport { followRef, isEmpty, isRef } from '@sdk-it/core';\nimport type { IR } from '@sdk-it/spec';\n\n// z.iso.time() rejects RFC 3339 zone suffixes ('10:30:00Z', '10:30:00+02:00'),\n// which JSON Schema's format: time allows. Accept both local and\n// zone-qualified times.\nconst isoTime = z\n .string()\n .regex(\n /^([01]\\d|2[0-3]):[0-5]\\d(:[0-5]\\d(\\.\\d+)?)?(Z|[+-]([01]\\d|2[0-3]):[0-5]\\d)?$/,\n );\n\n/**\n * Convert an OpenAPI (JSON Schema style) object into a runtime Zod schema,\n */\nexport class RuntimeZodConverter {\n readonly #spec: IR;\n\n constructor(spec: IR) {\n this.#spec = spec;\n }\n\n #object(schema: SchemaObject): ZodType {\n const properties = schema.properties || {};\n const required = schema.required || [];\n\n // Convert each property\n const shape: Record<string, ZodType> = {};\n\n for (const [key, propSchema] of Object.entries(properties)) {\n const isRequired = required.includes(key);\n shape[key] = this.handle(propSchema, isRequired);\n }\n\n let result = z.object(shape);\n\n // Handle additional properties\n if (schema.additionalProperties) {\n if (typeof schema.additionalProperties === 'object') {\n const addPropSchema = this.handle(schema.additionalProperties, true);\n result = result.catchall(addPropSchema);\n } else if (schema.additionalProperties === true) {\n result = result.catchall(z.unknown());\n }\n }\n\n return result;\n }\n\n #array(schema: SchemaObject): ZodType {\n const { items } = schema;\n if (!items) {\n let result: ZodType = z.array(z.unknown());\n\n // Apply default if present\n if (schema.default !== undefined) {\n result = z.array(z.unknown()).default(schema.default);\n }\n\n return result;\n }\n\n // If items is an array => tuple\n if (Array.isArray(items)) {\n const tupleItems = items.map((sub) => this.handle(sub, true));\n return z.tuple(tupleItems as [ZodType, ...ZodType[]]);\n }\n\n // If items is a single schema => standard z.array(...)\n const itemsSchema = this.handle(items, true);\n let result: ZodType = z.array(itemsSchema);\n\n // Apply default if present\n if (schema.default !== undefined) {\n result = z.array(itemsSchema).default(schema.default);\n }\n\n return result;\n }\n\n #ref($ref: string): ZodType {\n const resolvedSchema = followRef(this.#spec, $ref);\n const zodSchema = this.handle(resolvedSchema, true);\n return zodSchema;\n }\n\n #toIntersection(schemas: ZodType[]): ZodType {\n const [left, ...right] = schemas;\n if (!right.length) {\n return left;\n }\n return z.intersection(left, this.#toIntersection(right));\n }\n\n allOf(schemas: (SchemaObject | ReferenceObject)[]): ZodType {\n const allOfSchemas = schemas.map((sub) => this.handle(sub, true));\n if (allOfSchemas.length === 0) {\n return z.unknown();\n }\n if (allOfSchemas.length === 1) {\n return allOfSchemas[0];\n }\n return this.#toIntersection(allOfSchemas);\n }\n\n anyOf(schemas: (SchemaObject | ReferenceObject)[]): ZodType {\n const anyOfSchemas = schemas.map((sub) => this.handle(sub, true));\n if (anyOfSchemas.length === 1) {\n return anyOfSchemas[0];\n }\n return z.union(anyOfSchemas);\n }\n\n oneOf(schemas: (SchemaObject | ReferenceObject)[]): ZodType {\n const oneOfSchemas = schemas.map((sub) => this.handle(sub, true));\n if (oneOfSchemas.length === 1) {\n return oneOfSchemas[0];\n }\n // oneOf is exclusive-or per JSON Schema; z.xor rejects values matching\n // more than one branch, unlike z.union's anyOf semantics.\n return z.xor(oneOfSchemas);\n }\n\n enum(type: string, values: unknown[]): ZodType {\n if (values.length === 1) {\n return z.literal(values[0] as z.core.util.Literal);\n }\n // z.enum only supports string values; zod 4 silently filters numeric\n // entries as reverse mappings, so any non-string enum must be a literal.\n if (values.every((value) => typeof value === 'string')) {\n return z.enum(values as string[]);\n }\n return z.literal(values as z.core.util.Literal[]);\n }\n\n /**\n * Handle a `string` schema with possible format keywords (JSON Schema).\n */\n string(schema: SchemaObject): ZodType {\n if (schema.contentEncoding === 'binary') {\n // Bare z.custom (no predicate) on purpose: referencing Blob as a\n // runtime value throws ReferenceError in environments without the\n // global, and cross-realm/polyfill Blobs fail instanceof checks\n // (see e62c4e1 and docs/recipes/file-upload.md). Bad inputs surface\n // in fetch/FormData instead.\n return z.custom<Blob>();\n }\n\n const coerced = schema['x-zod-type'] === 'coerce-string';\n const base = coerced ? z.coerce.string() : z.string();\n const withFormat = (format: ZodType<string, string>): ZodType =>\n coerced ? base.pipe(format) : format;\n\n switch (schema.format) {\n case 'date-time':\n case 'datetime':\n if (schema['x-zod-type'] === 'coerce-date') {\n return z.coerce.date();\n } else if (schema['x-zod-type'] === 'date') {\n return z.date();\n } else {\n // RFC 3339 date-time allows numeric zone offsets, which\n // z.iso.datetime() rejects by default.\n return withFormat(z.iso.datetime({ offset: true }));\n }\n case 'date':\n return withFormat(z.iso.date());\n case 'time':\n return withFormat(isoTime);\n case 'email':\n return withFormat(z.email());\n case 'uuid':\n // z.guid() preserves zod v3's looser .uuid() semantics; z.uuid()\n // enforces RFC 9562 variant bits and rejects Microsoft-style GUIDs.\n return withFormat(z.guid());\n case 'url':\n case 'uri':\n return withFormat(z.url());\n case 'ipv4':\n return withFormat(z.ipv4());\n case 'ipv6':\n return withFormat(z.ipv6());\n case 'cidrv4':\n return withFormat(z.cidrv4());\n case 'cidrv6':\n return withFormat(z.cidrv6());\n case 'byte':\n case 'binary':\n // Bare z.custom on purpose \u2014 see the contentEncoding branch above.\n return z.custom<Blob>();\n default:\n // No special format\n return base;\n }\n }\n\n /**\n * Handle number/integer constraints from OpenAPI/JSON Schema.\n */\n #number(schema: SchemaObject): ZodType {\n let base =\n schema['x-zod-type'] === 'coerce-number' ? z.coerce.number() : z.number();\n\n if (schema.type === 'integer' || schema.format === 'int32') {\n base = base.int();\n }\n\n // Exclusive bounds\n if (typeof schema.exclusiveMinimum === 'number') {\n base = base.gt(schema.exclusiveMinimum);\n }\n\n if (typeof schema.exclusiveMaximum === 'number') {\n base = base.lt(schema.exclusiveMaximum);\n }\n\n // Inclusive bounds\n if (typeof schema.minimum === 'number') {\n base = base.min(schema.minimum);\n }\n\n if (typeof schema.maximum === 'number') {\n base = base.max(schema.maximum);\n }\n\n // multipleOf\n if (typeof schema.multipleOf === 'number') {\n const multipleOf = schema.multipleOf;\n return base.refine(\n (val) => Number.isInteger(Number(val) / multipleOf),\n `Must be a multiple of ${multipleOf}`,\n );\n }\n\n return base;\n }\n\n /**\n * Convert a basic type to Zod schema with proper chaining\n */\n normal(\n type: string,\n schema: SchemaObject,\n required = false,\n nullable = false,\n ): ZodType {\n let base: ZodType;\n\n switch (type) {\n case 'string':\n base = this.string(schema);\n break;\n case 'number':\n case 'integer':\n base = this.#number(schema);\n break;\n case 'boolean':\n // z.stringbool parses boolean-ish strings ('true'/'1'/'yes'...)\n // semantically; zod's Boolean(x) coercion turns 'false' into true.\n base =\n schema['x-zod-type'] === 'coerce-boolean'\n ? z.union([z.boolean(), z.stringbool()])\n : z.boolean();\n break;\n case 'object':\n base = this.#object(schema);\n break;\n case 'array':\n base = this.#array(schema);\n break;\n case 'null':\n base = z.null();\n break;\n default:\n base = z.unknown();\n break;\n }\n\n // Apply nullable to the base type before optional/default wrapping.\n if (nullable) {\n base = base.nullable();\n }\n\n if (!required) {\n base = base.optional();\n }\n\n if (schema.default !== undefined) {\n const defaultValue =\n (schema['x-zod-type'] === 'date' ||\n schema['x-zod-type'] === 'coerce-date') &&\n schema.default\n ? new Date(schema.default)\n : schema.default;\n base = base.default(defaultValue);\n }\n\n return base;\n }\n\n handle(schema: SchemaObject | ReferenceObject, required = false): ZodType {\n // Handle reference\n if (isRef(schema)) {\n let result = this.#ref(schema.$ref);\n if (!required) {\n result = result.optional();\n }\n if (schema.description) {\n result = result.describe(schema.description);\n }\n return result;\n }\n\n let result: ZodType = z.unknown();\n\n if (schema.not && isEmpty(schema.not)) {\n result = required ? z.never() : z.never().optional();\n }\n\n // Handle allOf \u2192 intersection\n else if (schema.allOf && Array.isArray(schema.allOf)) {\n result = this.allOf(schema.allOf);\n if (!required) {\n result = result.optional();\n }\n }\n\n // anyOf \u2192 union\n else if (schema.anyOf && Array.isArray(schema.anyOf)) {\n result = this.anyOf(schema.anyOf);\n if (!required) {\n result = result.optional();\n }\n }\n\n // oneOf \u2192 union\n else if (\n schema.oneOf &&\n Array.isArray(schema.oneOf) &&\n schema.oneOf.length\n ) {\n result = this.oneOf(schema.oneOf);\n if (!required) {\n result = result.optional();\n }\n }\n\n // enum\n else if (schema.enum && Array.isArray(schema.enum)) {\n result = this.enum(schema.type as string, schema.enum);\n\n // Apply default if it exists and is in the enum. Only for required\n // schemas: the optional wrapper below must keep shadowing the default\n // (zod v3 semantics), while zod v4 would surface it through .optional().\n if (\n schema.default !== undefined &&\n schema.enum.includes(schema.default) &&\n required\n ) {\n result = result.default(schema.default);\n }\n\n if (!required) {\n result = result.optional();\n }\n } else {\n // Parse types (can be string or array in OpenAPI 3.1)\n const types = Array.isArray(schema.type)\n ? schema.type\n : schema.type\n ? [schema.type]\n : [];\n\n // Backward compatibility with OpenAPI 3.0 nullable\n if ('nullable' in schema && schema.nullable) {\n types.push('null');\n } else if (schema.default === null) {\n types.push('null');\n }\n\n // If no explicit \"type\", fallback to unknown\n if (!types.length) {\n result = required ? z.unknown() : z.unknown().optional();\n }\n\n // Handle union types\n else if (types.length > 1) {\n const realTypes = types.filter((t) => t !== 'null');\n if (realTypes.length === 1 && types.includes('null')) {\n // Single real type + \"null\"\n result = this.normal(realTypes[0], schema, required, true);\n } else {\n // Multiple different types, build a union\n result = z.union(types.map((t) => this.normal(t, schema, true)));\n if (!required) {\n result = result.optional();\n }\n }\n } else {\n result = this.normal(types[0], schema, required, false);\n }\n }\n\n if (schema.description) {\n result = result.describe(schema.description);\n }\n\n return result;\n }\n}\n\n/**\n * Convert a runtime SchemaObject to a Zod schema\n */\nexport function schemaToZod(\n schema: SchemaObject,\n spec: IR,\n options?: {\n required?: boolean;\n },\n): ZodType {\n const converter = new RuntimeZodConverter(spec);\n return converter.handle(schema, options?.required ?? false);\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["parse", "fetch", "z", "z", "z", "result", "z", "options", "json"]
|
|
7
7
|
}
|
package/dist/lib/zod.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zod.d.ts","sourceRoot":"","sources":["../../src/lib/zod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,KAAK,OAAO,EAAK,MAAM,KAAK,CAAC;AAGtC,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAWvC;;GAEG;AACH,qBAAa,mBAAmB;;gBAGlB,IAAI,EAAE,EAAE;IA4EpB,KAAK,CAAC,OAAO,EAAE,CAAC,YAAY,GAAG,eAAe,CAAC,EAAE,GAAG,OAAO;IAW3D,KAAK,CAAC,OAAO,EAAE,CAAC,YAAY,GAAG,eAAe,CAAC,EAAE,GAAG,OAAO;IAQ3D,KAAK,CAAC,OAAO,EAAE,CAAC,YAAY,GAAG,eAAe,CAAC,EAAE,GAAG,OAAO;IAU3D,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO;IAY9C;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO;IAmGrC;;OAEG;IACH,MAAM,CACJ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,YAAY,EACpB,QAAQ,UAAQ,EAChB,QAAQ,UAAQ,GACf,OAAO;
|
|
1
|
+
{"version":3,"file":"zod.d.ts","sourceRoot":"","sources":["../../src/lib/zod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,KAAK,OAAO,EAAK,MAAM,KAAK,CAAC;AAGtC,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAWvC;;GAEG;AACH,qBAAa,mBAAmB;;gBAGlB,IAAI,EAAE,EAAE;IA4EpB,KAAK,CAAC,OAAO,EAAE,CAAC,YAAY,GAAG,eAAe,CAAC,EAAE,GAAG,OAAO;IAW3D,KAAK,CAAC,OAAO,EAAE,CAAC,YAAY,GAAG,eAAe,CAAC,EAAE,GAAG,OAAO;IAQ3D,KAAK,CAAC,OAAO,EAAE,CAAC,YAAY,GAAG,eAAe,CAAC,EAAE,GAAG,OAAO;IAU3D,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO;IAY9C;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO;IAmGrC;;OAEG;IACH,MAAM,CACJ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,YAAY,EACpB,QAAQ,UAAQ,EAChB,QAAQ,UAAQ,GACf,OAAO;IAuDV,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,eAAe,EAAE,QAAQ,UAAQ,GAAG,OAAO;CA6G1E;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,EAAE,EACR,OAAO,CAAC,EAAE;IACR,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GACA,OAAO,CAGT"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sdk-it/rpc",
|
|
3
|
-
"version": "0.46.
|
|
3
|
+
"version": "0.46.5",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"engines": {
|
|
6
6
|
"node": ">=22"
|
|
@@ -25,9 +25,9 @@
|
|
|
25
25
|
"!**/*.test.*"
|
|
26
26
|
],
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@sdk-it/core": "0.46.
|
|
29
|
-
"@sdk-it/spec": "0.46.
|
|
30
|
-
"@sdk-it/typescript": "0.46.
|
|
28
|
+
"@sdk-it/core": "0.46.5",
|
|
29
|
+
"@sdk-it/spec": "0.46.5",
|
|
30
|
+
"@sdk-it/typescript": "0.46.5",
|
|
31
31
|
"ai": "^7.0.29",
|
|
32
32
|
"fast-content-type-parse": "^3.0.0",
|
|
33
33
|
"openapi3-ts": "4.5.0",
|