@samchon/openapi
Version:
OpenAPI definitions and converters for 'typia' and 'nestia'.
1 lines • 3.96 kB
Source Map (JSON)
{"version":3,"file":"JsonDescriptionUtil.mjs","sources":["../../../src/utils/internal/JsonDescriptionUtil.ts"],"sourcesContent":["import { OpenApi } from \"../../OpenApi\";\nimport { Escaper } from \"../Escaper\";\nimport { OpenApiTypeChecker } from \"../OpenApiTypeChecker\";\n\nexport namespace JsonDescriptionUtil {\n export const cascade = (props: {\n prefix: string;\n components: OpenApi.IComponents;\n schema: OpenApi.IJsonSchema.IReference;\n escape: boolean;\n }): string | undefined => {\n const accessors: string[] = props.schema.$ref\n .split(props.prefix)[1]\n .split(\".\");\n const pReferences: IParentReference[] = accessors\n .slice(0, props.escape ? accessors.length : accessors.length - 1)\n .map((_, i, array) => array.slice(0, i + 1).join(\".\"))\n .map((key) => ({\n key,\n description: props.components.schemas?.[key]?.description,\n }))\n .reverse()\n .filter(\n (schema, i): schema is IParentReference =>\n i === 0 || !!schema?.description,\n );\n if (!props.schema.description?.length && pReferences.length === 0)\n return undefined;\n return [\n ...(!!props.schema.description?.length ? [props.schema.description] : []),\n ...pReferences.map((pRef, i) =>\n pRef.description === undefined\n ? `Current Type: {@link ${pRef.key}}`\n : `Description of the ${i === 0 && props.escape ? \"current\" : \"parent\"} {@link ${pRef.key}} type:\\n\\n` +\n pRef.description\n .split(\"\\n\")\n .map((str) => `> ${str}`)\n .join(\"\\n\"),\n ),\n ].join(\"\\n\\n------------------------------\\n\\n\");\n };\n\n export const take = (o: OpenApi.IJsonSchema.IObject): string | undefined =>\n [\n ...(!!o.description?.length ? [o.description] : []),\n ...Object.entries(o.properties ?? {})\n .filter(\n ([_key, value]) =>\n OpenApiTypeChecker.isReference(value) &&\n !!value.description?.length,\n )\n .map(\n ([key, value]) =>\n `### Description of {@link ${Escaper.variable(key) ? key : JSON.stringify(key)}} property:\\n\\n` +\n (value.description ?? \"\")\n .split(\"\\n\")\n .map((str) => `> ${str}`)\n .join(\"\\n\"),\n ),\n ].join(\"\\n\\n\");\n}\n\ninterface IParentReference {\n key: string;\n description: string | undefined;\n}\n"],"names":["JsonDescriptionUtil","cascade","props","accessors","schema","$ref","split","prefix","pReferences","slice","escape","length","map","_","i","array","join","key","description","components","schemas","reverse","filter","undefined","pRef","str","take","o","Object","entries","properties","_key","value","OpenApiTypeChecker","isReference","Escaper","variable","JSON","stringify"],"mappings":";;;;AAIM,IAAWA;;CAAjB,SAAiBA;IACFA,oBAAAC,UAAWC;QAMtB,MAAMC,YAAsBD,MAAME,OAAOC,KACtCC,MAAMJ,MAAMK,QAAQ,GACpBD,MAAM;QACT,MAAME,cAAkCL,UACrCM,MAAM,GAAGP,MAAMQ,SAASP,UAAUQ,SAASR,UAAUQ,SAAS,GAC9DC,KAAI,CAACC,GAAGC,GAAGC,UAAUA,MAAMN,MAAM,GAAGK,IAAI,GAAGE,KAAK,OAChDJ,KAAKK,QAAS;YACbA;YACAC,aAAahB,MAAMiB,WAAWC,UAAUH,MAAMC;aAE/CG,UACAC,QACC,CAAClB,QAAQU,MACPA,MAAM,OAAOV,QAAQc;QAE3B,KAAKhB,MAAME,OAAOc,aAAaP,UAAUH,YAAYG,WAAW,GAC9D,OAAOY;QACT,OAAO,OACCrB,MAAME,OAAOc,aAAaP,SAAS,EAACT,MAAME,OAAOc,gBAAe,OACnEV,YAAYI,KAAI,CAACY,MAAMV,MACxBU,KAAKN,gBAAgBK,YACjB,wBAAwBC,KAAKP,SAC7B,sBAAsBH,MAAM,KAAKZ,MAAMQ,SAAS,YAAY,mBAAmBc,KAAKP,mBACpFO,KAAKN,YACFZ,MAAM,MACNM,KAAKa,OAAQ,KAAKA,QAClBT,KAAK,UAEdA,KAAK;AAAyC;IAGrChB,oBAAA0B,OAAQC,KACnB,OACQA,EAAET,aAAaP,SAAS,EAACgB,EAAET,gBAAe,OAC7CU,OAAOC,QAAQF,EAAEG,cAAc,CAAE,GACjCR,QACC,EAAES,MAAMC,WACNC,mBAAmBC,YAAYF,YAC7BA,MAAMd,aAAaP,SAExBC,KACC,EAAEK,KAAKe,WACL,6BAA6BG,QAAQC,SAASnB,OAAOA,MAAMoB,KAAKC,UAAUrB,yBACzEe,MAAMd,eAAe,IACnBZ,MAAM,MACNM,KAAKa,OAAQ,KAAKA,QAClBT,KAAK,UAEdA,KAAK;AACV,EAxDD,CAAiBhB,wBAAAA,sBAwDhB,CAAA;;"}