@azure-tools/codemodel-v3
Version:
AutoRest code model library
127 lines • 5.05 kB
JavaScript
;
/*---------------------------------------------------------------------------------------------
* 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