@eggjs/utils 4.4.1 → 4.5.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/README.md +1 -6
  2. package/dist/_virtual/rolldown_runtime.js +7 -0
  3. package/dist/{commonjs/deprecated.d.ts → deprecated.d.ts} +4 -1
  4. package/dist/deprecated.js +41 -0
  5. package/dist/error/ImportResolveError.d.ts +8 -0
  6. package/dist/error/ImportResolveError.js +16 -0
  7. package/dist/{commonjs/framework.d.ts → framework.d.ts} +6 -4
  8. package/dist/framework.js +60 -0
  9. package/dist/import.d.ts +14 -0
  10. package/dist/import.js +231 -0
  11. package/dist/index.d.ts +28 -0
  12. package/dist/index.js +45 -0
  13. package/dist/plugin.d.ts +51 -0
  14. package/dist/plugin.js +112 -0
  15. package/dist/utils.js +12 -0
  16. package/package.json +26 -58
  17. package/dist/commonjs/deprecated.js +0 -59
  18. package/dist/commonjs/error/ImportResolveError.d.ts +0 -5
  19. package/dist/commonjs/error/ImportResolveError.js +0 -17
  20. package/dist/commonjs/error/index.d.ts +0 -1
  21. package/dist/commonjs/error/index.js +0 -18
  22. package/dist/commonjs/framework.js +0 -84
  23. package/dist/commonjs/import.d.ts +0 -11
  24. package/dist/commonjs/import.js +0 -326
  25. package/dist/commonjs/index.d.ts +0 -26
  26. package/dist/commonjs/index.js +0 -79
  27. package/dist/commonjs/package.json +0 -3
  28. package/dist/commonjs/plugin.d.ts +0 -49
  29. package/dist/commonjs/plugin.js +0 -127
  30. package/dist/commonjs/utils.d.ts +0 -2
  31. package/dist/commonjs/utils.js +0 -25
  32. package/dist/esm/deprecated.d.ts +0 -10
  33. package/dist/esm/deprecated.js +0 -53
  34. package/dist/esm/error/ImportResolveError.d.ts +0 -5
  35. package/dist/esm/error/ImportResolveError.js +0 -13
  36. package/dist/esm/error/index.d.ts +0 -1
  37. package/dist/esm/error/index.js +0 -2
  38. package/dist/esm/framework.d.ts +0 -16
  39. package/dist/esm/framework.js +0 -78
  40. package/dist/esm/import.d.ts +0 -11
  41. package/dist/esm/import.js +0 -316
  42. package/dist/esm/index.d.ts +0 -26
  43. package/dist/esm/index.js +0 -51
  44. package/dist/esm/package.json +0 -3
  45. package/dist/esm/plugin.d.ts +0 -49
  46. package/dist/esm/plugin.js +0 -117
  47. package/dist/esm/utils.d.ts +0 -2
  48. package/dist/esm/utils.js +0 -18
  49. package/dist/package.json +0 -4
  50. package/src/deprecated.ts +0 -58
  51. package/src/error/ImportResolveError.ts +0 -13
  52. package/src/error/index.ts +0 -1
  53. package/src/framework.ts +0 -92
  54. package/src/import.ts +0 -344
  55. package/src/index.ts +0 -58
  56. package/src/plugin.ts +0 -167
  57. package/src/utils.ts +0 -19
@@ -1,3 +0,0 @@
1
- {
2
- "type": "module"
3
- }
@@ -1,49 +0,0 @@
1
- export interface LoaderOptions {
2
- framework: string;
3
- baseDir: string;
4
- env?: string;
5
- }
6
- export interface Plugin {
7
- name: string;
8
- version?: string;
9
- enable: boolean;
10
- implicitEnable: boolean;
11
- path: string;
12
- dependencies: string[];
13
- optionalDependencies: string[];
14
- env: string[];
15
- from: string;
16
- }
17
- /**
18
- * @see https://github.com/eggjs/egg-core/blob/2920f6eade07959d25f5c4f96b154d3fbae877db/lib/loader/mixin/plugin.js#L203
19
- */
20
- export declare function getPlugins(options: LoaderOptions): Promise<Record<string, Plugin>>;
21
- interface Unit {
22
- type: 'plugin' | 'framework' | 'app';
23
- path: string;
24
- }
25
- /**
26
- * @see https://github.com/eggjs/egg-core/blob/2920f6eade07959d25f5c4f96b154d3fbae877db/lib/loader/egg_loader.js#L348
27
- */
28
- export declare function getLoadUnits(options: LoaderOptions): Promise<Unit[]>;
29
- export declare function getConfig(options: LoaderOptions): Promise<Record<string, any>>;
30
- interface IEggLoader {
31
- loadPlugin(): Promise<void>;
32
- loadConfig(): Promise<void>;
33
- config: Record<string, any>;
34
- getLoadUnits(): Unit[];
35
- allPlugins: Record<string, Plugin>;
36
- }
37
- interface IEggLoaderOptions {
38
- baseDir: string;
39
- app: unknown;
40
- logger: object;
41
- EggCoreClass?: unknown;
42
- }
43
- type EggLoaderImplClass<T = IEggLoader> = new (options: IEggLoaderOptions) => T;
44
- export declare function getLoader(options: LoaderOptions): Promise<IEggLoader>;
45
- export declare function findEggCore(options: LoaderOptions): Promise<{
46
- EggCore?: object;
47
- EggLoader: EggLoaderImplClass;
48
- }>;
49
- export {};
@@ -1,117 +0,0 @@
1
- import { debuglog } from 'node:util';
2
- import path from 'node:path';
3
- import assert from 'node:assert';
4
- import os from 'node:os';
5
- import { stat, mkdir, writeFile, realpath } from 'node:fs/promises';
6
- import { importModule } from './import.js';
7
- const debug = debuglog('@eggjs/utils/plugin');
8
- const tmpDir = os.tmpdir();
9
- function noop() { }
10
- const logger = {
11
- debug: noop,
12
- info: noop,
13
- warn: noop,
14
- error: noop,
15
- };
16
- /**
17
- * @see https://github.com/eggjs/egg-core/blob/2920f6eade07959d25f5c4f96b154d3fbae877db/lib/loader/mixin/plugin.js#L203
18
- */
19
- export async function getPlugins(options) {
20
- const loader = await getLoader(options);
21
- await loader.loadPlugin();
22
- return loader.allPlugins;
23
- }
24
- /**
25
- * @see https://github.com/eggjs/egg-core/blob/2920f6eade07959d25f5c4f96b154d3fbae877db/lib/loader/egg_loader.js#L348
26
- */
27
- export async function getLoadUnits(options) {
28
- const loader = await getLoader(options);
29
- await loader.loadPlugin();
30
- return loader.getLoadUnits();
31
- }
32
- export async function getConfig(options) {
33
- const loader = await getLoader(options);
34
- await loader.loadPlugin();
35
- await loader.loadConfig();
36
- return loader.config;
37
- }
38
- async function exists(filepath) {
39
- try {
40
- await stat(filepath);
41
- return true;
42
- }
43
- catch {
44
- return false;
45
- }
46
- }
47
- export async function getLoader(options) {
48
- assert(options.framework, 'framework is required');
49
- assert(await exists(options.framework), `${options.framework} should exist`);
50
- if (!(options.baseDir && await exists(options.baseDir))) {
51
- options.baseDir = path.join(tmpDir, 'egg_utils', `${Date.now()}`, 'tmp_app');
52
- await mkdir(options.baseDir, { recursive: true });
53
- await writeFile(path.join(options.baseDir, 'package.json'), JSON.stringify({
54
- name: 'tmp_app',
55
- }));
56
- debug('[getLoader] create baseDir: %o', options.baseDir);
57
- }
58
- const { EggCore, EggLoader } = await findEggCore(options);
59
- const mod = await importModule(options.framework);
60
- const Application = mod.Application ?? mod.default?.Application;
61
- assert(Application, `Application not export on ${options.framework}`);
62
- if (options.env) {
63
- process.env.EGG_SERVER_ENV = options.env;
64
- }
65
- return new EggLoader({
66
- baseDir: options.baseDir,
67
- logger,
68
- app: Object.create(Application.prototype),
69
- EggCoreClass: EggCore,
70
- });
71
- }
72
- export async function findEggCore(options) {
73
- const baseDirRealpath = await realpath(options.baseDir);
74
- const frameworkRealpath = await realpath(options.framework);
75
- const paths = [frameworkRealpath, baseDirRealpath];
76
- // custom framework => egg => @eggjs/core
77
- try {
78
- const { EggCore, EggLoader } = await importModule('egg', { paths });
79
- if (EggLoader) {
80
- return { EggCore, EggLoader };
81
- }
82
- }
83
- catch (err) {
84
- debug('[findEggCore] import "egg" from paths:%o error: %o', paths, err);
85
- }
86
- // egg-core 在 6.2.3 版本中更名为 @eggjs/core,为兼容老版本,支持同时查找两个包,优先使用新名字
87
- const names = ['@eggjs/core', 'egg-core'];
88
- for (const name of names) {
89
- try {
90
- const { EggCore, EggLoader } = await importModule(name, { paths });
91
- if (EggLoader) {
92
- return { EggCore, EggLoader };
93
- }
94
- }
95
- catch (err) {
96
- debug('[findEggCore] import "%s" from paths:%o error: %o', name, paths, err);
97
- }
98
- try {
99
- const { EggCore, EggLoader } = await importModule(name);
100
- if (EggLoader) {
101
- return { EggCore, EggLoader };
102
- }
103
- }
104
- catch (err) {
105
- debug('[findEggCore] import "%s" error: %o', name, err);
106
- }
107
- let eggCorePath = path.join(options.baseDir, `node_modules/${name}`);
108
- if (!(await exists(eggCorePath))) {
109
- eggCorePath = path.join(options.framework, `node_modules/${name}`);
110
- }
111
- if (await exists(eggCorePath)) {
112
- return await importModule(eggCorePath);
113
- }
114
- }
115
- assert(false, `Can't find ${names.join(' or ')} from ${options.baseDir} and ${options.framework}`);
116
- }
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JDLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUM3QixPQUFPLE1BQU0sTUFBTSxhQUFhLENBQUM7QUFDakMsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3pCLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTNDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBRTlDLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUUzQixTQUFTLElBQUksS0FBSSxDQUFDO0FBRWxCLE1BQU0sTUFBTSxHQUFHO0lBQ2IsS0FBSyxFQUFFLElBQUk7SUFDWCxJQUFJLEVBQUUsSUFBSTtJQUNWLElBQUksRUFBRSxJQUFJO0lBQ1YsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBb0JGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxVQUFVLENBQUMsT0FBc0I7SUFDckQsTUFBTSxNQUFNLEdBQUcsTUFBTSxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDeEMsTUFBTSxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDMUIsT0FBTyxNQUFNLENBQUMsVUFBVSxDQUFDO0FBQzNCLENBQUM7QUFPRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsWUFBWSxDQUFDLE9BQXNCO0lBQ3ZELE1BQU0sTUFBTSxHQUFHLE1BQU0sU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sTUFBTSxDQUFDLFVBQVUsRUFBRSxD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
@@ -1,2 +0,0 @@
1
- export declare function readJSONSync(file: string): any;
2
- export declare function getDirname(): string;
package/dist/esm/utils.js DELETED
@@ -1,18 +0,0 @@
1
- import { existsSync, readFileSync } from 'node:fs';
2
- import { fileURLToPath } from 'node:url';
3
- import path from 'node:path';
4
- export function readJSONSync(file) {
5
- if (!existsSync(file)) {
6
- throw new Error(`${file} is not found`);
7
- }
8
- return JSON.parse(readFileSync(file, 'utf-8'));
9
- }
10
- export function getDirname() {
11
- if (typeof __dirname !== 'undefined') {
12
- return __dirname;
13
- }
14
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
15
- // @ts-ignore
16
- return path.dirname(fileURLToPath(import.meta.url));
17
- }
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN6QyxPQUFPLElBQUksTUFBTSxXQUFXLENBQUM7QUFFN0IsTUFBTSxVQUFVLFlBQVksQ0FBQyxJQUFZO0lBQ3ZDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsSUFBSSxlQUFlLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUNqRCxDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVU7SUFDeEIsSUFBSSxPQUFPLFNBQVMsS0FBSyxXQUFXLEVBQUUsQ0FBQztRQUNyQyxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBQ0QsNkRBQTZEO0lBQzdELGFBQWE7SUFDYixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN0RCxDQUFDIn0=
package/dist/package.json DELETED
@@ -1,4 +0,0 @@
1
- {
2
- "name": "@eggjs/utils",
3
- "version": "4.4.1"
4
- }
package/src/deprecated.ts DELETED
@@ -1,58 +0,0 @@
1
- import path from 'node:path';
2
- import { existsSync, readdirSync } from 'node:fs';
3
- import { readJSONSync } from './utils.js';
4
-
5
- /**
6
- * Try to get framework dir path
7
- * If can't find any framework, try to find egg dir path
8
- *
9
- * @param {String} cwd - current work path
10
- * @param {Array} [eggNames] - egg names, default is ['egg']
11
- * @return {String} framework or egg dir path
12
- * @deprecated
13
- */
14
- export function getFrameworkOrEggPath(cwd: string, eggNames?: string[]): string {
15
- eggNames = eggNames || [ 'egg' ];
16
- const moduleDir = path.join(cwd, 'node_modules');
17
- if (!existsSync(moduleDir)) {
18
- return '';
19
- }
20
-
21
- // try to get framework
22
-
23
- // 1. try to read egg.framework property on package.json
24
- const pkgFile = path.join(cwd, 'package.json');
25
- if (existsSync(pkgFile)) {
26
- const pkg = readJSONSync(pkgFile);
27
- if (pkg.egg && pkg.egg.framework) {
28
- return path.join(moduleDir, pkg.egg.framework);
29
- }
30
- }
31
-
32
- // 2. try the module dependencies includes eggNames
33
- const names = readdirSync(moduleDir);
34
- for (const name of names) {
35
- const pkgfile = path.join(moduleDir, name, 'package.json');
36
- if (!existsSync(pkgfile)) {
37
- continue;
38
- }
39
- const pkg = readJSONSync(pkgfile);
40
- if (pkg.dependencies) {
41
- for (const eggName of eggNames) {
42
- if (pkg.dependencies[eggName]) {
43
- return path.join(moduleDir, name);
44
- }
45
- }
46
- }
47
- }
48
-
49
- // try to get egg
50
- for (const eggName of eggNames) {
51
- const pkgfile = path.join(moduleDir, eggName, 'package.json');
52
- if (existsSync(pkgfile)) {
53
- return path.join(moduleDir, eggName);
54
- }
55
- }
56
-
57
- return '';
58
- }
@@ -1,13 +0,0 @@
1
- export class ImportResolveError extends Error {
2
- filepath: string;
3
- paths: string[];
4
-
5
- constructor(filepath: string, paths: string[], error: Error) {
6
- const message = `${error.message}, paths: ${JSON.stringify(paths)}`;
7
- super(message, { cause: error });
8
- this.name = this.constructor.name;
9
- this.filepath = filepath;
10
- this.paths = paths;
11
- Error.captureStackTrace(this, this.constructor);
12
- }
13
- }
@@ -1 +0,0 @@
1
- export * from './ImportResolveError.js';
package/src/framework.ts DELETED
@@ -1,92 +0,0 @@
1
- import { debuglog } from 'node:util';
2
- import path from 'node:path';
3
- import assert from 'node:assert';
4
- import { existsSync } from 'node:fs';
5
- import { readJSONSync } from './utils.js';
6
- import { importResolve } from './import.js';
7
-
8
- const debug = debuglog('@eggjs/utils/framework');
9
-
10
- const initCwd = process.cwd();
11
-
12
- interface Options {
13
- baseDir: string;
14
- framework?: string;
15
- }
16
-
17
- /**
18
- * Find the framework directory, lookup order
19
- * - specify framework path
20
- * - get framework name from
21
- * - use egg by default
22
- * @param {Object} options - options
23
- * @param {String} options.baseDir - the current directory of application
24
- * @param {String} [options.framework] - the directory of framework
25
- * @return {String} frameworkPath
26
- */
27
- export function getFrameworkPath(options: Options): string {
28
- const { framework, baseDir } = options;
29
- const pkgPath = path.join(baseDir, 'package.json');
30
- assert(existsSync(pkgPath), `${pkgPath} should exist`);
31
- const moduleDir = path.join(baseDir, 'node_modules');
32
-
33
- // 1. pass framework or customEgg
34
- if (framework) {
35
- // 1.1 framework is an absolute path
36
- // framework: path.join(baseDir, 'node_modules/${frameworkName}')
37
- if (path.isAbsolute(framework)) {
38
- assert(existsSync(framework), `${framework} should exist`);
39
- return framework;
40
- }
41
- // 1.2 framework is a npm package that required by application
42
- // framework: 'frameworkName'
43
- return assertAndReturn(framework, moduleDir);
44
- }
45
-
46
- const pkg = readJSONSync(pkgPath);
47
- // 2. framework is not specified
48
- // 2.1 use framework name from pkg.egg.framework
49
- if (pkg.egg?.framework) {
50
- return assertAndReturn(pkg.egg.framework, moduleDir);
51
- }
52
-
53
- // 2.2 use egg by default
54
- return assertAndReturn('egg', moduleDir);
55
- }
56
-
57
- function assertAndReturn(frameworkName: string, moduleDir: string) {
58
- const moduleDirs = new Set([
59
- moduleDir,
60
- // find framework from process.cwd, especially for test,
61
- // the application is in test/fixtures/app,
62
- // and framework is install in ${cwd}/node_modules
63
- path.join(process.cwd(), 'node_modules'),
64
- // prevent from mocking process.cwd
65
- path.join(initCwd, 'node_modules'),
66
- ]);
67
- try {
68
- // find framework from global, especially for monorepo
69
- let globalModuleDir;
70
- // if frameworkName is scoped package, like @ali/egg
71
- if (frameworkName.startsWith('@') && frameworkName.includes('/')) {
72
- globalModuleDir = path.join(
73
- importResolve(`${frameworkName}/package.json`),
74
- '../../..',
75
- );
76
- } else {
77
- globalModuleDir = path.join(
78
- importResolve(`${frameworkName}/package.json`),
79
- '../..',
80
- );
81
- }
82
- moduleDirs.add(globalModuleDir);
83
- } catch (err) {
84
- // ignore
85
- debug('importResolve %s on %s error: %s', frameworkName, moduleDir, err);
86
- }
87
- for (const moduleDir of moduleDirs) {
88
- const frameworkPath = path.join(moduleDir, frameworkName);
89
- if (existsSync(frameworkPath)) return frameworkPath;
90
- }
91
- throw new Error(`${frameworkName} is not found in ${Array.from(moduleDirs)}`);
92
- }