@antelopejs/core 1.4.10 → 1.5.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.
Files changed (49) hide show
  1. package/dist/core/cli/terminal-display.d.ts +3 -0
  2. package/dist/core/cli/terminal-display.js +14 -0
  3. package/dist/core/cli/terminal-display.js.map +1 -1
  4. package/dist/core/embedded/host-module.d.ts +4 -0
  5. package/dist/core/embedded/host-module.js +11 -0
  6. package/dist/core/embedded/host-module.js.map +1 -0
  7. package/dist/core/embedded/prepare-embedded.d.ts +6 -0
  8. package/dist/core/embedded/prepare-embedded.js +97 -0
  9. package/dist/core/embedded/prepare-embedded.js.map +1 -0
  10. package/dist/core/embedded/proxy-ownership.d.ts +1 -0
  11. package/dist/core/embedded/proxy-ownership.js +51 -0
  12. package/dist/core/embedded/proxy-ownership.js.map +1 -0
  13. package/dist/core/embedded/runtime.d.ts +23 -0
  14. package/dist/core/embedded/runtime.js +131 -0
  15. package/dist/core/embedded/runtime.js.map +1 -0
  16. package/dist/core/embedded/types.d.ts +20 -0
  17. package/dist/core/embedded/types.js +3 -0
  18. package/dist/core/embedded/types.js.map +1 -0
  19. package/dist/core/module-manager.d.ts +1 -1
  20. package/dist/core/module-manager.js +37 -18
  21. package/dist/core/module-manager.js.map +1 -1
  22. package/dist/core/module.d.ts +2 -0
  23. package/dist/core/module.js +14 -1
  24. package/dist/core/module.js.map +1 -1
  25. package/dist/core/resolution/resolver-detour.js +37 -12
  26. package/dist/core/resolution/resolver-detour.js.map +1 -1
  27. package/dist/core/resolution/resolver.d.ts +51 -31
  28. package/dist/core/resolution/resolver.js +475 -177
  29. package/dist/core/resolution/resolver.js.map +1 -1
  30. package/dist/core/runtime/launch-sequence.d.ts +4 -2
  31. package/dist/core/runtime/launch-sequence.js +31 -10
  32. package/dist/core/runtime/launch-sequence.js.map +1 -1
  33. package/dist/core/runtime/module-loading.d.ts +3 -1
  34. package/dist/core/runtime/module-loading.js +1 -0
  35. package/dist/core/runtime/module-loading.js.map +1 -1
  36. package/dist/core/runtime/project-launch.d.ts +3 -2
  37. package/dist/core/runtime/project-launch.js +9 -5
  38. package/dist/core/runtime/project-launch.js.map +1 -1
  39. package/dist/core/runtime/runtime-policy.d.ts +9 -0
  40. package/dist/core/runtime/runtime-policy.js +20 -0
  41. package/dist/core/runtime/runtime-policy.js.map +1 -0
  42. package/dist/core/runtime/runtime-types.d.ts +2 -0
  43. package/dist/index.d.ts +3 -0
  44. package/dist/index.js +6 -2
  45. package/dist/index.js.map +1 -1
  46. package/package.json +4 -3
  47. package/dist/core/module-context.d.ts +0 -7
  48. package/dist/core/module-context.js +0 -60
  49. package/dist/core/module-context.js.map +0 -1
@@ -1,6 +1,9 @@
1
1
  export declare class TerminalDisplay {
2
2
  private currentSpinner?;
3
3
  private currentSpinnerTexts;
4
+ private silent;
5
+ setSilent(silent: boolean): void;
6
+ isSilent(): boolean;
4
7
  private updateSpinnerText;
5
8
  private destroySpinner;
6
9
  log(message: string): void;
@@ -5,6 +5,17 @@ const cli_ui_1 = require("./cli-ui");
5
5
  class TerminalDisplay {
6
6
  currentSpinner;
7
7
  currentSpinnerTexts = [];
8
+ silent = false;
9
+ setSilent(silent) {
10
+ this.silent = silent;
11
+ if (silent) {
12
+ this.currentSpinnerTexts = [];
13
+ this.destroySpinner();
14
+ }
15
+ }
16
+ isSilent() {
17
+ return this.silent;
18
+ }
8
19
  updateSpinnerText() {
9
20
  if (this.currentSpinnerTexts.length > 0) {
10
21
  const lastText = this.currentSpinnerTexts[this.currentSpinnerTexts.length - 1];
@@ -37,6 +48,9 @@ class TerminalDisplay {
37
48
  }
38
49
  }
39
50
  async startSpinner(text) {
51
+ if (this.silent) {
52
+ return;
53
+ }
40
54
  this.currentSpinnerTexts.push(text);
41
55
  if (!this.currentSpinner) {
42
56
  this.currentSpinner = new cli_ui_1.Spinner(text);
@@ -1 +1 @@
1
- {"version":3,"file":"terminal-display.js","sourceRoot":"","sources":["../../../src/core/cli/terminal-display.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"terminal-display.js","sourceRoot":"","sources":["../../../src/core/cli/terminal-display.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare function construct(): Promise<void>;
2
+ export declare function start(): Promise<void>;
3
+ export declare function stop(): Promise<void>;
4
+ export declare function destroy(): Promise<void>;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.construct = construct;
4
+ exports.start = start;
5
+ exports.stop = stop;
6
+ exports.destroy = destroy;
7
+ async function construct() { }
8
+ async function start() { }
9
+ async function stop() { }
10
+ async function destroy() { }
11
+ //# sourceMappingURL=host-module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-module.js","sourceRoot":"","sources":["../../../src/core/embedded/host-module.ts"],"names":[],"mappings":";;AAAA,8BAAmD;AAEnD,sBAA+C;AAE/C,oBAA8C;AAE9C,0BAAiD;AAN1C,KAAK,UAAU,SAAS,KAAmB,CAAC;AAE5C,KAAK,UAAU,KAAK,KAAmB,CAAC;AAExC,KAAK,UAAU,IAAI,KAAmB,CAAC;AAEvC,KAAK,UAAU,OAAO,KAAmB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { ProjectPreparer } from "../runtime/runtime-types";
2
+ import type { EmbeddedRuntimeOptions } from "./types";
3
+ export declare const HOST_MODULE_ID = "__antelope_host__";
4
+ export declare const HOST_MODULE_VERSION = "0.0.0";
5
+ export declare function getHostModuleFolder(projectFolder: string): string;
6
+ export declare function prepareEmbedded(options: EmbeddedRuntimeOptions, projectFolder: string): ProjectPreparer;
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.HOST_MODULE_VERSION = exports.HOST_MODULE_ID = void 0;
7
+ exports.getHostModuleFolder = getHostModuleFolder;
8
+ exports.prepareEmbedded = prepareEmbedded;
9
+ const node_path_1 = __importDefault(require("node:path"));
10
+ const filesystem_1 = require("../filesystem");
11
+ const module_manifest_1 = require("../module-manifest");
12
+ const package_resolution_1 = require("../resolution/package-resolution");
13
+ const launch_sequence_1 = require("../runtime/launch-sequence");
14
+ const module_loading_1 = require("../runtime/module-loading");
15
+ exports.HOST_MODULE_ID = "__antelope_host__";
16
+ exports.HOST_MODULE_VERSION = "0.0.0";
17
+ const HOST_FOLDER_SEGMENTS = [".antelope", "host"];
18
+ const HOST_MODULE_ENTRY = node_path_1.default.join(__dirname, "host-module");
19
+ const EMBEDDED_CACHE_SEGMENTS = [".antelope", "embedded-cache"];
20
+ const HOST_DEPENDENCY_RANGE = "latest";
21
+ function getHostModuleFolder(projectFolder) {
22
+ return node_path_1.default.join(projectFolder, ...HOST_FOLDER_SEGMENTS);
23
+ }
24
+ function resolveModuleFolder(name, projectFolder) {
25
+ const resolved = (0, package_resolution_1.resolvePackage)(name, projectFolder);
26
+ if (!resolved) {
27
+ throw new Error(`Embedded module '${name}' could not be resolved from '${projectFolder}'. Install it as a dependency of the host application.`);
28
+ }
29
+ return resolved.realRoot;
30
+ }
31
+ function getModuleFolder(name, moduleConfig, projectFolder) {
32
+ if (!moduleConfig.path) {
33
+ return resolveModuleFolder(name, projectFolder);
34
+ }
35
+ return node_path_1.default.resolve(projectFolder, moduleConfig.path);
36
+ }
37
+ function buildEntryConfig(moduleConfig) {
38
+ return {
39
+ config: moduleConfig.config,
40
+ importOverrides: (0, module_loading_1.buildModuleOverrides)(moduleConfig.importOverrides),
41
+ disabledExports: new Set(moduleConfig.disabledExports ?? []),
42
+ };
43
+ }
44
+ function createHostEntry(projectFolder, options) {
45
+ const folder = getHostModuleFolder(projectFolder);
46
+ const source = { type: "local", id: exports.HOST_MODULE_ID };
47
+ const provides = options.provides ?? [];
48
+ const declared = [...new Set([...(options.uses ?? []), ...provides])];
49
+ const dependencies = Object.fromEntries(declared.map((interfacePackage) => [
50
+ interfacePackage,
51
+ HOST_DEPENDENCY_RANGE,
52
+ ]));
53
+ const manifest = module_manifest_1.ModuleManifest.fromBuildEntry({
54
+ folder,
55
+ source,
56
+ name: exports.HOST_MODULE_ID,
57
+ version: exports.HOST_MODULE_VERSION,
58
+ main: HOST_MODULE_ENTRY,
59
+ manifest: {
60
+ name: exports.HOST_MODULE_ID,
61
+ version: exports.HOST_MODULE_VERSION,
62
+ dependencies,
63
+ antelopeJs: { implements: provides },
64
+ },
65
+ implements: provides,
66
+ baseUrl: folder,
67
+ paths: [],
68
+ });
69
+ return { manifest, config: buildEntryConfig({}) };
70
+ }
71
+ async function createEmbeddedEntries(options, projectFolder, fs) {
72
+ const modules = Object.entries(options.modules ?? {});
73
+ const entries = await Promise.all(modules.map(async ([name, moduleConfig]) => {
74
+ const folder = getModuleFolder(name, moduleConfig, projectFolder);
75
+ const source = { type: "local", id: name };
76
+ const manifest = await module_manifest_1.ModuleManifest.create(folder, source, name, fs);
77
+ return { manifest, config: buildEntryConfig(moduleConfig) };
78
+ }));
79
+ return [...entries, createHostEntry(projectFolder, options)];
80
+ }
81
+ function prepareEmbedded(options, projectFolder) {
82
+ return async () => {
83
+ const fs = new filesystem_1.NodeFileSystem();
84
+ return {
85
+ fs,
86
+ dev: false,
87
+ logging: options.logging,
88
+ loadContext: (0, launch_sequence_1.memoizeLoaderContext)(() => (0, module_loading_1.createLoaderContext)({
89
+ projectFolder,
90
+ cacheFolder: node_path_1.default.join(projectFolder, ...EMBEDDED_CACHE_SEGMENTS),
91
+ }, fs)),
92
+ verify: async () => { },
93
+ createEntries: () => createEmbeddedEntries(options, projectFolder, fs),
94
+ };
95
+ };
96
+ }
97
+ //# sourceMappingURL=prepare-embedded.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepare-embedded.js","sourceRoot":"","sources":["../../../src/core/embedded/prepare-embedded.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function captureOwnedProxies(attach: () => void): () => void;
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.captureOwnedProxies = captureOwnedProxies;
4
+ const internal_1 = require("@antelopejs/interface-core/internal");
5
+ const OWNERSHIP_MAPS = [
6
+ (runtime) => runtime.knownAsync,
7
+ (runtime) => runtime.knownRegisters,
8
+ ];
9
+ function getOwnedProxies(owner) {
10
+ return OWNERSHIP_MAPS.map((select) => select(internal_1.internal).get(owner) ?? new Set());
11
+ }
12
+ function releaseProxy(proxy) {
13
+ const cleanup = proxy.cleanup;
14
+ if (typeof cleanup === "function") {
15
+ cleanup.call(proxy);
16
+ return;
17
+ }
18
+ proxy.detach();
19
+ }
20
+ function forgetProxy(owner, proxy) {
21
+ OWNERSHIP_MAPS.forEach((select) => {
22
+ select(internal_1.internal).get(owner)?.delete(proxy);
23
+ });
24
+ }
25
+ function captureOwnedProxies(attach) {
26
+ const owner = (0, internal_1.getModuleContext)()?.owner;
27
+ if (!owner) {
28
+ attach();
29
+ return () => { };
30
+ }
31
+ const before = getOwnedProxies(owner).map((proxies) => new Set(proxies));
32
+ attach();
33
+ const attached = getOwnedProxies(owner).flatMap((proxies, index) => [...proxies].filter((proxy) => !before[index].has(proxy)));
34
+ return () => {
35
+ const errors = [];
36
+ attached.forEach((proxy) => {
37
+ try {
38
+ releaseProxy(proxy);
39
+ }
40
+ catch (error) {
41
+ errors.push(error);
42
+ }
43
+ forgetProxy(owner, proxy);
44
+ });
45
+ attached.length = 0;
46
+ if (errors.length > 0) {
47
+ throw new AggregateError(errors, "Failed to release host registrations");
48
+ }
49
+ };
50
+ }
51
+ //# sourceMappingURL=proxy-ownership.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy-ownership.js","sourceRoot":"","sources":["../../../src/core/embedded/proxy-ownership.ts"],"names":[],"mappings":";;AAmCA,kDA4BC;AA/DD,kEAI6C;AAK7C,MAAM,cAAc,GAAuD;IACzE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU;IAC/B,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,cAAc;CACpC,CAAC;AAEF,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,cAAc,CAAC,GAAG,CACvB,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,mBAAQ,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,GAAG,EAAc,CACjE,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,KAAiB;IACrC,MAAM,OAAO,GAAI,KAAwB,CAAC,OAAO,CAAC;IAClD,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;QAClC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpB,OAAO;IACT,CAAC;IACA,KAA4B,CAAC,MAAM,EAAE,CAAC;AACzC,CAAC;AAED,SAAS,WAAW,CAAC,KAAa,EAAE,KAAiB;IACnD,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QAChC,MAAM,CAAC,mBAAQ,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,mBAAmB,CAAC,MAAkB;IACpD,MAAM,KAAK,GAAG,IAAA,2BAAgB,GAAE,EAAE,KAAK,CAAC;IACxC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,EAAE,CAAC;QACT,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IACzE,MAAM,EAAE,CAAC;IACT,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CACjE,CAAC,GAAG,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAC1D,CAAC;IAEF,OAAO,GAAG,EAAE;QACV,MAAM,MAAM,GAAc,EAAE,CAAC;QAC7B,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACzB,IAAI,CAAC;gBACH,YAAY,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;YACD,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QACpB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,cAAc,CAAC,MAAM,EAAE,sCAAsC,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { ModuleManager } from "../module-manager";
2
+ import type { EmbeddedRuntimeOptions, ProvideHandle } from "./types";
3
+ export declare class AntelopeRuntime {
4
+ private readonly options;
5
+ private started?;
6
+ private pending?;
7
+ private readonly projectFolder;
8
+ private readonly env;
9
+ private readonly policy;
10
+ constructor(options?: EmbeddedRuntimeOptions);
11
+ get manager(): ModuleManager;
12
+ get isRunning(): boolean;
13
+ start(): Promise<void>;
14
+ stop(): Promise<void>;
15
+ private launch;
16
+ private verifyDeclaredInterfaces;
17
+ private warnOnContestedProviders;
18
+ use<T>(request: string): T;
19
+ provide(packageName: string, implementation: unknown): ProvideHandle;
20
+ private hostModule;
21
+ private requireStarted;
22
+ }
23
+ export declare function createRuntime(options?: EmbeddedRuntimeOptions): AntelopeRuntime;
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AntelopeRuntime = void 0;
4
+ exports.createRuntime = createRuntime;
5
+ const interface_core_1 = require("@antelopejs/interface-core");
6
+ const logging_1 = require("@antelopejs/interface-core/logging");
7
+ const config_paths_1 = require("../config/config-paths");
8
+ const project_launch_1 = require("../runtime/project-launch");
9
+ const runtime_policy_1 = require("../runtime/runtime-policy");
10
+ const prepare_embedded_1 = require("./prepare-embedded");
11
+ const proxy_ownership_1 = require("./proxy-ownership");
12
+ const attachImplementation = interface_core_1.ImplementInterface;
13
+ const Logger = new logging_1.Logging.Channel("loader.embedded");
14
+ function findInterfacePackage(started, request) {
15
+ return [...started.manager.resolver.interfacePackages.keys()].find((packageName) => request === packageName || request.startsWith(`${packageName}/`));
16
+ }
17
+ const NOT_STARTED_MESSAGE = "The embedded runtime has not been started. Call start() first.";
18
+ class AntelopeRuntime {
19
+ options;
20
+ started;
21
+ pending;
22
+ projectFolder;
23
+ env;
24
+ policy;
25
+ constructor(options = {}) {
26
+ this.options = options;
27
+ this.projectFolder = options.projectFolder ?? process.cwd();
28
+ this.env = options.env ?? config_paths_1.DEFAULT_ENV;
29
+ this.policy = (0, runtime_policy_1.resolveRuntimePolicy)({ ...(options.logging ? { logging: true } : {}), ...options.policy }, runtime_policy_1.EMBEDDED_RUNTIME_POLICY);
30
+ }
31
+ get manager() {
32
+ return this.requireStarted().manager;
33
+ }
34
+ get isRunning() {
35
+ return this.started !== undefined;
36
+ }
37
+ async start() {
38
+ this.pending ??= this.launch();
39
+ try {
40
+ this.started = await this.pending;
41
+ }
42
+ finally {
43
+ this.pending = undefined;
44
+ }
45
+ }
46
+ async stop() {
47
+ if (this.pending) {
48
+ await this.pending.catch(() => undefined);
49
+ }
50
+ const started = this.started;
51
+ if (!started) {
52
+ return;
53
+ }
54
+ this.started = undefined;
55
+ await started.shutdownManager.shutdown();
56
+ }
57
+ async launch() {
58
+ if (this.started) {
59
+ return this.started;
60
+ }
61
+ const started = await (0, project_launch_1.startProject)((0, prepare_embedded_1.prepareEmbedded)(this.options, this.projectFolder), this.projectFolder, this.env, {}, this.policy);
62
+ try {
63
+ this.verifyDeclaredInterfaces(started);
64
+ this.warnOnContestedProviders(started);
65
+ }
66
+ catch (error) {
67
+ await started.shutdownManager.shutdown();
68
+ throw error;
69
+ }
70
+ return started;
71
+ }
72
+ verifyDeclaredInterfaces(started) {
73
+ const declared = [
74
+ ...(this.options.uses ?? []),
75
+ ...(this.options.provides ?? []),
76
+ ];
77
+ const missing = declared.filter((packageName) => !started.manager.resolver.interfacePackages.has(packageName));
78
+ if (missing.length > 0) {
79
+ throw new Error(`Declared interfaces were not resolved: ${missing.join(", ")}. Check the package names, and that each is installed alongside a module that implements it.`);
80
+ }
81
+ }
82
+ warnOnContestedProviders(started) {
83
+ const provides = this.options.provides ?? [];
84
+ for (const { module, config } of started.manager.getLoadedModules()) {
85
+ if (module.id === prepare_embedded_1.HOST_MODULE_ID) {
86
+ continue;
87
+ }
88
+ const contested = (module.manifest.implements ?? []).filter((packageName) => provides.includes(packageName) &&
89
+ !config.disabledExports?.has(packageName));
90
+ if (contested.length > 0) {
91
+ Logger.Warn(`Host and module '${module.id}' both provide ${contested.join(", ")}; the host is selected by default. Use importOverrides to route consumers to '${module.id}'.`);
92
+ }
93
+ }
94
+ }
95
+ use(request) {
96
+ const started = this.requireStarted();
97
+ if (!findInterfacePackage(started, request)) {
98
+ throw new Error(`Interface '${request}' is not provided by any loaded module. Declare it in 'uses' and load a module that implements it.`);
99
+ }
100
+ return this.hostModule().runInContext(() => require(request));
101
+ }
102
+ provide(packageName, implementation) {
103
+ if (!this.options.provides?.includes(packageName)) {
104
+ throw new Error(`Interface '${packageName}' is not declared in 'provides', so nothing routes to a host implementation of it. Add it to 'provides' before calling provide().`);
105
+ }
106
+ const declaration = this.use(packageName);
107
+ const release = this.hostModule().runInContext(() => (0, proxy_ownership_1.captureOwnedProxies)(() => {
108
+ attachImplementation(declaration, implementation);
109
+ }));
110
+ return { detach: release };
111
+ }
112
+ hostModule() {
113
+ const started = this.requireStarted();
114
+ const module = started.manager.getModule(prepare_embedded_1.HOST_MODULE_ID);
115
+ if (!module) {
116
+ throw new Error(NOT_STARTED_MESSAGE);
117
+ }
118
+ return module;
119
+ }
120
+ requireStarted() {
121
+ if (!this.started) {
122
+ throw new Error(NOT_STARTED_MESSAGE);
123
+ }
124
+ return this.started;
125
+ }
126
+ }
127
+ exports.AntelopeRuntime = AntelopeRuntime;
128
+ function createRuntime(options = {}) {
129
+ return new AntelopeRuntime(options);
130
+ }
131
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/core/embedded/runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { AntelopeLogging, ImportOverride } from "@antelopejs/interface-core/config";
2
+ import type { RuntimePolicy } from "../runtime/runtime-policy";
3
+ export interface EmbeddedModuleConfig {
4
+ path?: string;
5
+ config?: unknown;
6
+ importOverrides?: ImportOverride[];
7
+ disabledExports?: string[];
8
+ }
9
+ export interface EmbeddedRuntimeOptions {
10
+ projectFolder?: string;
11
+ env?: string;
12
+ modules?: Record<string, EmbeddedModuleConfig>;
13
+ uses?: string[];
14
+ provides?: string[];
15
+ logging?: AntelopeLogging;
16
+ policy?: Partial<RuntimePolicy>;
17
+ }
18
+ export interface ProvideHandle {
19
+ detach(): void;
20
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/embedded/types.ts"],"names":[],"mappings":""}
@@ -50,7 +50,7 @@ export declare class ModuleManager {
50
50
  getLoadedModuleEntry(id: string): ManagedModule | undefined;
51
51
  getLoadedModules(): IterableIterator<ManagedModule>;
52
52
  getAllManagedModules(): ManagedModule[];
53
- unrequireModuleFiles(moduleId: string): void;
53
+ unrequireModuleFiles(moduleId: string, shouldPreserveInterfaceGraph?: boolean): void;
54
54
  replaceLoadedModule(id: string, module: Module): ManagedModule | undefined;
55
55
  refreshAssociations(): void;
56
56
  hasResolvedInterface(moduleId: string, interfaceName: string): boolean;
@@ -40,7 +40,6 @@ const semver_1 = require("semver");
40
40
  const types_1 = require("../types");
41
41
  const interface_registry_1 = require("./interface-registry");
42
42
  const module_1 = require("./module");
43
- const module_context_1 = require("./module-context");
44
43
  const module_registry_1 = require("./module-registry");
45
44
  const module_tracker_1 = require("./module-tracker");
46
45
  const package_resolution_1 = require("./resolution/package-resolution");
@@ -120,7 +119,7 @@ class ModuleManager {
120
119
  getAllManagedModules() {
121
120
  return [...this.staticModules, ...this.loaded.values()];
122
121
  }
123
- unrequireModuleFiles(moduleId) {
122
+ unrequireModuleFiles(moduleId, shouldPreserveInterfaceGraph = true) {
124
123
  const entry = this.loaded.get(moduleId);
125
124
  if (!entry) {
126
125
  return;
@@ -140,6 +139,11 @@ class ModuleManager {
140
139
  if (!this.isPathWithin(filePath, moduleFolder)) {
141
140
  continue;
142
141
  }
142
+ if (shouldPreserveInterfaceGraph &&
143
+ filePath !== entry.module.manifest.main &&
144
+ this.resolver.isInterfaceGraphFile(filePath)) {
145
+ continue;
146
+ }
143
147
  let shouldDelete = true;
144
148
  for (const avoided of avoidedFolders) {
145
149
  if (this.isPathWithin(filePath, avoided)) {
@@ -185,7 +189,7 @@ class ModuleManager {
185
189
  canonicalPackage,
186
190
  consumers,
187
191
  });
188
- this.registerInterfacePackage(packageName, canonicalPackage);
192
+ this.registerInterfacePackage(packageName, canonicalPackage, true);
189
193
  (0, stub_interface_runtime_1.logStubInterfaceWarningOnce)(packageName, entries.some((entry) => entry.standalone));
190
194
  }
191
195
  applyInterfaceStubs() {
@@ -195,10 +199,11 @@ class ModuleManager {
195
199
  ]) {
196
200
  if (implemented.has(interfaceName)) {
197
201
  this.stubbedInterfacePackages.delete(interfaceName);
202
+ this.resolver.stubbedInterfacePackages.delete(interfaceName);
198
203
  continue;
199
204
  }
200
205
  if (!this.resolver.interfacePackages.has(interfaceName)) {
201
- this.registerInterfacePackage(interfaceName, resolvedPackage);
206
+ this.registerInterfacePackage(interfaceName, resolvedPackage, true);
202
207
  }
203
208
  try {
204
209
  require(interfaceName);
@@ -299,6 +304,9 @@ class ModuleManager {
299
304
  const modules = this.getReverseLifecycleModules();
300
305
  const results = await runTrackedModuleOperations(modules, (module) => module.destroy());
301
306
  this.pendingCleanup = results.failed.filter(({ module }) => module.state !== types_1.ModuleState.Loaded);
307
+ for (const id of this.loaded.keys()) {
308
+ this.unrequireModuleFiles(id, false);
309
+ }
302
310
  const errors = [...results.errors, ...this.clearManagedState()];
303
311
  if (errors.length > 0) {
304
312
  throw new AggregateError(errors, "Failed to destroy modules");
@@ -344,6 +352,7 @@ class ModuleManager {
344
352
  this.resolver.interfacePackages.clear();
345
353
  this.resolver.interfacePackageEntries.clear();
346
354
  this.resolver.interfacePackageResolveFrom.clear();
355
+ this.resolver.lifecycleInterfacePackages.clear();
347
356
  this.interfacePackagePlans.clear();
348
357
  this.startupOrder = [];
349
358
  return this.releaseRuntimeState();
@@ -351,6 +360,7 @@ class ModuleManager {
351
360
  releaseRuntimeState() {
352
361
  const errors = [];
353
362
  this.stubbedInterfacePackages.clear();
363
+ this.resolver.stubbedInterfacePackages.clear();
354
364
  (0, stub_interface_runtime_1.clearStubInterfaceWarnings)();
355
365
  this.moduleTracker.clear();
356
366
  this.interfaceRegistry.clear();
@@ -376,6 +386,8 @@ class ModuleManager {
376
386
  this.resolver.interfacePackages.clear();
377
387
  this.resolver.interfacePackageEntries.clear();
378
388
  this.resolver.interfacePackageResolveFrom.clear();
389
+ this.resolver.lifecycleInterfacePackages.clear();
390
+ this.resolver.stubbedInterfacePackages.clear();
379
391
  this.interfacePackagePlans.clear();
380
392
  this.resolvedAssociations.clear();
381
393
  this.resolvedConnections.clear();
@@ -422,7 +434,7 @@ class ModuleManager {
422
434
  canonicalPackage,
423
435
  consumers: this.collectInterfacePackageConsumers(ifacePkg),
424
436
  });
425
- this.registerInterfacePackage(ifacePkg, canonicalPackage);
437
+ this.registerInterfacePackage(ifacePkg, canonicalPackage, false);
426
438
  }
427
439
  for (const [packageName, canonicalPackage] of this
428
440
  .stubbedInterfacePackages) {
@@ -433,7 +445,7 @@ class ModuleManager {
433
445
  canonicalPackage,
434
446
  consumers: this.collectInterfacePackageConsumers(packageName),
435
447
  });
436
- this.registerInterfacePackage(packageName, canonicalPackage);
448
+ this.registerInterfacePackage(packageName, canonicalPackage, true);
437
449
  }
438
450
  }
439
451
  resolveImplementedPackage(packageName, module) {
@@ -444,7 +456,10 @@ class ModuleManager {
444
456
  if (module.manifest.manifest.name !== packageName) {
445
457
  return undefined;
446
458
  }
447
- return (0, package_resolution_1.resolvePackageAtRoot)(packageName, module.manifest.folder, module.manifest.version);
459
+ return {
460
+ ...(0, package_resolution_1.resolvePackageAtRoot)(packageName, module.manifest.folder, module.manifest.version),
461
+ antelopeJs: module.manifest.manifest.antelopeJs,
462
+ };
448
463
  }
449
464
  collectInterfacePackageConsumers(packageName) {
450
465
  const consumers = [];
@@ -463,10 +478,23 @@ class ModuleManager {
463
478
  }
464
479
  return consumers;
465
480
  }
466
- registerInterfacePackage(packageName, resolvedPackage) {
481
+ registerInterfacePackage(packageName, resolvedPackage, isStubbed = false) {
467
482
  this.resolver.interfacePackages.set(packageName, resolvedPackage.root);
468
483
  this.resolver.interfacePackageEntries.set(packageName, resolvedPackage.entry);
469
484
  this.resolver.interfacePackageResolveFrom.set(packageName, resolvedPackage.resolveFrom);
485
+ if (isStubbed) {
486
+ this.resolver.stubbedInterfacePackages.add(packageName);
487
+ }
488
+ else {
489
+ this.resolver.stubbedInterfacePackages.delete(packageName);
490
+ }
491
+ const implementations = resolvedPackage.antelopeJs?.implements;
492
+ if (Array.isArray(implementations) &&
493
+ implementations.includes(packageName)) {
494
+ this.resolver.lifecycleInterfacePackages.add(packageName);
495
+ return;
496
+ }
497
+ this.resolver.lifecycleInterfacePackages.delete(packageName);
470
498
  }
471
499
  validateInterfacePackages() {
472
500
  const errors = [...this.interfacePackagePlans].flatMap(([name, plan]) => [
@@ -570,17 +598,8 @@ class ModuleManager {
570
598
  }
571
599
  configureModuleContexts() {
572
600
  for (const { module, config } of this.getAllManagedModules()) {
573
- const selected = this.selectedProviders.get(module.id) ?? new Map();
574
- const connections = this.resolvedConnections.get(module.id) ??
575
- new Map();
576
- const routes = [...selected].map(([interfaceName, provider]) => ({
577
- interfaceName,
578
- packageEntry: this.resolver.interfacePackageEntries.get(interfaceName),
579
- provider,
580
- providerCount: new Set(connections.get(interfaceName)?.map(({ module }) => module)).size,
581
- }));
582
601
  const isProvider = (module.manifest.implements ?? []).some((interfaceName) => !config.disabledExports?.has(interfaceName));
583
- module.setProviderRoutes((0, module_context_1.buildProviderRoutes)(module.id, routes), isProvider);
602
+ module.setProviderRoutes(this.resolver.buildProviderRoutes(module.id), isProvider);
584
603
  }
585
604
  }
586
605
  isPathWithin(filePath, dirPath) {