@autorest/openapi-to-typespec
Version:
Autorest plugin to scaffold a Typespec definition from an OpenAPI document
44 lines • 1.98 kB
JavaScript
;
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