UNPKG

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
"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); }); };