UNPKG

egg-ts-helper

Version:
163 lines 12.8 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || (function () { var ownKeys = function(o) { ownKeys = Object.getOwnPropertyNames || function (o) { var ar = []; for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; return ar; }; return ownKeys(o); }; return function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); __setModuleDefault(result, mod); return result; }; })(); var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.checkConfigReturnType = checkConfigReturnType; const node_fs_1 = __importDefault(require("node:fs")); const node_path_1 = __importDefault(require("node:path")); const typescript_1 = __importDefault(require("typescript")); const config_1 = require("../config"); const utils = __importStar(require("../utils")); const base_1 = require("./base"); const EXPORT_DEFAULT_FUNCTION = 1; const EXPORT_DEFAULT = 2; const EXPORT = 3; const globalCache = {}; class ConfigGenerator extends base_1.BaseGenerator { buildParams(config) { const { baseConfig } = this; const fileList = config.fileList; const cache = globalCache[baseConfig.id] = globalCache[baseConfig.id] || {}; if (!fileList.length) return; const importList = []; const declarationList = []; const moduleList = []; fileList.forEach(f => { const abUrl = node_path_1.default.resolve(config.dir, f); // read from cache if (!cache[abUrl] || config.file === abUrl) { const skipLibCheck = !!baseConfig.tsConfig.skipLibCheck; const { type, usePowerPartial } = checkConfigReturnType(abUrl); // skip when not usePowerPartial and skipLibCheck in ts file // because it maybe cause types error. if (node_path_1.default.extname(f) !== '.js' && !usePowerPartial && !skipLibCheck) return; const { moduleName: sModuleName } = utils.getModuleObjByPath(f); const moduleName = `Export${sModuleName}`; const importContext = utils.getImportStr(config.dtsDir, abUrl, moduleName, type === EXPORT); let tds = `type ${sModuleName} = `; if (type === EXPORT_DEFAULT_FUNCTION) { tds += `ReturnType<typeof ${moduleName}>;`; } else if (type === EXPORT_DEFAULT || type === EXPORT) { tds += `typeof ${moduleName};`; } else { return; } // cache the file cache[abUrl] = { import: importContext, declaration: tds, moduleName: sModuleName, }; } const cacheItem = cache[abUrl]; importList.push(cacheItem.import); declarationList.push(cacheItem.declaration); moduleList.push(cacheItem.moduleName); }); return { importList, declarationList, moduleList, }; } renderWithParams(config, params) { const dist = node_path_1.default.resolve(config.dtsDir, 'index.d.ts'); if (!params) return { dist }; if (!params.importList.length) return { dist }; const { baseConfig } = this; const { importList, declarationList, moduleList } = params; const newConfigType = `New${config.interface}`; return { dist, content: `import { ${config.interface} } from '${baseConfig.framework}';\n` + `${importList.join('\n')}\n` + `${declarationList.join('\n')}\n` + `type ${newConfigType} = ${moduleList.join(' & ')};\n` + `declare module '${baseConfig.framework}' {\n` + ` interface ${config.interface} extends ${newConfigType} { }\n` + '}', }; } } ConfigGenerator.defaultConfig = { // only need to parse config.default.ts or config.ts pattern: 'config(.default|).(ts|js)', interface: config_1.declMapping.config, }; exports.default = ConfigGenerator; // check config return type. function checkConfigReturnType(f) { const result = utils.findExportNode(node_fs_1.default.readFileSync(f, 'utf-8')); const resp = { type: undefined, usePowerPartial: false, }; if (result.exportDefaultNode) { const exportDefaultNode = result.exportDefaultNode; if (typescript_1.default.isFunctionLike(exportDefaultNode)) { if ((typescript_1.default.isFunctionDeclaration(exportDefaultNode) || typescript_1.default.isArrowFunction(exportDefaultNode)) && exportDefaultNode.body) { exportDefaultNode.body.forEachChild(tNode => { if (!resp.usePowerPartial && typescript_1.default.isVariableStatement(tNode)) { // check wether use PowerPartial<EggAppInfo> resp.usePowerPartial = !!tNode.declarationList.declarations.find(decl => { let typeText = decl.type ? decl.type.getText() : undefined; if (decl.initializer && typescript_1.default.isAsExpression(decl.initializer) && decl.initializer.type) { typeText = decl.initializer.type.getText(); } return !!(typeText && typeText.includes('PowerPartial') && typeText.includes('EggAppConfig')); }); } }); } resp.type = EXPORT_DEFAULT_FUNCTION; } else { resp.type = EXPORT_DEFAULT; } } else if (result.exportNodeList.length) { resp.type = EXPORT; } return resp; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2dlbmVyYXRvcnMvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBbUhBLHNEQWtDQztBQXJKRCxzREFBeUI7QUFDekIsMERBQTZCO0FBQzdCLDREQUE0QjtBQUU1QixzQ0FBd0M7QUFDeEMsZ0RBQWtDO0FBQ2xDLGlDQUF1QztBQUV2QyxNQUFNLHVCQUF1QixHQUFHLENBQUMsQ0FBQztBQUNsQyxNQUFNLGNBQWMsR0FBRyxDQUFDLENBQUM7QUFDekIsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ2pCLE1BQU0sV0FBVyxHQUFxRCxFQUFFLENBQUM7QUFjekUsTUFBcUIsZUFBZ0IsU0FBUSxvQkFBZ0Q7SUFPM0YsV0FBVyxDQUFDLE1BQW1CO1FBQzdCLE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDNUIsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUNqQyxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzVFLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTTtZQUFFLE9BQU87UUFFN0IsTUFBTSxVQUFVLEdBQWEsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sZUFBZSxHQUFhLEVBQUUsQ0FBQztRQUNyQyxNQUFNLFVBQVUsR0FBYSxFQUFFLENBQUM7UUFDaEMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNuQixNQUFNLEtBQUssR0FBRyxtQkFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBRTFDLGtCQUFrQjtZQUNsQixJQUFJLENBQUMsS0FBSyxDQUFDLEtB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