@antelopejs/interface-core 0.0.8 → 0.0.10

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 (38) hide show
  1. package/dist/errors.d.ts +20 -0
  2. package/dist/errors.js +33 -1
  3. package/dist/errors.js.map +1 -1
  4. package/dist/index.d.ts +5 -5
  5. package/dist/index.js +92 -25
  6. package/dist/index.js.map +1 -1
  7. package/dist/internal.d.ts +68 -12
  8. package/dist/internal.js +93 -21
  9. package/dist/internal.js.map +1 -1
  10. package/dist/modules.d.ts +6 -0
  11. package/dist/modules.js +58 -25
  12. package/dist/modules.js.map +1 -1
  13. package/dist/proxies.d.ts +58 -119
  14. package/dist/proxies.js +298 -184
  15. package/dist/proxies.js.map +1 -1
  16. package/dist/runtime.js +2 -2
  17. package/dist/runtime.js.map +1 -1
  18. package/dist/tests/implement-interface-validation.test.d.ts +1 -0
  19. package/dist/tests/implement-interface-validation.test.js +45 -0
  20. package/dist/tests/implement-interface-validation.test.js.map +1 -0
  21. package/dist/tests/module-ownership-context.test.d.ts +1 -0
  22. package/dist/tests/module-ownership-context.test.js +215 -0
  23. package/dist/tests/module-ownership-context.test.js.map +1 -0
  24. package/dist/tests/provider-routing.test.d.ts +1 -0
  25. package/dist/tests/provider-routing.test.js +78 -0
  26. package/dist/tests/provider-routing.test.js.map +1 -0
  27. package/dist/tests/queue-and-cleanup.test.d.ts +1 -0
  28. package/dist/tests/queue-and-cleanup.test.js +73 -0
  29. package/dist/tests/queue-and-cleanup.test.js.map +1 -0
  30. package/dist/tests/registering-proxy-replay.test.js +9 -0
  31. package/dist/tests/registering-proxy-replay.test.js.map +1 -1
  32. package/dist/tests/runtime-protocol.test.d.ts +1 -0
  33. package/dist/tests/runtime-protocol.test.js +45 -0
  34. package/dist/tests/runtime-protocol.test.js.map +1 -0
  35. package/dist/tests/runtime.test.js +18 -2
  36. package/dist/tests/runtime.test.js.map +1 -1
  37. package/docs/2.proxies.md +18 -1
  38. package/package.json +1 -1
package/dist/proxies.js CHANGED
@@ -1,228 +1,346 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.EventProxy = exports.RegisteringProxy = exports.AsyncProxy = void 0;
4
+ exports.IsInterfaceProxy = IsInterfaceProxy;
5
+ exports.GetInterfaceProxyIdentity = GetInterfaceProxyIdentity;
6
+ exports.InvalidateResponsibleModule = InvalidateResponsibleModule;
7
+ exports.RunWithResponsibleModule = RunWithResponsibleModule;
4
8
  exports.GetResponsibleModule = GetResponsibleModule;
5
9
  const errors_1 = require("./errors");
6
10
  const internal_1 = require("./internal");
7
11
  const responsible_module_1 = require("./responsible-module");
8
- /**
9
- * Proxy for an asynchronous function.
10
- *
11
- * Queues up calls while unattached, automatically unattaches when the source module is unloaded.
12
- * Provides a mechanism for delayed execution and module-aware function binding.
13
- */
12
+ const PROXY_BRAND = Symbol.for("@antelopejs/interface-core/proxy");
13
+ const DEFAULT_PROVIDER = "@antelopejs/interface-core/default-provider";
14
+ function createIdentity(kind, identity) {
15
+ if (identity) {
16
+ return `${kind}:${identity}`;
17
+ }
18
+ const nextIdentity = internal_1.internal.nextProxyIdentity++;
19
+ return `${kind}:anonymous:${nextIdentity}`;
20
+ }
21
+ function getProxyState(brand, create) {
22
+ const existing = internal_1.internal.proxyStates.get(brand.identity);
23
+ if (existing && existing.kind !== brand.kind) {
24
+ throw new Error(`Proxy identity ${brand.identity} has conflicting kinds.`);
25
+ }
26
+ if (existing) {
27
+ return existing.value;
28
+ }
29
+ const value = create();
30
+ internal_1.internal.proxyStates.set(brand.identity, { kind: brand.kind, value });
31
+ return value;
32
+ }
33
+ function createBrand(kind, identity) {
34
+ return Object.freeze({
35
+ protocol: internal_1.RUNTIME_PROTOCOL_VERSION,
36
+ kind,
37
+ identity: createIdentity(kind, identity),
38
+ });
39
+ }
40
+ function readBrand(value) {
41
+ if ((typeof value !== "object" && typeof value !== "function") || !value) {
42
+ return;
43
+ }
44
+ const brand = value[PROXY_BRAND];
45
+ if (!brand || brand.protocol !== internal_1.RUNTIME_PROTOCOL_VERSION) {
46
+ return;
47
+ }
48
+ return brand;
49
+ }
50
+ /** Returns whether a value implements this runtime's stable proxy protocol. */
51
+ function IsInterfaceProxy(value, kind) {
52
+ const brand = readBrand(value);
53
+ return Boolean(brand && (!kind || brand.kind === kind));
54
+ }
55
+ /** Returns the stable identity used to bind a proxy to a provider route. */
56
+ function GetInterfaceProxyIdentity(value) {
57
+ return readBrand(value)?.identity;
58
+ }
59
+ function getAttachmentRoute(manualDetach) {
60
+ const context = (0, internal_1.getModuleContext)();
61
+ const responsible = manualDetach || context?.module ? undefined : GetResponsibleModule();
62
+ const owner = context?.module ?? responsible ?? DEFAULT_PROVIDER;
63
+ return { owner, provider: context?.provider ?? owner };
64
+ }
65
+ function getRequestedProvider(proxyIdentity) {
66
+ const context = (0, internal_1.getModuleContext)();
67
+ return context?.providerRoutes?.[proxyIdentity] ?? context?.provider;
68
+ }
69
+ function selectProvider(callbacks, proxyIdentity, requested) {
70
+ if (requested) {
71
+ const callback = callbacks.get(requested);
72
+ if (!callback && callbacks.size > 0) {
73
+ throw new errors_1.MissingProviderError(`Interface proxy ${proxyIdentity} has no provider for route ${requested}.`);
74
+ }
75
+ return callback;
76
+ }
77
+ if (callbacks.size <= 1) {
78
+ return callbacks.values().next().value;
79
+ }
80
+ throw new errors_1.AmbiguousProviderError(proxyIdentity, [...callbacks.keys()]);
81
+ }
82
+ function reportRuntimeError(error, operation, proxyIdentity, module, registrationId) {
83
+ internal_1.internal.runtimeErrorReporter?.(error, {
84
+ operation,
85
+ module,
86
+ proxyIdentity,
87
+ registrationId,
88
+ });
89
+ }
90
+ /** @internal */
91
+ function InvalidateResponsibleModule(module) {
92
+ (0, internal_1.invalidateModuleContext)(module);
93
+ }
94
+ /** Runs work with explicit module ownership across asynchronous boundaries. */
95
+ function RunWithResponsibleModule(module, callback) {
96
+ return (0, internal_1.runWithModuleContext)({ module }, callback);
97
+ }
98
+ /** Proxy for an asynchronous interface function. */
14
99
  class AsyncProxy {
15
- callback;
16
- queue = [];
17
- /**
18
- * Attaches a callback to the proxy
19
- *
20
- * Automatically detached if the module calling this function gets unloaded and manualDetach is not set to true.
21
- * When attached, any queued calls will be executed immediately.
22
- *
23
- * @param callback Function to attach
24
- * @param manualDetach Don't detach automatically when module is unloaded
25
- */
100
+ [PROXY_BRAND];
101
+ state;
102
+ constructor(identity) {
103
+ this[PROXY_BRAND] = createBrand("async", identity);
104
+ this.state = getProxyState(this[PROXY_BRAND], () => ({
105
+ callbacks: new Map(),
106
+ queue: [],
107
+ }));
108
+ }
109
+ /** Attaches a provider callback and replays compatible queued calls. */
26
110
  onCall(callback, manualDetach) {
27
- this.callback = callback;
111
+ const route = getAttachmentRoute(manualDetach);
112
+ const lease = { ...route, generation: internal_1.internal.nextLeaseGeneration++ };
113
+ this.state.callbacks.set(route.provider, { callback, ...lease });
28
114
  if (!manualDetach) {
29
- const caller = GetResponsibleModule();
30
- if (caller) {
31
- internal_1.internal.addAsyncProxy(caller, this);
32
- }
33
- }
34
- if (this.queue.length > 0) {
35
- this.queue.forEach(({ args, resolve, reject }) => {
36
- try {
37
- resolve(callback(...args));
38
- }
39
- catch (err) {
40
- reject(err);
41
- }
115
+ internal_1.internal.addAsyncProxy(route.owner, {
116
+ cleanup: () => this.detach(lease),
42
117
  });
43
- this.queue.splice(0, this.queue.length);
44
118
  }
119
+ this.replayQueue(route.provider, callback);
120
+ return lease;
45
121
  }
46
- /**
47
- * Manually detach the callback on this proxy.
48
- */
49
- detach() {
50
- this.callback = undefined;
122
+ /** Detaches one leased provider, or every provider when called without a lease. */
123
+ detach(lease) {
124
+ if (!lease) {
125
+ this.state.callbacks.clear();
126
+ return;
127
+ }
128
+ const current = this.state.callbacks.get(lease.provider);
129
+ if (current?.generation === lease.generation &&
130
+ current.owner === lease.owner) {
131
+ this.state.callbacks.delete(lease.provider);
132
+ }
51
133
  }
52
- /**
53
- * Call the function attached to this proxy.
54
- *
55
- * If a callback has not been attached yet, the call is queued up for later.
56
- */
134
+ /** Calls the provider selected by the current module execution context. */
57
135
  call(...args) {
58
- if (this.callback) {
59
- try {
60
- return Promise.resolve(this.callback(...args));
61
- }
62
- catch (err) {
63
- return Promise.reject(err);
64
- }
136
+ let requested;
137
+ let attachment;
138
+ try {
139
+ requested = getRequestedProvider(this[PROXY_BRAND].identity);
140
+ attachment = selectProvider(this.state.callbacks, this[PROXY_BRAND].identity, requested);
141
+ }
142
+ catch (error) {
143
+ return Promise.reject(error);
144
+ }
145
+ if (attachment) {
146
+ return this.invoke(attachment.callback, args);
65
147
  }
66
148
  if (internal_1.internal.testStubMode) {
67
149
  return Promise.reject(new errors_1.MissingProviderError());
68
150
  }
69
- return new Promise((resolve, reject) => this.queue.push({ args, resolve, reject }));
151
+ if (this.state.queue.length >= internal_1.internal.maxPendingOperations) {
152
+ return Promise.reject(new errors_1.ProviderQueueFullError(this[PROXY_BRAND].identity, internal_1.internal.maxPendingOperations));
153
+ }
154
+ return new Promise((resolve, reject) => {
155
+ this.state.queue.push({ args, provider: requested, resolve, reject });
156
+ });
157
+ }
158
+ invoke(callback, args) {
159
+ try {
160
+ return Promise.resolve(callback(...args));
161
+ }
162
+ catch (error) {
163
+ return Promise.reject(error);
164
+ }
165
+ }
166
+ replayQueue(provider, callback) {
167
+ const remaining = [];
168
+ for (const pending of this.state.queue) {
169
+ if (pending.provider && pending.provider !== provider) {
170
+ remaining.push(pending);
171
+ continue;
172
+ }
173
+ this.invoke(callback, pending.args).then(pending.resolve, pending.reject);
174
+ }
175
+ this.state.queue = remaining;
70
176
  }
71
177
  }
72
178
  exports.AsyncProxy = AsyncProxy;
73
- /**
74
- * Proxy for a pair of register/unregister functions.
75
- *
76
- * Manages registration of handlers and ensures proper cleanup when modules are unloaded.
77
- * This allows for module-aware event registration with automatic cleanup.
78
- */
179
+ /** Proxy for provider-aware register and unregister handlers. */
79
180
  class RegisteringProxy {
80
- registerCallback;
81
- unregisterCallback;
82
- registered = new Map();
83
- /**
84
- * Attaches a register callback to the proxy
85
- *
86
- * Automatically detached if the module calling this function gets unloaded and manualDetach is not set to true.
87
- *
88
- * @param callback Function to attach as the register callback
89
- * @param manualDetach Don't detach automatically
90
- */
181
+ [PROXY_BRAND];
182
+ state;
183
+ constructor(identity) {
184
+ this[PROXY_BRAND] = createBrand("registering", identity);
185
+ this.state = getProxyState(this[PROXY_BRAND], () => ({
186
+ callbacks: new Map(),
187
+ registered: new Map(),
188
+ }));
189
+ internal_1.internal.registeringProxies.add(this);
190
+ }
191
+ /** Attaches a register callback. */
91
192
  onRegister(callback, manualDetach) {
92
- this.registerCallback = callback;
93
- if (!manualDetach) {
94
- const caller = GetResponsibleModule();
95
- if (caller) {
96
- internal_1.internal.addRegisteringProxy(caller, this);
97
- }
98
- }
99
- for (const [id, { args }] of this.registered) {
100
- try {
101
- callback(id, ...args);
102
- }
103
- catch (err) {
104
- // Best-effort replay: one throwing consumer must not strand the others.
105
- if (internal_1.internal.replayErrorReporter) {
106
- internal_1.internal.replayErrorReporter(id, err);
107
- }
108
- }
109
- }
193
+ const route = getAttachmentRoute(manualDetach);
194
+ const current = this.state.callbacks.get(route.provider);
195
+ return this.attachHandlers(callback, current?.unregister, manualDetach, true, route);
110
196
  }
111
- /**
112
- * Attaches an unregister callback to the proxy
113
- *
114
- * Detached at the same time as the register callback.
115
- *
116
- * @param callback Function to attach as the unregister callback
117
- */
197
+ /** Attaches an unregister callback to the current provider route. */
118
198
  onUnregister(callback) {
119
- this.unregisterCallback = callback;
199
+ const context = (0, internal_1.getModuleContext)();
200
+ const requested = context?.provider ?? context?.module;
201
+ 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);
206
+ }
207
+ /** Atomically attaches both registration handlers. */
208
+ onHandlers(register, unregister, manualDetach) {
209
+ return this.attachHandlers(register, unregister, manualDetach);
120
210
  }
121
- /**
122
- * Manually detach the callbacks on this proxy.
123
- */
124
- detach() {
125
- this.registerCallback = undefined;
126
- this.unregisterCallback = undefined;
211
+ /** Detaches one leased provider, or every provider when called without a lease. */
212
+ detach(lease) {
213
+ if (!lease) {
214
+ this.state.callbacks.clear();
215
+ return;
216
+ }
217
+ const current = this.state.callbacks.get(lease.provider);
218
+ if (current?.generation === lease.generation &&
219
+ current.owner === lease.owner) {
220
+ this.state.callbacks.delete(lease.provider);
221
+ }
127
222
  }
128
- /**
129
- * Call the register callback attached to this proxy.
130
- *
131
- * If a callback has not been attached yet, the call is queued up for later.
132
- *
133
- * @param id Unique identifier used to unregister
134
- * @param args Extra arguments
135
- */
223
+ /** Registers an entry with the selected provider or queues it for bootstrap. */
136
224
  register(id, ...args) {
137
- if (!this.registerCallback && internal_1.internal.testStubMode) {
225
+ const requested = getRequestedProvider(this[PROXY_BRAND].identity);
226
+ const callback = selectProvider(this.state.callbacks, this[PROXY_BRAND].identity, requested);
227
+ if (!callback && internal_1.internal.testStubMode) {
138
228
  throw new errors_1.MissingProviderError();
139
229
  }
140
- const module = GetResponsibleModule();
141
- this.registered.set(id, { module, args });
142
- if (this.registerCallback) {
143
- this.registerCallback(id, ...args);
230
+ if (!callback &&
231
+ !this.state.registered.has(id) &&
232
+ this.state.registered.size >= internal_1.internal.maxPendingOperations) {
233
+ throw new errors_1.ProviderQueueFullError(this[PROXY_BRAND].identity, internal_1.internal.maxPendingOperations);
144
234
  }
235
+ this.state.registered.set(id, {
236
+ module: GetResponsibleModule(),
237
+ provider: requested ?? callback?.provider,
238
+ args,
239
+ });
240
+ callback?.register?.(id, ...args);
145
241
  }
146
- /**
147
- * Call the unregister callback attached to this proxy.
148
- *
149
- * @param id Unique identifier to unregister
150
- */
242
+ /** Unregisters an entry from the provider that accepted it. */
151
243
  unregister(id) {
152
- if (this.registered.has(id)) {
153
- if (this.unregisterCallback) {
154
- this.unregisterCallback(id);
244
+ const entry = this.state.registered.get(id);
245
+ if (!entry) {
246
+ return;
247
+ }
248
+ const callback = selectProvider(this.state.callbacks, this[PROXY_BRAND].identity, entry.provider);
249
+ try {
250
+ callback?.unregister?.(id);
251
+ }
252
+ finally {
253
+ this.state.registered.delete(id);
254
+ }
255
+ }
256
+ /** Unregisters every entry owned by a destroyed module. */
257
+ unregisterModule(module) {
258
+ for (const [id, entry] of this.state.registered) {
259
+ if (entry.module !== module) {
260
+ continue;
261
+ }
262
+ try {
263
+ this.unregister(id);
264
+ }
265
+ catch (error) {
266
+ reportRuntimeError(error, "unregister", this[PROXY_BRAND].identity, module, id);
267
+ }
268
+ finally {
269
+ this.state.registered.delete(id);
155
270
  }
156
- this.registered.delete(id);
157
271
  }
158
272
  }
159
- /**
160
- * Unregister all entries created by the given module
161
- * @internal
162
- *
163
- * @param mod Module ID
164
- */
165
- unregisterModule(mod) {
166
- for (const [id, { module }] of this.registered) {
167
- if (module === mod) {
168
- if (this.unregisterCallback) {
169
- this.unregisterCallback(id);
170
- }
171
- this.registered.delete(id);
273
+ attachHandlers(register, unregister, manualDetach, shouldReplay = true, attachmentRoute) {
274
+ const route = attachmentRoute ?? getAttachmentRoute(manualDetach);
275
+ const lease = { ...route, generation: internal_1.internal.nextLeaseGeneration++ };
276
+ this.state.callbacks.set(route.provider, {
277
+ register,
278
+ unregister,
279
+ manualDetach: Boolean(manualDetach),
280
+ ...lease,
281
+ });
282
+ if (!manualDetach) {
283
+ internal_1.internal.addRegisteringProxy(route.owner, {
284
+ cleanup: () => this.detach(lease),
285
+ unregisterModule: (module) => this.unregisterModule(module),
286
+ });
287
+ }
288
+ if (register && shouldReplay) {
289
+ this.replayRegistrations(route.provider, register);
290
+ }
291
+ return lease;
292
+ }
293
+ replayRegistrations(provider, callback) {
294
+ for (const [id, entry] of this.state.registered) {
295
+ if (entry.provider && entry.provider !== provider) {
296
+ continue;
297
+ }
298
+ try {
299
+ callback(id, ...entry.args);
300
+ entry.provider = provider;
301
+ }
302
+ catch (error) {
303
+ internal_1.internal.replayErrorReporter?.(id, error);
304
+ reportRuntimeError(error, "register-replay", this[PROXY_BRAND].identity, entry.module, id);
172
305
  }
173
306
  }
174
307
  }
175
308
  }
176
309
  exports.RegisteringProxy = RegisteringProxy;
177
- /**
178
- * Event handler list that automatically removes handlers from unloaded modules.
179
- *
180
- * Provides a module-aware event system that cleans up event handlers when modules are unloaded,
181
- * preventing memory leaks and ensuring proper modularity.
182
- */
310
+ /** Module-aware event handler collection. */
183
311
  class EventProxy {
184
- registered = [];
185
- constructor() {
186
- internal_1.internal.knownEvents.push(this);
312
+ [PROXY_BRAND];
313
+ state;
314
+ constructor(identity) {
315
+ this[PROXY_BRAND] = createBrand("event", identity);
316
+ this.state = getProxyState(this[PROXY_BRAND], () => ({ registered: [] }));
317
+ internal_1.internal.knownEvents.add(this);
187
318
  }
188
- /**
189
- * Call all the event handlers with the specified arguments.
190
- *
191
- * @param args Arguments
192
- */
319
+ /** Emits to every handler, reporting failures without aborting later handlers. */
193
320
  emit(...args) {
194
- for (const { func } of this.registered) {
195
- func(...args);
321
+ for (const { func, module } of this.state.registered) {
322
+ try {
323
+ func(...args);
324
+ }
325
+ catch (error) {
326
+ reportRuntimeError(error, "event-emit", this[PROXY_BRAND].identity, module);
327
+ }
196
328
  }
197
329
  }
198
- /**
199
- * Register a new handler for this event.
200
- *
201
- * @param func Handler
202
- */
330
+ /** Registers a handler once. */
203
331
  register(func) {
204
- if (this.registered.some((existing) => existing.func === func)) {
332
+ if (this.state.registered.some((existing) => existing.func === func)) {
205
333
  return;
206
334
  }
207
- const module = GetResponsibleModule();
208
- this.registered.push({ module, func });
335
+ this.state.registered.push({ module: GetResponsibleModule(), func });
209
336
  }
210
- /**
211
- * Unregister a handler on this event.
212
- *
213
- * @param fn The handler that was passed to {@link register}
214
- */
337
+ /** Unregisters a handler. */
215
338
  unregister(fn) {
216
- this.registered = this.registered.filter(({ func }) => func !== fn);
339
+ this.state.registered = this.state.registered.filter(({ func }) => func !== fn);
217
340
  }
218
- /**
219
- * Unregister all handlers created by the given module.
220
- * @internal
221
- *
222
- * @param mod Module ID
223
- */
224
- unregisterModule(mod) {
225
- this.registered = this.registered.filter(({ module }) => module !== mod);
341
+ /** Unregisters handlers owned by a destroyed module. */
342
+ unregisterModule(module) {
343
+ this.state.registered = this.state.registered.filter((entry) => entry.module !== module);
226
344
  }
227
345
  }
228
346
  exports.EventProxy = EventProxy;
@@ -231,23 +349,19 @@ function captureCallStack(startFrame = 0) {
231
349
  const oldLimit = Error.stackTraceLimit;
232
350
  Error.stackTraceLimit = Infinity;
233
351
  Error.prepareStackTrace = (_, trace) => trace;
234
- const errObj = {};
235
- Error.captureStackTrace(errObj, GetResponsibleModule);
236
- const trace = errObj.stack;
352
+ const error = {};
353
+ Error.captureStackTrace(error, GetResponsibleModule);
354
+ const trace = error.stack;
237
355
  Error.prepareStackTrace = oldHandler;
238
356
  Error.stackTraceLimit = oldLimit;
239
357
  return trace.slice(startFrame);
240
358
  }
241
- /**
242
- * Gets the responsible module for the current execution context.
243
- *
244
- * Determines which module is responsible for the current code execution by analyzing the call stack.
245
- * This is used for automatic proxy detachment and event handler cleanup.
246
- *
247
- * @param startFrame The starting frame in the stack trace to analyze
248
- * @returns The module ID or undefined if no module is found
249
- */
359
+ /** Gets the responsible module from explicit async context or the call stack. */
250
360
  function GetResponsibleModule(startFrame = 0) {
361
+ const contextModule = (0, internal_1.getModuleContext)()?.module;
362
+ if (contextModule) {
363
+ return contextModule;
364
+ }
251
365
  const trace = captureCallStack(startFrame);
252
366
  const responsible = (0, responsible_module_1.findResponsibleFile)(trace);
253
367
  if (responsible.module) {
@@ -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":"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"}
package/dist/runtime.js CHANGED
@@ -11,7 +11,7 @@ exports.DEV_REGISTRY_PATH = ".antelope/dev.json";
11
11
  *
12
12
  * @returns Runtime information including dev mode, project path and environment
13
13
  */
14
- exports.GetRuntimeInfo = (0, _1.InterfaceFunction)();
14
+ exports.GetRuntimeInfo = (0, _1.InterfaceFunction)("runtime.GetRuntimeInfo");
15
15
  /**
16
16
  * Register a development server and the endpoints it is listening on.
17
17
  *
@@ -22,5 +22,5 @@ exports.GetRuntimeInfo = (0, _1.InterfaceFunction)();
22
22
  * @param name Unique name of the server (e.g. 'api')
23
23
  * @param endpoints Endpoints the server is listening on
24
24
  */
25
- exports.RegisterDevServer = (0, _1.InterfaceFunction)();
25
+ exports.RegisterDevServer = (0, _1.InterfaceFunction)("runtime.RegisterDevServer");
26
26
  //# sourceMappingURL=runtime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":";;;AAAA,wBAAsC;AA4EtC;;GAEG;AACU,QAAA,iBAAiB,GAAG,oBAAoB,CAAC;AAEtD;;;;GAIG;AACU,QAAA,cAAc,GAAG,IAAA,oBAAiB,GAAqB,CAAC;AAErE;;;;;;;;;GASG;AACU,QAAA,iBAAiB,GAC5B,IAAA,oBAAiB,GAA0D,CAAC"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":";;;AAAA,wBAAsC;AA4EtC;;GAEG;AACU,QAAA,iBAAiB,GAAG,oBAAoB,CAAC;AAEtD;;;;GAIG;AACU,QAAA,cAAc,GAAG,IAAA,oBAAiB,EAC7C,wBAAwB,CACzB,CAAC;AAEF;;;;;;;;;GASG;AACU,QAAA,iBAAiB,GAAG,IAAA,oBAAiB,EAEhD,2BAA2B,CAAC,CAAC"}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const node_vm_1 = require("node:vm");
4
+ const chai_1 = require("chai");
5
+ const __1 = require("..");
6
+ const internal_1 = require("../internal");
7
+ describe("ImplementInterface validation", () => {
8
+ afterEach(() => {
9
+ internal_1.internal.testStubMode = false;
10
+ });
11
+ it("validates every handler before attaching any of them", async () => {
12
+ const first = new __1.AsyncProxy("test.atomic.first");
13
+ const second = new __1.AsyncProxy("test.atomic.second");
14
+ (0, chai_1.expect)(() => (0, __1.ImplementInterface)({ first, second }, {
15
+ first: () => "attached",
16
+ })).to.throw("implementation.second");
17
+ internal_1.internal.testStubMode = true;
18
+ const error = await first.call().then(() => undefined, (reason) => reason);
19
+ (0, chai_1.expect)(error).to.be.instanceOf(Error);
20
+ });
21
+ it("rejects malformed registering handlers atomically", () => {
22
+ const proxy = new __1.RegisteringProxy("test.malformed-registering");
23
+ (0, chai_1.expect)(() => (0, __1.ImplementInterface)({ proxy }, {
24
+ proxy: { register: () => undefined },
25
+ })).to.throw("implementation.proxy.unregister");
26
+ });
27
+ it("rejects cycles in declarations and implementations", () => {
28
+ const declaration = {};
29
+ declaration.self = declaration;
30
+ (0, chai_1.expect)(() => (0, __1.ImplementInterface)(declaration, {})).to.throw("declaration contains a cycle");
31
+ const implementation = {};
32
+ implementation.self = implementation;
33
+ (0, chai_1.expect)(() => (0, __1.ImplementInterface)({}, implementation)).to.throw("implementation contains a cycle");
34
+ });
35
+ it("awaits thenables and promises created in another realm", async () => {
36
+ const proxy = new __1.AsyncProxy("test.cross-realm-promise");
37
+ const declaration = (0, node_vm_1.runInNewContext)("Promise.resolve(value)", {
38
+ value: { proxy },
39
+ });
40
+ const implementation = (0, node_vm_1.runInNewContext)("({ then(resolve) { resolve(value); } })", { value: { proxy: () => "resolved" } });
41
+ await (0, __1.ImplementInterface)(declaration, implementation);
42
+ (0, chai_1.expect)(await proxy.call()).to.equal("resolved");
43
+ });
44
+ });
45
+ //# sourceMappingURL=implement-interface-validation.test.js.map