@nestia/sdk
Version:
Nestia SDK and Swagger generator
73 lines • 3.99 kB
JavaScript
;
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