UNPKG

@vkontakte/api-schema-typescript-generator

Version:

VK API TypeScript generator

102 lines (101 loc) 3.36 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SchemaObject = void 0; const utils_1 = require("../utils"); const helpers_1 = require("../helpers"); const log_1 = require("../log"); class SchemaObject { constructor(name, object, parentName) { if (!(0, utils_1.isObject)(object)) { (0, log_1.consoleLogErrorAndExit)(`[SchemaObject] "${name}" is not an object.`, { name, object, parentName, }); return; } this.name = name; if (parentName) { this.parentObjectName = parentName; } if ((0, utils_1.isString)(object.type)) { this.type = object.type; } else if (Array.isArray(object.type)) { this.type = object.type; } if ((0, utils_1.isString)(object.description)) { this.description = object.description; } if ((0, utils_1.isString)(object.$ref)) { this.ref = object.$ref; } if (Array.isArray(object.enum)) { this.enum = object.enum; } if (Array.isArray(object.enumNames)) { this.enumNames = object.enumNames; } if (Array.isArray(object.required)) { this.required = object.required; } else { this.required = []; } if (typeof object.required === 'boolean') { this.isRequired = object.required; } this.properties = []; if (object.properties) { Object.entries(object.properties).forEach(([propertyName, property]) => { this.properties.push(new SchemaObject(propertyName, property, name)); }); } this.parameters = []; if (Array.isArray(object.parameters)) { object.parameters.forEach((parameter) => { this.parameters.push(new SchemaObject(parameter.name, parameter, `${name} param`)); }); } if (object.patternProperties) { Object.entries(object.patternProperties).forEach(([propertyName, property]) => { this.properties.push(new SchemaObject((0, helpers_1.transformPatternPropertyName)(propertyName), property, name)); }); } if ((0, utils_1.isObject)(object.items)) { this.items = new SchemaObject(name + '_items', object.items, this.name); } if (Array.isArray(object.oneOf) && object.oneOf.length > 0) { this.oneOf = object.oneOf.map((item) => new SchemaObject(name, item)); } if (Array.isArray(object.allOf) && object.allOf.length > 0) { this.allOf = object.allOf.map((item) => new SchemaObject(name, item)); } } name; parentObjectName; type; description; ref; required; isRequired; enum; enumNames; properties; parameters; items; oneOf; allOf; setName(name) { this.name = name; if (Array.isArray(this.properties)) { this.properties.forEach((property) => { property.parentObjectName = name; }); } } clone() { return Object.assign(Object.create(Object.getPrototypeOf(this)), this); } } exports.SchemaObject = SchemaObject;