openapi-ts-request
Version:
Swagger2/OpenAPI3/Apifox to TypeScript/JavaScript, request client(support any client), request mock service, enum and enum translation, react-query/vue-query, type field label, JSON Schemas
268 lines (267 loc) • 13.1 kB
JavaScript
"use strict";
var _Merger_instances, _Merger_project, _Merger_sourceFile, _Merger_mergeRule, _Merger_mergedFile, _Merger_sourceCode, _Merger_leadingCommentRanges, _Merger_mergeExport, _Merger_mergeClass, _Merger_mergeType, _Merger_mergeEnums, _Merger_mergeInterfaces, _Merger_mergeFunctions, _Merger_mergeVariables, _Merger_mergeImports;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Merger = void 0;
const tslib_1 = require("tslib");
const ts_morph_1 = require("ts-morph");
const ts = tslib_1.__importStar(require("typescript"));
const type_1 = require("./type");
const sortMapByKey = (map) => {
return Array.from(map.entries())
.sort((a, b) => a[0].localeCompare(b[0]))
.map(([k, v]) => ({ k, v }));
};
class Merger {
constructor({ srcPath, source, mergeRule = type_1.MergeRule.RIGHT, projectOptions = {}, }) {
_Merger_instances.add(this);
_Merger_project.set(this, void 0);
_Merger_sourceFile.set(this, void 0);
_Merger_mergeRule.set(this, void 0);
_Merger_mergedFile.set(this, void 0);
_Merger_sourceCode.set(this, void 0);
_Merger_leadingCommentRanges.set(this, []);
tslib_1.__classPrivateFieldSet(this, _Merger_project, new ts_morph_1.Project(projectOptions), "f");
if (srcPath) {
tslib_1.__classPrivateFieldSet(this, _Merger_sourceFile, tslib_1.__classPrivateFieldGet(this, _Merger_project, "f").addSourceFileAtPath(srcPath), "f");
tslib_1.__classPrivateFieldSet(this, _Merger_sourceCode, tslib_1.__classPrivateFieldGet(this, _Merger_sourceFile, "f").getFullText().trim(), "f");
}
else if (source) {
tslib_1.__classPrivateFieldSet(this, _Merger_sourceCode, source.trim(), "f");
tslib_1.__classPrivateFieldSet(this, _Merger_sourceFile, tslib_1.__classPrivateFieldGet(this, _Merger_project, "f").createSourceFile('_source_.ts', source), "f");
}
try {
if (tslib_1.__classPrivateFieldGet(this, _Merger_sourceCode, "f")) {
tslib_1.__classPrivateFieldSet(this, _Merger_leadingCommentRanges, ts
.getLeadingCommentRanges(tslib_1.__classPrivateFieldGet(this, _Merger_sourceCode, "f"), 0)
.map((range) => {
return tslib_1.__classPrivateFieldGet(this, _Merger_sourceCode, "f").slice(range.pos, range.end);
}), "f");
}
}
catch (error) {
// console.log(error, '>>>');
}
tslib_1.__classPrivateFieldSet(this, _Merger_mergeRule, mergeRule, "f");
tslib_1.__classPrivateFieldSet(this, _Merger_mergedFile, tslib_1.__classPrivateFieldGet(this, _Merger_project, "f").createSourceFile('_merged_.ts'), "f");
}
merge({ srcPath, source }) {
let destFile;
if (srcPath) {
destFile = tslib_1.__classPrivateFieldGet(this, _Merger_project, "f").addSourceFileAtPath(srcPath);
}
else if (source) {
if (!source.trim()) {
return tslib_1.__classPrivateFieldGet(this, _Merger_sourceCode, "f");
}
destFile = tslib_1.__classPrivateFieldGet(this, _Merger_project, "f").createSourceFile('_dest_.ts', source);
}
if (!tslib_1.__classPrivateFieldGet(this, _Merger_sourceCode, "f")) {
return destFile.getFullText();
}
const destCode = destFile.getFullText().trim();
if (tslib_1.__classPrivateFieldGet(this, _Merger_sourceCode, "f") === destCode) {
return tslib_1.__classPrivateFieldGet(this, _Merger_sourceCode, "f");
}
tslib_1.__classPrivateFieldGet(this, _Merger_instances, "m", _Merger_mergeImports).call(this, destFile);
tslib_1.__classPrivateFieldGet(this, _Merger_instances, "m", _Merger_mergeVariables).call(this, destFile);
tslib_1.__classPrivateFieldGet(this, _Merger_instances, "m", _Merger_mergeClass).call(this, destFile);
tslib_1.__classPrivateFieldGet(this, _Merger_instances, "m", _Merger_mergeType).call(this, destFile);
tslib_1.__classPrivateFieldGet(this, _Merger_instances, "m", _Merger_mergeEnums).call(this, destFile);
tslib_1.__classPrivateFieldGet(this, _Merger_instances, "m", _Merger_mergeInterfaces).call(this, destFile);
tslib_1.__classPrivateFieldGet(this, _Merger_instances, "m", _Merger_mergeFunctions).call(this, destFile);
tslib_1.__classPrivateFieldGet(this, _Merger_instances, "m", _Merger_mergeExport).call(this, destFile);
// console.log(source, '>>>>');
// if (srcPath?.includes('index.ts')) {
// console.log(source, '>>>>');
// }
const leadingComment = tslib_1.__classPrivateFieldGet(this, _Merger_leadingCommentRanges, "f").join('\n');
if (leadingComment) {
return `${leadingComment}\n${tslib_1.__classPrivateFieldGet(this, _Merger_mergedFile, "f").getFullText()}`;
}
return tslib_1.__classPrivateFieldGet(this, _Merger_mergedFile, "f").getFullText();
}
}
exports.Merger = Merger;
_Merger_project = new WeakMap(), _Merger_sourceFile = new WeakMap(), _Merger_mergeRule = new WeakMap(), _Merger_mergedFile = new WeakMap(), _Merger_sourceCode = new WeakMap(), _Merger_leadingCommentRanges = new WeakMap(), _Merger_instances = new WeakSet(), _Merger_mergeExport = function _Merger_mergeExport(destFile) {
var _a, _b;
const exportMap = new Map();
// const exportArray: ExportDeclarationStructure[] = [];
(_a = tslib_1.__classPrivateFieldGet(this, _Merger_sourceFile, "f").getExportDeclarations()) === null || _a === void 0 ? void 0 : _a.forEach((e) => {
const eStructure = e.getStructure();
const path = e.getModuleSpecifierValue();
if (path) {
exportMap.set(path, eStructure);
}
});
(_b = destFile.getExportDeclarations()) === null || _b === void 0 ? void 0 : _b.forEach((e) => {
const eStructure = e.getStructure();
const path = e.getModuleSpecifierValue();
if (path) {
exportMap.set(path, eStructure);
}
});
sortMapByKey(exportMap).forEach(({ v }) => {
tslib_1.__classPrivateFieldGet(this, _Merger_mergedFile, "f").addExportDeclaration(v);
});
}, _Merger_mergeClass = function _Merger_mergeClass(destFile) {
const classMap = new Map();
tslib_1.__classPrivateFieldGet(this, _Merger_sourceFile, "f").getClasses().forEach((c) => {
const cName = c.getName();
const cStructure = c.getStructure();
classMap.set(cName, cStructure);
});
destFile.getClasses().forEach((c) => {
const cName = c.getName();
if (classMap.has(cName)) {
if (tslib_1.__classPrivateFieldGet(this, _Merger_mergeRule, "f") === type_1.MergeRule.RIGHT) {
const cStructure = c.getStructure();
classMap.set(cName, cStructure);
}
}
else {
const cStructure = c.getStructure();
classMap.set(cName, cStructure);
}
});
sortMapByKey(classMap).forEach(({ v }) => {
tslib_1.__classPrivateFieldGet(this, _Merger_mergedFile, "f").addClass(v);
});
}, _Merger_mergeType = function _Merger_mergeType(destFile) {
const typeMap = new Map();
tslib_1.__classPrivateFieldGet(this, _Merger_sourceFile, "f").getTypeAliases().forEach((t) => {
const tName = t.getName();
const tStructure = t.getStructure();
typeMap.set(tName, tStructure);
});
destFile.getTypeAliases().forEach((t) => {
const tName = t.getName();
if (typeMap.has(tName)) {
if (tslib_1.__classPrivateFieldGet(this, _Merger_mergeRule, "f") === type_1.MergeRule.RIGHT) {
const tStructure = t.getStructure();
typeMap.set(tName, tStructure);
}
}
else {
const tStructure = t.getStructure();
typeMap.set(tName, tStructure);
}
});
sortMapByKey(typeMap).forEach(({ v }) => {
tslib_1.__classPrivateFieldGet(this, _Merger_mergedFile, "f").addTypeAlias(v);
});
}, _Merger_mergeEnums = function _Merger_mergeEnums(destFile) {
const enumMap = new Map();
tslib_1.__classPrivateFieldGet(this, _Merger_sourceFile, "f").getEnums().forEach((e) => {
const eName = e.getName();
const eStructure = e.getStructure();
enumMap.set(eName, eStructure);
});
destFile.getEnums().forEach((e) => {
const eName = e.getName();
if (enumMap.has(eName)) {
if (tslib_1.__classPrivateFieldGet(this, _Merger_mergeRule, "f") === type_1.MergeRule.RIGHT) {
const eStructure = e.getStructure();
enumMap.set(eName, eStructure);
}
}
else {
const eStructure = e.getStructure();
enumMap.set(eName, eStructure);
}
});
sortMapByKey(enumMap).forEach(({ v }) => {
tslib_1.__classPrivateFieldGet(this, _Merger_mergedFile, "f").addEnum(v);
});
}, _Merger_mergeInterfaces = function _Merger_mergeInterfaces(destFile) {
const interfaceMap = new Map();
tslib_1.__classPrivateFieldGet(this, _Merger_sourceFile, "f").getInterfaces().forEach((i) => {
const iName = i.getName();
const iStructure = i.getStructure();
interfaceMap.set(iName, iStructure);
});
destFile.getInterfaces().forEach((i) => {
const iName = i.getName();
if (interfaceMap.has(iName)) {
if (tslib_1.__classPrivateFieldGet(this, _Merger_mergeRule, "f") === type_1.MergeRule.RIGHT) {
const iStructure = i.getStructure();
interfaceMap.set(iName, iStructure);
}
}
else {
const iStructure = i.getStructure();
interfaceMap.set(iName, iStructure);
}
});
sortMapByKey(interfaceMap).forEach(({ v }) => {
tslib_1.__classPrivateFieldGet(this, _Merger_mergedFile, "f").addInterface(v);
});
}, _Merger_mergeFunctions = function _Merger_mergeFunctions(destFile) {
const functionMap = new Map();
tslib_1.__classPrivateFieldGet(this, _Merger_sourceFile, "f").getFunctions().forEach((f) => {
const fName = f.getName();
const fStructure = f.getStructure();
functionMap.set(fName, fStructure);
});
destFile.getFunctions().forEach((f) => {
const fName = f.getName();
if (functionMap.has(fName)) {
if (tslib_1.__classPrivateFieldGet(this, _Merger_mergeRule, "f") === type_1.MergeRule.RIGHT) {
const fStructure = f.getStructure();
functionMap.set(fName, fStructure);
}
}
else {
const fStructure = f.getStructure();
functionMap.set(fName, fStructure);
}
});
sortMapByKey(functionMap).forEach(({ v }) => {
tslib_1.__classPrivateFieldGet(this, _Merger_mergedFile, "f").addFunction(v);
});
}, _Merger_mergeVariables = function _Merger_mergeVariables(destFile) {
const variableSet = new Map();
tslib_1.__classPrivateFieldGet(this, _Merger_sourceFile, "f").getVariableStatements().forEach((v) => {
var _a;
const vStructure = v.getStructure();
const vName = (_a = vStructure.declarations[0]) === null || _a === void 0 ? void 0 : _a.name;
variableSet.set(vName, vStructure);
});
destFile.getVariableStatements().forEach((v) => {
var _a;
const vStructure = v.getStructure();
const vName = (_a = vStructure.declarations[0]) === null || _a === void 0 ? void 0 : _a.name;
if (variableSet.has(vName)) {
if (tslib_1.__classPrivateFieldGet(this, _Merger_mergeRule, "f") === type_1.MergeRule.RIGHT) {
variableSet.set(vName, vStructure);
}
}
else {
const vStructure = v.getStructure();
variableSet.set(vName, vStructure);
}
});
sortMapByKey(variableSet).forEach(({ v }) => {
tslib_1.__classPrivateFieldGet(this, _Merger_mergedFile, "f").addVariableStatement(v);
});
}, _Merger_mergeImports = function _Merger_mergeImports(destFile) {
const importMap = new Map();
tslib_1.__classPrivateFieldGet(this, _Merger_sourceFile, "f").getImportDeclarations().forEach((i) => {
const iStructure = i.getStructure();
importMap.set(iStructure.moduleSpecifier, iStructure);
});
destFile.getImportDeclarations().forEach((i) => {
const iStructure = i.getStructure();
const iModuleSpecifier = iStructure.moduleSpecifier;
if (importMap.has(iModuleSpecifier)) {
if (tslib_1.__classPrivateFieldGet(this, _Merger_mergeRule, "f") === type_1.MergeRule.RIGHT) {
importMap.set(iModuleSpecifier, iStructure);
}
}
else {
importMap.set(iModuleSpecifier, iStructure);
}
});
sortMapByKey(importMap).forEach(({ v }) => {
tslib_1.__classPrivateFieldGet(this, _Merger_mergedFile, "f").addImportDeclaration(v);
});
};