@samchon/openapi
Version:
OpenAPI definitions and converters for 'typia' and 'nestia'.
1 lines • 3.44 kB
Source Map (JSON)
{"version":3,"file":"OpenApiValidator.mjs","sources":["../../src/utils/OpenApiValidator.ts"],"sourcesContent":["import { OpenApi } from \"../OpenApi\";\nimport { IValidation } from \"../structures/IValidation\";\nimport { OpenApiStationValidator } from \"./internal/OpenApiStationValidator\";\n\nexport namespace OpenApiValidator {\n export const create =\n (prop: {\n components: OpenApi.IComponents;\n schema: OpenApi.IJsonSchema;\n required: boolean;\n equals?: boolean;\n }) =>\n (value: unknown): IValidation<unknown> =>\n validate({ ...prop, value });\n\n export const validate = (props: {\n components: OpenApi.IComponents;\n schema: OpenApi.IJsonSchema;\n value: unknown;\n required: boolean;\n equals?: boolean;\n }): IValidation<unknown> => {\n const errors: IValidation.IError[] = [];\n OpenApiStationValidator.validate({\n ...props,\n path: \"$input\",\n exceptionable: true,\n report: createReporter(errors),\n equals: props.equals ?? false,\n });\n return errors.length === 0\n ? {\n success: true,\n data: props.value,\n }\n : {\n success: false,\n data: props.value,\n errors,\n };\n };\n\n const createReporter = (array: IValidation.IError[]) => {\n const reportable = (path: string): boolean => {\n if (array.length === 0) return true;\n const last: string = array[array.length - 1]!.path;\n return (\n path.length > last.length || last.substring(0, path.length) !== path\n );\n };\n return (\n error: IValidation.IError & {\n exceptionable: boolean;\n },\n ): false => {\n if (error.exceptionable && reportable(error.path)) {\n const info: IValidation.IError = {\n path: error.path,\n expected: error.expected,\n value: error.value,\n description: error.description,\n };\n if (error.value === undefined)\n info.description ??= [\n \"The value at this path is `undefined`.\",\n \"\",\n `Please fill the \\`${error.expected}\\` typed value next time.`,\n ].join(\"\\n\");\n array.push(info);\n }\n return false;\n };\n };\n}\n"],"names":["OpenApiValidator","create","prop","value","validate","props","errors","OpenApiStationValidator","path","exceptionable","report","createReporter","equals","length","success","data","array","reportable","last","substring","error","info","expected","description","undefined","join","push"],"mappings":";;AAIM,IAAWA;;CAAjB,SAAiBA;IACFA,iBAAMC,SAChBC,QAMAC,SACCH,iBAAAI,SAAS;WAAKF;QAAMC;;IAEXH,iBAAAI,WAAYC;QAOvB,MAAMC,SAA+B;QACrCC,wBAAwBH,SAAS;eAC5BC;YACHG,MAAM;YACNC,eAAe;YACfC,QAAQC,eAAeL;YACvBM,QAAQP,MAAMO,UAAU;;QAE1B,OAAON,OAAOO,WAAW,IACrB;YACEC,SAAS;YACTC,MAAMV,MAAMF;YAEd;YACEW,SAAS;YACTC,MAAMV,MAAMF;YACZG;;AACD;IAGP,MAAMK,iBAAkBK;QACtB,MAAMC,aAAcT;YAClB,IAAIQ,MAAMH,WAAW,GAAG,OAAO;YAC/B,MAAMK,OAAeF,MAAMA,MAAMH,SAAS,GAAIL;YAC9C,OACEA,KAAKK,SAASK,KAAKL,UAAUK,KAAKC,UAAU,GAAGX,KAAKK,YAAYL;AAAI;QAGxE,OACEY;YAIA,IAAIA,MAAMX,iBAAiBQ,WAAWG,MAAMZ,OAAO;gBACjD,MAAMa,OAA2B;oBAC/Bb,MAAMY,MAAMZ;oBACZc,UAAUF,MAAME;oBAChBnB,OAAOiB,MAAMjB;oBACboB,aAAaH,MAAMG;;gBAErB,IAAIH,MAAMjB,UAAUqB,WAClBH,KAAKE,gBAALF,KAAKE,cAAgB,EACnB,0CACA,IACA,qBAAqBH,MAAME,sCAC3BG,KAAK;gBACTT,MAAMU,KAAKL;;YAEb,OAAO;AAAK;AACb;AAEJ,EArED,CAAiBrB,qBAAAA,mBAqEhB,CAAA;;"}