UNPKG

ern-api-gen

Version:

Electrode Native API generator

68 lines 2.51 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const factory_1 = require("./factory"); const ModelImpl_1 = __importDefault(require("./ModelImpl")); const ArrayModel_1 = __importDefault(require("./ArrayModel")); const RefModel_1 = __importDefault(require("./RefModel")); const ComposedModel_1 = __importDefault(require("./ComposedModel")); const beanUtils_1 = require("../java/beanUtils"); const properties_1 = require("./properties"); const LoggerFactory_1 = __importDefault(require("../java/LoggerFactory")); const Log = LoggerFactory_1.default.getLogger(`PropertyBuilder`); function build(type, format, args) { const prop = { type, format }; if (args) { for (const [k, v] of args) { prop[k] = v; } } const property = factory_1.factory(prop); if (property == null) { Log.error(`could not find property for type ${type} ${format}`); } return property; } exports.build = build; function toModel(property, parent) { if (property == null || property instanceof ArrayModel_1.default || property instanceof RefModel_1.default || property instanceof ModelImpl_1.default) { return property; } property = factory_1.factory(property); const { allowedProps } = property.constructor; let model; if (property.allOf) { model = new ComposedModel_1.default(); const interfaces = property.allOf.filter(withRef); const child = property.allOf.filter(withOutRef); model.parent(parent).child(toModel(child.shift(), model)); model.setInterfaces(interfaces.map(c => toModel(c, model))); if (child.length) { Log.warn(`An allOf can only have 1 implementation, it can have multiple $ref types`); } } else if (property instanceof properties_1.ArrayProperty) { model = new ArrayModel_1.default(); } else if (property instanceof properties_1.RefProperty) { model = new RefModel_1.default(); } else { model = new ModelImpl_1.default(); } beanUtils_1.apply(model, property, [...allowedProps, 'externalDocs']); return model; } exports.toModel = toModel; const withOutRef = ({ $ref }) => !$ref; const withRef = ({ $ref }) => $ref; exports.default = { build, toModel, }; //# sourceMappingURL=PropertyBuilder.js.map