UNPKG

@nahkies/typescript-koa-runtime

Version:

Runtime package for code generated by @nahkies/openapi-code-generator using the typescript-koa template

1 lines 2.11 kB
{"version":3,"file":"zod-v3.cjs","names":["KoaRuntimeError","findMatchingSchema"],"sources":["../../src/zod-v3.ts"],"sourcesContent":["import {findMatchingSchema} from \"@nahkies/typescript-common-runtime/validation\"\n\nimport type {z} from \"zod/v3\"\nimport {KoaRuntimeError, type RequestInputType} from \"./errors.ts\"\n\nexport function parseRequestInput<Schema extends z.ZodTypeAny>(\n schema: Schema,\n input: unknown,\n type: RequestInputType,\n): z.infer<Schema>\nexport function parseRequestInput(\n schema: undefined,\n input: unknown,\n type: RequestInputType,\n): undefined\nexport function parseRequestInput<Schema extends z.ZodTypeAny>(\n schema: Schema | undefined,\n input: unknown,\n type: RequestInputType,\n): z.infer<Schema> | undefined {\n try {\n return schema?.parse(input)\n } catch (err) {\n throw KoaRuntimeError.RequestError(err, type)\n }\n}\n\n// TODO: optional response validation\nexport function responseValidationFactory(\n possibleResponses: [string, z.ZodTypeAny][],\n defaultResponse?: z.ZodTypeAny,\n) {\n // Exploit the natural ordering matching the desired specificity of eg: 404 vs 4xx\n possibleResponses.sort((x, y) => (x[0] < y[0] ? -1 : 1))\n\n return (status: number, value: unknown) => {\n try {\n const schema = findMatchingSchema(status, possibleResponses)\n\n if (schema) {\n return schema.parse(value)\n }\n\n if (defaultResponse) {\n return defaultResponse.parse(value)\n }\n\n // TODO: throw on unmatched response\n return value\n } catch (err) {\n throw KoaRuntimeError.ResponseError(err)\n }\n }\n}\n"],"mappings":";;;;AAeA,SAAgB,kBACd,QACA,OACA,MAC6B;CAC7B,IAAI;EACF,OAAO,QAAQ,MAAM,KAAK;CAC5B,SAAS,KAAK;EACZ,MAAMA,eAAAA,gBAAgB,aAAa,KAAK,IAAI;CAC9C;AACF;AAGA,SAAgB,0BACd,mBACA,iBACA;CAEA,kBAAkB,MAAM,GAAG,MAAO,EAAE,KAAK,EAAE,KAAK,KAAK,CAAE;CAEvD,QAAQ,QAAgB,UAAmB;EACzC,IAAI;GACF,MAAM,SAASC,mBAAAA,mBAAmB,QAAQ,iBAAiB;GAE3D,IAAI,QACF,OAAO,OAAO,MAAM,KAAK;GAG3B,IAAI,iBACF,OAAO,gBAAgB,MAAM,KAAK;GAIpC,OAAO;EACT,SAAS,KAAK;GACZ,MAAMD,eAAAA,gBAAgB,cAAc,GAAG;EACzC;CACF;AACF"}