@eggjs/utils 4.1.6 → 4.2.0

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.
package/README.md CHANGED
@@ -4,6 +4,8 @@
4
4
  [![CI](https://github.com/eggjs/utils/actions/workflows/nodejs.yml/badge.svg)](https://github.com/eggjs/utils/actions/workflows/nodejs.yml)
5
5
  [![Test coverage][codecov-image]][codecov-url]
6
6
  [![npm download][download-image]][download-url]
7
+ [![Node.js Version](https://img.shields.io/node/v/@eggjs/utils.svg?style=flat)](https://nodejs.org/en/download/)
8
+ [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](https://makeapullrequest.com)
7
9
 
8
10
  [npm-image]: https://img.shields.io/npm/v/@eggjs/utils.svg?style=flat-square
9
11
  [npm-url]: https://npmjs.org/package/@eggjs/utils
@@ -13,3 +13,13 @@ declare const _default: {
13
13
  getFrameworkOrEggPath: typeof getFrameworkOrEggPath;
14
14
  };
15
15
  export default _default;
16
+ export declare enum EggType {
17
+ framework = "framework",
18
+ plugin = "plugin",
19
+ application = "application",
20
+ unknown = "unknown"
21
+ }
22
+ /**
23
+ * Detect the type of egg project
24
+ */
25
+ export declare function detectType(baseDir: string): Promise<EggType>;
@@ -13,8 +13,14 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
13
13
  var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
+ var __importDefault = (this && this.__importDefault) || function (mod) {
17
+ return (mod && mod.__esModule) ? mod : { "default": mod };
18
+ };
16
19
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.getFrameworkOrEggPath = exports.getLoadUnits = exports.getConfig = exports.getPlugins = exports.getFrameworkPath = void 0;
20
+ exports.EggType = exports.getFrameworkOrEggPath = exports.getLoadUnits = exports.getConfig = exports.getPlugins = exports.getFrameworkPath = void 0;
21
+ exports.detectType = detectType;
22
+ const node_path_1 = __importDefault(require("node:path"));
23
+ const promises_1 = __importDefault(require("node:fs/promises"));
18
24
  const framework_js_1 = require("./framework.js");
19
25
  const plugin_js_1 = require("./plugin.js");
20
26
  const deprecated_js_1 = require("./deprecated.js");
@@ -34,4 +40,37 @@ exports.default = {
34
40
  getPlugins: plugin_js_1.getPlugins, getConfig: plugin_js_1.getConfig, getLoadUnits: plugin_js_1.getLoadUnits,
35
41
  getFrameworkOrEggPath: deprecated_js_1.getFrameworkOrEggPath,
36
42
  };
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpREFBa0Q7QUFDbEQsMkNBQWtFO0FBQ2xFLG1EQUF3RDtBQUV4RCwwREFBMEQ7QUFDMUQsK0NBQWtEO0FBQXpDLGdIQUFBLGdCQUFnQixPQUFBO0FBQ3pCLHlDQUFrRTtBQUF6RCx1R0FBQSxVQUFVLE9BQUE7QUFBRSxzR0FBQSxTQUFTLE9BQUE7QUFBRSx5R0FBQSxZQUFZLE9BQUE7QUFDNUMsaURBQXdEO0FBQS9DLHNIQUFBLHFCQUFxQixPQUFBO0FBQzlCLDhDQUE0QjtBQUU1QiwyQ0FBMkM7QUFDM0Msa0JBQWU7SUFDYixnQkFBZ0IsRUFBaEIsK0JBQWdCO0lBQ2hCLFVBQVUsRUFBVixzQkFBVSxFQUFFLFNBQVMsRUFBVCxxQkFBUyxFQUFFLFlBQVksRUFBWix3QkFBWTtJQUNuQyxxQkFBcUIsRUFBckIscUNBQXFCO0NBQ3RCLENBQUMifQ==
43
+ var EggType;
44
+ (function (EggType) {
45
+ EggType["framework"] = "framework";
46
+ EggType["plugin"] = "plugin";
47
+ EggType["application"] = "application";
48
+ EggType["unknown"] = "unknown";
49
+ })(EggType || (exports.EggType = EggType = {}));
50
+ /**
51
+ * Detect the type of egg project
52
+ */
53
+ async function detectType(baseDir) {
54
+ const pkgFile = node_path_1.default.join(baseDir, 'package.json');
55
+ let pkg;
56
+ try {
57
+ await promises_1.default.access(pkgFile);
58
+ }
59
+ catch {
60
+ return EggType.unknown;
61
+ }
62
+ try {
63
+ pkg = JSON.parse(await promises_1.default.readFile(pkgFile, 'utf-8'));
64
+ }
65
+ catch {
66
+ return EggType.unknown;
67
+ }
68
+ if (pkg.egg?.framework) {
69
+ return EggType.framework;
70
+ }
71
+ if (pkg.eggPlugin?.name) {
72
+ return EggType.plugin;
73
+ }
74
+ return EggType.application;
75
+ }
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE2QkEsZ0NBMkJDO0FBeERELDBEQUE2QjtBQUM3QixnRUFBa0M7QUFDbEMsaURBQWtEO0FBQ2xELDJDQUFrRTtBQUNsRSxtREFBd0Q7QUFFeEQsMERBQTBEO0FBQzFELCtDQUFrRDtBQUF6QyxnSEFBQSxnQkFBZ0IsT0FBQTtBQUN6Qix5Q0FBa0U7QUFBekQsdUdBQUEsVUFBVSxPQUFBO0FBQUUsc0dBQUEsU0FBUyxPQUFBO0FBQUUseUdBQUEsWUFBWSxPQUFBO0FBQzVDLGlEQUF3RDtBQUEvQyxzSEFBQSxxQkFBcUIsT0FBQTtBQUM5Qiw4Q0FBNEI7QUFFNUIsMkNBQTJDO0FBQzNDLGtCQUFlO0lBQ2IsZ0JBQWdCLEVBQWhCLCtCQUFnQjtJQUNoQixVQUFVLEVBQVYsc0JBQVUsRUFBRSxTQUFTLEVBQVQscUJBQVMsRUFBRSxZQUFZLEVBQVosd0JBQVk7SUFDbkMscUJBQXFCLEVBQXJCLHFDQUFxQjtDQUN0QixDQUFDO0FBRUYsSUFBWSxPQUtYO0FBTEQsV0FBWSxPQUFPO0lBQ2pCLGtDQUF1QixDQUFBO0lBQ3ZCLDRCQUFpQixDQUFBO0lBQ2pCLHNDQUEyQixDQUFBO0lBQzNCLDhCQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFMVyxPQUFPLHVCQUFQLE9BQU8sUUFLbEI7QUFFRDs7R0FFRztBQUNJLEtBQUssVUFBVSxVQUFVLENBQUMsT0FBZTtJQUM5QyxNQUFNLE9BQU8sR0FBRyxtQkFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDbkQsSUFBSSxHQU9ILENBQUM7SUFDRixJQUFJLENBQUM7UUFDSCxNQUFNLGtCQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUM7SUFDekIsQ0FBQztJQUNELElBQUksQ0FBQztRQUNILEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sa0JBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQztJQUN6QixDQUFDO0lBQ0QsSUFBSSxHQUFHLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxDQUFDO1FBQ3ZCLE9BQU8sT0FBTyxDQUFDLFNBQVMsQ0FBQztJQUMzQixDQUFDO0lBQ0QsSUFBSSxHQUFHLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDO1FBQ3hCLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQztJQUN4QixDQUFDO0lBQ0QsT0FBTyxPQUFPLENBQUMsV0FBVyxDQUFDO0FBQzdCLENBQUMifQ==
@@ -13,3 +13,13 @@ declare const _default: {
13
13
  getFrameworkOrEggPath: typeof getFrameworkOrEggPath;
14
14
  };
15
15
  export default _default;
16
+ export declare enum EggType {
17
+ framework = "framework",
18
+ plugin = "plugin",
19
+ application = "application",
20
+ unknown = "unknown"
21
+ }
22
+ /**
23
+ * Detect the type of egg project
24
+ */
25
+ export declare function detectType(baseDir: string): Promise<EggType>;
package/dist/esm/index.js CHANGED
@@ -1,3 +1,5 @@
1
+ import path from 'node:path';
2
+ import fs from 'node:fs/promises';
1
3
  import { getFrameworkPath } from './framework.js';
2
4
  import { getPlugins, getConfig, getLoadUnits } from './plugin.js';
3
5
  import { getFrameworkOrEggPath } from './deprecated.js';
@@ -12,4 +14,37 @@ export default {
12
14
  getPlugins, getConfig, getLoadUnits,
13
15
  getFrameworkOrEggPath,
14
16
  };
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXhELDBEQUEwRDtBQUMxRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsY0FBYyxhQUFhLENBQUM7QUFFNUIsMkNBQTJDO0FBQzNDLGVBQWU7SUFDYixnQkFBZ0I7SUFDaEIsVUFBVSxFQUFFLFNBQVMsRUFBRSxZQUFZO0lBQ25DLHFCQUFxQjtDQUN0QixDQUFDIn0=
17
+ export var EggType;
18
+ (function (EggType) {
19
+ EggType["framework"] = "framework";
20
+ EggType["plugin"] = "plugin";
21
+ EggType["application"] = "application";
22
+ EggType["unknown"] = "unknown";
23
+ })(EggType || (EggType = {}));
24
+ /**
25
+ * Detect the type of egg project
26
+ */
27
+ export async function detectType(baseDir) {
28
+ const pkgFile = path.join(baseDir, 'package.json');
29
+ let pkg;
30
+ try {
31
+ await fs.access(pkgFile);
32
+ }
33
+ catch {
34
+ return EggType.unknown;
35
+ }
36
+ try {
37
+ pkg = JSON.parse(await fs.readFile(pkgFile, 'utf-8'));
38
+ }
39
+ catch {
40
+ return EggType.unknown;
41
+ }
42
+ if (pkg.egg?.framework) {
43
+ return EggType.framework;
44
+ }
45
+ if (pkg.eggPlugin?.name) {
46
+ return EggType.plugin;
47
+ }
48
+ return EggType.application;
49
+ }
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQzdCLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV4RCwwREFBMEQ7QUFDMUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELGNBQWMsYUFBYSxDQUFDO0FBRTVCLDJDQUEyQztBQUMzQyxlQUFlO0lBQ2IsZ0JBQWdCO0lBQ2hCLFVBQVUsRUFBRSxTQUFTLEVBQUUsWUFBWTtJQUNuQyxxQkFBcUI7Q0FDdEIsQ0FBQztBQUVGLE1BQU0sQ0FBTixJQUFZLE9BS1g7QUFMRCxXQUFZLE9BQU87SUFDakIsa0NBQXVCLENBQUE7SUFDdkIsNEJBQWlCLENBQUE7SUFDakIsc0NBQTJCLENBQUE7SUFDM0IsOEJBQW1CLENBQUE7QUFDckIsQ0FBQyxFQUxXLE9BQU8sS0FBUCxPQUFPLFFBS2xCO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLFVBQVUsQ0FBQyxPQUFlO0lBQzlDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ25ELElBQUksR0FPSCxDQUFDO0lBQ0YsSUFBSSxDQUFDO1FBQ0gsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUM7SUFDekIsQ0FBQztJQUNELElBQUksQ0FBQztRQUNILEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDO0lBQ3pCLENBQUM7SUFDRCxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLENBQUM7UUFDdkIsT0FBTyxPQUFPLENBQUMsU0FBUyxDQUFDO0lBQzNCLENBQUM7SUFDRCxJQUFJLEdBQUcsQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDeEIsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDO0lBQ3hCLENBQUM7SUFDRCxPQUFPLE9BQU8sQ0FBQyxXQUFXLENBQUM7QUFDN0IsQ0FBQyJ9
package/dist/package.json CHANGED
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "name": "@eggjs/utils",
3
- "version": "4.1.6"
3
+ "version": "4.2.0"
4
4
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eggjs/utils",
3
- "version": "4.1.6",
3
+ "version": "4.2.0",
4
4
  "engine": {
5
5
  "node": ">=18.19.0"
6
6
  },
@@ -12,9 +12,11 @@
12
12
  "lint": "eslint src test --ext ts",
13
13
  "pretest": "npm run clean && npm run lint -- --fix && npm run prepublishOnly",
14
14
  "test": "npm run test-local",
15
+ "posttest": "npm run clean",
15
16
  "test-local": "egg-bin test",
16
17
  "preci": "npm run clean && npm run lint && npm run prepublishOnly",
17
18
  "ci": "egg-bin cov",
19
+ "postci": "npm run clean",
18
20
  "clean": "rimraf dist",
19
21
  "prepublishOnly": "tshy && tshy-after && attw --pack"
20
22
  },
package/src/index.ts CHANGED
@@ -1,3 +1,5 @@
1
+ import path from 'node:path';
2
+ import fs from 'node:fs/promises';
1
3
  import { getFrameworkPath } from './framework.js';
2
4
  import { getPlugins, getConfig, getLoadUnits } from './plugin.js';
3
5
  import { getFrameworkOrEggPath } from './deprecated.js';
@@ -14,3 +16,42 @@ export default {
14
16
  getPlugins, getConfig, getLoadUnits,
15
17
  getFrameworkOrEggPath,
16
18
  };
19
+
20
+ export enum EggType {
21
+ framework = 'framework',
22
+ plugin = 'plugin',
23
+ application = 'application',
24
+ unknown = 'unknown',
25
+ }
26
+
27
+ /**
28
+ * Detect the type of egg project
29
+ */
30
+ export async function detectType(baseDir: string): Promise<EggType> {
31
+ const pkgFile = path.join(baseDir, 'package.json');
32
+ let pkg: {
33
+ egg?: {
34
+ framework?: boolean;
35
+ };
36
+ eggPlugin?: {
37
+ name: string;
38
+ };
39
+ };
40
+ try {
41
+ await fs.access(pkgFile);
42
+ } catch {
43
+ return EggType.unknown;
44
+ }
45
+ try {
46
+ pkg = JSON.parse(await fs.readFile(pkgFile, 'utf-8'));
47
+ } catch {
48
+ return EggType.unknown;
49
+ }
50
+ if (pkg.egg?.framework) {
51
+ return EggType.framework;
52
+ }
53
+ if (pkg.eggPlugin?.name) {
54
+ return EggType.plugin;
55
+ }
56
+ return EggType.application;
57
+ }