UNPKG

boats

Version:

Beautiful Open / Async Template System - Write less yaml with BOATS and Nunjucks.

35 lines (34 loc) 1.25 kB
"use strict"; 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;