UNPKG

@eggjs/utils

Version:

Utils for all egg projects

127 lines 10.5 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getPlugins = getPlugins; exports.getLoadUnits = getLoadUnits; exports.getConfig = getConfig; exports.getLoader = getLoader; exports.findEggCore = findEggCore; const node_util_1 = require("node:util"); const node_path_1 = __importDefault(require("node:path")); const node_assert_1 = __importDefault(require("node:assert")); const node_os_1 = __importDefault(require("node:os")); const promises_1 = require("node:fs/promises"); const import_js_1 = require("./import.js"); const debug = (0, node_util_1.debuglog)('@eggjs/utils/plugin'); const tmpDir = node_os_1.default.tmpdir(); function noop() { } const logger = { debug: noop, info: noop, warn: noop, error: noop, }; /** * @see https://github.com/eggjs/egg-core/blob/2920f6eade07959d25f5c4f96b154d3fbae877db/lib/loader/mixin/plugin.js#L203 */ async function getPlugins(options) { const loader = await getLoader(options); await loader.loadPlugin(); return loader.allPlugins; } /** * @see https://github.com/eggjs/egg-core/blob/2920f6eade07959d25f5c4f96b154d3fbae877db/lib/loader/egg_loader.js#L348 */ async function getLoadUnits(options) { const loader = await getLoader(options); await loader.loadPlugin(); return loader.getLoadUnits(); } async function getConfig(options) { const loader = await getLoader(options); await loader.loadPlugin(); await loader.loadConfig(); return loader.config; } async function exists(filepath) { try { await (0, promises_1.stat)(filepath); return true; } catch { return false; } } async function getLoader(options) { (0, node_assert_1.default)(options.framework, 'framework is required'); (0, node_assert_1.default)(await exists(options.framework), `${options.framework} should exist`); if (!(options.baseDir && await exists(options.baseDir))) { options.baseDir = node_path_1.default.join(tmpDir, 'egg_utils', `${Date.now()}`, 'tmp_app'); await (0, promises_1.mkdir)(options.baseDir, { recursive: true }); await (0, promises_1.writeFile)(node_path_1.default.join(options.baseDir, 'package.json'), JSON.stringify({ name: 'tmp_app', })); debug('[getLoader] create baseDir: %o', options.baseDir); } const { EggCore, EggLoader } = await findEggCore(options); const mod = await (0, import_js_1.importModule)(options.framework); const Application = mod.Application ?? mod.default?.Application; (0, node_assert_1.default)(Application, `Application not export on ${options.framework}`); if (options.env) { process.env.EGG_SERVER_ENV = options.env; } return new EggLoader({ baseDir: options.baseDir, logger, app: Object.create(Application.prototype), EggCoreClass: EggCore, }); } async function findEggCore(options) { const baseDirRealpath = await (0, promises_1.realpath)(options.baseDir); const frameworkRealpath = await (0, promises_1.realpath)(options.framework); const paths = [frameworkRealpath, baseDirRealpath]; // custom framework => egg => @eggjs/core try { const { EggCore, EggLoader } = await (0, import_js_1.importModule)('egg', { paths }); if (EggLoader) { return { EggCore, EggLoader }; } } catch (err) { debug('[findEggCore] import "egg" from paths:%o error: %o', paths, err); } // egg-core 在 6.2.3 版本中更名为 @eggjs/core,为兼容老版本,支持同时查找两个包,优先使用新名字 const names = ['@eggjs/core', 'egg-core']; for (const name of names) { try { const { EggCore, EggLoader } = await (0, import_js_1.importModule)(name, { paths }); if (EggLoader) { return { EggCore, EggLoader }; } } catch (err) { debug('[findEggCore] import "%s" from paths:%o error: %o', name, paths, err); } try { const { EggCore, EggLoader } = await (0, import_js_1.importModule)(name); if (EggLoader) { return { EggCore, EggLoader }; } } catch (err) { debug('[findEggCore] import "%s" error: %o', name, err); } let eggCorePath = node_path_1.default.join(options.baseDir, `node_modules/${name}`); if (!(await exists(eggCorePath))) { eggCorePath = node_path_1.default.join(options.framework, `node_modules/${name}`); } if (await exists(eggCorePath)) { return await (0, import_js_1.importModule)(eggCorePath); } } (0, node_assert_1.default)(false, `Can't find ${names.join(' or ')} from ${options.baseDir} and ${options.framework}`); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQXlDQSxnQ0FJQztBQVVELG9DQUlDO0FBRUQsOEJBS0M7QUE0QkQsOEJBeUJDO0FBRUQsa0NBNkNDO0FBdEtELHlDQUFxQztBQUNyQywwREFBNkI7QUFDN0IsOERBQWlDO0FBQ2pDLHNEQUF5QjtBQUN6QiwrQ0FBb0U7QUFDcEUsMkNBQTJDO0FBRTNDLE1BQU0sS0FBSyxHQUFHLElBQUEsb0JBQVEsRUFBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBRTlDLE1BQU0sTUFBTSxHQUFHLGlCQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7QUFFM0IsU0FBUyxJQUFJLEtBQUksQ0FBQztBQUVsQixNQUFNLE1BQU0sR0FBRztJQUNiLEtBQUssRUFBRSxJQUFJO0lBQ1gsSUFBSSxFQUFFLElBQUk7SUFDVixJQUFJLEVBQUUsSUFBSTtJQUNWLEtBQUssRUFBRSxJQUFJO0NBQ1osQ0FBQztBQW9CRjs7R0FFRztBQUNJLEtBQUssVUFBVSxVQUFVLENBQUMsT0FBc0I7SUFDckQsTUFBTSxNQUFNLEdBQUcsTUFBTSxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDeEMsTUFBTSxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDMUIsT0FBTyxNQUFNLENBQUMsVUFBVSxDQUFDO0FBQzNCLENBQUM7QUFPRDs7R0FFRztBQUNJLEtBQUssVUFBVSxZQUFZLENBQUMsT0FBc0I7SUFDdkQsTUFBTSxNQUFNLEdBQUcsTUFBTSxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDeEMsTUFBTSxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDMUIsT0FBTyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7QUFDL0IsQ0FBQztBQUVNLEtBQUssVUFBVSxTQUFTLENBQUMsT0FBc0I7SUFDcEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxTQUFTLENBQUMs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