"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const debug_1 = tslib_1.__importDefault(require("debug")); const fs_1 = tslib_1.__importDefault(require("fs")); const path_1 = tslib_1.__importDefault(require("path")); const utils = tslib_1.__importStar(require("../utils")); const config_1 = require("../config"); const debug = (0, debug_1.default)('egg-ts-helper#generators_extend'); function ExtendGenerator(config, baseConfig) { const fileList = config.file ? [config.file] : config.fileList; debug('file list : %o', fileList); if (!fileList.length) { // clean files return Object.keys(config.interface).map(key => ({ dist: path_1.default.resolve(config.dtsDir, `${key}.d.ts`), })); } const tsList = []; fileList.forEach(f => { let basename = path_1.default.basename(f); basename = basename.substring(0, basename.lastIndexOf('.')); const moduleNames = basename.split('.'); const interfaceNameKey = moduleNames[0]; const interfaceEnvironment = moduleNames[1] ? moduleNames[1].replace(/^[a-z]/, r => r.toUpperCase()) : ''; const interfaceName = config.interface[interfaceNameKey]; if (!interfaceName) { return; } const dist = path_1.default.resolve(config.dtsDir, `${basename}.d.ts`); f = path_1.default.resolve(config.dir, f); if (!fs_1.default.existsSync(f)) { return tsList.push({ dist }); } // get import info const moduleName = `Extend${interfaceEnvironment}${interfaceName}`; const importContext = utils.getImportStr(config.dtsDir, f, moduleName); tsList.push({ dist, content: `${importContext}\n` + `type ${moduleName}Type = typeof ${moduleName};\n` + `declare module \'${baseConfig.framework}\' {\n` + ` interface ${interfaceName} extends ${moduleName}Type { }\n` + '}', }); }); return tsList; } exports.default = ExtendGenerator; // default config ExtendGenerator.defaultConfig = { interface: utils.pickFields(config_1.declMapping, [ 'context', 'application', 'agent', 'request', 'response', 'helper', ]), };