UNPKG

openapi-metadata

Version:

Auto-Generate OpenAPI specifications from Typescript decorators

1 lines 3.46 kB
{"version":3,"file":"operation.cjs","sources":["../../src/generators/operation.ts"],"sourcesContent":["import type { OpenAPIV3 } from \"openapi-types\";\nimport type { Context } from \"../context.js\";\nimport type { OperationMetadata } from \"../metadata/operation.js\";\nimport { OperationBodyMetadataStorage } from \"../metadata/operation-body.js\";\nimport { generateOperationBody } from \"./operation-body.js\";\nimport { OperationParameterMetadataStorage } from \"../metadata/operation-parameter.js\";\nimport { generateOperationParameters } from \"./operation-parameters.js\";\nimport { OperationResponseMetadataStorage } from \"../metadata/operation-response.js\";\nimport { generateOperationResponse } from \"./operation-response.js\";\nimport { OperationSecurityMetadataStorage } from \"../metadata/operation-security.js\";\n\nexport async function generateOperation(\n context: Context,\n controller: Function,\n propertyKey: string,\n { path, methods, ...metadata }: OperationMetadata,\n): Promise<OpenAPIV3.OperationObject> {\n const operation: OpenAPIV3.OperationObject = { ...metadata, responses: {} };\n\n const target = controller.prototype;\n\n const body = OperationBodyMetadataStorage.getMetadata(target, propertyKey);\n if (body) {\n operation.requestBody = await generateOperationBody(context, body);\n }\n\n const parameters = OperationParameterMetadataStorage.getMetadata(target, propertyKey, true);\n operation.parameters = [];\n for (const parameter of parameters) {\n operation.parameters.push(await generateOperationParameters(context, parameter));\n }\n\n const responses = OperationResponseMetadataStorage.getMetadata(target, propertyKey, true);\n for (const [status, response] of Object.entries(responses)) {\n operation.responses[status] = await generateOperationResponse(context, response);\n }\n\n const security = OperationSecurityMetadataStorage.getMetadata(target, propertyKey, true);\n\n // TODO: Check what the difference between `[{ auth1: {} }, {auth2: {} }]` and `[{ auth1: {}, auth2: {}}]`\n operation.security = Object.keys(security).length > 0 ? [security] : [];\n\n return operation;\n}\n"],"names":["OperationBodyMetadataStorage","generateOperationBody","OperationParameterMetadataStorage","generateOperationParameters","OperationResponseMetadataStorage","generateOperationResponse","OperationSecurityMetadataStorage"],"mappings":";;;;;;;;;;AAWA,eAAsB,iBAAA,CACpB,SACA,UAAA,EACA,WAAA,EACA,EAAE,IAAA,EAAM,OAAA,EAAS,GAAG,QAAA,EAAS,EACO;AACpC,EAAA,MAAM,YAAuC,EAAE,GAAG,QAAA,EAAU,SAAA,EAAW,EAAC,EAAE;AAE1E,EAAA,MAAM,SAAS,UAAA,CAAW,SAAA;AAE1B,EAAA,MAAM,IAAA,GAAOA,0CAAA,CAA6B,WAAA,CAAY,MAAA,EAAQ,WAAW,CAAA;AACzE,EAAA,IAAI,IAAA,EAAM;AACR,IAAA,SAAA,CAAU,WAAA,GAAc,MAAMC,qCAAA,CAAsB,OAAA,EAAS,IAAI,CAAA;AAAA,EACnE;AAEA,EAAA,MAAM,UAAA,GAAaC,oDAAA,CAAkC,WAAA,CAAY,MAAA,EAAQ,aAAa,IAAI,CAAA;AAC1F,EAAA,SAAA,CAAU,aAAa,EAAC;AACxB,EAAA,KAAA,MAAW,aAAa,UAAA,EAAY;AAClC,IAAA,SAAA,CAAU,WAAW,IAAA,CAAK,MAAMC,+CAAA,CAA4B,OAAA,EAAS,SAAS,CAAC,CAAA;AAAA,EACjF;AAEA,EAAA,MAAM,SAAA,GAAYC,kDAAA,CAAiC,WAAA,CAAY,MAAA,EAAQ,aAAa,IAAI,CAAA;AACxF,EAAA,KAAA,MAAW,CAAC,MAAA,EAAQ,QAAQ,KAAK,MAAA,CAAO,OAAA,CAAQ,SAAS,CAAA,EAAG;AAC1D,IAAA,SAAA,CAAU,UAAU,MAAM,CAAA,GAAI,MAAMC,6CAAA,CAA0B,SAAS,QAAQ,CAAA;AAAA,EACjF;AAEA,EAAA,MAAM,QAAA,GAAWC,kDAAA,CAAiC,WAAA,CAAY,MAAA,EAAQ,aAAa,IAAI,CAAA;AAGvF,EAAA,SAAA,CAAU,QAAA,GAAW,MAAA,CAAO,IAAA,CAAK,QAAQ,CAAA,CAAE,SAAS,CAAA,GAAI,CAAC,QAAQ,CAAA,GAAI,EAAC;AAEtE,EAAA,OAAO,SAAA;AACT;;;;"}