UNPKG

@nestia/sdk

Version:

Nestia SDK and Swagger generator

73 lines 3.99 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.SdkHttpCloneProgrammer = void 0; const typescript_1 = __importDefault(require("typescript")); const MapUtil_1 = require("../../utils/MapUtil"); const StringUtil_1 = require("../../utils/StringUtil"); const FilePrinter_1 = require("./FilePrinter"); const SdkTypeProgrammer_1 = require("./SdkTypeProgrammer"); var SdkHttpCloneProgrammer; (function (SdkHttpCloneProgrammer) { SdkHttpCloneProgrammer.write = (app) => { // COMPOSE THE DICTIONARY const dict = new Map(); for (const [k, v] of app.collection.objects.entries()) if (StringUtil_1.StringUtil.isImplicit(k) === false) prepare({ dict, name: k, programmer: (importer) => write_object(app.project)(importer)(v), }); for (const [k, v] of app.collection.aliases.entries()) if (StringUtil_1.StringUtil.isImplicit(k) === false) prepare({ dict, name: k, programmer: (importer) => write_alias(app.project)(importer)(v), }); return dict; }; const prepare = (props) => { let next = props.dict; const accessors = props.name.split("."); const modulo = { value: null }; accessors.forEach((acc, i) => { modulo.value = MapUtil_1.MapUtil.take(next, acc, () => ({ name: acc, children: new Map(), programmer: null, })); if (i === accessors.length - 1) modulo.value.programmer = props.programmer; next = modulo.value.children; }); return modulo; }; const write_alias = (project) => (importer) => (alias) => FilePrinter_1.FilePrinter.description(typescript_1.default.factory.createTypeAliasDeclaration([typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.ExportKeyword)], alias.name.split(".").at(-1), [], SdkTypeProgrammer_1.SdkTypeProgrammer.write(project)(importer)(alias.value)), writeComment([])(alias.description, alias.jsDocTags)); const write_object = (project) => (importer) => (object) => { var _a; return FilePrinter_1.FilePrinter.description(typescript_1.default.factory.createTypeAliasDeclaration([typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.ExportKeyword)], object.name.split(".").at(-1), [], SdkTypeProgrammer_1.SdkTypeProgrammer.write_object(project)(importer)(object)), writeComment([])((_a = object.description) !== null && _a !== void 0 ? _a : null, object.jsDocTags)); }; })(SdkHttpCloneProgrammer || (exports.SdkHttpCloneProgrammer = SdkHttpCloneProgrammer = {})); const writeComment = (atomics) => (description, jsDocTags) => { const lines = []; if (description === null || description === void 0 ? void 0 : description.length) lines.push(...description.split("\n").map((s) => `${s}`)); const filtered = !!atomics.length && !!(jsDocTags === null || jsDocTags === void 0 ? void 0 : jsDocTags.length) ? jsDocTags.filter((tag) => !atomics.some((a) => a.tags.some((r) => r.some((t) => t.kind === tag.name)))) : (jsDocTags !== null && jsDocTags !== void 0 ? jsDocTags : []); if ((description === null || description === void 0 ? void 0 : description.length) && filtered.length) lines.push(""); if (filtered.length) lines.push(...filtered.map((t) => { var _a; return ((_a = t.text) === null || _a === void 0 ? void 0 : _a.length) ? `@${t.name} ${t.text.map((e) => e.text).join("")}` : `@${t.name}`; })); return lines.join("\n"); }; //# sourceMappingURL=SdkHttpCloneProgrammer.js.map