openapi-metadata
Version:
Auto-Generate OpenAPI specifications from Typescript decorators
1 lines • 3.05 kB
Source Map (JSON)
{"version":3,"file":"paths.cjs","sources":["../../src/generators/paths.ts"],"sourcesContent":["import type { OpenAPIV3 } from \"openapi-types\";\nimport type { Context } from \"../context.js\";\nimport { generateOperation } from \"./operation.js\";\nimport { ExcludeMetadataStorage, ExtraModelsMetadataStorage, OperationMetadataStorage } from \"../metadata/index.js\";\nimport { loadType } from \"../loaders/type.js\";\n\nexport async function generatePaths(context: Context, controllers: Function[]): Promise<OpenAPIV3.PathsObject> {\n const paths: OpenAPIV3.PathsObject = {};\n\n for (const controller of controllers) {\n const target = controller.prototype;\n const keys = Object.getOwnPropertyNames(target);\n\n // Loads extra models defined on this controller\n const extraModels = ExtraModelsMetadataStorage.getMetadata(target);\n await Promise.all(extraModels.map((m) => loadType(context, { type: m })));\n\n for (const key of keys) {\n const metadata = OperationMetadataStorage.getMetadata(target, key, true);\n if (!metadata) {\n continue;\n }\n\n if (!metadata.path || !metadata.methods) {\n continue;\n }\n\n const excludeController = ExcludeMetadataStorage.getMetadata(target);\n if (excludeController === true) {\n continue;\n }\n\n for (const method of metadata.methods) {\n const excludeOperation = ExcludeMetadataStorage.getMetadata(target, key);\n\n if (excludeOperation === true) {\n continue;\n }\n\n paths[metadata.path] = {\n ...paths[metadata.path],\n [method]: await generateOperation(context, controller, key, metadata),\n };\n }\n }\n }\n\n return paths;\n}\n"],"names":["extraModels","ExtraModelsMetadataStorage","loadType","OperationMetadataStorage","ExcludeMetadataStorage","generateOperation"],"mappings":";;;;;;;;;AAMA,eAAsB,aAAA,CAAc,SAAkB,WAAA,EAAyD;AAC7G,EAAA,MAAM,QAA+B,EAAC;AAEtC,EAAA,KAAA,MAAW,cAAc,WAAA,EAAa;AACpC,IAAA,MAAM,SAAS,UAAA,CAAW,SAAA;AAC1B,IAAA,MAAM,IAAA,GAAO,MAAA,CAAO,mBAAA,CAAoB,MAAM,CAAA;AAG9C,IAAA,MAAMA,aAAA,GAAcC,sCAAA,CAA2B,WAAA,CAAY,MAAM,CAAA;AACjE,IAAA,MAAM,OAAA,CAAQ,GAAA,CAAID,aAAA,CAAY,GAAA,CAAI,CAAC,CAAA,KAAME,aAAA,CAAS,OAAA,EAAS,EAAE,IAAA,EAAM,CAAA,EAAG,CAAC,CAAC,CAAA;AAExE,IAAA,KAAA,MAAW,OAAO,IAAA,EAAM;AACtB,MAAA,MAAM,QAAA,GAAWC,kCAAA,CAAyB,WAAA,CAAY,MAAA,EAAQ,KAAK,IAAI,CAAA;AACvE,MAAA,IAAI,CAAC,QAAA,EAAU;AACb,QAAA;AAAA,MACF;AAEA,MAAA,IAAI,CAAC,QAAA,CAAS,IAAA,IAAQ,CAAC,SAAS,OAAA,EAAS;AACvC,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,iBAAA,GAAoBC,8BAAA,CAAuB,WAAA,CAAY,MAAM,CAAA;AACnE,MAAA,IAAI,sBAAsB,IAAA,EAAM;AAC9B,QAAA;AAAA,MACF;AAEA,MAAA,KAAA,MAAW,MAAA,IAAU,SAAS,OAAA,EAAS;AACrC,QAAA,MAAM,gBAAA,GAAmBA,8BAAA,CAAuB,WAAA,CAAY,MAAA,EAAQ,GAAG,CAAA;AAEvE,QAAA,IAAI,qBAAqB,IAAA,EAAM;AAC7B,UAAA;AAAA,QACF;AAEA,QAAA,KAAA,CAAM,QAAA,CAAS,IAAI,CAAA,GAAI;AAAA,UACrB,GAAG,KAAA,CAAM,QAAA,CAAS,IAAI,CAAA;AAAA,UACtB,CAAC,MAAM,GAAG,MAAMC,8BAAkB,OAAA,EAAS,UAAA,EAAY,KAAK,QAAQ;AAAA,SACtE;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,EAAA,OAAO,KAAA;AACT;;;;"}