@antelopejs/core 1.13.4 → 1.14.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 (101) hide show
  1. package/dist/core/build/build-artifact.d.ts +2 -1
  2. package/dist/core/build/build-artifact.js.map +1 -1
  3. package/dist/core/cli/command.d.ts +2 -1
  4. package/dist/core/cli/command.js +36 -22
  5. package/dist/core/cli/command.js.map +1 -1
  6. package/dist/core/cli/output/interface-conflicts.d.ts +3 -0
  7. package/dist/core/cli/output/interface-conflicts.js +61 -0
  8. package/dist/core/cli/output/interface-conflicts.js.map +1 -0
  9. package/dist/core/cli/output/translations.js +5 -0
  10. package/dist/core/cli/output/translations.js.map +1 -1
  11. package/dist/core/config/config-parser.d.ts +1 -0
  12. package/dist/core/config/config-parser.js +11 -0
  13. package/dist/core/config/config-parser.js.map +1 -1
  14. package/dist/core/config/config-paths.d.ts +1 -0
  15. package/dist/core/config/config-paths.js +3 -2
  16. package/dist/core/config/config-paths.js.map +1 -1
  17. package/dist/core/embedded/prepare-embedded.js +5 -4
  18. package/dist/core/embedded/prepare-embedded.js.map +1 -1
  19. package/dist/core/embedded/types.d.ts +1 -0
  20. package/dist/core/interface-registry.d.ts +2 -2
  21. package/dist/core/interface-registry.js +19 -12
  22. package/dist/core/interface-registry.js.map +1 -1
  23. package/dist/core/module-isolation.d.ts +18 -0
  24. package/dist/core/module-isolation.js +107 -0
  25. package/dist/core/module-isolation.js.map +1 -0
  26. package/dist/core/module-manager.d.ts +21 -3
  27. package/dist/core/module-manager.js +217 -39
  28. package/dist/core/module-manager.js.map +1 -1
  29. package/dist/core/module-manifest.d.ts +1 -0
  30. package/dist/core/module-manifest.js +34 -0
  31. package/dist/core/module-manifest.js.map +1 -1
  32. package/dist/core/module-registry.d.ts +1 -0
  33. package/dist/core/module-registry.js +3 -0
  34. package/dist/core/module-registry.js.map +1 -1
  35. package/dist/core/module.d.ts +1 -3
  36. package/dist/core/module.js +0 -18
  37. package/dist/core/module.js.map +1 -1
  38. package/dist/core/resolution/binding-diagnostics.d.ts +30 -0
  39. package/dist/core/resolution/binding-diagnostics.js +65 -0
  40. package/dist/core/resolution/binding-diagnostics.js.map +1 -0
  41. package/dist/core/resolution/binding-graph-order.d.ts +3 -0
  42. package/dist/core/resolution/binding-graph-order.js +49 -0
  43. package/dist/core/resolution/binding-graph-order.js.map +1 -0
  44. package/dist/core/resolution/binding-graph-types.d.ts +46 -0
  45. package/dist/core/resolution/binding-graph-types.js +3 -0
  46. package/dist/core/resolution/binding-graph-types.js.map +1 -0
  47. package/dist/core/resolution/binding-graph-warnings.d.ts +11 -0
  48. package/dist/core/resolution/binding-graph-warnings.js +73 -0
  49. package/dist/core/resolution/binding-graph-warnings.js.map +1 -0
  50. package/dist/core/resolution/binding-graph.d.ts +2 -0
  51. package/dist/core/resolution/binding-graph.js +375 -0
  52. package/dist/core/resolution/binding-graph.js.map +1 -0
  53. package/dist/core/resolution/binding-providers.d.ts +11 -0
  54. package/dist/core/resolution/binding-providers.js +47 -0
  55. package/dist/core/resolution/binding-providers.js.map +1 -0
  56. package/dist/core/resolution/instance-copies.d.ts +5 -0
  57. package/dist/core/resolution/instance-copies.js +109 -0
  58. package/dist/core/resolution/instance-copies.js.map +1 -0
  59. package/dist/core/resolution/interface-dependencies.d.ts +1 -0
  60. package/dist/core/resolution/interface-dependencies.js +27 -0
  61. package/dist/core/resolution/interface-dependencies.js.map +1 -0
  62. package/dist/core/resolution/interface-instances.d.ts +28 -0
  63. package/dist/core/resolution/interface-instances.js +188 -0
  64. package/dist/core/resolution/interface-instances.js.map +1 -0
  65. package/dist/core/resolution/interface-resolution-error.d.ts +24 -0
  66. package/dist/core/resolution/interface-resolution-error.js +30 -0
  67. package/dist/core/resolution/interface-resolution-error.js.map +1 -0
  68. package/dist/core/resolution/resolver-detour.js +14 -22
  69. package/dist/core/resolution/resolver-detour.js.map +1 -1
  70. package/dist/core/resolution/resolver.d.ts +30 -72
  71. package/dist/core/resolution/resolver.js +201 -659
  72. package/dist/core/resolution/resolver.js.map +1 -1
  73. package/dist/core/runtime/build-runtime.d.ts +1 -1
  74. package/dist/core/runtime/build-runtime.js +9 -1
  75. package/dist/core/runtime/build-runtime.js.map +1 -1
  76. package/dist/core/runtime/dev-server-registry.js +1 -1
  77. package/dist/core/runtime/dev-server-registry.js.map +1 -1
  78. package/dist/core/runtime/launch-sequence.js +68 -24
  79. package/dist/core/runtime/launch-sequence.js.map +1 -1
  80. package/dist/core/runtime/launch-steps.d.ts +5 -0
  81. package/dist/core/runtime/launch-steps.js +26 -0
  82. package/dist/core/runtime/launch-steps.js.map +1 -0
  83. package/dist/core/runtime/module-loading.d.ts +1 -0
  84. package/dist/core/runtime/module-loading.js +18 -5
  85. package/dist/core/runtime/module-loading.js.map +1 -1
  86. package/dist/core/runtime/project-launch.js +33 -12
  87. package/dist/core/runtime/project-launch.js.map +1 -1
  88. package/dist/core/runtime/runtime-bootstrap.js +0 -3
  89. package/dist/core/runtime/runtime-bootstrap.js.map +1 -1
  90. package/dist/core/runtime/runtime-policy.js.map +1 -1
  91. package/dist/core/runtime/runtime-types.d.ts +3 -2
  92. package/dist/core/shutdown/shutdown-manager.d.ts +2 -0
  93. package/dist/core/shutdown/shutdown-manager.js +11 -2
  94. package/dist/core/shutdown/shutdown-manager.js.map +1 -1
  95. package/dist/core/version-checker.d.ts +2 -2
  96. package/dist/core/version-checker.js +49 -31
  97. package/dist/core/version-checker.js.map +1 -1
  98. package/dist/core/watch/file-watcher.d.ts +7 -0
  99. package/dist/core/watch/file-watcher.js +70 -14
  100. package/dist/core/watch/file-watcher.js.map +1 -1
  101. package/package.json +2 -2
@@ -0,0 +1,109 @@
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.createInstanceCopy = createInstanceCopy;
7
+ exports.removeInstanceCopy = removeInstanceCopy;
8
+ exports.nextInstanceCopyPath = nextInstanceCopyPath;
9
+ exports.pruneStaleInstanceCopies = pruneStaleInstanceCopies;
10
+ const node_path_1 = __importDefault(require("node:path"));
11
+ const node_fs_1 = require("node:fs");
12
+ const package_resolution_1 = require("./package-resolution");
13
+ let nextGeneration = 1;
14
+ const GENERATION_PATTERN = /^(\d+)-\d+$/;
15
+ function realDirectory(folder) {
16
+ try {
17
+ return node_fs_1.realpathSync.native(folder);
18
+ }
19
+ catch {
20
+ return undefined;
21
+ }
22
+ }
23
+ function placeFile(source, destination, link) {
24
+ try {
25
+ link(source, destination);
26
+ }
27
+ catch {
28
+ (0, node_fs_1.copyFileSync)(source, destination);
29
+ }
30
+ }
31
+ function copyDirectory(source, destination, context) {
32
+ const real = realDirectory(source);
33
+ if (!real || context.ancestors.has(real)) {
34
+ return;
35
+ }
36
+ context.ancestors.add(real);
37
+ (0, node_fs_1.mkdirSync)(destination, { recursive: true });
38
+ for (const entry of (0, node_fs_1.readdirSync)(source)) {
39
+ copyEntry(node_path_1.default.join(source, entry), node_path_1.default.join(destination, entry), context);
40
+ }
41
+ context.ancestors.delete(real);
42
+ }
43
+ function entryKind(source) {
44
+ try {
45
+ const stats = (0, node_fs_1.statSync)(source);
46
+ if (stats.isDirectory()) {
47
+ return "directory";
48
+ }
49
+ return stats.isFile() ? "file" : "other";
50
+ }
51
+ catch {
52
+ return undefined;
53
+ }
54
+ }
55
+ function copyEntry(source, destination, context) {
56
+ const kind = entryKind(source);
57
+ if (kind === "directory") {
58
+ copyDirectory(source, destination, context);
59
+ return;
60
+ }
61
+ if (kind === "file") {
62
+ placeFile(source, destination, context.link);
63
+ }
64
+ }
65
+ function createInstanceCopy(source, destination, link = node_fs_1.linkSync) {
66
+ (0, node_fs_1.rmSync)(destination, { recursive: true, force: true });
67
+ copyDirectory(source, destination, { link, ancestors: new Set() });
68
+ (0, package_resolution_1.clearPathResolutionCache)();
69
+ }
70
+ function removeInstanceCopy(destination) {
71
+ (0, node_fs_1.rmSync)(destination, { recursive: true, force: true });
72
+ (0, package_resolution_1.clearPathResolutionCache)();
73
+ }
74
+ function nextInstanceCopyPath(base) {
75
+ const generation = nextGeneration;
76
+ nextGeneration += 1;
77
+ return node_path_1.default.join(base, `${process.pid}-${generation}`);
78
+ }
79
+ function isRunning(pid) {
80
+ if (pid === process.pid) {
81
+ return true;
82
+ }
83
+ try {
84
+ process.kill(pid, 0);
85
+ return true;
86
+ }
87
+ catch (error) {
88
+ return error.code === "EPERM";
89
+ }
90
+ }
91
+ function pruneGenerations(base) {
92
+ for (const entry of (0, node_fs_1.readdirSync)(base)) {
93
+ const owner = GENERATION_PATTERN.exec(entry)?.[1];
94
+ if (owner && !isRunning(Number(owner))) {
95
+ (0, node_fs_1.rmSync)(node_path_1.default.join(base, entry), { recursive: true, force: true });
96
+ }
97
+ }
98
+ }
99
+ function pruneStaleInstanceCopies(root) {
100
+ if (!(0, node_fs_1.existsSync)(root)) {
101
+ return;
102
+ }
103
+ for (const entry of (0, node_fs_1.readdirSync)(root, { withFileTypes: true })) {
104
+ if (entry.isDirectory()) {
105
+ pruneGenerations(node_path_1.default.join(root, entry.name));
106
+ }
107
+ }
108
+ }
109
+ //# sourceMappingURL=instance-copies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instance-copies.js","sourceRoot":"","sources":["../../../src/core/resolution/instance-copies.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function readInterfaceDependencies(packageName: string, packageRoot: string, interfacePackages: ReadonlySet<string>): string[];
@@ -0,0 +1,27 @@
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.readInterfaceDependencies = readInterfaceDependencies;
7
+ const node_path_1 = __importDefault(require("node:path"));
8
+ const node_fs_1 = require("node:fs");
9
+ const DEPENDENCY_FIELDS = [
10
+ "dependencies",
11
+ "peerDependencies",
12
+ "optionalDependencies",
13
+ ];
14
+ function readManifest(packageRoot) {
15
+ try {
16
+ return JSON.parse((0, node_fs_1.readFileSync)(node_path_1.default.join(packageRoot, "package.json"), "utf8"));
17
+ }
18
+ catch {
19
+ return {};
20
+ }
21
+ }
22
+ function readInterfaceDependencies(packageName, packageRoot, interfacePackages) {
23
+ const manifest = readManifest(packageRoot);
24
+ const declared = DEPENDENCY_FIELDS.flatMap((field) => Object.keys(manifest[field] ?? {}));
25
+ return [...new Set(declared)].filter((dependency) => dependency !== packageName && interfacePackages.has(dependency));
26
+ }
27
+ //# sourceMappingURL=interface-dependencies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface-dependencies.js","sourceRoot":"","sources":["../../../src/core/resolution/interface-dependencies.ts"],"names":[],"mappings":";;;;;AA6BA,8DAaC;AA1CD,0DAA6B;AAC7B,qCAAuC;AAEvC,MAAM,iBAAiB,GAAG;IACxB,cAAc;IACd,kBAAkB;IAClB,sBAAsB;CACd,CAAC;AAOX,SAAS,YAAY,CAAC,WAAmB;IACvC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CACf,IAAA,sBAAY,EAAC,mBAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CACvC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAOD,SAAgB,yBAAyB,CACvC,WAAmB,EACnB,WAAmB,EACnB,iBAAsC;IAEtC,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CACnD,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CACnC,CAAC;IACF,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAClC,CAAC,UAAU,EAAE,EAAE,CACb,UAAU,KAAK,WAAW,IAAI,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,CAClE,CAAC;AACJ,CAAC"}
@@ -0,0 +1,28 @@
1
+ import type { BindingGraph, InstanceDescriptor } from "./binding-graph-types";
2
+ export interface CanonicalPackage {
3
+ root: string;
4
+ realRoot: string;
5
+ }
6
+ export declare class InterfaceInstances {
7
+ private readonly onRootsChanged;
8
+ private readonly onDispose;
9
+ private descriptors;
10
+ private keysByPackage;
11
+ private canonical;
12
+ private fixedRoots;
13
+ private readonly canonicalOwners;
14
+ private readonly copies;
15
+ private readonly prunedAnchors;
16
+ constructor(onRootsChanged: () => void, onDispose?: (key: string) => void);
17
+ update(graph: BindingGraph, canonical: ReadonlyMap<string, CanonicalPackage>, fixedRoots?: ReadonlyMap<string, string>): void;
18
+ private assignCanonicalOwners;
19
+ describe(key: string): InstanceDescriptor | undefined;
20
+ keysOf(packageName: string): readonly string[];
21
+ isCanonical(key: string): boolean;
22
+ rootOf(key: string): string | undefined;
23
+ locate(key: string, canonicalFile: string): string | undefined;
24
+ roots(): Map<string, string>;
25
+ private releaseUnreached;
26
+ release(): void;
27
+ private createCopy;
28
+ }
@@ -0,0 +1,188 @@
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.InterfaceInstances = void 0;
7
+ const node_path_1 = __importDefault(require("node:path"));
8
+ const node_crypto_1 = require("node:crypto");
9
+ const instance_copies_1 = require("./instance-copies");
10
+ const package_resolution_1 = require("./package-resolution");
11
+ const NODE_MODULES = "node_modules";
12
+ const INSTANCES_FOLDER = ".ajs-instances";
13
+ const KEY_HASH_LENGTH = 16;
14
+ function evictFolder(folder) {
15
+ const isInFolder = (0, package_resolution_1.createPathWithinMatcher)(folder);
16
+ for (const filePath of Object.keys(require.cache)) {
17
+ if (isInFolder(filePath)) {
18
+ delete require.cache[filePath];
19
+ }
20
+ }
21
+ }
22
+ function hashKey(key) {
23
+ return (0, node_crypto_1.createHash)("sha256")
24
+ .update(key)
25
+ .digest("hex")
26
+ .slice(0, KEY_HASH_LENGTH);
27
+ }
28
+ function nearestNodeModules(folder) {
29
+ let current = folder;
30
+ while (node_path_1.default.dirname(current) !== current) {
31
+ if (node_path_1.default.basename(current) === NODE_MODULES) {
32
+ return current;
33
+ }
34
+ current = node_path_1.default.dirname(current);
35
+ }
36
+ return undefined;
37
+ }
38
+ function relocate(filePath, from, to) {
39
+ const relative = node_path_1.default.relative(from, filePath);
40
+ if (relative.startsWith("..") || node_path_1.default.isAbsolute(relative)) {
41
+ return undefined;
42
+ }
43
+ return node_path_1.default.join(to, relative);
44
+ }
45
+ class InterfaceInstances {
46
+ onRootsChanged;
47
+ onDispose;
48
+ descriptors = new Map();
49
+ keysByPackage = new Map();
50
+ canonical = new Map();
51
+ fixedRoots = new Map();
52
+ canonicalOwners = new Map();
53
+ copies = new Map();
54
+ prunedAnchors = new Set();
55
+ constructor(onRootsChanged, onDispose = () => undefined) {
56
+ this.onRootsChanged = onRootsChanged;
57
+ this.onDispose = onDispose;
58
+ }
59
+ update(graph, canonical, fixedRoots = new Map()) {
60
+ const previous = this.descriptors;
61
+ const previousFixedRoots = this.fixedRoots;
62
+ const previousCanonical = this.canonical;
63
+ this.canonical = new Map(canonical);
64
+ this.fixedRoots = new Map(fixedRoots);
65
+ this.descriptors = new Map([...graph.instances].filter(([, { interfaceName }]) => canonical.has(interfaceName)));
66
+ this.releaseUnreached(previous, previousFixedRoots, previousCanonical);
67
+ this.keysByPackage = new Map();
68
+ for (const [key, { interfaceName }] of this.descriptors) {
69
+ const keys = this.keysByPackage.get(interfaceName) ?? [];
70
+ keys.push(key);
71
+ this.keysByPackage.set(interfaceName, keys.sort());
72
+ }
73
+ this.assignCanonicalOwners();
74
+ this.onRootsChanged();
75
+ }
76
+ assignCanonicalOwners() {
77
+ for (const [packageName, keys] of this.keysByPackage) {
78
+ const owner = this.canonicalOwners.get(packageName);
79
+ if (owner && keys.includes(owner)) {
80
+ continue;
81
+ }
82
+ const free = keys.find((key) => !this.copies.has(key));
83
+ if (free) {
84
+ this.canonicalOwners.set(packageName, free);
85
+ }
86
+ else {
87
+ this.canonicalOwners.delete(packageName);
88
+ }
89
+ }
90
+ }
91
+ describe(key) {
92
+ return this.descriptors.get(key);
93
+ }
94
+ keysOf(packageName) {
95
+ return this.keysByPackage.get(packageName) ?? [];
96
+ }
97
+ isCanonical(key) {
98
+ const descriptor = this.descriptors.get(key);
99
+ return (descriptor !== undefined &&
100
+ this.canonicalOwners.get(descriptor.interfaceName) === key);
101
+ }
102
+ rootOf(key) {
103
+ const descriptor = this.descriptors.get(key);
104
+ const canonical = descriptor && this.canonical.get(descriptor.interfaceName);
105
+ if (!descriptor || !canonical) {
106
+ return undefined;
107
+ }
108
+ const fixed = this.fixedRoots.get(key);
109
+ if (fixed) {
110
+ return fixed;
111
+ }
112
+ if (this.isCanonical(key)) {
113
+ return canonical.realRoot;
114
+ }
115
+ return (this.copies.get(key)?.root ?? this.createCopy(key, descriptor, canonical));
116
+ }
117
+ locate(key, canonicalFile) {
118
+ const descriptor = this.descriptors.get(key);
119
+ const canonical = descriptor && this.canonical.get(descriptor.interfaceName);
120
+ const root = this.rootOf(key);
121
+ if (!canonical || !root) {
122
+ return undefined;
123
+ }
124
+ return (relocate(canonicalFile, canonical.realRoot, root) ??
125
+ relocate(canonicalFile, canonical.root, root));
126
+ }
127
+ roots() {
128
+ const roots = new Map();
129
+ for (const [key, { interfaceName }] of this.descriptors) {
130
+ const root = this.fixedRoots.get(key) ??
131
+ (this.isCanonical(key)
132
+ ? this.canonical.get(interfaceName)?.realRoot
133
+ : this.copies.get(key)?.root);
134
+ if (root) {
135
+ roots.set(key, root);
136
+ }
137
+ }
138
+ return roots;
139
+ }
140
+ releaseUnreached(previous, previousFixedRoots, previousCanonical) {
141
+ for (const [key, { interfaceName }] of previous) {
142
+ if (this.descriptors.has(key)) {
143
+ continue;
144
+ }
145
+ const copy = this.copies.get(key);
146
+ if (copy) {
147
+ evictFolder(copy.generation);
148
+ (0, instance_copies_1.removeInstanceCopy)(copy.generation);
149
+ this.copies.delete(key);
150
+ }
151
+ else if (this.canonicalOwners.get(interfaceName) === key) {
152
+ this.canonicalOwners.delete(interfaceName);
153
+ const root = previousCanonical.get(interfaceName)?.realRoot;
154
+ if (root && !previousFixedRoots.has(key)) {
155
+ evictFolder(root);
156
+ }
157
+ }
158
+ this.onDispose(key);
159
+ }
160
+ }
161
+ release() {
162
+ for (const { generation } of this.copies.values()) {
163
+ evictFolder(generation);
164
+ (0, instance_copies_1.removeInstanceCopy)(generation);
165
+ }
166
+ this.copies.clear();
167
+ this.canonicalOwners.clear();
168
+ this.onRootsChanged();
169
+ }
170
+ createCopy(key, descriptor, canonical) {
171
+ const anchor = nearestNodeModules(canonical.realRoot) ??
172
+ node_path_1.default.dirname(canonical.realRoot);
173
+ const instancesFolder = node_path_1.default.join(anchor, INSTANCES_FOLDER);
174
+ if (!this.prunedAnchors.has(instancesFolder)) {
175
+ (0, instance_copies_1.pruneStaleInstanceCopies)(instancesFolder);
176
+ this.prunedAnchors.add(instancesFolder);
177
+ }
178
+ const base = node_path_1.default.join(instancesFolder, hashKey(key));
179
+ const generation = (0, instance_copies_1.nextInstanceCopyPath)(base);
180
+ const root = node_path_1.default.join(generation, NODE_MODULES, ...descriptor.interfaceName.split("/"));
181
+ (0, instance_copies_1.createInstanceCopy)(canonical.realRoot, root);
182
+ this.copies.set(key, { root, generation });
183
+ this.onRootsChanged();
184
+ return root;
185
+ }
186
+ }
187
+ exports.InterfaceInstances = InterfaceInstances;
188
+ //# sourceMappingURL=interface-instances.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface-instances.js","sourceRoot":"","sources":["../../../src/core/resolution/interface-instances.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { ResolvedPackage } from "./package-resolution";
2
+ export type InterfacePackageCopy = Pick<ResolvedPackage, "version" | "root">;
3
+ export interface InterfaceRangeConflict {
4
+ moduleId: string;
5
+ packageName: string;
6
+ range: string;
7
+ canonical: InterfacePackageCopy;
8
+ consumerCopy?: InterfacePackageCopy;
9
+ }
10
+ export interface PreloadedInterfaceCopy {
11
+ moduleId: string;
12
+ packageName: string;
13
+ copy: InterfacePackageCopy;
14
+ canonical: InterfacePackageCopy;
15
+ loadedFile: string;
16
+ }
17
+ export interface InterfaceResolutionConflicts {
18
+ rangeConflicts: InterfaceRangeConflict[];
19
+ preloadedCopies: PreloadedInterfaceCopy[];
20
+ }
21
+ export declare class InterfaceResolutionError extends Error {
22
+ readonly conflicts: InterfaceResolutionConflicts;
23
+ constructor(conflicts: InterfaceResolutionConflicts);
24
+ }
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InterfaceResolutionError = void 0;
4
+ const INTERFACE_RESOLUTION_ERROR_NAME = "InterfaceResolutionError";
5
+ const INTERFACE_RESOLUTION_HEADLINE = "Incompatible interface package resolution:";
6
+ const MISSING_CONSUMER_COPY = "not installed from the consumer";
7
+ function describeRangeConflict(conflict) {
8
+ const { canonical, consumerCopy } = conflict;
9
+ const installed = consumerCopy
10
+ ? `${consumerCopy.version} at ${consumerCopy.root}`
11
+ : MISSING_CONSUMER_COPY;
12
+ return ` - ${conflict.moduleId} requires ${conflict.packageName}@${conflict.range}, but the canonical package is ${canonical.version} at ${canonical.root} (consumer copy: ${installed})`;
13
+ }
14
+ function describePreloadedCopy(preloaded) {
15
+ return ` - ${preloaded.packageName}@${preloaded.copy.version} was loaded from ${preloaded.copy.root} before the canonical copy at ${preloaded.canonical.root}; preloaded interface copies cannot be redirected (${preloaded.loadedFile})`;
16
+ }
17
+ class InterfaceResolutionError extends Error {
18
+ conflicts;
19
+ constructor(conflicts) {
20
+ const lines = [
21
+ ...conflicts.rangeConflicts.map(describeRangeConflict),
22
+ ...conflicts.preloadedCopies.map(describePreloadedCopy),
23
+ ];
24
+ super(`${INTERFACE_RESOLUTION_HEADLINE}\n${lines.join("\n")}`);
25
+ this.conflicts = conflicts;
26
+ this.name = INTERFACE_RESOLUTION_ERROR_NAME;
27
+ }
28
+ }
29
+ exports.InterfaceResolutionError = InterfaceResolutionError;
30
+ //# sourceMappingURL=interface-resolution-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface-resolution-error.js","sourceRoot":"","sources":["../../../src/core/resolution/interface-resolution-error.ts"],"names":[],"mappings":";;;AAEA,MAAM,+BAA+B,GAAG,0BAA0B,CAAC;AACnE,MAAM,6BAA6B,GACjC,4CAA4C,CAAC;AAC/C,MAAM,qBAAqB,GAAG,iCAAiC,CAAC;AAiChE,SAAS,qBAAqB,CAAC,QAAgC;IAC7D,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,QAAQ,CAAC;IAC7C,MAAM,SAAS,GAAG,YAAY;QAC5B,CAAC,CAAC,GAAG,YAAY,CAAC,OAAO,OAAO,YAAY,CAAC,IAAI,EAAE;QACnD,CAAC,CAAC,qBAAqB,CAAC;IAC1B,OAAO,OAAO,QAAQ,CAAC,QAAQ,aAAa,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,KAAK,kCAAkC,SAAS,CAAC,OAAO,OAAO,SAAS,CAAC,IAAI,oBAAoB,SAAS,GAAG,CAAC;AAC7L,CAAC;AAED,SAAS,qBAAqB,CAAC,SAAiC;IAC9D,OAAO,OAAO,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,oBAAoB,SAAS,CAAC,IAAI,CAAC,IAAI,iCAAiC,SAAS,CAAC,SAAS,CAAC,IAAI,sDAAsD,SAAS,CAAC,UAAU,GAAG,CAAC;AAC7O,CAAC;AAOD,MAAa,wBAAyB,SAAQ,KAAK;IAC5B;IAArB,YAAqB,SAAuC;QAC1D,MAAM,KAAK,GAAG;YACZ,GAAG,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,qBAAqB,CAAC;YACtD,GAAG,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC,qBAAqB,CAAC;SACxD,CAAC;QACF,KAAK,CAAC,GAAG,6BAA6B,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAL5C,cAAS,GAAT,SAAS,CAA8B;QAM1D,IAAI,CAAC,IAAI,GAAG,+BAA+B,CAAC;IAC9C,CAAC;CACF;AATD,4DASC"}
@@ -66,29 +66,22 @@ class ResolverDetourCoordinator {
66
66
  }
67
67
  load(request, parent, isMain) {
68
68
  const activeResolver = this.findResolver(request, parent);
69
- if (!activeResolver?.requiresPreResolution(request, parent)) {
69
+ const instance = activeResolver?.instanceToLoad(request, parent);
70
+ if (!activeResolver || !instance) {
70
71
  return this.originalLoader?.(request, parent, isMain);
71
72
  }
72
- const result = activeResolver.resolve(request, parent);
73
- if (!result) {
74
- return this.originalLoader?.(request, parent, isMain);
73
+ const resolvedPath = this.resolveWith(activeResolver, request, parent, isMain, undefined);
74
+ const entry = activeResolver.entryToPrime(request, parent, resolvedPath);
75
+ activeResolver.recordInstanceFile(instance, resolvedPath);
76
+ if (entry) {
77
+ activeResolver.recordInstanceFile(instance, entry);
75
78
  }
76
- const resolvedPath = this.resolveResult(activeResolver, result, parent, isMain, undefined);
77
- this.primeInterfaceEntry(activeResolver, result, resolvedPath, parent, isMain);
78
- const isCircularImport = require.cache[resolvedPath]?.loaded === false;
79
- const value = activeResolver.runInInterfaceContext(result, () => this.originalLoader?.(resolvedPath, parent, isMain));
80
- return isCircularImport
81
- ? value
82
- : activeResolver.bindProviderRoutes(result, value);
83
- }
84
- primeInterfaceEntry(resolver, result, resolvedPath, parent, isMain) {
85
- const entryResult = resolver.getInterfaceEntryToPrime(result, resolvedPath);
86
- if (!entryResult) {
87
- return;
88
- }
89
- const entryPath = this.resolveResult(resolver, entryResult, parent, isMain, undefined);
90
- const value = resolver.runInInterfaceContext(entryResult, () => this.originalLoader?.(entryPath, parent, isMain));
91
- resolver.bindProviderRoutes(entryResult, value);
79
+ return activeResolver.runInInstance(instance, () => {
80
+ if (entry) {
81
+ this.originalLoader?.(entry, parent, isMain);
82
+ }
83
+ return this.originalLoader?.(resolvedPath, parent, isMain);
84
+ });
92
85
  }
93
86
  resolve(request, parent, isMain, options) {
94
87
  const activeResolver = this.findResolver(request, parent);
@@ -104,8 +97,7 @@ class ResolverDetourCoordinator {
104
97
  resolveResult(activeResolver, result, parent, isMain, options) {
105
98
  const contextParent = this.createResolutionParent(parent, result.resolveFrom);
106
99
  const resolvedPath = this.originalResolver?.(result.resolvedPath, contextParent, isMain, options);
107
- activeResolver.trackInterfaceFile(result, resolvedPath);
108
- return resolvedPath;
100
+ return activeResolver.locate(result, resolvedPath);
109
101
  }
110
102
  createResolutionParent(parent, resolveFrom) {
111
103
  if (!resolveFrom) {
@@ -1 +1 @@
1
- {"version":3,"file":"resolver-detour.js","sourceRoot":"","sources":["../../../src/core/resolution/resolver-detour.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA6B;AAC7B,8DAAiC;AAkBjC,MAAM,yBAAyB;IACZ,MAAM,GAAoB,EAAE,CAAC;IACtC,gBAAgB,CAAkB;IAClC,iBAAiB,CAAkB;IACnC,cAAc,CAAgB;IAC9B,eAAe,CAAgB;IAEvC,MAAM,CAAC,KAAa,EAAE,QAAkB;QACtC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,CAAC;YACvD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,KAAa;QAClB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;QAC3E,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC9C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAClC,MAAM,YAAY,GACf,qBAAc,CAAC,gBAAgB,KAAK,IAAI,CAAC,iBAAiB,CAAC;QAC9D,MAAM,UAAU,GAAI,qBAAc,CAAC,KAAK,KAAK,IAAI,CAAC,eAAe,CAAC;QAClE,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,YAAY,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7D,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;QACtD,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO;QACT,CAAC;QACD,IAAI,YAAY,EAAE,CAAC;YAChB,qBAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC3D,CAAC;QACD,IAAI,UAAU,EAAE,CAAC;YACd,qBAAc,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC;QAC9C,CAAC;QACD,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IACtD,CAAC;IAEO,eAAe;QACrB,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,OAAO;QACT,CAAC;QACD,IAAI,CAAC,gBAAgB,GAAI,qBAAc,CAAC,gBAAgB,CAAC;QACzD,IAAI,CAAC,cAAc,GAAI,qBAAc,CAAC,KAAK,CAAC;QAC5C,IAAI,CAAC,iBAAiB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,CAC5D,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,eAAe,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CACjD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACpC,qBAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC;QACzD,qBAAc,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC;IAC/C,CAAC;IAEO,mBAAmB;QACzB,IAAK,qBAAc,CAAC,gBAAgB,KAAK,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAChE,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACvE,CAAC;QACD,IAAK,qBAAc,CAAC,KAAK,KAAK,IAAI,CAAC,eAAe,EAAE,CAAC;YACnD,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAEO,IAAI,CAAC,OAAe,EAAE,MAAW,EAAE,MAAe;QACxD,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC1D,IAAI,CAAC,cAAc,EAAE,qBAAqB,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC;YAC5D,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACxD,CAAC;QACD,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACvD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACxD,CAAC;QACD,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CACrC,cAAc,EACd,MAAM,EACN,MAAM,EACN,MAAM,EACN,SAAS,CACV,CAAC;QACF,IAAI,CAAC,mBAAmB,CACtB,cAAc,EACd,MAAM,EACN,YAAY,EACZ,MAAM,EACN,MAAM,CACP,CAAC;QACF,MAAM,gBAAgB,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,MAAM,KAAK,KAAK,CAAC;QACvE,MAAM,KAAK,GAAG,cAAc,CAAC,qBAAqB,CAAC,MAAM,EAAE,GAAG,EAAE,CAC9D,IAAI,CAAC,cAAc,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,CACpD,CAAC;QACF,OAAO,gBAAgB;YACrB,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,cAAc,CAAC,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACvD,CAAC;IAEO,mBAAmB,CACzB,QAAkB,EAClB,MAAqB,EACrB,YAAoB,EACpB,MAAW,EACX,MAAe;QAEf,MAAM,WAAW,GAAG,QAAQ,CAAC,wBAAwB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAC5E,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAClC,QAAQ,EACR,WAAW,EACX,MAAM,EACN,MAAM,EACN,SAAS,CACV,CAAC;QACF,MAAM,KAAK,GAAG,QAAQ,CAAC,qBAAqB,CAAC,WAAW,EAAE,GAAG,EAAE,CAC7D,IAAI,CAAC,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CACjD,CAAC;QACF,QAAQ,CAAC,kBAAkB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC;IAEO,OAAO,CACb,OAAe,EACf,MAAW,EACX,MAAe,EACf,OAAY;QAEZ,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5E,CAAC;IAEO,WAAW,CACjB,cAAoC,EACpC,OAAe,EACf,MAAW,EACX,MAAe,EACf,OAAY;QAEZ,MAAM,MAAM,GAAG,cAAc,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACxD,IAAI,CAAC,cAAc,IAAI,CAAC,MAAM,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAC5B,OAAO,EACP,MAAM,EACN,MAAM,EACN,OAAO,CACE,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7E,CAAC;IAEO,aAAa,CACnB,cAAwB,EACxB,MAAqB,EACrB,MAAW,EACX,MAAe,EACf,OAAY;QAEZ,MAAM,aAAa,GAAG,IAAI,CAAC,sBAAsB,CAC/C,MAAM,EACN,MAAM,CAAC,WAAW,CACnB,CAAC;QACF,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAC1C,MAAM,CAAC,YAAY,EACnB,aAAa,EACb,MAAM,EACN,OAAO,CACE,CAAC;QACZ,cAAc,CAAC,kBAAkB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QACxD,OAAO,YAAY,CAAC;IACtB,CAAC;IAEO,sBAAsB,CAAC,MAAW,EAAE,WAAoB;QAC9D,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,OAAO;YACL,GAAG,MAAM;YACT,QAAQ,EAAE,mBAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC;YACrC,KAAK,EAAG,qBAAc,CAAC,gBAAgB,CAAC,WAAW,CAAC;SACrD,CAAC;IACJ,CAAC;IAEO,YAAY,CAAC,OAAe,EAAE,MAAW;QAC/C,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;YAC7C,IAAI,QAAQ,CAAC,qBAAqB,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC;gBACpD,OAAO,QAAQ,CAAC;YAClB,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC;IACtC,CAAC;IAEO,YAAY;QAClB,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;QAClC,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;QACnC,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;QAChC,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;IACnC,CAAC;IAEO,oBAAoB,CAC1B,YAAqB,EACrB,UAAmB;QAEnB,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACvE,CAAC;QACD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;CACF;AAED,MAAM,WAAW,GAAG,IAAI,yBAAyB,EAAE,CAAC;AAEpD,MAAa,cAAc;IAGL;IAFH,KAAK,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAEnD,YAAoB,QAAkB;QAAlB,aAAQ,GAAR,QAAQ,CAAU;IAAG,CAAC;IAE1C,MAAM;QACJ,OAAO,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvD,CAAC;IAED,MAAM;QACJ,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;CACF;AAZD,wCAYC"}
1
+ {"version":3,"file":"resolver-detour.js","sourceRoot":"","sources":["../../../src/core/resolution/resolver-detour.ts"],"names":[],"mappings":"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"}