UNPKG

@autorest/openapi-to-typespec

Version:

Autorest plugin to scaffold a Typespec definition from an OpenAPI document

44 lines 1.98 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.emitClient = void 0; const autorest_session_1 = require("../autorest-session"); const generate_client_1 = require("../generate/generate-client"); const options_1 = require("../options"); const format_1 = require("../utils/format"); const imports_1 = require("../utils/imports"); const namespace_1 = require("../utils/namespace"); async function emitClient(filePath, program) { const content = generateClient(program); if (content === "") { return; } const session = (0, autorest_session_1.getSession)(); session.writeFile({ filename: filePath, content: await (0, format_1.formatTypespecFile)(content, filePath) }); } exports.emitClient = emitClient; function generateClient(program) { const { isArm, isFullCompatible } = (0, options_1.getOptions)(); const { models } = program; const { modules, namespaces: namespacesSet } = (0, imports_1.getClientImports)(program); const imports = (isFullCompatible ? [...new Set([...modules])] : [...new Set([`import "./main.tsp";`, ...modules])]).join("\n"); const namespaces = [...new Set([...namespacesSet, `using ${(0, namespace_1.getNamespace)(program)};`])].join("\n"); const objects = models.objects .map(generate_client_1.generateObjectClientDecorator) .filter((r) => r !== "") .join("\n\n"); const armResources = isArm ? models.armResources .map(generate_client_1.generateArmResourceClientDecorator) .filter((r) => r !== "") .join("\n\n") : ""; const enums = models.enums .map(generate_client_1.generateEnumClientDecorator) .filter((r) => r !== "") .join("\n\n"); if (objects === "" && armResources === "" && enums === "") { return ""; } return [imports, "\n", namespaces, "\n", objects, "\n", armResources, "\n", enums].join("\n"); } //# sourceMappingURL=emit-client.js.map