UNPKG

@azure-tools/codemodel-v3

Version:
127 lines 5.05 kB
"use strict"; /*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ Object.defineProperty(exports, "__esModule", { value: true }); exports.XML = exports.isSchemaObject = exports.isJsonType = exports.JsonType = exports.Discriminator = exports.Property = exports.getVirtualPropertyFromPropertyName = exports.getAllVirtualProperties = exports.getAllPublicVirtualProperties = exports.getAllProperties = exports.getPolymorphicBases = exports.Schema = exports.Purpose = void 0; const extensions_1 = require("./extensions"); const linq_1 = require("@azure-tools/linq"); const uid_1 = require("./uid"); var Purpose; (function (Purpose) { Purpose["Header"] = "Header"; })(Purpose = exports.Purpose || (exports.Purpose = {})); class Schema extends extensions_1.Extensions { constructor(name, initializer) { super(); this.required = new Array(); this.enum = new Array(); this.allOf = new Array(); this.oneOf = new Array(); this.anyOf = new Array(); this.properties = new linq_1.Dictionary(); this.extensions = new linq_1.Dictionary(); this.details = { default: { uid: `schema:${uid_1.uid()}`, description: '', name } }; this.apply(initializer); } } exports.Schema = Schema; function getPolymorphicBases(schema) { // are any of my parents polymorphic directly, or any of their parents? return [...linq_1.values(schema.allOf).where(parent => parent.discriminator ? true : false), ...linq_1.values(schema.allOf).selectMany(getPolymorphicBases)]; } exports.getPolymorphicBases = getPolymorphicBases; function getAllProperties(schema) { return [...linq_1.values(schema.allOf).selectMany(getAllProperties), ...linq_1.values(schema.properties)]; } exports.getAllProperties = getAllProperties; function getAllPublicVirtualProperties(virtualProperties) { const props = virtualProperties || { owned: [], inherited: [], inlined: [] }; return linq_1.values(props.owned, props.inherited, props.inlined).where(each => !each.private).toArray(); } exports.getAllPublicVirtualProperties = getAllPublicVirtualProperties; function getAllVirtualProperties(virtualProperties) { const props = virtualProperties || { owned: [], inherited: [], inlined: [] }; return linq_1.values(props.owned, props.inherited, props.inlined).toArray(); } exports.getAllVirtualProperties = getAllVirtualProperties; function getVirtualPropertyFromPropertyName(virtualProperties, propertyName) { const props = virtualProperties || { owned: [], inherited: [], inlined: [] }; return linq_1.values([...linq_1.values(props.owned), ...linq_1.values(props.inherited), ...linq_1.values(props.inlined)]).first(each => each.property.serializedName === propertyName); } exports.getVirtualPropertyFromPropertyName = getVirtualPropertyFromPropertyName; class Property extends extensions_1.Extensions { constructor(name, initializer) { super(); this.extensions = new linq_1.Dictionary(); this.serializedName = name; this.details = { default: { readOnly: false, uid: `property:${uid_1.uid()}`, description: (initializer === null || initializer === void 0 ? void 0 : initializer.description) || '', name, required: false } }; this.apply(initializer); } } exports.Property = Property; class Discriminator extends extensions_1.Extensions { constructor(propertyName, initializer) { super(); this.propertyName = propertyName; this.extensions = new linq_1.Dictionary(); this.mapping = new linq_1.Dictionary(); this.apply(initializer); } } exports.Discriminator = Discriminator; var JsonType; (function (JsonType) { JsonType["Array"] = "array"; JsonType["Boolean"] = "boolean"; JsonType["Integer"] = "integer"; JsonType["Number"] = "number"; JsonType["Object"] = "object"; JsonType["String"] = "string"; })(JsonType = exports.JsonType || (exports.JsonType = {})); function isJsonType(type, schema) { return schema ? schema.type === type : false; } exports.isJsonType = isJsonType; function isSchemaObject(schema) { return isJsonType(JsonType.Object, schema); } exports.isSchemaObject = isSchemaObject; class XML extends extensions_1.Extensions { constructor(initializer) { super(); this.extensions = new linq_1.Dictionary(); this.attribute = false; this.wrapped = false; this.apply(initializer); } } exports.XML = XML; //# sourceMappingURL=schema.js.map