boats
Version:
Beautiful Open / Async Template System - Write less yaml with BOATS and Nunjucks.
35 lines (34 loc) • 1.25 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const generatePermissionsSchema = (bundledJson, generateSchemaNamed) => {
if (!bundledJson.paths || !generateSchemaNamed) {
return bundledJson;
}
const isSwagger = !!bundledJson.swagger;
const allPermissions = Object.values(bundledJson.paths)
.map((method) => Object.values(method))
.flat()
.map((definition) => (definition['x-permission']))
.filter((permissionName) => permissionName);
if (!allPermissions.length) {
return bundledJson;
}
if (isSwagger) {
bundledJson.definitions = bundledJson.definitions || {};
}
else {
bundledJson.components.schemas = bundledJson.components.schemas || {};
}
const schemasRef = isSwagger
? bundledJson.definitions
: bundledJson.components.schemas;
if (schemasRef[generateSchemaNamed]) {
console.info(`INFO: Schema named "${generateSchemaNamed}" already exists, overwriting this with the generated permissions schema.`);
}
schemasRef[generateSchemaNamed] = {
type: 'string',
enum: allPermissions
};
return bundledJson;
};
exports.default = generatePermissionsSchema;