UNPKG

@autorest/openapi-to-typespec

Version:

Autorest plugin to scaffold a Typespec definition from an OpenAPI document

61 lines 3.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.generateAdditionalProperties = exports.generateTemplateModel = exports.getSpreadExpressionDecalaration = exports.getModelPropertyDeclarations = exports.getModelPropertiesDeclarations = void 0; const decorators_1 = require("./decorators"); const docs_1 = require("./docs"); const suppressions_1 = require("./suppressions"); const type_mapping_1 = require("./type-mapping"); function getModelPropertiesDeclarations(properties) { const definitions = []; for (const property of properties) { definitions.push(...getModelPropertyDeclarations(property)); } return definitions; } exports.getModelPropertiesDeclarations = getModelPropertiesDeclarations; function getModelPropertyDeclarations(property) { const definitions = []; const propertyDoc = (0, docs_1.generateDocs)(property); propertyDoc && definitions.push(propertyDoc); const decorators = (0, decorators_1.generateDecorators)(property.decorators); decorators && definitions.push(decorators); property.fixMe && property.fixMe.length && definitions.push(property.fixMe.join("\n")); let defaultValue = ""; if (property.defaultValue) { defaultValue = ` = ${property.defaultValue}`; } if (property.suppressions) { definitions.push(...(0, suppressions_1.generateSuppressions)(property.suppressions)); } definitions.push(`"${property.name}"${getOptionalOperator(property)}: ${(0, type_mapping_1.getFullyQualifiedName)(property.type)}${defaultValue};`); return definitions; } exports.getModelPropertyDeclarations = getModelPropertyDeclarations; function getSpreadExpressionDecalaration(property) { return `...${generateTemplateModel(property.model)}`; } exports.getSpreadExpressionDecalaration = getSpreadExpressionDecalaration; function getOptionalOperator(property) { return property.isOptional ? "?" : ""; } function generateTemplateModel(templateModel) { return `${templateModel.name}${templateModel.namedArguments ? `<${Object.keys(templateModel.namedArguments) .map((k) => `${k} = ${templateModel.namedArguments[k]}`) .join(",")}>` : ""}${!templateModel.namedArguments && templateModel.arguments ? `<${templateModel.arguments .map((a) => a.kind === "template" ? generateTemplateModel(a) : `${a.name}${a.additionalProperties ? ` & { ${generateAdditionalProperties(a.additionalProperties)} }` : ""}`) .join(",")}>` : ""}${templateModel.additionalProperties ? ` & { ${generateAdditionalProperties(templateModel.additionalProperties)} }` : ""}${templateModel.additionalTemplateModel ? templateModel.additionalTemplateModel : ""}`; } exports.generateTemplateModel = generateTemplateModel; function generateAdditionalProperties(properties) { return properties.map((p) => getModelPropertyDeclarations(p).join("\n")).join(";"); } exports.generateAdditionalProperties = generateAdditionalProperties; //# sourceMappingURL=model-generation.js.map