openapi-metadata
Version:
Auto-Generate OpenAPI specifications from Typescript decorators
46 lines (42 loc) • 1.56 kB
JavaScript
;
const operation$1 = require('./operation.cjs');
require('deepmerge');
const operation = require('../metadata/operation.cjs');
const exclude = require('../metadata/exclude.cjs');
const extraModels = require('../metadata/extra-models.cjs');
const type = require('../loaders/type.cjs');
async function generatePaths(context, controllers) {
const paths = {};
for (const controller of controllers) {
const target = controller.prototype;
const keys = Object.getOwnPropertyNames(target);
const extraModels$1 = extraModels.ExtraModelsMetadataStorage.getMetadata(target);
await Promise.all(extraModels$1.map((m) => type.loadType(context, { type: m })));
for (const key of keys) {
const metadata = operation.OperationMetadataStorage.getMetadata(target, key, true);
if (!metadata) {
continue;
}
if (!metadata.path || !metadata.methods) {
continue;
}
const excludeController = exclude.ExcludeMetadataStorage.getMetadata(target);
if (excludeController === true) {
continue;
}
for (const method of metadata.methods) {
const excludeOperation = exclude.ExcludeMetadataStorage.getMetadata(target, key);
if (excludeOperation === true) {
continue;
}
paths[metadata.path] = {
...paths[metadata.path],
[method]: await operation$1.generateOperation(context, controller, key, metadata)
};
}
}
}
return paths;
}
exports.generatePaths = generatePaths;
//# sourceMappingURL=paths.cjs.map