@eggjs/tegg-common-util 4.0.0-beta.9 → 4.0.1-beta.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/dist/FSUtil.d.ts CHANGED
@@ -1,3 +1,6 @@
1
- export declare class FSUtil {
2
- static fileExists(filePath: string): Promise<boolean>;
1
+ //#region src/FSUtil.d.ts
2
+ declare class FSUtil {
3
+ static fileExists(filePath: string): Promise<boolean>;
3
4
  }
5
+ //#endregion
6
+ export { FSUtil };
package/dist/FSUtil.js CHANGED
@@ -1,13 +1,16 @@
1
- import fs from 'node:fs/promises';
2
- export class FSUtil {
3
- static async fileExists(filePath) {
4
- try {
5
- await fs.access(filePath);
6
- }
7
- catch {
8
- return false;
9
- }
10
- return true;
11
- }
12
- }
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRlNVdGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0ZTVXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVsQyxNQUFNLE9BQU8sTUFBTTtJQUNqQixNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFnQjtRQUN0QyxJQUFJLENBQUM7WUFDSCxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUIsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztDQUNGIn0=
1
+ import fs from "node:fs/promises";
2
+
3
+ //#region src/FSUtil.ts
4
+ var FSUtil = class {
5
+ static async fileExists(filePath) {
6
+ try {
7
+ await fs.access(filePath, fs.constants.F_OK);
8
+ } catch {
9
+ return false;
10
+ }
11
+ return true;
12
+ }
13
+ };
14
+
15
+ //#endregion
16
+ export { FSUtil };
package/dist/Graph.d.ts CHANGED
@@ -1,66 +1,46 @@
1
- import type { GraphNodeObj } from '@eggjs/tegg-types';
2
- declare const inspect: unique symbol;
3
- export interface EdgeMeta {
4
- equal(meta: EdgeMeta): boolean;
5
- toString(): string;
1
+ import { GraphNodeObj } from "@eggjs/tegg-types";
2
+
3
+ //#region src/Graph.d.ts
4
+ interface EdgeMeta {
5
+ equal(meta: EdgeMeta): boolean;
6
+ toString(): string;
6
7
  }
7
- export declare class GraphNode<T extends GraphNodeObj, M extends EdgeMeta = EdgeMeta> {
8
- val: T;
9
- toNodeMap: Map<string, {
10
- node: GraphNode<T, M>;
11
- meta?: M;
12
- }>;
13
- fromNodeMap: Map<string, {
14
- node: GraphNode<T, M>;
15
- meta?: M;
16
- }>;
17
- constructor(val: T);
18
- get id(): string;
19
- addToVertex(node: GraphNode<T, M>, meta?: M): boolean;
20
- addFromVertex(node: GraphNode<T, M>, meta?: M): boolean;
21
- [inspect](): {
22
- val: T;
23
- toNodes: {
24
- node: GraphNode<T, M>;
25
- meta?: M;
26
- }[];
27
- fromNodes: {
28
- node: GraphNode<T, M>;
29
- meta?: M;
30
- }[];
31
- };
32
- toJSON(): {
33
- val: T;
34
- toNodes: {
35
- node: GraphNode<T, M>;
36
- meta?: M;
37
- }[];
38
- fromNodes: {
39
- node: GraphNode<T, M>;
40
- meta?: M;
41
- }[];
42
- };
43
- toString(): string;
8
+ declare class GraphNode<T extends GraphNodeObj, M extends EdgeMeta = EdgeMeta> {
9
+ val: T;
10
+ toNodeMap: Map<string, {
11
+ node: GraphNode<T, M>;
12
+ meta?: M;
13
+ }>;
14
+ fromNodeMap: Map<string, {
15
+ node: GraphNode<T, M>;
16
+ meta?: M;
17
+ }>;
18
+ constructor(val: T);
19
+ get id(): string;
20
+ addToVertex(node: GraphNode<T, M>, meta?: M): boolean;
21
+ addFromVertex(node: GraphNode<T, M>, meta?: M): boolean;
22
+ toJSON(): object;
23
+ toString(): string;
44
24
  }
45
- export declare class GraphPath<T extends GraphNodeObj, M extends EdgeMeta = EdgeMeta> {
46
- nodeIdMap: Map<string, number>;
47
- nodes: Array<{
48
- node: GraphNode<T, M>;
49
- meta?: M;
50
- }>;
51
- pushVertex(node: GraphNode<T, M>, meta?: M): boolean;
52
- popVertex(): void;
53
- toString(): string;
54
- [inspect](): string;
25
+ declare class GraphPath<T extends GraphNodeObj, M extends EdgeMeta = EdgeMeta> {
26
+ nodeIdMap: Map<string, number>;
27
+ nodes: Array<{
28
+ node: GraphNode<T, M>;
29
+ meta?: M;
30
+ }>;
31
+ pushVertex(node: GraphNode<T, M>, meta?: M): boolean;
32
+ popVertex(): void;
33
+ toString(): string;
55
34
  }
56
- export declare class Graph<T extends GraphNodeObj, M extends EdgeMeta = EdgeMeta> {
57
- nodes: Map<string, GraphNode<T, M>>;
58
- addVertex(node: GraphNode<T, M>): boolean;
59
- addEdge(from: GraphNode<T, M>, to: GraphNode<T, M>, meta?: M): boolean;
60
- findToNode(id: string, meta: M): GraphNode<T, M> | undefined;
61
- appendVertexToPath(node: GraphNode<T, M>, accessPath: GraphPath<T, M>, meta?: M): boolean;
62
- loopPath(): GraphPath<T, M> | undefined;
63
- accessNode(node: GraphNode<T, M>, nodes: Array<GraphNode<T, M>>, accessed: boolean[], res: Array<GraphNode<T, M>>): void;
64
- sort(): Array<GraphNode<T, M>>;
35
+ declare class Graph<T extends GraphNodeObj, M extends EdgeMeta = EdgeMeta> {
36
+ nodes: Map<string, GraphNode<T, M>>;
37
+ addVertex(node: GraphNode<T, M>): boolean;
38
+ addEdge(from: GraphNode<T, M>, to: GraphNode<T, M>, meta?: M): boolean;
39
+ findToNode(id: string, meta: M): GraphNode<T, M> | undefined;
40
+ appendVertexToPath(node: GraphNode<T, M>, accessPath: GraphPath<T, M>, meta?: M): boolean;
41
+ loopPath(): GraphPath<T, M> | undefined;
42
+ accessNode(node: GraphNode<T, M>, nodes: Array<GraphNode<T, M>>, accessed: boolean[], res: Array<GraphNode<T, M>>): void;
43
+ sort(): Array<GraphNode<T, M>>;
65
44
  }
66
- export {};
45
+ //#endregion
46
+ export { EdgeMeta, Graph, GraphNode, GraphPath };
package/dist/Graph.js CHANGED
@@ -1,159 +1,121 @@
1
- const inspect = Symbol.for('nodejs.util.inspect.custom');
2
- export class GraphNode {
3
- val;
4
- toNodeMap = new Map();
5
- fromNodeMap = new Map();
6
- constructor(val) {
7
- this.val = val;
8
- }
9
- get id() {
10
- return this.val.id;
11
- }
12
- addToVertex(node, meta) {
13
- if (this.toNodeMap.has(node.id)) {
14
- return false;
15
- }
16
- this.toNodeMap.set(node.id, { node, meta });
17
- return true;
18
- }
19
- addFromVertex(node, meta) {
20
- if (this.fromNodeMap.has(node.id)) {
21
- return false;
22
- }
23
- this.fromNodeMap.set(node.id, { node, meta });
24
- return true;
25
- }
26
- [inspect]() {
27
- return this.toJSON();
28
- }
29
- toJSON() {
30
- return {
31
- val: this.val,
32
- toNodes: Array.from(this.toNodeMap.values()),
33
- fromNodes: Array.from(this.fromNodeMap.values()),
34
- };
35
- }
36
- toString() {
37
- return this.val.toString();
38
- }
39
- }
40
- export class GraphPath {
41
- nodeIdMap = new Map();
42
- nodes = [];
43
- pushVertex(node, meta) {
44
- const val = this.nodeIdMap.get(node.id) || 0;
45
- this.nodeIdMap.set(node.id, val + 1);
46
- this.nodes.push({ node, meta });
47
- return val === 0;
48
- }
49
- popVertex() {
50
- const nodeHandler = this.nodes.pop();
51
- if (nodeHandler) {
52
- const val = this.nodeIdMap.get(nodeHandler.node.id);
53
- this.nodeIdMap.set(nodeHandler.node.id, val - 1);
54
- }
55
- }
56
- toString() {
57
- const res = this.nodes.reduce((p, c) => {
58
- let msg = '';
59
- if (c.meta) {
60
- msg += ` ${c.meta.toString()} -> `;
61
- }
62
- else if (p.length) {
63
- msg += ' -> ';
64
- }
65
- msg += c.node.val.toString();
66
- p.push(msg);
67
- return p;
68
- }, new Array());
69
- return res.join('');
70
- }
71
- [inspect]() {
72
- return this.toString();
73
- }
74
- }
75
- export class Graph {
76
- nodes = new Map();
77
- addVertex(node) {
78
- if (this.nodes.has(node.id)) {
79
- return false;
80
- }
81
- this.nodes.set(node.id, node);
82
- return true;
83
- }
84
- addEdge(from, to, meta) {
85
- to.addFromVertex(from, meta);
86
- return from.addToVertex(to, meta);
87
- }
88
- findToNode(id, meta) {
89
- const node = this.nodes.get(id);
90
- if (!node)
91
- return undefined;
92
- for (const { node: toNode, meta: edgeMeta } of node.toNodeMap.values()) {
93
- if (edgeMeta && meta.equal(edgeMeta)) {
94
- return toNode;
95
- }
96
- }
97
- return undefined;
98
- }
99
- appendVertexToPath(node, accessPath, meta) {
100
- if (!accessPath.pushVertex(node, meta)) {
101
- return false;
102
- }
103
- for (const toNode of node.toNodeMap.values()) {
104
- if (!this.appendVertexToPath(toNode.node, accessPath, toNode.meta)) {
105
- return false;
106
- }
107
- }
108
- accessPath.popVertex();
109
- return true;
110
- }
111
- loopPath() {
112
- const accessPath = new GraphPath();
113
- const nodes = Array.from(this.nodes.values());
114
- for (const node of nodes) {
115
- if (!this.appendVertexToPath(node, accessPath)) {
116
- return accessPath;
117
- }
118
- }
119
- return;
120
- }
121
- accessNode(node, nodes, accessed, res) {
122
- const index = nodes.indexOf(node);
123
- if (accessed[index]) {
124
- return;
125
- }
126
- if (!node.toNodeMap.size) {
127
- accessed[nodes.indexOf(node)] = true;
128
- res.push(node);
129
- return;
130
- }
131
- for (const toNode of node.toNodeMap.values()) {
132
- this.accessNode(toNode.node, nodes, accessed, res);
133
- }
134
- accessed[nodes.indexOf(node)] = true;
135
- res.push(node);
136
- }
137
- // sort by direct
138
- // priority:
139
- // 1. vertex can not be access
140
- // 2. reverse by access direct
141
- //
142
- // notice:
143
- // 1. sort result is not stable
144
- // 2. graph with loop can not be sort
145
- sort() {
146
- const res = [];
147
- const nodes = Array.from(this.nodes.values());
148
- const accessed = [];
149
- for (let i = 0; i < nodes.length; ++i) {
150
- accessed.push(false);
151
- }
152
- for (let i = 0; i < nodes.length; ++i) {
153
- const node = nodes[i];
154
- this.accessNode(node, nodes, accessed, res);
155
- }
156
- return res;
157
- }
158
- }
159
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvR3JhcGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0FBT3pELE1BQU0sT0FBTyxTQUFTO0lBQ3BCLEdBQUcsQ0FBSTtJQUNQLFNBQVMsR0FBbUQsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUN0RSxXQUFXLEdBQW1ELElBQUksR0FBRyxFQUFFLENBQUM7SUFFeEUsWUFBWSxHQUFNO1FBQ2hCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxJQUFJLEVBQUU7UUFDSixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxXQUFXLENBQUMsSUFBcUIsRUFBRSxJQUFRO1FBQ3pDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDaEMsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGFBQWEsQ0FBQyxJQUFxQixFQUFFLElBQVE7UUFDM0MsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNsQyxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDOUMsT0FBTyxJQUFJLENBQUM7SUFDZCxD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
1
+ //#region src/Graph.ts
2
+ var GraphNode = class {
3
+ val;
4
+ toNodeMap = /* @__PURE__ */ new Map();
5
+ fromNodeMap = /* @__PURE__ */ new Map();
6
+ constructor(val) {
7
+ this.val = val;
8
+ }
9
+ get id() {
10
+ return this.val.id;
11
+ }
12
+ addToVertex(node, meta) {
13
+ if (this.toNodeMap.has(node.id)) return false;
14
+ this.toNodeMap.set(node.id, {
15
+ node,
16
+ meta
17
+ });
18
+ return true;
19
+ }
20
+ addFromVertex(node, meta) {
21
+ if (this.fromNodeMap.has(node.id)) return false;
22
+ this.fromNodeMap.set(node.id, {
23
+ node,
24
+ meta
25
+ });
26
+ return true;
27
+ }
28
+ toJSON() {
29
+ return {
30
+ val: this.val,
31
+ toNodes: Array.from(this.toNodeMap.values()),
32
+ fromNodes: Array.from(this.fromNodeMap.values())
33
+ };
34
+ }
35
+ toString() {
36
+ return this.val.toString();
37
+ }
38
+ };
39
+ var GraphPath = class {
40
+ nodeIdMap = /* @__PURE__ */ new Map();
41
+ nodes = [];
42
+ pushVertex(node, meta) {
43
+ const val = this.nodeIdMap.get(node.id) || 0;
44
+ this.nodeIdMap.set(node.id, val + 1);
45
+ this.nodes.push({
46
+ node,
47
+ meta
48
+ });
49
+ return val === 0;
50
+ }
51
+ popVertex() {
52
+ const nodeHandler = this.nodes.pop();
53
+ if (nodeHandler) {
54
+ const val = this.nodeIdMap.get(nodeHandler.node.id);
55
+ this.nodeIdMap.set(nodeHandler.node.id, val - 1);
56
+ }
57
+ }
58
+ toString() {
59
+ return this.nodes.reduce((p, c) => {
60
+ let msg = "";
61
+ if (c.meta) msg += ` ${c.meta.toString()} -> `;
62
+ else if (p.length) msg += " -> ";
63
+ msg += c.node.val.toString();
64
+ p.push(msg);
65
+ return p;
66
+ }, new Array()).join("");
67
+ }
68
+ };
69
+ var Graph = class {
70
+ nodes = /* @__PURE__ */ new Map();
71
+ addVertex(node) {
72
+ if (this.nodes.has(node.id)) return false;
73
+ this.nodes.set(node.id, node);
74
+ return true;
75
+ }
76
+ addEdge(from, to, meta) {
77
+ to.addFromVertex(from, meta);
78
+ return from.addToVertex(to, meta);
79
+ }
80
+ findToNode(id, meta) {
81
+ const node = this.nodes.get(id);
82
+ if (!node) return void 0;
83
+ for (const { node: toNode, meta: edgeMeta } of node.toNodeMap.values()) if (edgeMeta && meta.equal(edgeMeta)) return toNode;
84
+ }
85
+ appendVertexToPath(node, accessPath, meta) {
86
+ if (!accessPath.pushVertex(node, meta)) return false;
87
+ for (const toNode of node.toNodeMap.values()) if (!this.appendVertexToPath(toNode.node, accessPath, toNode.meta)) return false;
88
+ accessPath.popVertex();
89
+ return true;
90
+ }
91
+ loopPath() {
92
+ const accessPath = new GraphPath();
93
+ const nodes = Array.from(this.nodes.values());
94
+ for (const node of nodes) if (!this.appendVertexToPath(node, accessPath)) return accessPath;
95
+ }
96
+ accessNode(node, nodes, accessed, res) {
97
+ if (accessed[nodes.indexOf(node)]) return;
98
+ if (!node.toNodeMap.size) {
99
+ accessed[nodes.indexOf(node)] = true;
100
+ res.push(node);
101
+ return;
102
+ }
103
+ for (const toNode of node.toNodeMap.values()) this.accessNode(toNode.node, nodes, accessed, res);
104
+ accessed[nodes.indexOf(node)] = true;
105
+ res.push(node);
106
+ }
107
+ sort() {
108
+ const res = [];
109
+ const nodes = Array.from(this.nodes.values());
110
+ const accessed = [];
111
+ for (let i = 0; i < nodes.length; ++i) accessed.push(false);
112
+ for (let i = 0; i < nodes.length; ++i) {
113
+ const node = nodes[i];
114
+ this.accessNode(node, nodes, accessed, res);
115
+ }
116
+ return res;
117
+ }
118
+ };
119
+
120
+ //#endregion
121
+ export { Graph, GraphNode, GraphPath };
package/dist/MapUtil.d.ts CHANGED
@@ -1,3 +1,6 @@
1
- export declare class MapUtil {
2
- static getOrStore<K, V>(map: Map<K, V>, key: K, value: V): V;
1
+ //#region src/MapUtil.d.ts
2
+ declare class MapUtil {
3
+ static getOrStore<K, V>(map: Map<K, V>, key: K, value: V): V;
3
4
  }
5
+ //#endregion
6
+ export { MapUtil };
package/dist/MapUtil.js CHANGED
@@ -1,9 +1,10 @@
1
- export class MapUtil {
2
- static getOrStore(map, key, value) {
3
- if (!map.has(key)) {
4
- map.set(key, value);
5
- }
6
- return map.get(key);
7
- }
8
- }
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWFwVXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9NYXBVdGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxPQUFPO0lBQ2xCLE1BQU0sQ0FBQyxVQUFVLENBQU8sR0FBYyxFQUFFLEdBQU0sRUFBRSxLQUFRO1FBQ3RELElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbEIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdEIsQ0FBQztRQUNELE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUUsQ0FBQztJQUN2QixDQUFDO0NBQ0YifQ==
1
+ //#region src/MapUtil.ts
2
+ var MapUtil = class {
3
+ static getOrStore(map, key, value) {
4
+ if (!map.has(key)) map.set(key, value);
5
+ return map.get(key);
6
+ }
7
+ };
8
+
9
+ //#endregion
10
+ export { MapUtil };
@@ -1,20 +1,30 @@
1
- import type { InlineModuleReferenceConfig, ModuleConfig, ModuleReference, ModuleReferenceConfig, NpmModuleReferenceConfig, ReadModuleReferenceOptions } from '@eggjs/tegg-types';
2
- export declare class ModuleReferenceConfigHelp {
3
- static isInlineModuleReference(moduleReference: ModuleReferenceConfig): moduleReference is InlineModuleReferenceConfig;
4
- static isNpmModuleReference(moduleReference: ModuleReferenceConfig): moduleReference is NpmModuleReferenceConfig;
1
+ import { InlineModuleReferenceConfig, ModuleConfig, ModuleReference, ModuleReferenceConfig, NpmModuleReferenceConfig, ReadModuleReferenceOptions } from "@eggjs/tegg-types";
2
+
3
+ //#region src/ModuleConfig.d.ts
4
+ declare class ModuleReferenceConfigHelp {
5
+ static isInlineModuleReference(moduleReference: ModuleReferenceConfig): moduleReference is InlineModuleReferenceConfig;
6
+ static isNpmModuleReference(moduleReference: ModuleReferenceConfig): moduleReference is NpmModuleReferenceConfig;
5
7
  }
6
- export declare class ModuleConfigUtil {
7
- #private;
8
- static configNames: string[] | undefined;
9
- static setConfigNames(configNames: string[] | undefined): void;
10
- static readModuleReference(baseDir: string, options?: ReadModuleReferenceOptions): readonly ModuleReference[];
11
- private static readModuleReferenceFromModuleJson;
12
- private static readModuleReferenceFromScan;
13
- static readModuleFromNodeModules(baseDir: string): ModuleReference[];
14
- static resolveModuleDir(moduleDir: string, baseDir?: string): string;
15
- private static getModuleName;
16
- static readModuleName(baseDir: string, moduleDir: string): Promise<string>;
17
- static readModuleNameSync(moduleDir: string, baseDir?: string): string;
18
- static loadModuleConfig(moduleDir: string, baseDir?: string, env?: string): Promise<ModuleConfig>;
19
- static loadModuleConfigSync(moduleDir: string, baseDir?: string, env?: string): ModuleConfig;
8
+ declare class ModuleConfigUtil {
9
+ #private;
10
+ static configNames: string[] | undefined;
11
+ static setConfigNames(configNames: string[] | undefined): void;
12
+ static readModuleReference(baseDir: string, options?: ReadModuleReferenceOptions): readonly ModuleReference[];
13
+ private static readModuleReferenceFromModuleJson;
14
+ private static readModuleReferenceFromScan;
15
+ static readModuleFromNodeModules(baseDir: string): ModuleReference[];
16
+ static resolveModuleDir(moduleDir: string, baseDir?: string): string;
17
+ private static getModuleName;
18
+ static readModuleName(baseDir: string, moduleDir: string): Promise<string>;
19
+ static readModuleNameSync(moduleDir: string, baseDir?: string): string;
20
+ static loadModuleConfig(moduleDir: string, baseDir?: string, env?: string): Promise<ModuleConfig>;
21
+ static loadModuleConfigSync(moduleDir: string, baseDir?: string, env?: string): ModuleConfig;
22
+ /**
23
+ * Deduplicate module references to avoid adding the same module multiple times.
24
+ * @param moduleReferences array of module references
25
+ * @return deduplicated module references
26
+ */
27
+ static deduplicateModules(moduleReferences: readonly ModuleReference[]): readonly ModuleReference[];
20
28
  }
29
+ //#endregion
30
+ export { ModuleConfigUtil, ModuleReferenceConfigHelp };