UNPKG

@samchon/openapi

Version:

OpenAPI definitions and converters for 'typia' and 'nestia'.

1 lines 6.35 kB
{"version":3,"file":"OpenApiConstraintShifter.mjs","sources":["../../src/utils/OpenApiConstraintShifter.ts"],"sourcesContent":["import { OpenApi } from \"../OpenApi\";\n\nexport namespace OpenApiConstraintShifter {\n export const shiftArray = <\n Schema extends Pick<\n OpenApi.IJsonSchema.IArray,\n \"description\" | \"minItems\" | \"maxItems\" | \"uniqueItems\"\n >,\n >(\n v: Schema,\n ): Omit<Schema, \"minItems\" | \"maxItems\" | \"uniqueItems\"> => {\n const tags: string[] = [];\n if (v.minItems !== undefined) {\n tags.push(`@minItems ${v.minItems}`);\n delete v.minItems;\n }\n if (v.maxItems !== undefined) {\n tags.push(`@maxItems ${v.maxItems}`);\n delete v.maxItems;\n }\n if (v.uniqueItems !== undefined) {\n if (v.uniqueItems === true) tags.push(`@uniqueItems`);\n delete v.uniqueItems;\n }\n v.description = writeTagWithDescription({\n description: v.description,\n tags,\n });\n return v;\n };\n\n export const shiftNumeric = <\n Schema extends Pick<\n OpenApi.IJsonSchema.INumber | OpenApi.IJsonSchema.IInteger,\n | \"description\"\n | \"minimum\"\n | \"maximum\"\n | \"exclusiveMinimum\"\n | \"exclusiveMaximum\"\n | \"multipleOf\"\n | \"default\"\n >,\n >(\n v: Schema,\n ): Omit<\n Schema,\n | \"minimum\"\n | \"maximum\"\n | \"exclusiveMinimum\"\n | \"exclusiveMaximum\"\n | \"multipleOf\"\n | \"default\"\n > => {\n const tags: string[] = [];\n if (v.exclusiveMinimum === undefined && v.minimum !== undefined) {\n tags.push(`@minimum ${v.minimum}`);\n delete v.minimum;\n }\n if (v.exclusiveMaximum === undefined && v.maximum !== undefined) {\n tags.push(`@maximum ${v.maximum}`);\n delete v.maximum;\n }\n if (v.minimum !== undefined && v.exclusiveMinimum === true) {\n tags.push(`@exclusiveMinimum ${v.minimum}`);\n delete v.minimum;\n delete v.exclusiveMinimum;\n }\n if (v.maximum !== undefined && v.exclusiveMaximum === true) {\n tags.push(`@exclusiveMaximum ${v.maximum}`);\n delete v.maximum;\n delete v.exclusiveMaximum;\n }\n if (v.multipleOf !== undefined) {\n tags.push(`@multipleOf ${v.multipleOf}`);\n delete v.multipleOf;\n }\n v.description = writeTagWithDescription({\n description: v.description,\n tags,\n });\n if (v.default !== undefined) {\n tags.push(`@default ${v.default}`);\n delete v.default;\n }\n return v;\n };\n\n export const shiftString = <\n Schema extends Pick<\n OpenApi.IJsonSchema.IString,\n | \"description\"\n | \"minLength\"\n | \"maxLength\"\n | \"format\"\n | \"pattern\"\n | \"contentMediaType\"\n | \"default\"\n >,\n >(\n v: Schema,\n ): Omit<\n Schema,\n | \"minLength\"\n | \"maxLength\"\n | \"format\"\n | \"pattern\"\n | \"contentMediaType\"\n | \"default\"\n > => {\n const tags: string[] = [];\n if (v.minLength !== undefined) {\n tags.push(`@minLength ${v.minLength}`);\n delete v.minLength;\n }\n if (v.maxLength !== undefined) {\n tags.push(`@maxLength ${v.maxLength}`);\n delete v.maxLength;\n }\n if (v.format !== undefined) {\n tags.push(`@format ${v.format}`);\n delete v.format;\n }\n if (v.pattern !== undefined) {\n tags.push(`@pattern ${v.pattern}`);\n delete v.pattern;\n }\n if (v.contentMediaType !== undefined) {\n tags.push(`@contentMediaType ${v.contentMediaType}`);\n delete v.contentMediaType;\n }\n if (v.default !== undefined) {\n tags.push(`@default ${v.default}`);\n delete v.default;\n }\n v.description = writeTagWithDescription({\n description: v.description,\n tags,\n });\n return v;\n };\n}\n\nconst writeTagWithDescription = (props: {\n description: string | undefined;\n tags: string[];\n}): string | undefined => {\n if (props.tags.length === 0) return props.description;\n return [\n ...(props.description?.length ? [props.description, \"\\n\"] : []),\n ...props.tags,\n ].join(\"\\n\");\n};\n"],"names":["OpenApiConstraintShifter","shiftArray","v","tags","minItems","undefined","push","maxItems","uniqueItems","description","writeTagWithDescription","shiftNumeric","exclusiveMinimum","minimum","exclusiveMaximum","maximum","multipleOf","default","shiftString","minLength","maxLength","format","pattern","contentMediaType","props","length","join"],"mappings":"AAEM,IAAWA;;CAAjB,SAAiBA;IACFA,yBAAAC,aAMXC;QAEA,MAAMC,OAAiB;QACvB,IAAID,EAAEE,aAAaC,WAAW;YAC5BF,KAAKG,KAAK,aAAaJ,EAAEE;mBAClBF,EAAEE;;QAEX,IAAIF,EAAEK,aAAaF,WAAW;YAC5BF,KAAKG,KAAK,aAAaJ,EAAEK;mBAClBL,EAAEK;;QAEX,IAAIL,EAAEM,gBAAgBH,WAAW;YAC/B,IAAIH,EAAEM,gBAAgB,MAAML,KAAKG,KAAK;mBAC/BJ,EAAEM;;QAEXN,EAAEO,cAAcC,wBAAwB;YACtCD,aAAaP,EAAEO;YACfN;;QAEF,OAAOD;AAAC;IAGGF,yBAAAW,eAYXT;QAUA,MAAMC,OAAiB;QACvB,IAAID,EAAEU,qBAAqBP,aAAaH,EAAEW,YAAYR,WAAW;YAC/DF,KAAKG,KAAK,YAAYJ,EAAEW;mBACjBX,EAAEW;;QAEX,IAAIX,EAAEY,qBAAqBT,aAAaH,EAAEa,YAAYV,WAAW;YAC/DF,KAAKG,KAAK,YAAYJ,EAAEa;mBACjBb,EAAEa;;QAEX,IAAIb,EAAEW,YAAYR,aAAaH,EAAEU,qBAAqB,MAAM;YAC1DT,KAAKG,KAAK,qBAAqBJ,EAAEW;mBAC1BX,EAAEW;mBACFX,EAAEU;;QAEX,IAAIV,EAAEa,YAAYV,aAAaH,EAAEY,qBAAqB,MAAM;YAC1DX,KAAKG,KAAK,qBAAqBJ,EAAEa;mBAC1Bb,EAAEa;mBACFb,EAAEY;;QAEX,IAAIZ,EAAEc,eAAeX,WAAW;YAC9BF,KAAKG,KAAK,eAAeJ,EAAEc;mBACpBd,EAAEc;;QAEXd,EAAEO,cAAcC,wBAAwB;YACtCD,aAAaP,EAAEO;YACfN;;QAEF,IAAID,EAAEe,YAAYZ,WAAW;YAC3BF,KAAKG,KAAK,YAAYJ,EAAEe;mBACjBf,EAAEe;;QAEX,OAAOf;AAAC;IAGGF,yBAAAkB,cAYXhB;QAUA,MAAMC,OAAiB;QACvB,IAAID,EAAEiB,cAAcd,WAAW;YAC7BF,KAAKG,KAAK,cAAcJ,EAAEiB;mBACnBjB,EAAEiB;;QAEX,IAAIjB,EAAEkB,cAAcf,WAAW;YAC7BF,KAAKG,KAAK,cAAcJ,EAAEkB;mBACnBlB,EAAEkB;;QAEX,IAAIlB,EAAEmB,WAAWhB,WAAW;YAC1BF,KAAKG,KAAK,WAAWJ,EAAEmB;mBAChBnB,EAAEmB;;QAEX,IAAInB,EAAEoB,YAAYjB,WAAW;YAC3BF,KAAKG,KAAK,YAAYJ,EAAEoB;mBACjBpB,EAAEoB;;QAEX,IAAIpB,EAAEqB,qBAAqBlB,WAAW;YACpCF,KAAKG,KAAK,qBAAqBJ,EAAEqB;mBAC1BrB,EAAEqB;;QAEX,IAAIrB,EAAEe,YAAYZ,WAAW;YAC3BF,KAAKG,KAAK,YAAYJ,EAAEe;mBACjBf,EAAEe;;QAEXf,EAAEO,cAAcC,wBAAwB;YACtCD,aAAaP,EAAEO;YACfN;;QAEF,OAAOD;AAAC;AAEX,EA1ID,CAAiBF,6BAAAA,2BA0IhB,CAAA;;AAED,MAAMU,0BAA2Bc;IAI/B,IAAIA,MAAMrB,KAAKsB,WAAW,GAAG,OAAOD,MAAMf;IAC1C,OAAO,KACDe,MAAMf,aAAagB,SAAS,EAACD,MAAMf,aAAa,SAAQ,OACzDe,MAAMrB,OACTuB,KAAK;AAAK;;"}