@samchon/openapi
Version:
Universal OpenAPI to LLM function calling schemas. Transform any Swagger/OpenAPI document into type-safe schemas for OpenAI, Claude, Qwen, and more.
1 lines • 4.09 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 const result: string = [\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 return !!result.length ? result : undefined;\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","result","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,IAAI,CAACC,GAAGC,GAAGC,UAAUA,MAAMN,MAAM,GAAGK,IAAI,GAAGE,KAAK,MAChDJ,IAAKK,QAAG;YACPA;YACAC,aAAahB,MAAMiB,WAAWC,UAAUH,MAAMC;YAE/CG,UACAC,OACC,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,IAAI,CAACY,MAAMV,MACxBU,KAAKN,gBAAgBK,YACjB,wBAAwBC,KAAKP,SAC7B,sBAAsBH,MAAM,KAAKZ,MAAMQ,SAAS,YAAY,mBAAmBc,KAAKP,mBACpFO,KAAKN,YACFZ,MAAM,MACNM,IAAKa,OAAQ,KAAKA,OAClBT,KAAK,SAEdA,KAAK;;IAGIhB,oBAAA0B,OAAQC;QACnB,MAAMC,SAAiB,OACfD,EAAET,aAAaP,SAAS,EAACgB,EAAET,gBAAe,OAC7CW,OAAOC,QAAQH,EAAEI,cAAc,CAAA,GAC/BT,OACC,EAAEU,MAAMC,WACNC,mBAAmBC,YAAYF,YAC7BA,MAAMf,aAAaP,QAExBC,IACC,EAAEK,KAAKgB,WACL,6BAA6BG,QAAQC,SAASpB,OAAOA,MAAMqB,KAAKC,UAAUtB,yBACzEgB,MAAMf,eAAe,IACnBZ,MAAM,MACNM,IAAKa,OAAQ,KAAKA,OAClBT,KAAK,SAEdA,KAAK;QACP,SAASY,OAAOjB,SAASiB,SAASL;;AAErC,EA1DD,CAAiBvB,wBAAAA,sBAAmB,CAAA;;"}