UNPKG

godspeed-crud-api-generator

Version:

godspeed CRUD api generator will generate events and workflows based on datasource schema model

67 lines 3.23 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.generateDefinitionsFile = void 0; const assert_1 = __importDefault(require("assert")); const replaceValuesByRegx_1 = __importDefault(require("../../helpers/replaceValuesByRegx")); const event_1 = require("./event"); const generateDefinitionsFile = (dsName, modelName, jsonSchema, modelFields) => { var _a; let indexField = (0, event_1.findIndexField)(modelFields); (0, assert_1.default)(jsonSchema, `There is no valid jsonSchema present for ${dsName}.`); let definitions = jsonSchema.definitions; (0, assert_1.default)(definitions, `There is no valid definitions present in jsonSchema.`); let modelDefinition = definitions[modelName]; (0, assert_1.default)(modelDefinition && typeof modelDefinition !== 'boolean', `Definition is undefined or boolean(unsupported) for ${modelName}`); let sanitizedProperties = Object.keys((_a = modelDefinition.properties) !== null && _a !== void 0 ? _a : {}).reduce((accumulator, propertyName) => { (0, assert_1.default)(typeof modelDefinition !== 'boolean', `Definition of type boolean unsupported`); if (typeof modelDefinition.properties !== 'undefined') { let property = modelDefinition.properties[propertyName]; let _prop = {}; (0, assert_1.default)(typeof property !== 'boolean', 'Property of type boolean unsupported'); if (property.type === 'array') { if (property.items && property.items.hasOwnProperty('$ref')) { return accumulator; } } if (property.hasOwnProperty('$ref')) { return accumulator; } if (property.hasOwnProperty('anyOf') || property.hasOwnProperty('allOf') || property.hasOwnProperty('oneOf')) { let _ = property.anyOf || property.allOf || property.oneOf; (0, assert_1.default)(_, 'anyOf/allOf/oneOf not defined'); let refCount = _.filter((obj) => { return obj.hasOwnProperty('$ref') ? true : false; }).length; if (refCount) { return accumulator; } } if (Array.isArray(property.type)) { if (property.type.find((_) => _ === 'null')) { _prop['nullable'] = true; _prop['type'] = property.type[0]; } property = { ...property, ..._prop, }; } accumulator[propertyName] = property; return accumulator; } }, {}); const { id, ...rest } = sanitizedProperties; let _defs = {}; _defs[modelName] = { type: 'object', properties: rest, }; return (0, replaceValuesByRegx_1.default)(_defs, /^(#\/definitions\/)(.*)/i, `$1${dsName}/$2`); }; exports.generateDefinitionsFile = generateDefinitionsFile; //# sourceMappingURL=definitions.js.map