extend.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. const tslib_1 = require("tslib");
  4. const debug_1 = tslib_1.__importDefault(require("debug"));
  5. const fs_1 = tslib_1.__importDefault(require("fs"));
  6. const path_1 = tslib_1.__importDefault(require("path"));
  7. const utils = tslib_1.__importStar(require("../utils"));
  8. const config_1 = require("../config");
  9. const debug = (0, debug_1.default)('egg-ts-helper#generators_extend');
  10. function ExtendGenerator(config, baseConfig) {
  11. const fileList = config.file ? [config.file] : config.fileList;
  12. debug('file list : %o', fileList);
  13. if (!fileList.length) {
  14. // clean files
  15. return Object.keys(config.interface).map(key => ({
  16. dist: path_1.default.resolve(config.dtsDir, `${key}.d.ts`),
  17. }));
  18. }
  19. const tsList = [];
  20. fileList.forEach(f => {
  21. let basename = path_1.default.basename(f);
  22. basename = basename.substring(0, basename.lastIndexOf('.'));
  23. const moduleNames = basename.split('.');
  24. const interfaceNameKey = moduleNames[0];
  25. const interfaceEnvironment = moduleNames[1]
  26. ? moduleNames[1].replace(/^[a-z]/, r => r.toUpperCase())
  27. : '';
  28. const interfaceName = config.interface[interfaceNameKey];
  29. if (!interfaceName) {
  30. return;
  31. }
  32. const dist = path_1.default.resolve(config.dtsDir, `${basename}.d.ts`);
  33. f = path_1.default.resolve(config.dir, f);
  34. if (!fs_1.default.existsSync(f)) {
  35. return tsList.push({ dist });
  36. }
  37. // get import info
  38. const moduleName = `Extend${interfaceEnvironment}${interfaceName}`;
  39. const importContext = utils.getImportStr(config.dtsDir, f, moduleName);
  40. tsList.push({
  41. dist,
  42. content: `${importContext}\n` +
  43. `type ${moduleName}Type = typeof ${moduleName};\n` +
  44. `declare module \'${baseConfig.framework}\' {\n` +
  45. ` interface ${interfaceName} extends ${moduleName}Type { }\n` +
  46. '}',
  47. });
  48. });
  49. return tsList;
  50. }
  51. exports.default = ExtendGenerator;
  52. // default config
  53. ExtendGenerator.defaultConfig = {
  54. interface: utils.pickFields(config_1.declMapping, [
  55. 'context',
  56. 'application',
  57. 'agent',
  58. 'request',
  59. 'response',
  60. 'helper',
  61. ]),
  62. };