@antelopejs/interface-core 0.0.10 → 0.0.11

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/index.d.ts CHANGED
@@ -1,7 +1,9 @@
1
1
  import "reflect-metadata";
2
2
  import type { Class } from "./decorators";
3
+ import { type InterfaceConnection } from "./internal";
3
4
  import { AsyncProxy, type EventProxy, type RegisteringProxy } from "./proxies";
4
5
  export * from "./errors";
6
+ export type { InterfaceConnection } from "./internal";
5
7
  export { AsyncProxy, EventProxy, GetInterfaceProxyIdentity, GetResponsibleModule, IsInterfaceProxy, RegisteringProxy, RunWithResponsibleModule, } from "./proxies";
6
8
  /**
7
9
  * Gets metadata for a target object using the specified metadata class.
@@ -56,10 +58,6 @@ export declare function ImplementInterface<T extends Record<string, unknown>, T2
56
58
  declaration: Awaited<T>;
57
59
  implementation: T2;
58
60
  }>;
59
- interface InterfaceConnection {
60
- id?: string;
61
- path: string;
62
- }
63
61
  /**
64
62
  * Gets all instances of a specific interface across the system.
65
63
  *
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,30 @@
1
1
  import { AsyncLocalStorage } from "node:async_hooks";
2
- export declare const RUNTIME_PROTOCOL_VERSION = 2;
2
+ export declare const RUNTIME_PROTOCOL_VERSION = 3;
3
3
  export declare const RUNTIME_SYMBOL: unique symbol;
4
+ /** Provider connection metadata visible to an interface consumer. */
4
5
  export interface InterfaceConnection {
6
+ /** Optional connection alias. */
5
7
  id?: string;
8
+ /** Resolved interface package path. */
6
9
  path: string;
10
+ /** Module ID of the provider represented by this connection. */
11
+ provider: string;
12
+ /** Whether this provider is selected for unqualified interface calls. */
13
+ selected: boolean;
7
14
  }
15
+ /** Module identity and provider routes propagated through asynchronous work. */
8
16
  export interface ModuleExecutionContext {
17
+ /** Stable module ID used by existing lifecycle and attribution APIs. */
9
18
  module: string;
19
+ /** Unique lifecycle generation ID. Defaults to the module ID when omitted. */
20
+ owner?: string;
21
+ /** Provider ID used when attaching implementations. */
10
22
  provider?: string;
23
+ /** Provider selections keyed by stable interface proxy identity. */
11
24
  providerRoutes?: Readonly<Record<string, string>>;
12
25
  }
13
26
  interface ActiveModuleExecutionContext extends ModuleExecutionContext {
27
+ owner: string;
14
28
  ownershipToken: symbol;
15
29
  }
16
30
  export interface ProxyBrand {
@@ -48,13 +62,15 @@ export interface InterfaceRuntime {
48
62
  }>>;
49
63
  registeringProxies: Set<{
50
64
  unregisterModule(module: string): void;
65
+ unregisterOwner(owner: string): void;
51
66
  }>;
52
67
  knownEvents: Set<{
53
68
  unregisterModule(module: string): void;
69
+ unregisterOwner(owner: string): void;
54
70
  }>;
55
71
  interfaceConnections: Record<string, Record<string, InterfaceConnection[]>>;
56
72
  executionContext: AsyncLocalStorage<ActiveModuleExecutionContext>;
57
- activeModuleTokens: Map<string, symbol>;
73
+ activeOwnerTokens: Map<string, symbol>;
58
74
  proxyStates: Map<string, RuntimeProxyState>;
59
75
  nextProxyIdentity: number;
60
76
  nextLeaseGeneration: number;
@@ -72,6 +88,9 @@ export interface InterfaceRuntime {
72
88
  /** @internal */
73
89
  export declare const internal: InterfaceRuntime;
74
90
  export declare function runWithModuleContext<T>(context: ModuleExecutionContext, callback: () => T): T;
91
+ export declare function captureModuleContext(): ActiveModuleExecutionContext | undefined;
92
+ export declare function runWithCapturedModuleContext<T>(context: ActiveModuleExecutionContext, callback: () => T): T;
93
+ export declare function peekModuleContext(): ModuleExecutionContext | undefined;
75
94
  export declare function getModuleContext(): ModuleExecutionContext | undefined;
76
- export declare function invalidateModuleContext(module: string): void;
95
+ export declare function invalidateModuleContext(owner: string): void;
77
96
  export {};
package/dist/internal.js CHANGED
@@ -2,11 +2,14 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.internal = exports.RUNTIME_SYMBOL = exports.RUNTIME_PROTOCOL_VERSION = void 0;
4
4
  exports.runWithModuleContext = runWithModuleContext;
5
+ exports.captureModuleContext = captureModuleContext;
6
+ exports.runWithCapturedModuleContext = runWithCapturedModuleContext;
7
+ exports.peekModuleContext = peekModuleContext;
5
8
  exports.getModuleContext = getModuleContext;
6
9
  exports.invalidateModuleContext = invalidateModuleContext;
7
10
  const node_async_hooks_1 = require("node:async_hooks");
8
11
  const errors_1 = require("./errors");
9
- exports.RUNTIME_PROTOCOL_VERSION = 2;
12
+ exports.RUNTIME_PROTOCOL_VERSION = 3;
10
13
  exports.RUNTIME_SYMBOL = Symbol.for("@antelopejs/interface-core/runtime");
11
14
  function addToMapSet(map, key, value) {
12
15
  const values = map.get(key) ?? new Set();
@@ -24,7 +27,7 @@ function createRuntime() {
24
27
  knownEvents: new Set(),
25
28
  interfaceConnections: Object.create(null),
26
29
  executionContext: new node_async_hooks_1.AsyncLocalStorage(),
27
- activeModuleTokens: new Map(),
30
+ activeOwnerTokens: new Map(),
28
31
  proxyStates: new Map(),
29
32
  nextProxyIdentity: 1,
30
33
  nextLeaseGeneration: 1,
@@ -58,17 +61,17 @@ function getRuntime() {
58
61
  }
59
62
  /** @internal */
60
63
  exports.internal = getRuntime();
61
- function getModuleToken(module) {
62
- const activeToken = exports.internal.activeModuleTokens.get(module);
64
+ function getOwnerToken(owner) {
65
+ const activeToken = exports.internal.activeOwnerTokens.get(owner);
63
66
  if (activeToken) {
64
67
  return activeToken;
65
68
  }
66
- const token = Symbol(module);
67
- exports.internal.activeModuleTokens.set(module, token);
69
+ const token = Symbol(owner);
70
+ exports.internal.activeOwnerTokens.set(owner, token);
68
71
  return token;
69
72
  }
70
73
  function assertActiveModuleContext(context) {
71
- if (exports.internal.activeModuleTokens.get(context.module) !== context.ownershipToken) {
74
+ if (exports.internal.activeOwnerTokens.get(context.owner) !== context.ownershipToken) {
72
75
  throw new errors_1.ModuleContextInvalidatedError(context.module);
73
76
  }
74
77
  }
@@ -80,20 +83,32 @@ function runWithModuleContext(context, callback) {
80
83
  if (!context.module) {
81
84
  throw new Error("Module execution context requires a module ID.");
82
85
  }
86
+ const owner = context.owner ?? context.module;
83
87
  const activeContext = {
84
88
  ...context,
85
- ownershipToken: getModuleToken(context.module),
89
+ owner,
90
+ ownershipToken: getOwnerToken(owner),
86
91
  };
87
92
  return exports.internal.executionContext.run(activeContext, callback);
88
93
  }
89
- function getModuleContext() {
94
+ function captureModuleContext() {
90
95
  const context = exports.internal.executionContext.getStore();
91
96
  if (context) {
92
97
  assertActiveModuleContext(context);
93
98
  }
94
99
  return context;
95
100
  }
96
- function invalidateModuleContext(module) {
97
- exports.internal.activeModuleTokens.delete(module);
101
+ function runWithCapturedModuleContext(context, callback) {
102
+ assertActiveModuleContext(context);
103
+ return exports.internal.executionContext.run(context, callback);
104
+ }
105
+ function peekModuleContext() {
106
+ return exports.internal.executionContext.getStore();
107
+ }
108
+ function getModuleContext() {
109
+ return captureModuleContext();
110
+ }
111
+ function invalidateModuleContext(owner) {
112
+ exports.internal.activeOwnerTokens.delete(owner);
98
113
  }
99
114
  //# sourceMappingURL=internal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"internal.js","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":";;;AAyJA,oDAgBC;AAED,4CAMC;AAED,0DAEC;AArLD,uDAAqD;AACrD,qCAAyD;AAE5C,QAAA,wBAAwB,GAAG,CAAC,CAAC;AAC7B,QAAA,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;AAwE/E,SAAS,WAAW,CAAI,GAAwB,EAAE,GAAW,EAAE,KAAQ;IACrE,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,EAAK,CAAC;IAC5C,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAClB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,aAAa;IACpB,MAAM,OAAO,GAAqB;QAChC,QAAQ,EAAE,gCAAwB;QAClC,cAAc,EAAE,EAAE;QAClB,YAAY,EAAE,KAAK;QACnB,UAAU,EAAE,IAAI,GAAG,EAAE;QACrB,cAAc,EAAE,IAAI,GAAG,EAAE;QACzB,kBAAkB,EAAE,IAAI,GAAG,EAAE;QAC7B,WAAW,EAAE,IAAI,GAAG,EAAE;QACtB,oBAAoB,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAGvC;QACD,gBAAgB,EAAE,IAAI,oCAAiB,EAAgC;QACvE,kBAAkB,EAAE,IAAI,GAAG,EAAE;QAC7B,WAAW,EAAE,IAAI,GAAG,EAAE;QACtB,iBAAiB,EAAE,CAAC;QACpB,mBAAmB,EAAE,CAAC;QACtB,oBAAoB,EAAE,KAAK;QAC3B,aAAa,CAAC,MAAM,EAAE,KAAK;YACzB,WAAW,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QACjD,CAAC;QACD,mBAAmB,CAAC,MAAM,EAAE,KAAK;YAC/B,WAAW,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QACrD,CAAC;KACF,CAAC;IACF,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,UAAU;IACjB,MAAM,OAAO,GAAG,UAA0C,CAAC;IAC3D,MAAM,QAAQ,GAAG,OAAO,CAAC,sBAAc,CAAiC,CAAC;IACzE,IAAI,QAAQ,IAAI,QAAQ,CAAC,QAAQ,KAAK,gCAAwB,EAAE,CAAC;QAC/D,MAAM,IAAI,KAAK,CACb,sEAAsE,gCAAwB,cAAc,QAAQ,CAAC,QAAQ,EAAE,CAChI,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;IAChC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,sBAAc,EAAE;QAC7C,YAAY,EAAE,KAAK;QACnB,UAAU,EAAE,KAAK;QACjB,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,OAAO;KACf,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,gBAAgB;AACH,QAAA,QAAQ,GAAG,UAAU,EAAE,CAAC;AAErC,SAAS,cAAc,CAAC,MAAc;IACpC,MAAM,WAAW,GAAG,gBAAQ,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5D,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7B,gBAAQ,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC/C,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,yBAAyB,CAAC,OAAqC;IACtE,IACE,gBAAQ,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,cAAc,EAC1E,CAAC;QACD,MAAM,IAAI,sCAA6B,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC;AAED,SAAgB,oBAAoB,CAClC,OAA+B,EAC/B,QAAiB;IAEjB,MAAM,gBAAgB,GAAG,gBAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC;IAC9D,IAAI,gBAAgB,EAAE,CAAC;QACrB,yBAAyB,CAAC,gBAAgB,CAAC,CAAC;IAC9C,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IACD,MAAM,aAAa,GAAG;QACpB,GAAG,OAAO;QACV,cAAc,EAAE,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC;KAC/C,CAAC;IACF,OAAO,gBAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;AAChE,CAAC;AAED,SAAgB,gBAAgB;IAC9B,MAAM,OAAO,GAAG,gBAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC;IACrD,IAAI,OAAO,EAAE,CAAC;QACZ,yBAAyB,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAgB,uBAAuB,CAAC,MAAc;IACpD,gBAAQ,CAAC,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC7C,CAAC"}
1
+ {"version":3,"file":"internal.js","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"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"}
package/dist/modules.js CHANGED
@@ -71,19 +71,27 @@ function runCleanup(cleanup, module, operation) {
71
71
  internal_1.internal.runtimeErrorReporter?.(error, { operation, module });
72
72
  }
73
73
  }
74
+ function getDestroyedOwner(module) {
75
+ const context = (0, internal_1.peekModuleContext)();
76
+ if (context?.module !== module) {
77
+ return module;
78
+ }
79
+ return context.owner ?? module;
80
+ }
74
81
  Events.ModuleDestroyed.register((module) => {
75
- (0, internal_1.invalidateModuleContext)(module);
76
- for (const cleanup of internal_1.internal.knownAsync.get(module) ?? []) {
77
- runCleanup(cleanup, module, "detach-async-provider");
82
+ const owner = getDestroyedOwner(module);
83
+ (0, internal_1.invalidateModuleContext)(owner);
84
+ for (const cleanup of internal_1.internal.knownAsync.get(owner) ?? []) {
85
+ runCleanup(cleanup, owner, "detach-async-provider");
78
86
  }
79
- internal_1.internal.knownAsync.delete(module);
80
- for (const cleanup of internal_1.internal.knownRegisters.get(module) ?? []) {
81
- runCleanup(cleanup, module, "detach-registering-provider");
87
+ internal_1.internal.knownAsync.delete(owner);
88
+ for (const cleanup of internal_1.internal.knownRegisters.get(owner) ?? []) {
89
+ runCleanup(cleanup, owner, "detach-registering-provider");
82
90
  }
83
- internal_1.internal.knownRegisters.delete(module);
91
+ internal_1.internal.knownRegisters.delete(owner);
84
92
  for (const proxy of internal_1.internal.registeringProxies) {
85
93
  try {
86
- proxy.unregisterModule(module);
94
+ proxy.unregisterOwner(owner);
87
95
  }
88
96
  catch (error) {
89
97
  internal_1.internal.runtimeErrorReporter?.(error, {
@@ -94,7 +102,7 @@ Events.ModuleDestroyed.register((module) => {
94
102
  }
95
103
  for (const proxy of internal_1.internal.knownEvents) {
96
104
  try {
97
- proxy.unregisterModule(module);
105
+ proxy.unregisterOwner(owner);
98
106
  }
99
107
  catch (error) {
100
108
  internal_1.internal.runtimeErrorReporter?.(error, {
@@ -1 +1 @@
1
- {"version":3,"file":"modules.js","sourceRoot":"","sources":["../src/modules.ts"],"names":[],"mappings":";;;AAWA,oDAKC;AAGD,4CAEC;AArBD,wBAAkD;AAClD,yCAOoB;AAEpB,oFAAoF;AACpF,SAAgB,oBAAoB,CAClC,OAA+B,EAC/B,QAAiB;IAEjB,OAAO,IAAA,+BAAoB,EAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACjD,CAAC;AAED,kEAAkE;AAClE,SAAgB,gBAAgB;IAC9B,OAAO,IAAA,2BAAgB,GAAE,CAAC;AAC5B,CAAC;AAID;;;;;GAKG;AACH,IAAiB,MAAM,CAgDtB;AAhDD,WAAiB,MAAM;IACrB;;;;;;;OAOG;IACU,wBAAiB,GAAG,IAAI,aAAU,CAC7C,2BAA2B,CAC5B,CAAC;IAEF;;;;;;;OAOG;IACU,oBAAa,GAAG,IAAI,aAAU,CACzC,uBAAuB,CACxB,CAAC;IAEF;;;;;;;OAOG;IACU,oBAAa,GAAG,IAAI,aAAU,CACzC,uBAAuB,CACxB,CAAC;IAEF;;;;;;;OAOG;IACU,sBAAe,GAAG,IAAI,aAAU,CAC3C,yBAAyB,CAC1B,CAAC;AACJ,CAAC,EAhDgB,MAAM,sBAAN,MAAM,QAgDtB;AAED,SAAS,UAAU,CACjB,OAA4C,EAC5C,MAAc,EACd,SAAiB;IAEjB,IAAI,CAAC;QACH,IAAI,SAAS,IAAI,OAAO,EAAE,CAAC;YACzB,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,mBAAQ,CAAC,oBAAoB,EAAE,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;IAChE,CAAC;AACH,CAAC;AAED,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,EAAE;IACzC,IAAA,kCAAuB,EAAC,MAAM,CAAC,CAAC;IAChC,KAAK,MAAM,OAAO,IAAI,mBAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QAC5D,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,uBAAuB,CAAC,CAAC;IACvD,CAAC;IACD,mBAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACnC,KAAK,MAAM,OAAO,IAAI,mBAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QAChE,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,6BAA6B,CAAC,CAAC;IAC7D,CAAC;IACD,mBAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACvC,KAAK,MAAM,KAAK,IAAI,mBAAQ,CAAC,kBAAkB,EAAE,CAAC;QAChD,IAAI,CAAC;YACH,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,mBAAQ,CAAC,oBAAoB,EAAE,CAAC,KAAK,EAAE;gBACrC,SAAS,EAAE,mBAAmB;gBAC9B,MAAM;aACP,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,mBAAQ,CAAC,WAAW,EAAE,CAAC;QACzC,IAAI,CAAC;YACH,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,mBAAQ,CAAC,oBAAoB,EAAE,CAAC,KAAK,EAAE;gBACrC,SAAS,EAAE,yBAAyB;gBACpC,MAAM;aACP,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC,CAAC,CAAC;AAuDH;;;;;;;GAOG;AACU,QAAA,WAAW,GAAG,IAAA,oBAAiB,EAC1C,qBAAqB,CACtB,CAAC;AAEF;;;;;;;;GAQG;AACU,QAAA,aAAa,GAAG,IAAA,oBAAiB,EAC5C,uBAAuB,CACxB,CAAC;AAEF;;;;;;;;;GASG;AACU,QAAA,UAAU,GACrB,IAAA,oBAAiB,EAMf,oBAAoB,CAAC,CAAC;AAE1B;;;;;;;;GAQG;AACU,QAAA,WAAW,GAAG,IAAA,oBAAiB,EAC1C,qBAAqB,CACtB,CAAC;AAEF;;;;;;;;GAQG;AACU,QAAA,UAAU,GACrB,IAAA,oBAAiB,EAA2B,oBAAoB,CAAC,CAAC;AAEpE;;;;;;;;GAQG;AACU,QAAA,aAAa,GAAG,IAAA,oBAAiB,EAC5C,uBAAuB,CACxB,CAAC;AAEF;;;;;;;;;GASG;AACU,QAAA,YAAY,GAAG,IAAA,oBAAiB,EAC3C,sBAAsB,CACvB,CAAC"}
1
+ {"version":3,"file":"modules.js","sourceRoot":"","sources":["../src/modules.ts"],"names":[],"mappings":"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"}
package/dist/proxies.d.ts CHANGED
@@ -51,7 +51,14 @@ export declare class RegisteringProxy<T extends RegisterFunction = RegisterFunct
51
51
  unregister(id: RID<T>): void;
52
52
  /** Unregisters every entry owned by a destroyed module. */
53
53
  unregisterModule(module: string): void;
54
- private attachHandlers;
54
+ /** Unregisters every entry owned by a destroyed module generation. */
55
+ unregisterOwner(owner: string): void;
56
+ private unregisterMatching;
57
+ private attachRegister;
58
+ private attachUnregister;
59
+ private trackAttachment;
60
+ private createLease;
61
+ private createAttachment;
55
62
  private replayRegistrations;
56
63
  }
57
64
  type EventFunction = (...args: any[]) => void;
@@ -68,6 +75,8 @@ export declare class EventProxy<T extends EventFunction = EventFunction> {
68
75
  unregister(fn: T): void;
69
76
  /** Unregisters handlers owned by a destroyed module. */
70
77
  unregisterModule(module: string): void;
78
+ /** Unregisters handlers owned by a destroyed module generation. */
79
+ unregisterOwner(owner: string): void;
71
80
  }
72
81
  /** Gets the responsible module from explicit async context or the call stack. */
73
82
  export declare function GetResponsibleModule(startFrame?: number): string | undefined;
package/dist/proxies.js CHANGED
@@ -59,13 +59,28 @@ function GetInterfaceProxyIdentity(value) {
59
59
  function getAttachmentRoute(manualDetach) {
60
60
  const context = (0, internal_1.getModuleContext)();
61
61
  const responsible = manualDetach || context?.module ? undefined : GetResponsibleModule();
62
- const owner = context?.module ?? responsible ?? DEFAULT_PROVIDER;
62
+ const owner = context?.owner ?? context?.module ?? responsible ?? DEFAULT_PROVIDER;
63
63
  return { owner, provider: context?.provider ?? owner };
64
64
  }
65
65
  function getRequestedProvider(proxyIdentity) {
66
66
  const context = (0, internal_1.getModuleContext)();
67
67
  return context?.providerRoutes?.[proxyIdentity] ?? context?.provider;
68
68
  }
69
+ function bindProviderCallback(callback) {
70
+ const context = (0, internal_1.captureModuleContext)();
71
+ if (!context) {
72
+ return callback;
73
+ }
74
+ return ((...args) => (0, internal_1.runWithCapturedModuleContext)(context, () => callback(...args)));
75
+ }
76
+ function getExecutionOwnership() {
77
+ const context = (0, internal_1.getModuleContext)();
78
+ if (context) {
79
+ return { module: context.module, owner: context.owner ?? context.module };
80
+ }
81
+ const module = GetResponsibleModule();
82
+ return { module, owner: module };
83
+ }
69
84
  function selectProvider(callbacks, proxyIdentity, requested) {
70
85
  if (requested) {
71
86
  const callback = callbacks.get(requested);
@@ -87,6 +102,10 @@ function reportRuntimeError(error, operation, proxyIdentity, module, registratio
87
102
  registrationId,
88
103
  });
89
104
  }
105
+ function matchesLease(attachment, lease) {
106
+ return (attachment?.generation === lease.generation &&
107
+ attachment.owner === lease.owner);
108
+ }
90
109
  /** @internal */
91
110
  function InvalidateResponsibleModule(module) {
92
111
  (0, internal_1.invalidateModuleContext)(module);
@@ -110,13 +129,17 @@ class AsyncProxy {
110
129
  onCall(callback, manualDetach) {
111
130
  const route = getAttachmentRoute(manualDetach);
112
131
  const lease = { ...route, generation: internal_1.internal.nextLeaseGeneration++ };
113
- this.state.callbacks.set(route.provider, { callback, ...lease });
132
+ const providerCallback = bindProviderCallback(callback);
133
+ this.state.callbacks.set(route.provider, {
134
+ callback: providerCallback,
135
+ ...lease,
136
+ });
114
137
  if (!manualDetach) {
115
138
  internal_1.internal.addAsyncProxy(route.owner, {
116
139
  cleanup: () => this.detach(lease),
117
140
  });
118
141
  }
119
- this.replayQueue(route.provider, callback);
142
+ this.replayQueue(route.provider, providerCallback);
120
143
  return lease;
121
144
  }
122
145
  /** Detaches one leased provider, or every provider when called without a lease. */
@@ -191,22 +214,41 @@ class RegisteringProxy {
191
214
  /** Attaches a register callback. */
192
215
  onRegister(callback, manualDetach) {
193
216
  const route = getAttachmentRoute(manualDetach);
194
- const current = this.state.callbacks.get(route.provider);
195
- return this.attachHandlers(callback, current?.unregister, manualDetach, true, route);
217
+ return this.attachRegister(bindProviderCallback(callback), route, Boolean(manualDetach));
196
218
  }
197
219
  /** Attaches an unregister callback to the current provider route. */
198
220
  onUnregister(callback) {
199
221
  const context = (0, internal_1.getModuleContext)();
200
222
  const requested = context?.provider ?? context?.module;
201
223
  const current = selectProvider(this.state.callbacks, this[PROXY_BRAND].identity, requested);
202
- const route = current
203
- ? { owner: current.owner, provider: current.provider }
204
- : getAttachmentRoute();
205
- return this.attachHandlers(current?.register, callback, current?.manualDetach, false, route);
224
+ const contextOwner = context?.owner ?? context?.module;
225
+ const attachments = [current?.unregister, current?.register];
226
+ const sibling = contextOwner
227
+ ? attachments.find((attachment) => attachment?.owner === contextOwner)
228
+ : attachments.find((attachment) => Boolean(attachment));
229
+ const canExtendCurrent = current && sibling;
230
+ const options = canExtendCurrent
231
+ ? {
232
+ route: { owner: sibling.owner, provider: current.provider },
233
+ manualDetach: sibling.manualDetach,
234
+ }
235
+ : { route: getAttachmentRoute(), manualDetach: false };
236
+ return this.attachUnregister(bindProviderCallback(callback), options);
206
237
  }
207
238
  /** Atomically attaches both registration handlers. */
208
239
  onHandlers(register, unregister, manualDetach) {
209
- return this.attachHandlers(register, unregister, manualDetach);
240
+ const route = getAttachmentRoute(manualDetach);
241
+ const lease = this.createLease(route);
242
+ const boundRegister = bindProviderCallback(register);
243
+ const boundUnregister = bindProviderCallback(unregister);
244
+ this.state.callbacks.set(route.provider, {
245
+ provider: route.provider,
246
+ register: this.createAttachment(boundRegister, lease, manualDetach),
247
+ unregister: this.createAttachment(boundUnregister, lease, manualDetach),
248
+ });
249
+ this.trackAttachment(lease, Boolean(manualDetach));
250
+ this.replayRegistrations(route.provider, boundRegister);
251
+ return lease;
210
252
  }
211
253
  /** Detaches one leased provider, or every provider when called without a lease. */
212
254
  detach(lease) {
@@ -215,8 +257,16 @@ class RegisteringProxy {
215
257
  return;
216
258
  }
217
259
  const current = this.state.callbacks.get(lease.provider);
218
- if (current?.generation === lease.generation &&
219
- current.owner === lease.owner) {
260
+ if (!current) {
261
+ return;
262
+ }
263
+ if (matchesLease(current.register, lease)) {
264
+ current.register = undefined;
265
+ }
266
+ if (matchesLease(current.unregister, lease)) {
267
+ current.unregister = undefined;
268
+ }
269
+ if (!current.register && !current.unregister) {
220
270
  this.state.callbacks.delete(lease.provider);
221
271
  }
222
272
  }
@@ -232,12 +282,13 @@ class RegisteringProxy {
232
282
  this.state.registered.size >= internal_1.internal.maxPendingOperations) {
233
283
  throw new errors_1.ProviderQueueFullError(this[PROXY_BRAND].identity, internal_1.internal.maxPendingOperations);
234
284
  }
285
+ const ownership = getExecutionOwnership();
235
286
  this.state.registered.set(id, {
236
- module: GetResponsibleModule(),
287
+ ...ownership,
237
288
  provider: requested ?? callback?.provider,
238
289
  args,
239
290
  });
240
- callback?.register?.(id, ...args);
291
+ callback?.register?.callback(id, ...args);
241
292
  }
242
293
  /** Unregisters an entry from the provider that accepted it. */
243
294
  unregister(id) {
@@ -247,7 +298,7 @@ class RegisteringProxy {
247
298
  }
248
299
  const callback = selectProvider(this.state.callbacks, this[PROXY_BRAND].identity, entry.provider);
249
300
  try {
250
- callback?.unregister?.(id);
301
+ callback?.unregister?.callback(id);
251
302
  }
252
303
  finally {
253
304
  this.state.registered.delete(id);
@@ -255,40 +306,65 @@ class RegisteringProxy {
255
306
  }
256
307
  /** Unregisters every entry owned by a destroyed module. */
257
308
  unregisterModule(module) {
309
+ this.unregisterMatching((entry) => entry.module === module, module);
310
+ }
311
+ /** Unregisters every entry owned by a destroyed module generation. */
312
+ unregisterOwner(owner) {
313
+ this.unregisterMatching((entry) => entry.owner === owner, owner);
314
+ }
315
+ unregisterMatching(matches, owner) {
258
316
  for (const [id, entry] of this.state.registered) {
259
- if (entry.module !== module) {
317
+ if (!matches(entry)) {
260
318
  continue;
261
319
  }
262
320
  try {
263
321
  this.unregister(id);
264
322
  }
265
323
  catch (error) {
266
- reportRuntimeError(error, "unregister", this[PROXY_BRAND].identity, module, id);
324
+ reportRuntimeError(error, "unregister", this[PROXY_BRAND].identity, owner, id);
267
325
  }
268
326
  finally {
269
327
  this.state.registered.delete(id);
270
328
  }
271
329
  }
272
330
  }
273
- attachHandlers(register, unregister, manualDetach, shouldReplay = true, attachmentRoute) {
274
- const route = attachmentRoute ?? getAttachmentRoute(manualDetach);
275
- const lease = { ...route, generation: internal_1.internal.nextLeaseGeneration++ };
331
+ attachRegister(callback, route, manualDetach) {
332
+ const lease = this.createLease(route);
333
+ const current = this.state.callbacks.get(route.provider);
276
334
  this.state.callbacks.set(route.provider, {
277
- register,
278
- unregister,
279
- manualDetach: Boolean(manualDetach),
280
- ...lease,
335
+ provider: route.provider,
336
+ register: this.createAttachment(callback, lease, manualDetach),
337
+ unregister: current?.unregister,
281
338
  });
339
+ this.trackAttachment(lease, manualDetach);
340
+ this.replayRegistrations(route.provider, callback);
341
+ return lease;
342
+ }
343
+ attachUnregister(callback, options) {
344
+ const { route, manualDetach } = options;
345
+ const lease = this.createLease(route);
346
+ const current = this.state.callbacks.get(route.provider);
347
+ this.state.callbacks.set(route.provider, {
348
+ provider: route.provider,
349
+ register: current?.register,
350
+ unregister: this.createAttachment(callback, lease, manualDetach),
351
+ });
352
+ this.trackAttachment(lease, manualDetach);
353
+ return lease;
354
+ }
355
+ trackAttachment(lease, manualDetach) {
282
356
  if (!manualDetach) {
283
- internal_1.internal.addRegisteringProxy(route.owner, {
357
+ internal_1.internal.addRegisteringProxy(lease.owner, {
284
358
  cleanup: () => this.detach(lease),
285
359
  unregisterModule: (module) => this.unregisterModule(module),
286
360
  });
287
361
  }
288
- if (register && shouldReplay) {
289
- this.replayRegistrations(route.provider, register);
290
- }
291
- return lease;
362
+ }
363
+ createLease(route) {
364
+ return { ...route, generation: internal_1.internal.nextLeaseGeneration++ };
365
+ }
366
+ createAttachment(callback, lease, manualDetach) {
367
+ return { callback, ...lease, manualDetach: Boolean(manualDetach) };
292
368
  }
293
369
  replayRegistrations(provider, callback) {
294
370
  for (const [id, entry] of this.state.registered) {
@@ -332,7 +408,7 @@ class EventProxy {
332
408
  if (this.state.registered.some((existing) => existing.func === func)) {
333
409
  return;
334
410
  }
335
- this.state.registered.push({ module: GetResponsibleModule(), func });
411
+ this.state.registered.push({ ...getExecutionOwnership(), func });
336
412
  }
337
413
  /** Unregisters a handler. */
338
414
  unregister(fn) {
@@ -342,6 +418,10 @@ class EventProxy {
342
418
  unregisterModule(module) {
343
419
  this.state.registered = this.state.registered.filter((entry) => entry.module !== module);
344
420
  }
421
+ /** Unregisters handlers owned by a destroyed module generation. */
422
+ unregisterOwner(owner) {
423
+ this.state.registered = this.state.registered.filter((entry) => entry.owner !== owner);
424
+ }
345
425
  }
346
426
  exports.EventProxy = EventProxy;
347
427
  function captureCallStack(startFrame = 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"proxies.js","sourceRoot":"","sources":["../src/proxies.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"proxies.js","sourceRoot":"","sources":["../src/proxies.ts"],"names":[],"mappings":";;;AAwIA,4CAGC;AAGD,8DAEC;AAqFD,kEAEC;AAGD,4DAKC;AAsaD,oDAYC;AAjqBD,qCAIkB;AAClB,yCASoB;AACpB,6DAA2D;AAQ3D,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;AACnE,MAAM,gBAAgB,GAAG,6CAA6C,CAAC;AAqEvE,SAAS,cAAc,CAAC,IAAe,EAAE,QAAiB;IACxD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,GAAG,IAAI,IAAI,QAAQ,EAAE,CAAC;IAC/B,CAAC;IACD,MAAM,YAAY,GAAG,mBAAQ,CAAC,iBAAiB,EAAE,CAAC;IAClD,OAAO,GAAG,IAAI,cAAc,YAAY,EAAE,CAAC;AAC7C,CAAC;AAED,SAAS,aAAa,CAAI,KAAiB,EAAE,MAAe;IAC1D,MAAM,QAAQ,GAAG,mBAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC1D,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,kBAAkB,KAAK,CAAC,QAAQ,yBAAyB,CAAC,CAAC;IAC7E,CAAC;IACD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,QAAQ,CAAC,KAAU,CAAC;IAC7B,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC;IACvB,mBAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACtE,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,WAAW,CAAC,IAAe,EAAE,QAAiB;IACrD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,QAAQ,EAAE,mCAAwB;QAClC,IAAI;QACJ,QAAQ,EAAE,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC;KACzC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,SAAS,CAAC,KAAc;IAC/B,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACzE,OAAO;IACT,CAAC;IACD,MAAM,KAAK,GAAI,KAAsC,CAAC,WAAW,CAEpD,CAAC;IACd,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,KAAK,mCAAwB,EAAE,CAAC;QAC1D,OAAO;IACT,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,+EAA+E;AAC/E,SAAgB,gBAAgB,CAAC,KAAc,EAAE,IAAgB;IAC/D,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,OAAO,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,4EAA4E;AAC5E,SAAgB,yBAAyB,CAAC,KAAc;IACtD,OAAO,SAAS,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC;AACpC,CAAC;AAED,SAAS,kBAAkB,CAAC,YAAsB;IAChD,MAAM,OAAO,GAAG,IAAA,2BAAgB,GAAE,CAAC;IACnC,MAAM,WAAW,GACf,YAAY,IAAI,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,oBAAoB,EAAE,CAAC;IACvE,MAAM,KAAK,GACT,OAAO,EAAE,KAAK,IAAI,OAAO,EAAE,MAAM,IAAI,WAAW,IAAI,gBAAgB,CAAC;IACvE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,IAAI,KAAK,EAAE,CAAC;AACzD,CAAC;AAED,SAAS,oBAAoB,CAAC,aAAqB;IACjD,MAAM,OAAO,GAAG,IAAA,2BAAgB,GAAE,CAAC;IACnC,OAAO,OAAO,EAAE,cAAc,EAAE,CAAC,aAAa,CAAC,IAAI,OAAO,EAAE,QAAQ,CAAC;AACvE,CAAC;AAED,SAAS,oBAAoB,CAAiB,QAAW;IACvD,MAAM,OAAO,GAAG,IAAA,+BAAoB,GAAE,CAAC;IACvC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,CAAC,CAAC,GAAG,IAAmB,EAAE,EAAE,CACjC,IAAA,uCAA4B,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,CAAM,CAAC;AACzE,CAAC;AAOD,SAAS,qBAAqB;IAC5B,MAAM,OAAO,GAAG,IAAA,2BAAgB,GAAE,CAAC;IACnC,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAC5E,CAAC;IACD,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAC;IACtC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AACnC,CAAC;AAED,SAAS,cAAc,CACrB,SAAyB,EACzB,aAAqB,EACrB,SAAkB;IAElB,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,6BAAoB,CAC5B,mBAAmB,aAAa,8BAA8B,SAAS,GAAG,CAC3E,CAAC;QACJ,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,SAAS,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;IACzC,CAAC;IACD,MAAM,IAAI,+BAAsB,CAAC,aAAa,EAAE,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,kBAAkB,CACzB,KAAc,EACd,SAAiB,EACjB,aAAqB,EACrB,MAAe,EACf,cAAwB;IAExB,mBAAQ,CAAC,oBAAoB,EAAE,CAAC,KAAK,EAAE;QACrC,SAAS;QACT,MAAM;QACN,aAAa;QACb,cAAc;KACf,CAAC,CAAC;AACL,CAAC;AAED,SAAS,YAAY,CACnB,UAA2C,EAC3C,KAAsB;IAEtB,OAAO,CACL,UAAU,EAAE,UAAU,KAAK,KAAK,CAAC,UAAU;QAC3C,UAAU,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CACjC,CAAC;AACJ,CAAC;AAED,gBAAgB;AAChB,SAAgB,2BAA2B,CAAC,MAAc;IACxD,IAAA,kCAAuB,EAAC,MAAM,CAAC,CAAC;AAClC,CAAC;AAED,+EAA+E;AAC/E,SAAgB,wBAAwB,CACtC,MAAc,EACd,QAAiB;IAEjB,OAAO,IAAA,+BAAoB,EAAC,EAAE,MAAM,EAAE,EAAE,QAAQ,CAAC,CAAC;AACpD,CAAC;AAED,oDAAoD;AACpD,MAAa,UAAU;IACL,CAAC,WAAW,CAAC,CAAa;IACzB,KAAK,CAAwB;IAE9C,YAAmB,QAAiB;QAClC,IAAI,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;YACnD,SAAS,EAAE,IAAI,GAAG,EAAE;YACpB,KAAK,EAAE,EAAE;SACV,CAAC,CAAC,CAAC;IACN,CAAC;IAED,wEAAwE;IACjE,MAAM,CAAC,QAAW,EAAE,YAAsB;QAC/C,MAAM,KAAK,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,mBAAQ,CAAC,mBAAmB,EAAE,EAAE,CAAC;QACvE,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QACxD,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE;YACvC,QAAQ,EAAE,gBAAgB;YAC1B,GAAG,KAAK;SACT,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,mBAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE;gBAClC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;aAClC,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QACnD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,mFAAmF;IAC5E,MAAM,CAAC,KAAuB;QACnC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YAC7B,OAAO;QACT,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACzD,IACE,OAAO,EAAE,UAAU,KAAK,KAAK,CAAC,UAAU;YACxC,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,EAC7B,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,2EAA2E;IACpE,IAAI,CAAC,GAAG,IAAmB;QAChC,IAAI,SAA6B,CAAC;QAClC,IAAI,UAAqC,CAAC;QAC1C,IAAI,CAAC;YACH,SAAS,GAAG,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC;YAC7D,UAAU,GAAG,cAAc,CACzB,IAAI,CAAC,KAAK,CAAC,SAAS,EACpB,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,EAC1B,SAAS,CACV,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;QACD,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAChD,CAAC;QACD,IAAI,mBAAQ,CAAC,YAAY,EAAE,CAAC;YAC1B,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,6BAAoB,EAAE,CAAC,CAAC;QACpD,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,mBAAQ,CAAC,oBAAoB,EAAE,CAAC;YAC7D,OAAO,OAAO,CAAC,MAAM,CACnB,IAAI,+BAAsB,CACxB,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,EAC1B,mBAAQ,CAAC,oBAAoB,CAC9B,CACF,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACxC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,MAAM,CAAC,QAAW,EAAE,IAAmB;QAC7C,IAAI,CAAC;YACH,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAEO,WAAW,CAAC,QAAgB,EAAE,QAAW;QAC/C,MAAM,SAAS,GAA6B,EAAE,CAAC;QAC/C,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACvC,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBACtD,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACxB,SAAS;YACX,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAC5E,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;IAC/B,CAAC;CACF;AAjGD,gCAiGC;AAED,iEAAiE;AACjE,MAAa,gBAAgB;IACX,CAAC,WAAW,CAAC,CAAa;IACzB,KAAK,CAA2B;IAEjD,YAAmB,QAAiB;QAClC,IAAI,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QACzD,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;YACnD,SAAS,EAAE,IAAI,GAAG,EAAE;YACpB,UAAU,EAAE,IAAI,GAAG,EAAE;SACtB,CAAC,CAAC,CAAC;QACJ,mBAAQ,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,oCAAoC;IAC7B,UAAU,CAAC,QAAW,EAAE,YAAsB;QACnD,MAAM,KAAK,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC,cAAc,CACxB,oBAAoB,CAAC,QAAQ,CAAC,EAC9B,KAAK,EACL,OAAO,CAAC,YAAY,CAAC,CACtB,CAAC;IACJ,CAAC;IAED,qEAAqE;IAC9D,YAAY,CAAC,QAA8B;QAChD,MAAM,OAAO,GAAG,IAAA,2BAAgB,GAAE,CAAC;QACnC,MAAM,SAAS,GAAG,OAAO,EAAE,QAAQ,IAAI,OAAO,EAAE,MAAM,CAAC;QACvD,MAAM,OAAO,GAAG,cAAc,CAC5B,IAAI,CAAC,KAAK,CAAC,SAAS,EACpB,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,EAC1B,SAAS,CACV,CAAC;QACF,MAAM,YAAY,GAAG,OAAO,EAAE,KAAK,IAAI,OAAO,EAAE,MAAM,CAAC;QACvD,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC7D,MAAM,OAAO,GAAG,YAAY;YAC1B,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,KAAK,KAAK,YAAY,CAAC;YACtE,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QAC1D,MAAM,gBAAgB,GAAG,OAAO,IAAI,OAAO,CAAC;QAC5C,MAAM,OAAO,GAAsB,gBAAgB;YACjD,CAAC,CAAC;gBACE,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE;gBAC3D,YAAY,EAAE,OAAO,CAAC,YAAY;aACnC;YACH,CAAC,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;QACzD,OAAO,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;IACxE,CAAC;IAED,sDAAsD;IAC/C,UAAU,CACf,QAAW,EACX,UAAgC,EAChC,YAAsB;QAEtB,MAAM,KAAK,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,aAAa,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,eAAe,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE;YACvC,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,KAAK,EAAE,YAAY,CAAC;YACnE,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,KAAK,EAAE,YAAY,CAAC;SACxE,CAAC,CAAC;QACH,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QACxD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,mFAAmF;IAC5E,MAAM,CAAC,KAAuB;QACnC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YAC7B,OAAO;QACT,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACzD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QACD,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;YAC1C,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC/B,CAAC;QACD,IAAI,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC;YAC5C,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;QACjC,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YAC7C,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,gFAAgF;IACzE,QAAQ,CAAC,EAAU,EAAE,GAAG,IAAc;QAC3C,MAAM,SAAS,GAAG,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC;QACnE,MAAM,QAAQ,GAAG,cAAc,CAC7B,IAAI,CAAC,KAAK,CAAC,SAAS,EACpB,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,EAC1B,SAAS,CACV,CAAC;QACF,IAAI,CAAC,QAAQ,IAAI,mBAAQ,CAAC,YAAY,EAAE,CAAC;YACvC,MAAM,IAAI,6BAAoB,EAAE,CAAC;QACnC,CAAC;QACD,IACE,CAAC,QAAQ;YACT,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,IAAI,mBAAQ,CAAC,oBAAoB,EAC3D,CAAC;YACD,MAAM,IAAI,+BAAsB,CAC9B,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,EAC1B,mBAAQ,CAAC,oBAAoB,CAC9B,CAAC;QACJ,CAAC;QACD,MAAM,SAAS,GAAG,qBAAqB,EAAE,CAAC;QAC1C,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE;YAC5B,GAAG,SAAS;YACZ,QAAQ,EAAE,SAAS,IAAI,QAAQ,EAAE,QAAQ;YACzC,IAAI;SACL,CAAC,CAAC;QACH,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED,+DAA+D;IACxD,UAAU,CAAC,EAAU;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO;QACT,CAAC;QACD,MAAM,QAAQ,GAAG,cAAc,CAC7B,IAAI,CAAC,KAAK,CAAC,SAAS,EACpB,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,EAC1B,KAAK,CAAC,QAAQ,CACf,CAAC;QACF,IAAI,CAAC;YACH,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;QACrC,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED,2DAA2D;IACpD,gBAAgB,CAAC,MAAc;QACpC,IAAI,CAAC,kBAAkB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE,MAAM,CAAC,CAAC;IACtE,CAAC;IAED,sEAAsE;IAC/D,eAAe,CAAC,KAAa;QAClC,IAAI,CAAC,kBAAkB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,EAAE,KAAK,CAAC,CAAC;IACnE,CAAC;IAEO,kBAAkB,CACxB,OAA+C,EAC/C,KAAa;QAEb,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;YAChD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpB,SAAS;YACX,CAAC;YACD,IAAI,CAAC;gBACH,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YACtB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,kBAAkB,CAChB,KAAK,EACL,YAAY,EACZ,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,EAC1B,KAAK,EACL,EAAE,CACH,CAAC;YACJ,CAAC;oBAAS,CAAC;gBACT,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;IACH,CAAC;IAEO,cAAc,CACpB,QAAW,EACX,KAAsB,EACtB,YAAqB;QAErB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACzD,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE;YACvC,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,KAAK,EAAE,YAAY,CAAC;YAC9D,UAAU,EAAE,OAAO,EAAE,UAAU;SAChC,CAAC,CAAC;QACH,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QAC1C,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACnD,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,gBAAgB,CACtB,QAA8B,EAC9B,OAA0B;QAE1B,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACzD,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE;YACvC,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,QAAQ,EAAE,OAAO,EAAE,QAAQ;YAC3B,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,KAAK,EAAE,YAAY,CAAC;SACjE,CAAC,CAAC;QACH,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QAC1C,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,eAAe,CAAC,KAAsB,EAAE,YAAqB;QACnE,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,mBAAQ,CAAC,mBAAmB,CAAC,KAAK,CAAC,KAAK,EAAE;gBACxC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;gBACjC,gBAAgB,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;aACpE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAEO,WAAW,CAAC,KAAsB;QACxC,OAAO,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,mBAAQ,CAAC,mBAAmB,EAAE,EAAE,CAAC;IAClE,CAAC;IAEO,gBAAgB,CACtB,QAAW,EACX,KAAsB,EACtB,YAAsB;QAEtB,OAAO,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;IACrE,CAAC;IAEO,mBAAmB,CAAC,QAAgB,EAAE,QAAW;QACvD,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;YAChD,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBAClD,SAAS;YACX,CAAC;YACD,IAAI,CAAC;gBACH,QAAQ,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC5B,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAC5B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,mBAAQ,CAAC,mBAAmB,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;gBAC1C,kBAAkB,CAChB,KAAK,EACL,iBAAiB,EACjB,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,EAC1B,KAAK,CAAC,MAAM,EACZ,EAAE,CACH,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;CACF;AApPD,4CAoPC;AAID,6CAA6C;AAC7C,MAAa,UAAU;IACL,CAAC,WAAW,CAAC,CAAa;IACzB,KAAK,CAAqB;IAE3C,YAAmB,QAAiB;QAClC,IAAI,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAC1E,mBAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,kFAAkF;IAC3E,IAAI,CAAC,GAAG,IAAmB;QAChC,KAAK,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;YACrD,IAAI,CAAC;gBACH,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;YAChB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,kBAAkB,CAChB,KAAK,EACL,YAAY,EACZ,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,EAC1B,MAAM,CACP,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,gCAAgC;IACzB,QAAQ,CAAC,IAAO;QACrB,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACrE,OAAO;QACT,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,qBAAqB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,6BAA6B;IACtB,UAAU,CAAC,EAAK;QACrB,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAClD,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAC1B,CAAC;IACJ,CAAC;IAED,wDAAwD;IACjD,gBAAgB,CAAC,MAAc;QACpC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAClD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,CACnC,CAAC;IACJ,CAAC;IAED,mEAAmE;IAC5D,eAAe,CAAC,KAAa;QAClC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAClD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,CACjC,CAAC;IACJ,CAAC;CACF;AAtDD,gCAsDC;AAED,SAAS,gBAAgB,CAAC,UAAU,GAAG,CAAC;IACtC,MAAM,UAAU,GAAG,KAAK,CAAC,iBAAiB,CAAC;IAC3C,MAAM,QAAQ,GAAG,KAAK,CAAC,eAAe,CAAC;IACvC,KAAK,CAAC,eAAe,GAAG,QAAQ,CAAC;IACjC,KAAK,CAAC,iBAAiB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC;IAC9C,MAAM,KAAK,GAAG,EAAyB,CAAC;IACxC,KAAK,CAAC,iBAAiB,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC;IACrD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAqC,CAAC;IAC1D,KAAK,CAAC,iBAAiB,GAAG,UAAU,CAAC;IACrC,KAAK,CAAC,eAAe,GAAG,QAAQ,CAAC;IACjC,OAAO,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AACjC,CAAC;AAED,iFAAiF;AACjF,SAAgB,oBAAoB,CAAC,UAAU,GAAG,CAAC;IACjD,MAAM,aAAa,GAAG,IAAA,2BAAgB,GAAE,EAAE,MAAM,CAAC;IACjD,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,MAAM,KAAK,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAC3C,MAAM,WAAW,GAAG,IAAA,wCAAmB,EAAC,KAAK,CAAC,CAAC;IAC/C,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;QACvB,OAAO,WAAW,CAAC,MAAM,CAAC;IAC5B,CAAC;IACD,mBAAQ,CAAC,oBAAoB,EAAE,CAAC,KAAK,CAAC,CAAC;IACvC,OAAO,WAAW,CAAC,aAAa,CAAC;AACnC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const chai_1 = require("chai");
4
+ const __1 = require("..");
5
+ const internal_1 = require("../internal");
6
+ const modules_1 = require("../modules");
7
+ describe("generation-owned cleanup", () => {
8
+ afterEach(() => {
9
+ internal_1.internal.testStubMode = false;
10
+ });
11
+ it("keeps a same-module and provider replacement after stale cleanup", async () => {
12
+ const proxy = new __1.AsyncProxy("generation.async");
13
+ const identity = (0, __1.GetInterfaceProxyIdentity)(proxy);
14
+ let oldLease;
15
+ (0, modules_1.RunWithModuleContext)({ module: "shared", owner: "shared#old", provider: "shared" }, () => {
16
+ oldLease = proxy.onCall(() => "old");
17
+ });
18
+ (0, modules_1.RunWithModuleContext)({ module: "shared", owner: "shared#new", provider: "shared" }, () => proxy.onCall(() => "new"));
19
+ proxy.detach(oldLease);
20
+ (0, modules_1.RunWithModuleContext)({ module: "shared", owner: "shared#old", provider: "shared" }, () => {
21
+ modules_1.Events.ModuleDestroyed.emit("shared");
22
+ modules_1.Events.ModuleDestroyed.emit("shared");
23
+ });
24
+ (0, chai_1.expect)(internal_1.internal.knownAsync.has("shared#old")).to.equal(false);
25
+ (0, chai_1.expect)(internal_1.internal.knownAsync.has("shared#new")).to.equal(true);
26
+ (0, chai_1.expect)(await (0, modules_1.RunWithModuleContext)({
27
+ module: "consumer",
28
+ owner: "consumer#1",
29
+ providerRoutes: { [identity]: "shared" },
30
+ }, () => proxy.call())).to.equal("new");
31
+ });
32
+ it("keeps registering replacements after old automatic cleanup", () => {
33
+ const proxy = new __1.RegisteringProxy("generation.registering");
34
+ const calls = [];
35
+ (0, modules_1.RunWithModuleContext)({ module: "shared", owner: "shared-register#old", provider: "shared" }, () => proxy.onHandlers((id) => calls.push(`old:${id}`), () => undefined));
36
+ (0, modules_1.RunWithModuleContext)({ module: "shared", owner: "shared-register#new", provider: "shared" }, () => proxy.onHandlers((id) => calls.push(`new:${id}`), () => undefined));
37
+ (0, modules_1.RunWithModuleContext)({ module: "shared", owner: "shared-register#old", provider: "shared" }, () => modules_1.Events.ModuleDestroyed.emit("shared"));
38
+ (0, chai_1.expect)(internal_1.internal.knownRegisters.has("shared-register#old")).to.equal(false);
39
+ (0, chai_1.expect)(internal_1.internal.knownRegisters.has("shared-register#new")).to.equal(true);
40
+ proxy.register("item");
41
+ (0, chai_1.expect)(calls).to.deep.equal(["new:item"]);
42
+ });
43
+ it("keeps split handlers owned by their replacement generation", () => {
44
+ const proxy = new __1.RegisteringProxy("generation.split-registering");
45
+ const calls = [];
46
+ (0, modules_1.RunWithModuleContext)({ module: "shared", owner: "split#old", provider: "shared" }, () => proxy.onRegister((id) => calls.push(`old-register:${id}`)));
47
+ (0, modules_1.RunWithModuleContext)({ module: "shared", owner: "split#new", provider: "shared" }, () => proxy.onUnregister((id) => calls.push(`new-unregister:${id}`)));
48
+ proxy.register("item");
49
+ (0, chai_1.expect)(calls).to.deep.equal(["old-register:item"]);
50
+ (0, modules_1.RunWithModuleContext)({ module: "shared", owner: "split#old", provider: "shared" }, () => {
51
+ modules_1.Events.ModuleDestroyed.emit("shared");
52
+ modules_1.Events.ModuleDestroyed.emit("shared");
53
+ });
54
+ proxy.unregister("item");
55
+ (0, chai_1.expect)(calls).to.deep.equal(["old-register:item", "new-unregister:item"]);
56
+ (0, chai_1.expect)(internal_1.internal.knownRegisters.has("split#old")).to.equal(false);
57
+ (0, chai_1.expect)(internal_1.internal.knownRegisters.has("split#new")).to.equal(true);
58
+ (0, modules_1.RunWithModuleContext)({ module: "shared", owner: "split#new", provider: "shared" }, () => {
59
+ modules_1.Events.ModuleDestroyed.emit("shared");
60
+ modules_1.Events.ModuleDestroyed.emit("shared");
61
+ });
62
+ internal_1.internal.testStubMode = true;
63
+ (0, chai_1.expect)(() => proxy.register("detached")).to.throw();
64
+ (0, chai_1.expect)(internal_1.internal.knownRegisters.has("split#new")).to.equal(false);
65
+ });
66
+ it("keeps reverse split handlers until their owner is destroyed", () => {
67
+ const proxy = new __1.RegisteringProxy("generation.reverse-split-registering");
68
+ const calls = [];
69
+ (0, modules_1.RunWithModuleContext)({ module: "shared", owner: "reverse#old", provider: "shared" }, () => proxy.onUnregister((id) => calls.push(`old-unregister:${id}`)));
70
+ (0, modules_1.RunWithModuleContext)({ module: "shared", owner: "reverse#new", provider: "shared" }, () => proxy.onRegister((id) => calls.push(`new-register:${id}`)));
71
+ proxy.register("active");
72
+ proxy.unregister("active");
73
+ proxy.register("survivor");
74
+ (0, chai_1.expect)(calls).to.deep.equal([
75
+ "new-register:active",
76
+ "old-unregister:active",
77
+ "new-register:survivor",
78
+ ]);
79
+ (0, modules_1.RunWithModuleContext)({ module: "shared", owner: "reverse#old", provider: "shared" }, () => {
80
+ modules_1.Events.ModuleDestroyed.emit("shared");
81
+ modules_1.Events.ModuleDestroyed.emit("shared");
82
+ });
83
+ proxy.unregister("survivor");
84
+ proxy.register("replacement");
85
+ (0, chai_1.expect)(calls.at(-1)).to.equal("new-register:replacement");
86
+ (0, chai_1.expect)(internal_1.internal.knownRegisters.has("reverse#old")).to.equal(false);
87
+ (0, chai_1.expect)(internal_1.internal.knownRegisters.has("reverse#new")).to.equal(true);
88
+ (0, modules_1.RunWithModuleContext)({ module: "shared", owner: "reverse#new", provider: "shared" }, () => {
89
+ modules_1.Events.ModuleDestroyed.emit("shared");
90
+ modules_1.Events.ModuleDestroyed.emit("shared");
91
+ });
92
+ internal_1.internal.testStubMode = true;
93
+ (0, chai_1.expect)(() => proxy.register("detached")).to.throw();
94
+ (0, chai_1.expect)(internal_1.internal.knownRegisters.has("reverse#new")).to.equal(false);
95
+ });
96
+ it("cleans only registrations and events from the destroyed owner", () => {
97
+ const registrations = new __1.RegisteringProxy("generation.consumer-registering");
98
+ const event = new __1.EventProxy("generation.consumer-event");
99
+ const calls = [];
100
+ registrations.onHandlers(() => undefined, (id) => calls.push(`remove:${id}`), true);
101
+ (0, modules_1.RunWithModuleContext)({ module: "consumer", owner: "consumer#old" }, () => {
102
+ registrations.register("old");
103
+ event.register(() => calls.push("old-event"));
104
+ });
105
+ (0, modules_1.RunWithModuleContext)({ module: "consumer", owner: "consumer#new" }, () => {
106
+ registrations.register("new");
107
+ event.register(() => calls.push("new-event"));
108
+ });
109
+ (0, modules_1.RunWithModuleContext)({ module: "consumer", owner: "consumer#old" }, () => {
110
+ modules_1.Events.ModuleDestroyed.emit("consumer");
111
+ });
112
+ event.emit();
113
+ (0, chai_1.expect)(calls).to.deep.equal(["remove:old", "new-event"]);
114
+ });
115
+ });
116
+ //# sourceMappingURL=generation-cleanup.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generation-cleanup.test.js","sourceRoot":"","sources":["../../src/tests/generation-cleanup.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const chai_1 = require("chai");
4
+ const __1 = require("..");
5
+ const internal_1 = require("../internal");
6
+ const modules_1 = require("../modules");
7
+ describe("interface connection metadata", () => {
8
+ afterEach(() => {
9
+ delete internal_1.internal.interfaceConnections.consumer;
10
+ });
11
+ it("publishes provider and selection metadata", () => {
12
+ const connections = [
13
+ {
14
+ id: "primary",
15
+ path: "@antelopejs/interface-example",
16
+ provider: "provider-a",
17
+ selected: true,
18
+ },
19
+ {
20
+ path: "@antelopejs/interface-example",
21
+ provider: "provider-b",
22
+ selected: false,
23
+ },
24
+ ];
25
+ internal_1.internal.interfaceConnections.consumer = {
26
+ "@antelopejs/interface-example": connections,
27
+ };
28
+ const result = (0, modules_1.RunWithModuleContext)({ module: "consumer", owner: "consumer#metadata" }, () => ({
29
+ all: (0, __1.GetInterfaceInstances)("@antelopejs/interface-example"),
30
+ selected: (0, __1.GetInterfaceInstance)("@antelopejs/interface-example", "primary"),
31
+ }));
32
+ (0, chai_1.expect)(result.all).to.deep.equal(connections);
33
+ (0, chai_1.expect)(result.selected).to.deep.equal(connections[0]);
34
+ });
35
+ });
36
+ //# sourceMappingURL=interface-connections.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface-connections.test.js","sourceRoot":"","sources":["../../src/tests/interface-connections.test.ts"],"names":[],"mappings":";;AAAA,+BAA8B;AAC9B,0BAIY;AACZ,0CAAuC;AACvC,wCAAkD;AAElD,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;IAC7C,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,mBAAQ,CAAC,oBAAoB,CAAC,QAAQ,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,WAAW,GAA0B;YACzC;gBACE,EAAE,EAAE,SAAS;gBACb,IAAI,EAAE,+BAA+B;gBACrC,QAAQ,EAAE,YAAY;gBACtB,QAAQ,EAAE,IAAI;aACf;YACD;gBACE,IAAI,EAAE,+BAA+B;gBACrC,QAAQ,EAAE,YAAY;gBACtB,QAAQ,EAAE,KAAK;aAChB;SACF,CAAC;QACF,mBAAQ,CAAC,oBAAoB,CAAC,QAAQ,GAAG;YACvC,+BAA+B,EAAE,WAAW;SAC7C,CAAC;QAEF,MAAM,MAAM,GAAG,IAAA,8BAAoB,EACjC,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAClD,GAAG,EAAE,CAAC,CAAC;YACL,GAAG,EAAE,IAAA,yBAAqB,EAAC,+BAA+B,CAAC;YAC3D,QAAQ,EAAE,IAAA,wBAAoB,EAC5B,+BAA+B,EAC/B,SAAS,CACV;SACF,CAAC,CACH,CAAC;QAEF,IAAA,aAAM,EAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC9C,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const chai_1 = require("chai");
4
+ const __1 = require("..");
5
+ const modules_1 = require("../modules");
6
+ function observeContext() {
7
+ const context = (0, modules_1.GetModuleContext)();
8
+ return {
9
+ module: context?.module,
10
+ owner: context?.owner,
11
+ provider: context?.provider,
12
+ };
13
+ }
14
+ describe("provider callback context", () => {
15
+ it("restores async provider context across awaits and nested calls", async () => {
16
+ const nested = new __1.AsyncProxy("context.nested");
17
+ const outer = new __1.AsyncProxy("context.outer");
18
+ const nestedIdentity = (0, __1.GetInterfaceProxyIdentity)(nested);
19
+ const outerIdentity = (0, __1.GetInterfaceProxyIdentity)(outer);
20
+ (0, modules_1.RunWithModuleContext)({ module: "nested-owner", owner: "nested#1", provider: "nested" }, () => nested.onCall(() => `${observeContext().owner}:value`));
21
+ (0, modules_1.RunWithModuleContext)({
22
+ module: "provider-owner",
23
+ owner: "provider-owner#1",
24
+ provider: "provider-a",
25
+ providerRoutes: { [nestedIdentity]: "nested" },
26
+ }, () => outer.onCall(async () => {
27
+ const beforeAwait = observeContext();
28
+ await Promise.resolve();
29
+ const afterAwait = observeContext();
30
+ (0, chai_1.expect)(await nested.call()).to.equal("nested#1:value");
31
+ return [beforeAwait, afterAwait, observeContext()];
32
+ }));
33
+ const observations = await (0, modules_1.RunWithModuleContext)({
34
+ module: "consumer",
35
+ owner: "consumer#1",
36
+ providerRoutes: { [outerIdentity]: "provider-a" },
37
+ }, () => outer.call());
38
+ (0, chai_1.expect)(observations).to.deep.equal(Array.from({ length: 3 }, () => ({
39
+ module: "provider-owner",
40
+ owner: "provider-owner#1",
41
+ provider: "provider-a",
42
+ })));
43
+ });
44
+ it("restores registering context for replay, register and unregister", () => {
45
+ const proxy = new __1.RegisteringProxy("context.registering");
46
+ const identity = (0, __1.GetInterfaceProxyIdentity)(proxy);
47
+ const observations = [];
48
+ (0, modules_1.RunWithModuleContext)({ module: "consumer", owner: "consumer#1" }, () => {
49
+ proxy.register("queued");
50
+ });
51
+ (0, modules_1.RunWithModuleContext)({ module: "provider-owner", owner: "provider#1", provider: "provider" }, () => {
52
+ proxy.onHandlers((id) => observations.push({
53
+ operation: `register:${id}`,
54
+ context: observeContext(),
55
+ }), (id) => observations.push({
56
+ operation: `unregister:${id}`,
57
+ context: observeContext(),
58
+ }));
59
+ });
60
+ (0, modules_1.RunWithModuleContext)({
61
+ module: "consumer",
62
+ owner: "consumer#1",
63
+ providerRoutes: { [identity]: "provider" },
64
+ }, () => {
65
+ proxy.register("direct");
66
+ proxy.unregister("queued");
67
+ proxy.unregister("direct");
68
+ });
69
+ (0, chai_1.expect)(observations.map(({ operation }) => operation)).to.deep.equal([
70
+ "register:queued",
71
+ "register:direct",
72
+ "unregister:queued",
73
+ "unregister:direct",
74
+ ]);
75
+ (0, chai_1.expect)(observations.map(({ context }) => context)).to.deep.equal(Array.from({ length: 4 }, () => ({
76
+ module: "provider-owner",
77
+ owner: "provider#1",
78
+ provider: "provider",
79
+ })));
80
+ });
81
+ it("preserves synchronous registering callback throws", () => {
82
+ const proxy = new __1.RegisteringProxy("context.registering-throw");
83
+ const failure = new Error("register failed");
84
+ (0, modules_1.RunWithModuleContext)({ module: "provider", owner: "provider-throw#1", provider: "provider" }, () => proxy.onHandlers(() => {
85
+ (0, chai_1.expect)(observeContext().owner).to.equal("provider-throw#1");
86
+ throw failure;
87
+ }, () => undefined));
88
+ (0, chai_1.expect)(() => proxy.register("item")).to.throw(failure);
89
+ });
90
+ it("rejects callbacks captured from an invalidated owner", async () => {
91
+ const proxy = new __1.AsyncProxy("context.invalidated");
92
+ const identity = (0, __1.GetInterfaceProxyIdentity)(proxy);
93
+ (0, modules_1.RunWithModuleContext)({ module: "provider", owner: "provider-old#1", provider: "provider" }, () => {
94
+ proxy.onCall(() => "stale", true);
95
+ modules_1.Events.ModuleDestroyed.emit("provider");
96
+ });
97
+ const error = await (0, modules_1.RunWithModuleContext)({
98
+ module: "consumer",
99
+ owner: "consumer#1",
100
+ providerRoutes: { [identity]: "provider" },
101
+ }, () => proxy.call().then(() => undefined, (reason) => reason));
102
+ (0, chai_1.expect)(error).to.be.instanceOf(__1.ModuleContextInvalidatedError);
103
+ });
104
+ it("rejects registering handlers captured from an invalidated owner", () => {
105
+ const proxy = new __1.RegisteringProxy("context.invalidated-registering");
106
+ (0, modules_1.RunWithModuleContext)({
107
+ module: "provider",
108
+ owner: "provider-register#old",
109
+ provider: "provider",
110
+ }, () => {
111
+ proxy.onHandlers(() => undefined, () => undefined, true);
112
+ modules_1.Events.ModuleDestroyed.emit("provider");
113
+ });
114
+ (0, chai_1.expect)(() => proxy.register("item")).to.throw(__1.ModuleContextInvalidatedError);
115
+ });
116
+ });
117
+ //# sourceMappingURL=provider-context.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-context.test.js","sourceRoot":"","sources":["../../src/tests/provider-context.test.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ const node_fs_1 = require("node:fs");
5
5
  const node_path_1 = require("node:path");
6
6
  const chai_1 = require("chai");
7
7
  const __1 = require("..");
8
+ const modules_1 = require("../modules");
8
9
  describe("global runtime protocol", () => {
9
10
  let copyPath;
10
11
  afterEach(() => {
@@ -18,16 +19,19 @@ describe("global runtime protocol", () => {
18
19
  copyPath = (0, node_path_1.join)(temporary, "dist");
19
20
  (0, node_fs_1.cpSync)((0, node_path_1.join)(__dirname, ".."), copyPath, { recursive: true });
20
21
  const foreign = require((0, node_path_1.join)(copyPath, "index.js"));
22
+ const foreignModules = require((0, node_path_1.join)(copyPath, "modules.js"));
21
23
  const localProxy = new __1.AsyncProxy("test.cross-copy");
22
24
  const foreignProxy = new foreign.AsyncProxy("test.cross-copy");
23
25
  (0, chai_1.expect)(foreignProxy).not.to.be.instanceOf(__1.AsyncProxy);
24
26
  (0, chai_1.expect)((0, __1.RunWithResponsibleModule)("shared-owner", () => foreign.GetResponsibleModule())).to.equal("shared-owner");
25
- foreign.ImplementInterface({ proxy: localProxy }, { proxy: () => "shared" });
26
- (0, chai_1.expect)(await foreignProxy.call()).to.equal("shared");
27
- (0, __1.ImplementInterface)({ proxy: foreignProxy }, {
28
- proxy: () => "local",
29
- });
30
- (0, chai_1.expect)(await localProxy.call()).to.equal("local");
27
+ (0, modules_1.RunWithModuleContext)({ module: "provider", owner: "provider#copy", provider: "provider" }, () => foreign.ImplementInterface({ proxy: localProxy }, {
28
+ proxy: () => foreignModules.GetModuleContext()?.owner ?? "missing",
29
+ }));
30
+ (0, chai_1.expect)(await (0, modules_1.RunWithModuleContext)({
31
+ module: "consumer",
32
+ owner: "consumer#copy",
33
+ providerRoutes: { "async:test.cross-copy": "provider" },
34
+ }, () => foreignProxy.call())).to.equal("provider#copy");
31
35
  });
32
36
  it("fails clearly when a realm already contains an incompatible protocol", () => {
33
37
  const internalPath = (0, node_path_1.join)(__dirname, "..", "internal.js");
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-protocol.test.js","sourceRoot":"","sources":["../../src/tests/runtime-protocol.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime-protocol.test.js","sourceRoot":"","sources":["../../src/tests/runtime-protocol.test.ts"],"names":[],"mappings":"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"}
package/docs/2.proxies.md CHANGED
@@ -31,6 +31,8 @@ const greeting = await proxy.call("Bob"); // "Hello, Bob!"
31
31
 
32
32
  Attaches a callback function to the proxy. The proxy automatically tracks the calling module and detaches the callback when that module is unloaded. Pass `manualDetach: true` to disable automatic cleanup.
33
33
 
34
+ When attachment occurs inside `RunWithModuleContext`, calls execute in the captured provider context rather than the consumer context. The captured module, owner generation, provider, and provider routes remain available across nested calls and `await`. Calls reject with `ModuleContextInvalidatedError` if the captured owner has been destroyed.
35
+
34
36
  ```ts
35
37
  // Automatic cleanup (default) - detaches when the module unloads
36
38
  proxy.onCall(myHandler);
@@ -127,10 +129,14 @@ routeRegistry.unregister("about");
127
129
 
128
130
  Attaches the register callback. Any previously registered entries replay through this callback immediately. Automatic module-aware detachment applies unless `manualDetach` is `true`.
129
131
 
132
+ Register replay and direct registration execute in the provider context captured when the callback attaches.
133
+
130
134
  ### `onUnregister(callback)`
131
135
 
132
136
  Attaches the unregister callback. This callback is detached at the same time as the register callback.
133
137
 
138
+ Unregistration executes in the context captured when this callback attaches.
139
+
134
140
  ### `register(id, ...args)`
135
141
 
136
142
  Registers an entry with the given identifier. If a register callback is attached, it executes immediately. Otherwise, the entry is stored and replayed when a callback is attached. The calling module is tracked for automatic cleanup.
@@ -208,6 +214,17 @@ const connections = GetInterfaceInstances("database");
208
214
  const primary = GetInterfaceInstance("database", "primary");
209
215
  ```
210
216
 
217
+ Each `InterfaceConnection` includes the provider module ID and whether that provider is selected for unqualified calls:
218
+
219
+ ```ts
220
+ interface InterfaceConnection {
221
+ id?: string;
222
+ path: string;
223
+ provider: string;
224
+ selected: boolean;
225
+ }
226
+ ```
227
+
211
228
  ## `GetResponsibleModule`
212
229
 
213
230
  `GetResponsibleModule` inspects the call stack to determine which module is responsible for the current execution. The proxy classes use this internally for automatic cleanup tracking.
@@ -235,7 +252,7 @@ await RunWithResponsibleModule("my-module", async () => {
235
252
 
236
253
  The module loader should wrap known module-owned entry points, including module evaluation and lifecycle hooks. Existing callers need no migration: outside an explicit context, `GetResponsibleModule` retains stack-based resolution as a backward-compatible fallback. Automatic proxy detachment and registration cleanup use the resolved module in both paths.
237
254
 
238
- Ownership contexts are scoped to a loaded module generation. `ModuleDestroyed` invalidates that generation before cleanup, so detached asynchronous work cannot add stale providers or handlers afterward. Such work receives a `ModuleContextInvalidatedError`. A later invocation for the same module ID creates a fresh generation without reactivating older contexts.
255
+ Ownership contexts are scoped to a loaded module generation. Loaders that can overlap old and replacement instances should use `RunWithModuleContext` and provide a unique `owner` for every generation. `ModuleDestroyed` invalidates and cleans only the active event context's owner while preserving the existing module ID event contract. Detached asynchronous work from that owner then receives a `ModuleContextInvalidatedError`.
239
256
 
240
257
  ## Next steps
241
258
 
package/docs/5.modules.md CHANGED
@@ -35,6 +35,26 @@ loaded -> constructed -> active -> constructed -> loaded
35
35
  | `active` | Module is fully started and providing services |
36
36
  | `unknown` | Module status cannot be determined |
37
37
 
38
+ ## Module execution context
39
+
40
+ `RunWithModuleContext` propagates module ownership and provider routing through synchronous and asynchronous work:
41
+
42
+ ```ts
43
+ import { RunWithModuleContext } from "@antelopejs/interface-core/modules";
44
+
45
+ await RunWithModuleContext(
46
+ {
47
+ module: "search-provider",
48
+ owner: "search-provider#42",
49
+ provider: "search-provider",
50
+ providerRoutes: routes,
51
+ },
52
+ () => constructModule(),
53
+ );
54
+ ```
55
+
56
+ `module` remains the stable public module ID. `owner` identifies one lifecycle generation and should be unique when old and replacement instances can overlap. Providers capture this full context when attaching callbacks. `GetModuleContext` returns the active context and throws `ModuleContextInvalidatedError` after its owner is destroyed.
57
+
38
58
  ## Lifecycle events
39
59
 
40
60
  The `Events` namespace exposes four `EventProxy` instances that fire during module lifecycle transitions.
@@ -81,6 +101,8 @@ Events.ModuleDestroyed.register((moduleId: string) => {
81
101
  });
82
102
  ```
83
103
 
104
+ The event signature remains the module ID. When emitted inside `RunWithModuleContext`, cleanup targets that context's `owner`; without an explicit owner it retains the module-level behavior used by earlier releases.
105
+
84
106
  ## Management functions
85
107
 
86
108
  These functions are declared as `InterfaceFunction` proxies. They are available once the core runtime provides their implementation.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@antelopejs/interface-core",
3
- "version": "0.0.10",
3
+ "version": "0.0.11",
4
4
  "description": "AntelopeJS core interface primitives - proxies, decorators, interface functions, and logging",
5
5
  "keywords": [
6
6
  "antelopejs",
@@ -78,7 +78,8 @@
78
78
  "lint": "biome check .",
79
79
  "prepack": "pnpm run build",
80
80
  "release": "pnpm run lint && pnpm run prepack && release-it",
81
- "test": "pnpm run build && ajs module test ."
81
+ "test": "pnpm run build && ajs module test .",
82
+ "test:package": "node test/package-consumer.mjs"
82
83
  },
83
84
  "antelopeJs": {
84
85
  "test": "src/antelope.test.ts",