12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- const tslib_1 = require("tslib");
- const path_1 = tslib_1.__importDefault(require("path"));
- const config_1 = require("../config");
- const utils = tslib_1.__importStar(require("../utils"));
- function PluginGenerator(config, baseConfig) {
- const getContent = (eggInfo) => {
- const dist = path_1.default.resolve(config.dtsDir, 'plugin.d.ts');
- if (!eggInfo.plugins) {
- return { dist };
- }
- const appPluginNameList = [];
- const importContent = [];
- const framework = config.framework || baseConfig.framework;
- Object.keys(eggInfo.plugins).forEach(name => {
- const pluginInfo = eggInfo.plugins[name];
- if (pluginInfo.package && pluginInfo.from) {
- appPluginNameList.push(name);
- if (pluginInfo.enable) {
- let pluginPath = pluginInfo.package;
- if (!pluginPath || config.usePath) {
- pluginPath = pluginInfo.path.replace(/\\/g, '/');
- }
- importContent.push(`import '${pluginPath}';`);
- }
- }
- });
- if (!appPluginNameList.length) {
- return { dist };
- }
- const composeInterface = (list) => {
- return ` ${list
- .map(name => `${utils.isIdentifierName(name) ? name : `'${name}'`}?: EggPluginItem;`)
- .join('\n ')}`;
- };
- return {
- dist,
- content: `${importContent.join('\n')}\n` +
- `import { EggPluginItem } from '${framework}';\n` +
- `declare module '${framework}' {\n` +
- ` interface ${config.interface} {\n` +
- `${composeInterface(Array.from(new Set(appPluginNameList)))}\n` +
- ' }\n' +
- '}',
- };
- };
- return utils.getEggInfo({
- cwd: baseConfig.cwd,
- customLoader: baseConfig.customLoader,
- cacheIndex: baseConfig.id,
- async: !!config.file,
- callback: getContent,
- });
- }
- exports.default = PluginGenerator;
- PluginGenerator.isPrivate = true;
- // only load plugin.ts|plugin.local.ts|plugin.default.ts
- PluginGenerator.defaultConfig = {
- pattern: 'plugin*(.local|.default).+(ts|js)',
- interface: config_1.declMapping.plugin,
- /** use path insteadof package while import plugins */
- usePath: false,
- };
|