@antelopejs/core 1.4.7 → 1.4.9
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/core/cli/commands/module/init.js +1 -1
- package/dist/core/cli/commands/module/init.js.map +1 -1
- package/dist/core/cli/commands/project/start.js +5 -1
- package/dist/core/cli/commands/project/start.js.map +1 -1
- package/dist/core/cli/full-cli.d.ts +3 -0
- package/dist/core/cli/full-cli.js +68 -0
- package/dist/core/cli/full-cli.js.map +1 -0
- package/dist/core/cli/index.d.ts +2 -3
- package/dist/core/cli/index.js +56 -69
- package/dist/core/cli/index.js.map +1 -1
- package/dist/core/cli/package-manager.d.ts +3 -1
- package/dist/core/cli/package-manager.js +50 -14
- package/dist/core/cli/package-manager.js.map +1 -1
- package/dist/core/cli/production-start.d.ts +10 -0
- package/dist/core/cli/production-start.js +87 -0
- package/dist/core/cli/production-start.js.map +1 -0
- package/dist/core/config/config-loader.js +5 -1
- package/dist/core/config/config-loader.js.map +1 -1
- package/dist/core/interface-registry.d.ts +6 -1
- package/dist/core/interface-registry.js +45 -2
- package/dist/core/interface-registry.js.map +1 -1
- package/dist/core/module-context.d.ts +7 -0
- package/dist/core/module-context.js +60 -0
- package/dist/core/module-context.js.map +1 -0
- package/dist/core/module-lifecycle.d.ts +5 -2
- package/dist/core/module-lifecycle.js +49 -32
- package/dist/core/module-lifecycle.js.map +1 -1
- package/dist/core/module-manager.d.ts +19 -2
- package/dist/core/module-manager.js +332 -127
- package/dist/core/module-manager.js.map +1 -1
- package/dist/core/module-registry.d.ts +1 -0
- package/dist/core/module-registry.js +3 -0
- package/dist/core/module-registry.js.map +1 -1
- package/dist/core/module-tracker.d.ts +1 -0
- package/dist/core/module-tracker.js +5 -1
- package/dist/core/module-tracker.js.map +1 -1
- package/dist/core/module.d.ts +2 -0
- package/dist/core/module.js +51 -28
- package/dist/core/module.js.map +1 -1
- package/dist/core/resolution/interface-resolution.js +7 -13
- package/dist/core/resolution/interface-resolution.js.map +1 -1
- package/dist/core/resolution/package-resolution.d.ts +14 -0
- package/dist/core/resolution/package-resolution.js +95 -0
- package/dist/core/resolution/package-resolution.js.map +1 -0
- package/dist/core/resolution/path-mapper.js +1 -1
- package/dist/core/resolution/path-mapper.js.map +1 -1
- package/dist/core/resolution/resolver-detour.d.ts +2 -2
- package/dist/core/resolution/resolver-detour.js +114 -22
- package/dist/core/resolution/resolver-detour.js.map +1 -1
- package/dist/core/resolution/resolver.d.ts +34 -0
- package/dist/core/resolution/resolver.js +233 -8
- package/dist/core/resolution/resolver.js.map +1 -1
- package/dist/core/runtime/dev-server-registry.js +4 -2
- package/dist/core/runtime/dev-server-registry.js.map +1 -1
- package/dist/core/runtime/launch-sequence.js +78 -11
- package/dist/core/runtime/launch-sequence.js.map +1 -1
- package/dist/core/runtime/module-loading.d.ts +1 -0
- package/dist/core/runtime/module-loading.js +89 -22
- package/dist/core/runtime/module-loading.js.map +1 -1
- package/dist/core/runtime/project-launch.d.ts +5 -0
- package/dist/core/runtime/project-launch.js +184 -0
- package/dist/core/runtime/project-launch.js.map +1 -0
- package/dist/core/runtime/runtime-bootstrap.d.ts +1 -0
- package/dist/core/runtime/runtime-bootstrap.js +11 -2
- package/dist/core/runtime/runtime-bootstrap.js.map +1 -1
- package/dist/core/shutdown/shutdown-manager.js +8 -2
- package/dist/core/shutdown/shutdown-manager.js.map +1 -1
- package/dist/core/test/test-module.js +18 -13
- package/dist/core/test/test-module.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +13 -113
- package/dist/index.js.map +1 -1
- package/package.json +4 -3
|
@@ -2,13 +2,18 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.InterfaceRegistry = void 0;
|
|
4
4
|
const internal_1 = require("@antelopejs/interface-core/internal");
|
|
5
|
+
const ownersByModule = new Map();
|
|
5
6
|
class InterfaceRegistry {
|
|
6
|
-
|
|
7
|
+
owner = Symbol("interface-registry");
|
|
8
|
+
moduleIds = new Set();
|
|
9
|
+
setConnections(moduleId, connections, selectedProviders = new Map()) {
|
|
7
10
|
const connectionIDs = {};
|
|
8
11
|
for (const [interfaceName, modules] of connections) {
|
|
9
|
-
connectionIDs[interfaceName] = modules.map(({ id }) => {
|
|
12
|
+
connectionIDs[interfaceName] = modules.map(({ module, id }) => {
|
|
10
13
|
const entry = {
|
|
11
14
|
path: interfaceName,
|
|
15
|
+
provider: module,
|
|
16
|
+
selected: selectedProviders.get(interfaceName) === module,
|
|
12
17
|
};
|
|
13
18
|
if (id !== undefined) {
|
|
14
19
|
entry.id = id;
|
|
@@ -16,8 +21,46 @@ class InterfaceRegistry {
|
|
|
16
21
|
return entry;
|
|
17
22
|
});
|
|
18
23
|
}
|
|
24
|
+
const owners = this.getCurrentOwners(moduleId);
|
|
25
|
+
owners.set(this.owner, connectionIDs);
|
|
26
|
+
this.moduleIds.add(moduleId);
|
|
19
27
|
internal_1.internal.interfaceConnections[moduleId] = connectionIDs;
|
|
20
28
|
}
|
|
29
|
+
clear() {
|
|
30
|
+
for (const moduleId of this.moduleIds) {
|
|
31
|
+
this.removeOwner(moduleId);
|
|
32
|
+
}
|
|
33
|
+
this.moduleIds.clear();
|
|
34
|
+
}
|
|
35
|
+
getCurrentOwners(moduleId) {
|
|
36
|
+
const owners = ownersByModule.get(moduleId) ?? new Map();
|
|
37
|
+
const current = internal_1.internal.interfaceConnections[moduleId];
|
|
38
|
+
if (current && [...owners.values()].includes(current)) {
|
|
39
|
+
return owners;
|
|
40
|
+
}
|
|
41
|
+
owners.clear();
|
|
42
|
+
ownersByModule.set(moduleId, owners);
|
|
43
|
+
return owners;
|
|
44
|
+
}
|
|
45
|
+
removeOwner(moduleId) {
|
|
46
|
+
const owners = ownersByModule.get(moduleId);
|
|
47
|
+
if (!owners) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
const current = internal_1.internal.interfaceConnections[moduleId];
|
|
51
|
+
if (!current || ![...owners.values()].includes(current)) {
|
|
52
|
+
ownersByModule.delete(moduleId);
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
owners.delete(this.owner);
|
|
56
|
+
const remaining = [...owners.values()].at(-1);
|
|
57
|
+
if (remaining) {
|
|
58
|
+
internal_1.internal.interfaceConnections[moduleId] = remaining;
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
delete internal_1.internal.interfaceConnections[moduleId];
|
|
62
|
+
ownersByModule.delete(moduleId);
|
|
63
|
+
}
|
|
21
64
|
}
|
|
22
65
|
exports.InterfaceRegistry = InterfaceRegistry;
|
|
23
66
|
//# sourceMappingURL=interface-registry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interface-registry.js","sourceRoot":"","sources":["../../src/core/interface-registry.ts"],"names":[],"mappings":";;;AAAA,kEAA+D;
|
|
1
|
+
{"version":3,"file":"interface-registry.js","sourceRoot":"","sources":["../../src/core/interface-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export interface InterfaceProviderRoute {
|
|
2
|
+
interfaceName: string;
|
|
3
|
+
packageEntry?: string;
|
|
4
|
+
provider: string;
|
|
5
|
+
providerCount: number;
|
|
6
|
+
}
|
|
7
|
+
export declare function buildProviderRoutes(moduleId: string, routes: InterfaceProviderRoute[]): Readonly<Record<string, string>>;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildProviderRoutes = buildProviderRoutes;
|
|
4
|
+
const interface_core_1 = require("@antelopejs/interface-core");
|
|
5
|
+
function collectProxyIdentities(value) {
|
|
6
|
+
const identities = new Set();
|
|
7
|
+
const visited = new WeakSet();
|
|
8
|
+
const visit = (candidate) => {
|
|
9
|
+
if ((typeof candidate !== "object" && typeof candidate !== "function") ||
|
|
10
|
+
candidate === null) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
const proxy = typeof candidate === "function" && "proxy" in candidate
|
|
14
|
+
? candidate.proxy
|
|
15
|
+
: candidate;
|
|
16
|
+
if ((0, interface_core_1.IsInterfaceProxy)(proxy)) {
|
|
17
|
+
const identity = (0, interface_core_1.GetInterfaceProxyIdentity)(proxy);
|
|
18
|
+
if (identity) {
|
|
19
|
+
identities.add(identity);
|
|
20
|
+
}
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
if (visited.has(candidate)) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
visited.add(candidate);
|
|
27
|
+
Object.values(candidate).forEach(visit);
|
|
28
|
+
};
|
|
29
|
+
visit(value);
|
|
30
|
+
return [...identities];
|
|
31
|
+
}
|
|
32
|
+
function loadInterfaceDeclaration(route) {
|
|
33
|
+
if (!route.packageEntry) {
|
|
34
|
+
if (route.providerCount > 1) {
|
|
35
|
+
throw new Error(`Cannot route '${route.interfaceName}' between ${route.providerCount} providers because its package could not be resolved. Configure one provider or install a resolvable interface package.`);
|
|
36
|
+
}
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
try {
|
|
40
|
+
return require(route.packageEntry);
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
throw new Error(`Failed to prepare provider routing for '${route.interfaceName}' from '${route.packageEntry}'.`, { cause: error });
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
function buildProviderRoutes(moduleId, routes) {
|
|
47
|
+
const providerRoutes = {};
|
|
48
|
+
for (const route of routes) {
|
|
49
|
+
const declaration = loadInterfaceDeclaration(route);
|
|
50
|
+
for (const identity of collectProxyIdentities(declaration)) {
|
|
51
|
+
const current = providerRoutes[identity];
|
|
52
|
+
if (current && current !== route.provider) {
|
|
53
|
+
throw new Error(`Module '${moduleId}' resolves proxy '${identity}' to both '${current}' and '${route.provider}'. Use unique interface proxy identities.`);
|
|
54
|
+
}
|
|
55
|
+
providerRoutes[identity] = route.provider;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return providerRoutes;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=module-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-context.js","sourceRoot":"","sources":["../../src/core/module-context.ts"],"names":[],"mappings":";;AAiEA,kDAkBC;AAnFD,+DAGoC;AASpC,SAAS,sBAAsB,CAAC,KAAc;IAC5C,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAU,CAAC;IAEtC,MAAM,KAAK,GAAG,CAAC,SAAkB,EAAQ,EAAE;QACzC,IACE,CAAC,OAAO,SAAS,KAAK,QAAQ,IAAI,OAAO,SAAS,KAAK,UAAU,CAAC;YAClE,SAAS,KAAK,IAAI,EAClB,CAAC;YACD,OAAO;QACT,CAAC;QACD,MAAM,KAAK,GACT,OAAO,SAAS,KAAK,UAAU,IAAI,OAAO,IAAI,SAAS;YACrD,CAAC,CAAC,SAAS,CAAC,KAAK;YACjB,CAAC,CAAC,SAAS,CAAC;QAChB,IAAI,IAAA,iCAAgB,EAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,IAAA,0CAAyB,EAAC,KAAK,CAAC,CAAC;YAClD,IAAI,QAAQ,EAAE,CAAC;gBACb,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC3B,CAAC;YACD,OAAO;QACT,CAAC;QACD,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,OAAO;QACT,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvB,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC,CAAC;IAEF,KAAK,CAAC,KAAK,CAAC,CAAC;IACb,OAAO,CAAC,GAAG,UAAU,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,wBAAwB,CAAC,KAA6B;IAC7D,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QACxB,IAAI,KAAK,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CACb,iBAAiB,KAAK,CAAC,aAAa,aAAa,KAAK,CAAC,aAAa,yHAAyH,CAC9L,CAAC;QACJ,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,OAAO,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,2CAA2C,KAAK,CAAC,aAAa,WAAW,KAAK,CAAC,YAAY,IAAI,EAC/F,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAgB,mBAAmB,CACjC,QAAgB,EAChB,MAAgC;IAEhC,MAAM,cAAc,GAA2B,EAAE,CAAC;IAClD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,WAAW,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;QACpD,KAAK,MAAM,QAAQ,IAAI,sBAAsB,CAAC,WAAW,CAAC,EAAE,CAAC;YAC3D,MAAM,OAAO,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;YACzC,IAAI,OAAO,IAAI,OAAO,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAC1C,MAAM,IAAI,KAAK,CACb,WAAW,QAAQ,qBAAqB,QAAQ,cAAc,OAAO,UAAU,KAAK,CAAC,QAAQ,2CAA2C,CACzI,CAAC;YACJ,CAAC;YACD,cAAc,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC;QAC5C,CAAC;IACH,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC"}
|
|
@@ -3,14 +3,17 @@ export declare class ModuleLifecycle {
|
|
|
3
3
|
private moduleId;
|
|
4
4
|
private callbacks?;
|
|
5
5
|
private _state;
|
|
6
|
-
private
|
|
6
|
+
private transition;
|
|
7
7
|
constructor(moduleId: string);
|
|
8
8
|
get state(): ModuleState;
|
|
9
9
|
setCallbacks(callbacks: ModuleCallbacks): void;
|
|
10
10
|
construct(config: unknown): Promise<void>;
|
|
11
|
+
private runConstruct;
|
|
11
12
|
start(): Promise<void>;
|
|
12
13
|
private runStart;
|
|
13
|
-
private settleStart;
|
|
14
14
|
stop(): Promise<void>;
|
|
15
|
+
private runStop;
|
|
15
16
|
destroy(): Promise<void>;
|
|
17
|
+
private runDestroy;
|
|
18
|
+
private enqueue;
|
|
16
19
|
}
|
|
@@ -7,7 +7,7 @@ class ModuleLifecycle {
|
|
|
7
7
|
moduleId;
|
|
8
8
|
callbacks;
|
|
9
9
|
_state = types_1.ModuleState.Loaded;
|
|
10
|
-
|
|
10
|
+
transition = Promise.resolve();
|
|
11
11
|
constructor(moduleId) {
|
|
12
12
|
this.moduleId = moduleId;
|
|
13
13
|
}
|
|
@@ -17,43 +17,34 @@ class ModuleLifecycle {
|
|
|
17
17
|
setCallbacks(callbacks) {
|
|
18
18
|
this.callbacks = callbacks;
|
|
19
19
|
}
|
|
20
|
-
|
|
20
|
+
construct(config) {
|
|
21
|
+
return this.enqueue(() => this.runConstruct(config));
|
|
22
|
+
}
|
|
23
|
+
async runConstruct(config) {
|
|
21
24
|
if (this._state !== types_1.ModuleState.Loaded) {
|
|
22
25
|
return;
|
|
23
26
|
}
|
|
27
|
+
this._state = types_1.ModuleState.Constructed;
|
|
24
28
|
if (this.callbacks?.construct) {
|
|
25
29
|
await this.callbacks.construct(config);
|
|
26
30
|
}
|
|
27
31
|
modules_1.Events.ModuleConstructed.emit(this.moduleId);
|
|
28
|
-
this._state = types_1.ModuleState.Constructed;
|
|
29
32
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
return this.starting;
|
|
33
|
-
}
|
|
34
|
-
if (this._state !== types_1.ModuleState.Constructed) {
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
this.starting = this.runStart();
|
|
38
|
-
return this.starting;
|
|
33
|
+
start() {
|
|
34
|
+
return this.enqueue(() => this.runStart());
|
|
39
35
|
}
|
|
40
36
|
async runStart() {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
modules_1.Events.ModuleStarted.emit(this.moduleId);
|
|
44
|
-
this._state = types_1.ModuleState.Active;
|
|
45
|
-
}
|
|
46
|
-
finally {
|
|
47
|
-
this.starting = undefined;
|
|
37
|
+
if (this._state !== types_1.ModuleState.Constructed) {
|
|
38
|
+
return;
|
|
48
39
|
}
|
|
40
|
+
await this.callbacks?.start?.();
|
|
41
|
+
modules_1.Events.ModuleStarted.emit(this.moduleId);
|
|
42
|
+
this._state = types_1.ModuleState.Active;
|
|
49
43
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
await this.starting.catch(() => undefined);
|
|
53
|
-
}
|
|
44
|
+
stop() {
|
|
45
|
+
return this.enqueue(() => this.runStop());
|
|
54
46
|
}
|
|
55
|
-
async
|
|
56
|
-
await this.settleStart();
|
|
47
|
+
async runStop() {
|
|
57
48
|
if (this._state !== types_1.ModuleState.Active) {
|
|
58
49
|
return;
|
|
59
50
|
}
|
|
@@ -63,19 +54,45 @@ class ModuleLifecycle {
|
|
|
63
54
|
modules_1.Events.ModuleStopped.emit(this.moduleId);
|
|
64
55
|
this._state = types_1.ModuleState.Constructed;
|
|
65
56
|
}
|
|
66
|
-
|
|
67
|
-
|
|
57
|
+
destroy() {
|
|
58
|
+
return this.enqueue(() => this.runDestroy());
|
|
59
|
+
}
|
|
60
|
+
async runDestroy() {
|
|
68
61
|
if (this._state === types_1.ModuleState.Loaded) {
|
|
69
62
|
return;
|
|
70
63
|
}
|
|
64
|
+
const errors = [];
|
|
65
|
+
let destroyFailed = false;
|
|
71
66
|
if (this._state === types_1.ModuleState.Active) {
|
|
72
|
-
|
|
67
|
+
try {
|
|
68
|
+
await this.runStop();
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
errors.push(error);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
try {
|
|
75
|
+
await this.callbacks?.destroy?.();
|
|
73
76
|
}
|
|
74
|
-
|
|
75
|
-
|
|
77
|
+
catch (error) {
|
|
78
|
+
errors.push(error);
|
|
79
|
+
destroyFailed = true;
|
|
76
80
|
}
|
|
77
|
-
|
|
78
|
-
|
|
81
|
+
if (!destroyFailed) {
|
|
82
|
+
modules_1.Events.ModuleDestroyed.emit(this.moduleId);
|
|
83
|
+
this._state = types_1.ModuleState.Loaded;
|
|
84
|
+
}
|
|
85
|
+
if (errors.length === 1) {
|
|
86
|
+
throw errors[0];
|
|
87
|
+
}
|
|
88
|
+
if (errors.length > 1) {
|
|
89
|
+
throw new AggregateError(errors, `Failed to destroy module ${this.moduleId}`);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
enqueue(operation) {
|
|
93
|
+
const result = this.transition.then(operation, operation);
|
|
94
|
+
this.transition = result.catch(() => undefined);
|
|
95
|
+
return result;
|
|
79
96
|
}
|
|
80
97
|
}
|
|
81
98
|
exports.ModuleLifecycle = ModuleLifecycle;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module-lifecycle.js","sourceRoot":"","sources":["../../src/core/module-lifecycle.ts"],"names":[],"mappings":";;;AAAA,gEAA4D;AAC5D,oCAA6D;AAE7D,MAAa,eAAe;IAKN;IAJZ,SAAS,CAAmB;IAC5B,MAAM,GAAgB,mBAAW,CAAC,MAAM,CAAC;IACzC,
|
|
1
|
+
{"version":3,"file":"module-lifecycle.js","sourceRoot":"","sources":["../../src/core/module-lifecycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,9 +27,13 @@ export declare class ModuleManager {
|
|
|
27
27
|
private readonly moduleTracker;
|
|
28
28
|
private readonly resolverDetour;
|
|
29
29
|
private readonly resolvedAssociations;
|
|
30
|
+
private readonly resolvedConnections;
|
|
31
|
+
private readonly selectedProviders;
|
|
30
32
|
private readonly staticModules;
|
|
31
33
|
private readonly loaded;
|
|
32
|
-
private readonly
|
|
34
|
+
private readonly stubbedInterfacePackages;
|
|
35
|
+
private readonly interfacePackagePlans;
|
|
36
|
+
private pendingCleanup;
|
|
33
37
|
private startupOrder;
|
|
34
38
|
constructor(deps?: ModuleManagerDeps);
|
|
35
39
|
addStaticModule(entry: {
|
|
@@ -51,7 +55,7 @@ export declare class ModuleManager {
|
|
|
51
55
|
refreshAssociations(): void;
|
|
52
56
|
hasResolvedInterface(moduleId: string, interfaceName: string): boolean;
|
|
53
57
|
registerStubbedInterfaces(stubbed: UnresolvedInterface[]): void;
|
|
54
|
-
private
|
|
58
|
+
private registerStubbedInterfacePackage;
|
|
55
59
|
private applyInterfaceStubs;
|
|
56
60
|
private collectImplementedInterfaces;
|
|
57
61
|
constructAll(): Promise<void>;
|
|
@@ -60,13 +64,26 @@ export declare class ModuleManager {
|
|
|
60
64
|
startModules(modules: ManagedModule[]): Promise<void>;
|
|
61
65
|
stopAll(): Promise<void>;
|
|
62
66
|
destroyAll(): Promise<void>;
|
|
67
|
+
private constructModule;
|
|
68
|
+
private getReverseLifecycleModules;
|
|
69
|
+
private clearManagedState;
|
|
70
|
+
private releaseRuntimeState;
|
|
63
71
|
private trackModuleStart;
|
|
64
72
|
private rebuildAssociations;
|
|
65
73
|
private collectInterfaceSources;
|
|
66
74
|
private resolveInterfacePackagePaths;
|
|
75
|
+
private resolveImplementedPackage;
|
|
76
|
+
private collectInterfacePackageConsumers;
|
|
77
|
+
private registerInterfacePackage;
|
|
78
|
+
private validateInterfacePackages;
|
|
79
|
+
private findVersionErrors;
|
|
80
|
+
private findPreloadedCopyErrors;
|
|
67
81
|
private buildModuleAssociations;
|
|
68
82
|
private addDefaultAssociations;
|
|
69
83
|
private applyImportOverrides;
|
|
84
|
+
private addInterfaceSource;
|
|
85
|
+
private validateImportOverrides;
|
|
86
|
+
private configureModuleContexts;
|
|
70
87
|
private isPathWithin;
|
|
71
88
|
}
|
|
72
89
|
export {};
|