ihsm 0.0.26 → 0.1.21

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 (103) hide show
  1. package/README.md +105 -113
  2. package/lib/cjs/index.d.ts +8 -1394
  3. package/lib/cjs/index.js +65 -764
  4. package/lib/cjs/index.js.map +1 -1
  5. package/lib/cjs/internal/console-instrumentation.d.ts +34 -0
  6. package/lib/cjs/internal/console-instrumentation.js +71 -0
  7. package/lib/cjs/internal/console-instrumentation.js.map +1 -0
  8. package/lib/cjs/internal/identity.d.ts +16 -0
  9. package/lib/cjs/internal/identity.js +170 -0
  10. package/lib/cjs/internal/identity.js.map +1 -0
  11. package/lib/cjs/internal/instrumentation.d.ts +47 -0
  12. package/lib/cjs/internal/instrumentation.js +201 -0
  13. package/lib/cjs/internal/instrumentation.js.map +1 -0
  14. package/lib/cjs/internal/runtime.d.ts +376 -0
  15. package/lib/cjs/internal/runtime.js +2530 -0
  16. package/lib/cjs/internal/runtime.js.map +1 -0
  17. package/lib/cjs/internal/types.d.ts +515 -0
  18. package/lib/cjs/internal/types.js +9 -0
  19. package/lib/cjs/internal/types.js.map +1 -0
  20. package/lib/cjs/test-only.d.ts +5 -0
  21. package/lib/cjs/test-only.js +21 -0
  22. package/lib/cjs/test-only.js.map +1 -0
  23. package/lib/cjs/testing.d.ts +120 -88
  24. package/lib/cjs/testing.js +126 -38
  25. package/lib/cjs/testing.js.map +1 -1
  26. package/lib/cjs/transition-routines.d.ts +3 -0
  27. package/lib/cjs/transition-routines.js +11 -0
  28. package/lib/cjs/transition-routines.js.map +1 -0
  29. package/lib/cjs/types.d.ts +5 -0
  30. package/lib/cjs/{internal/defs.private.js → types.js} +1 -1
  31. package/lib/cjs/types.js.map +1 -0
  32. package/lib/esm/index.d.ts +8 -1394
  33. package/lib/esm/index.js +5 -742
  34. package/lib/esm/index.js.map +1 -1
  35. package/lib/esm/internal/console-instrumentation.d.ts +34 -0
  36. package/lib/esm/internal/console-instrumentation.js +68 -0
  37. package/lib/esm/internal/console-instrumentation.js.map +1 -0
  38. package/lib/esm/internal/identity.d.ts +16 -0
  39. package/lib/esm/internal/identity.js +159 -0
  40. package/lib/esm/internal/identity.js.map +1 -0
  41. package/lib/esm/internal/instrumentation.d.ts +47 -0
  42. package/lib/esm/internal/instrumentation.js +178 -0
  43. package/lib/esm/internal/instrumentation.js.map +1 -0
  44. package/lib/esm/internal/runtime.d.ts +376 -0
  45. package/lib/esm/internal/runtime.js +2462 -0
  46. package/lib/esm/internal/runtime.js.map +1 -0
  47. package/lib/esm/internal/types.d.ts +515 -0
  48. package/lib/esm/internal/types.js +6 -0
  49. package/lib/esm/internal/types.js.map +1 -0
  50. package/lib/esm/test-only.d.ts +5 -0
  51. package/lib/esm/test-only.js +15 -0
  52. package/lib/esm/test-only.js.map +1 -0
  53. package/lib/esm/testing.d.ts +120 -88
  54. package/lib/esm/testing.js +125 -38
  55. package/lib/esm/testing.js.map +1 -1
  56. package/lib/esm/transition-routines.d.ts +3 -0
  57. package/lib/esm/transition-routines.js +3 -0
  58. package/lib/esm/transition-routines.js.map +1 -0
  59. package/lib/esm/types.d.ts +5 -0
  60. package/lib/esm/types.js +2 -0
  61. package/lib/esm/types.js.map +1 -0
  62. package/package.json +22 -4
  63. package/lib/cjs/internal/defs.private.d.ts +0 -41
  64. package/lib/cjs/internal/defs.private.js.map +0 -1
  65. package/lib/cjs/internal/dispatch.debug.d.ts +0 -4
  66. package/lib/cjs/internal/dispatch.debug.js +0 -332
  67. package/lib/cjs/internal/dispatch.debug.js.map +0 -1
  68. package/lib/cjs/internal/dispatch.production.d.ts +0 -6
  69. package/lib/cjs/internal/dispatch.production.js +0 -241
  70. package/lib/cjs/internal/dispatch.production.js.map +0 -1
  71. package/lib/cjs/internal/dispatch.trace.d.ts +0 -4
  72. package/lib/cjs/internal/dispatch.trace.js +0 -418
  73. package/lib/cjs/internal/dispatch.trace.js.map +0 -1
  74. package/lib/cjs/internal/hsm.d.ts +0 -60
  75. package/lib/cjs/internal/hsm.js +0 -215
  76. package/lib/cjs/internal/hsm.js.map +0 -1
  77. package/lib/cjs/internal/lookup.d.ts +0 -15
  78. package/lib/cjs/internal/lookup.js +0 -32
  79. package/lib/cjs/internal/lookup.js.map +0 -1
  80. package/lib/cjs/internal/utils.d.ts +0 -26
  81. package/lib/cjs/internal/utils.js +0 -63
  82. package/lib/cjs/internal/utils.js.map +0 -1
  83. package/lib/esm/internal/defs.private.d.ts +0 -41
  84. package/lib/esm/internal/defs.private.js +0 -2
  85. package/lib/esm/internal/defs.private.js.map +0 -1
  86. package/lib/esm/internal/dispatch.debug.d.ts +0 -4
  87. package/lib/esm/internal/dispatch.debug.js +0 -328
  88. package/lib/esm/internal/dispatch.debug.js.map +0 -1
  89. package/lib/esm/internal/dispatch.production.d.ts +0 -6
  90. package/lib/esm/internal/dispatch.production.js +0 -237
  91. package/lib/esm/internal/dispatch.production.js.map +0 -1
  92. package/lib/esm/internal/dispatch.trace.d.ts +0 -4
  93. package/lib/esm/internal/dispatch.trace.js +0 -414
  94. package/lib/esm/internal/dispatch.trace.js.map +0 -1
  95. package/lib/esm/internal/hsm.d.ts +0 -60
  96. package/lib/esm/internal/hsm.js +0 -211
  97. package/lib/esm/internal/hsm.js.map +0 -1
  98. package/lib/esm/internal/lookup.d.ts +0 -15
  99. package/lib/esm/internal/lookup.js +0 -29
  100. package/lib/esm/internal/lookup.js.map +0 -1
  101. package/lib/esm/internal/utils.d.ts +0 -26
  102. package/lib/esm/internal/utils.js +0 -52
  103. package/lib/esm/internal/utils.js.map +0 -1
@@ -6,7 +6,7 @@
6
6
  * into production code that only imports `ihsm`. Import test helpers from `ihsm/testing`:
7
7
  *
8
8
  * ```ts
9
- * import { makeHsm, TopState } from 'ihsm'; // production code
9
+ * import { makeActor, TopState } from 'ihsm'; // production code
10
10
  * import { makeTestActor, mock, TestPort } from 'ihsm/testing'; // tests only
11
11
  * ```
12
12
  *
@@ -15,42 +15,113 @@
15
15
  *
16
16
  * @packageDocumentation
17
17
  */
18
- import { Any, ActorOptions, BasePort, Disjoint, Dispatch, Disposable, EventObserver, Hsm, MachinePort, PortHandle, RandomService, TimerHandle, TopStateArg, TracedMessage } from './index';
18
+ import { Port } from './internal/runtime';
19
+ import type { Any, Disposable, EventObserver, MachinePortInput, TracedMessage, ActorOptions, ActorConfig, ActorContextOf, ActorConfigOf, DomainPortOf, ChildActor, TestHsm, TopStateArg, ValidatedTopStateArg } from './internal/types';
19
20
  export * from './index';
20
21
  /**
21
- * Full-access view returned by {@link makeTestActor} for **deterministic testing**.
22
+ * Full-access test actor returned by {@link makeTestActor} for **deterministic testing**.
22
23
  *
23
- * Exposes the merged {@link Dispatch} protocol so a test can drive internal events
24
- * (`onSpawn`, `onExit`, …) directly without a live port — **plus** typed access to the
25
- * machine's `port` for asserting outbound calls or pushing observations.
24
+ * Same faceted surface as {@link ChildActor} (`notify`, `notifyNow`, `call`, `hsm`), with
25
+ * `hsm.port` and `hsm.subscribe` for test instrumentation.
26
26
  *
27
- * @typeParam Context - Domain context
28
- * @typeParam Protocol - Public protocol
29
- * @typeParam InternalProtocol - Internal (port-driven) protocol
30
- * @typeParam P - Port type
27
+ * @typeParam C - Machine config bag (plain interface satisfying {@link ActorConfig})
31
28
  *
32
29
  * @category State machine
33
30
  */
34
- export type TestActor<Context = Any, Protocol extends {} | undefined = undefined, InternalProtocol extends {} = {}, P = undefined> = Hsm<Context, Dispatch<Protocol, InternalProtocol>> & {
35
- readonly port: P;
31
+ export type TestActor<C extends ActorConfig = ActorConfig> = ChildActor<C> & {
32
+ ctx: ActorContextOf<C>;
33
+ hsm: TestHsm<C>;
34
+ };
35
+ /**
36
+ * An actor-like handle that can be drained by {@link settleAll}.
37
+ *
38
+ * Any actor exposing `hsm.sync()` is compatible. When `hsm.subscribe()` is also available
39
+ * (e.g. {@link TestActor}), {@link settleAll} can detect quiescence and return `settled: true`.
40
+ *
41
+ * @category Testing
42
+ */
43
+ export type SettlingActor = {
44
+ hsm: {
45
+ sync(): Promise<void>;
46
+ subscribe?: (observer: EventObserver) => Disposable;
47
+ };
48
+ };
49
+ /**
50
+ * Options for {@link settleAll}.
51
+ *
52
+ * @category Testing
53
+ */
54
+ export interface SettleAllOptions {
36
55
  /**
37
- * Observe **every** event as it is posted through this machine — a capability unique to the
38
- * test surface (it is intentionally absent from {@link Actor} / {@link Hsm}).
56
+ * Hard cap on drain rounds.
39
57
  *
40
- * The observer fires synchronously at post time with the event name and payload, capturing
41
- * client posts, handler self-posts, and port-driven internal events alike. Wire it to
42
- * {@link TestPort.record} when you want a golden trace on the port under test.
58
+ * Each round calls `sync()` on all actors once.
59
+ * @defaultValue `8`
60
+ */
61
+ readonly maxRounds?: number;
62
+ /**
63
+ * Number of consecutive no-event rounds required to declare quiescence.
43
64
  *
44
- * @param observer - Callback receiving each {@link TracedMessage}
45
- * @returns A {@link Disposable} that stops the observation
65
+ * Applies only when all actors expose `hsm.subscribe()`.
66
+ * @defaultValue `1`
46
67
  */
47
- subscribe(observer: EventObserver): Disposable;
48
- };
49
- export declare class TestPort<T = Any> extends BasePort<T> implements RandomService {
68
+ readonly idleRounds?: number;
69
+ /**
70
+ * Microtask turns awaited after each round.
71
+ *
72
+ * Helps flush promise chains that enqueue follow-up work.
73
+ * @defaultValue `1`
74
+ */
75
+ readonly microtaskTurns?: number;
76
+ }
77
+ /**
78
+ * Result returned by {@link settleAll}.
79
+ *
80
+ * @category Testing
81
+ */
82
+ export interface SettleAllResult {
83
+ /** Number of rounds that were executed. */
84
+ readonly rounds: number;
85
+ /**
86
+ * True when observed quiescence was reached.
87
+ *
88
+ * False means either:
89
+ * - at least one actor lacked `hsm.subscribe()` (settlement is unobservable), or
90
+ * - `maxRounds` was hit before enough idle rounds were observed.
91
+ */
92
+ readonly settled: boolean;
93
+ }
94
+ /**
95
+ * Drain a set of actors until quiescence is observed, or until `maxRounds` is reached.
96
+ *
97
+ * This is a **testing** helper: it coordinates repeated `sync()` calls across a small actor system
98
+ * and reports whether a stable idle round was observed.
99
+ *
100
+ * - If every actor exposes `hsm.subscribe()` (e.g. via {@link makeTestActor}), quiescence is
101
+ * detected by observing no emitted events for `idleRounds` consecutive rounds.
102
+ * - If any actor lacks `hsm.subscribe()`, settlement cannot be observed reliably; the helper still
103
+ * runs `maxRounds` drain rounds and returns `{ settled: false }`.
104
+ *
105
+ * `options` is the last argument when provided.
106
+ *
107
+ * @example
108
+ * ```ts
109
+ * const a = makeTestActor(A, ctxA, new TestPort());
110
+ * const b = makeTestActor(B, ctxB, new TestPort());
111
+ * a.notify.go();
112
+ * const { settled } = await settleAll(a, b);
113
+ * expect(settled).equals(true);
114
+ * ```
115
+ *
116
+ * @category Testing
117
+ */
118
+ export declare function settleAll(...actors: SettlingActor[]): Promise<SettleAllResult>;
119
+ export declare function settleAll(...args: [...SettlingActor[], SettleAllOptions]): Promise<SettleAllResult>;
120
+ export declare class TestPort<T extends TopStateArg = TopStateArg> extends Port<T> {
50
121
  private readonly _messages;
51
122
  private readonly _preloads;
52
123
  private _now;
53
- private _timerSeq;
124
+ private _virtualTimerId;
54
125
  private readonly _timers;
55
126
  private readonly _cancelled;
56
127
  private readonly _randomQueue;
@@ -67,6 +138,13 @@ export declare class TestPort<T = Any> extends BasePort<T> implements RandomServ
67
138
  * @param payload - Optional values associated with the entry
68
139
  */
69
140
  record(event: string, ...payload: unknown[]): void;
141
+ /**
142
+ * Push an **inbound** internal notification into the bound actor (`port.actor.onData(…)`).
143
+ *
144
+ * Convenience for deterministic tests — equivalent to calling the generated method on
145
+ * {@link Port.actor} after the factory has wired it.
146
+ */
147
+ send(event: string, ...payload: unknown[]): void;
70
148
  private _slot;
71
149
  /** @internal Set the persistent implementation for a stubbed method (used by `method.default`). */
72
150
  _stubDefault(name: string, impl: (...args: unknown[]) => unknown): void;
@@ -104,13 +182,13 @@ export declare class TestPort<T = Any> extends BasePort<T> implements RandomServ
104
182
  clear(): void;
105
183
  private _sortTimers;
106
184
  /** @inheritdoc Port.setTimeout — backed by the virtual clock; fire with {@link TestPort.advance | advance}. */
107
- setTimeout(callback: () => void, millis?: number): TimerHandle;
185
+ setTimeout(callback: () => void, millis?: number): number;
108
186
  /** @inheritdoc Port.clearTimeout */
109
- clearTimeout(id: TimerHandle | undefined): void;
187
+ clearTimeout(id: number | undefined): void;
110
188
  /** @inheritdoc Port.setInterval — backed by the virtual clock; fire with {@link TestPort.advance | advance}. */
111
- setInterval(callback: () => void, millis?: number): TimerHandle;
189
+ setInterval(callback: () => void, millis?: number): number;
112
190
  /** @inheritdoc Port.clearInterval */
113
- clearInterval(id: TimerHandle | undefined): void;
191
+ clearInterval(id: number | undefined): void;
114
192
  /**
115
193
  * Advance the virtual clock by `millis`, firing every timer whose deadline is reached, in
116
194
  * deadline order. Timers scheduled by a fired callback within the same window are **not** run
@@ -165,8 +243,8 @@ export declare class PreloadError extends Error {
165
243
  * - `calls` — the live, typed list of argument tuples this method was called with (`Parameters<F>[]`).
166
244
  *
167
245
  * Both `default` and `once` take a closure with the **same parameters and return type** as the port
168
- * method, so scripts stay type-safe. Pushing internal events *inward* remains the separate
169
- * {@link BasePort.send | send} channel.
246
+ * method, so scripts stay type-safe. Pushing inbound observations uses
247
+ * {@link TestPort.send | send} on the port.
170
248
  *
171
249
  * @typeParam A - The method's argument tuple (`Parameters<F>`)
172
250
  * @typeParam R - The method's return type (`ReturnType<F>`)
@@ -186,75 +264,29 @@ export interface Stubbed<A extends unknown[], R> {
186
264
  }
187
265
  /**
188
266
  * The fully-wired mock type returned by {@link makeTestPort}: the mock class `P` itself, with each
189
- * **port method** (inferred from the machine's {@link TopState} via {@link MachinePort}) upgraded to
267
+ * **port method** (inferred from the machine's {@link TopState} via {@link DomainPortOf}) upgraded to
190
268
  * a scriptable, introspectable {@link Stubbed} method.
191
269
  *
192
270
  * @typeParam P - The mock port class instance type
193
- * @typeParam T - The machine's root {@link TopState} subclass
271
+ * @typeParam C - The machine {@link ActorConfig} bag (inferred from the port's {@link TestPort} type param)
194
272
  *
195
273
  * @category Testing
196
274
  */
197
- export type Mock<P, T> = P & {
198
- [K in keyof MachinePort<T>]: MachinePort<T>[K] extends (...args: infer A) => infer R ? Stubbed<A, R> : MachinePort<T>[K];
275
+ export type Mock<P, C extends ActorConfig = ActorConfig> = P & {
276
+ [K in keyof DomainPortOf<C>]: DomainPortOf<C>[K] extends (...args: infer A) => infer R ? Stubbed<A, R> : DomainPortOf<C>[K];
199
277
  };
200
- /**
201
- * Class decorator that turns an **abstract** {@link TestPort} subclass into a preloadable mock.
202
- *
203
- * Declare each port method as an `abstract` member whose **signature matches the real port**, and
204
- * decorate the class with `@`{@link mock}. Instances (built with {@link makeTestPort}) then expose
205
- * every abstract method as a scriptable {@link Stubbed} method: it records each call and returns
206
- * whatever the test scripted with `method.default(...)` / `method.once(...)`. You never write a
207
- * method body — the behavior lives in the test, so one mock serves many scenarios.
208
- *
209
- * Concrete members (public fields holding device state, helper methods) are left untouched; only the
210
- * abstract port methods are auto-stubbed.
211
- *
212
- * @example
213
- * ```ts
214
- * @ihsmTest.mock
215
- * abstract class WatcherMock extends ihsmTest.TestPort<WatcherTop> {
216
- * abstract watch(path: string): ihsm.ResultWithSubscription<number>; // signature matches the port
217
- * }
218
- *
219
- * const port = ihsmTest.makeTestPort(WatcherMock);
220
- * port.watch.default(path => ({ value: 1, subscription: { dispose: () => port.record('dispose') } }));
221
- * ```
222
- *
223
- * @category Testing
224
- */
225
- export declare function mock<C extends abstract new (...args: Any[]) => TestPort<Any>>(Ctor: C): C;
226
- /**
227
- * Instantiate an `@`{@link mock}-decorated mock class — the canonical way to build a test port.
228
- *
229
- * Pass the mock **class**; you get back a typed instance whose abstract port methods (inferred from
230
- * the machine's {@link TopState}) are scriptable {@link Stubbed} methods, ready for
231
- * `port.method.default(...)`. The port's `actor` is still bound lazily when you hand the instance to
232
- * {@link makeActor} / {@link makeTestActor}.
233
- *
234
- * @typeParam P - The mock class instance type (a {@link TestPort} subclass)
235
- * @param PortClass - The `@mock`-decorated mock class
236
- * @returns A scriptable {@link Mock} instance
237
- * @throws If `PortClass` was not decorated with `@`{@link mock}
238
- *
239
- * @example
240
- * ```ts
241
- * const port = ihsmTest.makeTestPort(WatcherMock);
242
- * port.watch.default(() => ({ value: 1, subscription: { dispose: () => port.send('onClosed') } }));
243
- * const sm = ihsmTest.makeTestActor(WatcherTop, new WatcherCtx(), port);
244
- * ```
245
- *
246
- * @category Testing
247
- */
248
- export declare function makeTestPort<P extends TestPort<Any>>(PortClass: abstract new () => P): Mock<P, P extends {
249
- readonly __topState: infer T;
250
- } ? T : never>;
278
+ /** Inferred {@link ActorConfig} from a {@link TestPort}'s root state type parameter. */
279
+ export type ActorConfigFromPortClass<P> = P extends TestPort<infer M> ? ActorConfigOf<M> : ActorConfig;
280
+ /** Decorate an abstract {@link TestPort} subclass; pass port method names (abstract members are type-only at runtime). */
281
+ export declare function mock<C extends abstract new (...args: Any[]) => TestPort<TopStateArg>>(Ctor: C): C;
282
+ export declare function mock(...methodNames: string[]): <C extends abstract new (...args: Any[]) => TestPort<TopStateArg>>(Ctor: C) => C;
283
+ export declare function makeTestPort<P extends TestPort<TopStateArg>, C extends ActorConfig = ActorConfigFromPortClass<P>>(PortClass: abstract new () => P, _topState?: TopStateArg<C>): Mock<P, C>;
251
284
  /**
252
285
  * Creates a **full-access** actor for deterministic tests: merged protocol + typed `port`.
253
286
  *
254
287
  * Identical construction to {@link makeActor} (same three mandatory arguments + {@link ActorOptions}),
255
- * but the returned {@link TestActor} exposes the merged {@link Dispatch} protocol so tests can
256
- * drive internal events directly (no live port required) — and grants typed access to `port` for
257
- * asserting outbound interactions or pushing observations.
288
+ * but the returned {@link TestActor} exposes the full child protocol (including internal buckets) and
289
+ * grants typed access to `port` for asserting outbound interactions or pushing observations.
258
290
  *
259
291
  * Unlike {@link makeActor}, `traceLevel` defaults to {@link TraceLevel.VERBOSE_DEBUG} so a failing
260
292
  * test is fully readable; opt down explicitly via `options.traceLevel` only when you need a quiet run.
@@ -276,4 +308,4 @@ export declare function makeTestPort<P extends TestPort<Any>>(PortClass: abstrac
276
308
  *
277
309
  * @category Factory
278
310
  */
279
- export declare function makeTestActor<Context, Public extends undefined | {}, Internal extends {} = {}, P extends PortHandle<Context, Internal> = TestPort>(topState: TopStateArg<Context, Public, Internal>, ctx: Context, port: P, options?: ActorOptions<Context, Public, Internal>, ..._disjointGuard: Disjoint<Public, Internal> extends true ? [] : [error: Disjoint<Public, Internal>]): TestActor<Context, Public, Internal, P>;
311
+ export declare function makeTestActor<T extends TopStateArg<ActorConfig>>(topState: ValidatedTopStateArg<T>, ctx: ActorContextOf<ActorConfigOf<T>>, port?: MachinePortInput<ActorConfigOf<T>>, options?: ActorOptions<ActorConfigOf<T>>): TestActor<ActorConfigOf<T>>;
@@ -15,6 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.PreloadError = exports.TestPort = void 0;
18
+ exports.settleAll = settleAll;
18
19
  exports.mock = mock;
19
20
  exports.makeTestPort = makeTestPort;
20
21
  exports.makeTestActor = makeTestActor;
@@ -26,7 +27,7 @@ exports.makeTestActor = makeTestActor;
26
27
  * into production code that only imports `ihsm`. Import test helpers from `ihsm/testing`:
27
28
  *
28
29
  * ```ts
29
- * import { makeHsm, TopState } from 'ihsm'; // production code
30
+ * import { makeActor, TopState } from 'ihsm'; // production code
30
31
  * import { makeTestActor, mock, TestPort } from 'ihsm/testing'; // tests only
31
32
  * ```
32
33
  *
@@ -35,13 +36,66 @@ exports.makeTestActor = makeTestActor;
35
36
  *
36
37
  * @packageDocumentation
37
38
  */
38
- const index_1 = require("./index");
39
+ const runtime_1 = require("./internal/runtime");
39
40
  __exportStar(require("./index"), exports);
40
- class TestPort extends index_1.BasePort {
41
+ function isSettlingActor(value) {
42
+ return typeof value === 'object' && value !== null && 'hsm' in value && typeof value.hsm?.sync === 'function';
43
+ }
44
+ async function settleAll(...args) {
45
+ if (args.length === 0) {
46
+ return { rounds: 0, settled: true };
47
+ }
48
+ const last = args[args.length - 1];
49
+ const hasOptions = !isSettlingActor(last);
50
+ const options = (hasOptions ? last : {});
51
+ const actorArgs = (hasOptions ? args.slice(0, -1) : args);
52
+ const actors = actorArgs.filter(isSettlingActor);
53
+ const maxRounds = Math.max(1, options.maxRounds ?? 8);
54
+ const idleRoundsTarget = Math.max(1, options.idleRounds ?? 1);
55
+ const microtaskTurns = Math.max(0, options.microtaskTurns ?? 1);
56
+ if (actors.length === 0)
57
+ return { rounds: 0, settled: true };
58
+ const observable = actors.every(actor => typeof actor.hsm.subscribe === 'function');
59
+ const subscriptions = [];
60
+ let rounds;
61
+ let idleRounds = 0;
62
+ let observedEvents = 0;
63
+ try {
64
+ if (observable) {
65
+ for (const actor of actors) {
66
+ const sub = actor.hsm.subscribe(() => {
67
+ observedEvents += 1;
68
+ });
69
+ subscriptions.push(sub);
70
+ }
71
+ }
72
+ for (rounds = 1; rounds <= maxRounds; rounds += 1) {
73
+ const before = observedEvents;
74
+ await Promise.all(actors.map(actor => actor.hsm.sync()));
75
+ for (let turn = 0; turn < microtaskTurns; turn += 1) {
76
+ await Promise.resolve();
77
+ }
78
+ if (!observable)
79
+ continue;
80
+ const emitted = observedEvents > before;
81
+ idleRounds = emitted ? 0 : idleRounds + 1;
82
+ if (idleRounds >= idleRoundsTarget) {
83
+ return { rounds, settled: true };
84
+ }
85
+ }
86
+ return { rounds: maxRounds, settled: false };
87
+ }
88
+ finally {
89
+ for (const sub of subscriptions) {
90
+ sub.dispose();
91
+ }
92
+ }
93
+ }
94
+ class TestPort extends runtime_1.Port {
41
95
  _messages = [];
42
96
  _preloads = new Map();
43
97
  _now = 0;
44
- _timerSeq = 0;
98
+ _virtualTimerId = 0;
45
99
  _timers = [];
46
100
  _cancelled = new Set();
47
101
  _randomQueue = [];
@@ -60,6 +114,21 @@ class TestPort extends index_1.BasePort {
60
114
  record(event, ...payload) {
61
115
  this._messages.push({ event, payload: [...payload] });
62
116
  }
117
+ /**
118
+ * Push an **inbound** internal notification into the bound actor (`port.actor.onData(…)`).
119
+ *
120
+ * Convenience for deterministic tests — equivalent to calling the generated method on
121
+ * {@link Port.actor} after the factory has wired it.
122
+ */
123
+ send(event, ...payload) {
124
+ const actor = this.actor;
125
+ const facet = actor?.notify;
126
+ const inbound = facet?.[event];
127
+ if (inbound === undefined) {
128
+ throw new Error(`ihsm: TestPort.send — actor has no notification "${event}" (bind the port with makeActor/makeTestActor first)`);
129
+ }
130
+ inbound.call(facet, ...payload);
131
+ }
63
132
  _slot(name) {
64
133
  let slot = this._preloads.get(name);
65
134
  if (slot === undefined) {
@@ -139,7 +208,7 @@ class TestPort extends index_1.BasePort {
139
208
  }
140
209
  /** @inheritdoc Port.setTimeout — backed by the virtual clock; fire with {@link TestPort.advance | advance}. */
141
210
  setTimeout(callback, millis) {
142
- const id = ++this._timerSeq;
211
+ const id = ++this._virtualTimerId;
143
212
  this._timers.push({ id, at: this._now + Math.max(0, millis ?? 0), callback });
144
213
  this._sortTimers();
145
214
  return id;
@@ -157,7 +226,7 @@ class TestPort extends index_1.BasePort {
157
226
  }
158
227
  /** @inheritdoc Port.setInterval — backed by the virtual clock; fire with {@link TestPort.advance | advance}. */
159
228
  setInterval(callback, millis) {
160
- const id = ++this._timerSeq;
229
+ const id = ++this._virtualTimerId;
161
230
  const repeat = Math.max(0, millis ?? 0);
162
231
  this._timers.push({ id, at: this._now + repeat, callback, repeat });
163
232
  this._sortTimers();
@@ -277,6 +346,8 @@ function buildMethodStub(target, name) {
277
346
  }
278
347
  /** Marker set by {@link mock} so {@link makeTestPort} can verify the class was decorated. */
279
348
  const MOCK_MARKER = Symbol('ihsm.mock');
349
+ /** Port method names registered by {@link mock} (abstract members have no runtime prototype entries). */
350
+ const MOCK_METHODS = Symbol('ihsm.mockMethods');
280
351
  /**
281
352
  * Class decorator that turns an **abstract** {@link TestPort} subclass into a preloadable mock.
282
353
  *
@@ -292,7 +363,7 @@ const MOCK_MARKER = Symbol('ihsm.mock');
292
363
  * @example
293
364
  * ```ts
294
365
  * @ihsmTest.mock
295
- * abstract class WatcherMock extends ihsmTest.TestPort<WatcherTop> {
366
+ * abstract class WatcherMock extends ihsmTest.TestPort<typeof WatcherTop> {
296
367
  * abstract watch(path: string): ihsm.ResultWithSubscription<number>; // signature matches the port
297
368
  * }
298
369
  *
@@ -302,29 +373,20 @@ const MOCK_MARKER = Symbol('ihsm.mock');
302
373
  *
303
374
  * @category Testing
304
375
  */
305
- function mock(Ctor) {
306
- const Decorated = class extends Ctor {
307
- constructor(...args) {
308
- super(...args);
309
- const stubs = new Map();
310
- const proxy = new Proxy(this, {
311
- get(t, prop, receiver) {
312
- if (typeof prop === 'string' && !(prop in t) && !NON_STUB_PROPS.has(prop)) {
313
- let stub = stubs.get(prop);
314
- if (stub === undefined) {
315
- stub = buildMethodStub(t, prop);
316
- stubs.set(prop, stub);
317
- }
318
- return stub;
319
- }
320
- return Reflect.get(t, prop, receiver);
321
- },
322
- });
323
- return proxy;
324
- }
376
+ function markMockPort(Ctor, methodNames) {
377
+ Ctor[MOCK_MARKER] = true;
378
+ Ctor[MOCK_METHODS] = [...methodNames];
379
+ }
380
+ function mock(first, ...rest) {
381
+ if (typeof first === 'function') {
382
+ markMockPort(first, []);
383
+ return first;
384
+ }
385
+ const methodNames = [first, ...rest];
386
+ return (Ctor) => {
387
+ markMockPort(Ctor, methodNames);
388
+ return Ctor;
325
389
  };
326
- Decorated[MOCK_MARKER] = true;
327
- return Decorated;
328
390
  }
329
391
  /**
330
392
  * Instantiate an `@`{@link mock}-decorated mock class — the canonical way to build a test port.
@@ -348,19 +410,29 @@ function mock(Ctor) {
348
410
  *
349
411
  * @category Testing
350
412
  */
351
- function makeTestPort(PortClass) {
413
+ function installPortStubs(port, PortClass) {
414
+ const stubTarget = port;
415
+ const names = PortClass[MOCK_METHODS] ?? [];
416
+ for (const name of names) {
417
+ if (NON_STUB_PROPS.has(name))
418
+ continue;
419
+ port[name] = buildMethodStub(stubTarget, name);
420
+ }
421
+ }
422
+ function makeTestPort(PortClass, _topState) {
352
423
  if (PortClass[MOCK_MARKER] !== true) {
353
424
  throw new Error('ihsm: makeTestPort requires a class decorated with @ihsm.mock');
354
425
  }
355
- return new PortClass();
426
+ const port = new PortClass();
427
+ installPortStubs(port, PortClass);
428
+ return port;
356
429
  }
357
430
  /**
358
431
  * Creates a **full-access** actor for deterministic tests: merged protocol + typed `port`.
359
432
  *
360
433
  * Identical construction to {@link makeActor} (same three mandatory arguments + {@link ActorOptions}),
361
- * but the returned {@link TestActor} exposes the merged {@link Dispatch} protocol so tests can
362
- * drive internal events directly (no live port required) — and grants typed access to `port` for
363
- * asserting outbound interactions or pushing observations.
434
+ * but the returned {@link TestActor} exposes the full child protocol (including internal buckets) and
435
+ * grants typed access to `port` for asserting outbound interactions or pushing observations.
364
436
  *
365
437
  * Unlike {@link makeActor}, `traceLevel` defaults to {@link TraceLevel.VERBOSE_DEBUG} so a failing
366
438
  * test is fully readable; opt down explicitly via `options.traceLevel` only when you need a quiet run.
@@ -382,11 +454,27 @@ function makeTestPort(PortClass) {
382
454
  *
383
455
  * @category Factory
384
456
  */
385
- function makeTestActor(topState, ctx, port, options = {}, ..._disjointGuard) {
457
+ function makeTestActor(topState, ctx, port, options = {}) {
458
+ const boundPort = (port ?? new TestPort());
386
459
  // Tests default to the most verbose trace (so a failing run is fully readable). Never silence to
387
460
  // a production level here — the user opts down explicitly via `options.traceLevel`.
388
- const { initialize = index_1.defaultInitialize, traceLevel = index_1.TraceLevel.VERBOSE_DEBUG, traceWriter = index_1.defaultTraceWriter, dispatchErrorCallback = index_1.defaultDispatchErrorCallback } = options;
389
- const hsm = (0, index_1.makeHsm)(topState, ctx, initialize, traceLevel, traceWriter, dispatchErrorCallback, port);
390
- return hsm;
461
+ const { initialize = runtime_1.defaultInitialize, traceLevel = runtime_1.TraceLevel.VERBOSE_DEBUG, traceWriter = runtime_1.defaultTraceWriter, dispatchErrorCallback = runtime_1.defaultDispatchErrorCallback, ...rest } = options;
462
+ const actor = (0, runtime_1.spawnActor)('test', topState, ctx, boundPort, {
463
+ initialize,
464
+ traceLevel,
465
+ traceWriter,
466
+ dispatchErrorCallback,
467
+ ...rest,
468
+ });
469
+ const machine = actor[runtime_1.kMachine];
470
+ const testHsm = actor.hsm;
471
+ Object.defineProperties(testHsm, {
472
+ port: { enumerable: true, get: () => boundPort },
473
+ subscribe: {
474
+ enumerable: true,
475
+ value: (observer) => machine.subscribe(observer),
476
+ },
477
+ });
478
+ return actor;
391
479
  }
392
480
  //# sourceMappingURL=testing.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"testing.js","sourceRoot":"","sources":["../../src/testing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"testing.js","sourceRoot":"","sources":["../../src/testing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ /** Public subpath — transition planning and execution helpers. */
2
+ export { TransitionTableError, createTransitionTracer, executeTransitionRoutine, planTransitionClasses, transitionTraceLines } from './internal/runtime';
3
+ export type { PlannedTransition, TransitionHost, TransitionRoutineExecuteOptions, TransitionRoutinePlan, TransitionRoutineStyle, TransitionTracer, TransitionTraceHost } from './internal/types';
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.transitionTraceLines = exports.planTransitionClasses = exports.executeTransitionRoutine = exports.createTransitionTracer = exports.TransitionTableError = void 0;
4
+ /** Public subpath — transition planning and execution helpers. */
5
+ var runtime_1 = require("./internal/runtime");
6
+ Object.defineProperty(exports, "TransitionTableError", { enumerable: true, get: function () { return runtime_1.TransitionTableError; } });
7
+ Object.defineProperty(exports, "createTransitionTracer", { enumerable: true, get: function () { return runtime_1.createTransitionTracer; } });
8
+ Object.defineProperty(exports, "executeTransitionRoutine", { enumerable: true, get: function () { return runtime_1.executeTransitionRoutine; } });
9
+ Object.defineProperty(exports, "planTransitionClasses", { enumerable: true, get: function () { return runtime_1.planTransitionClasses; } });
10
+ Object.defineProperty(exports, "transitionTraceLines", { enumerable: true, get: function () { return runtime_1.transitionTraceLines; } });
11
+ //# sourceMappingURL=transition-routines.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transition-routines.js","sourceRoot":"","sources":["../../src/transition-routines.ts"],"names":[],"mappings":";;;AAAA,kEAAkE;AAClE,8CAAyJ;AAAhJ,+GAAA,oBAAoB,OAAA;AAAE,iHAAA,sBAAsB,OAAA;AAAE,mHAAA,wBAAwB,OAAA;AAAE,gHAAA,qBAAqB,OAAA;AAAE,+GAAA,oBAAoB,OAAA"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Type-only public surface — erased at compile time; no runtime JS from this module.
3
+ *
4
+ * Import protocol and actor types from here:
5
+ * `import type { ActorConfig, ChildActor } from 'ihsm/types'` */ export type { ActorConfig, ActorContextOf, ActorInternalNotificationsOf, ActorInternalServicesOf, ActorMethodKeysOf, ActorNotificationsOf, ActorConfigOf, ActorPortOf, ActorServicesOf, ActorHsm, ActorOptions, ActorParentField, AssertAsyncService, CallFacet, ChildActor, ChildHsm, DisjointActorConfig, EmbodimentKind, ErrorHost, ExternalActor, ExternalHsm, FilterReservedKeys, InboundActor, InboundHsm, IPort, IsReservedName, MachinePortInput, HandlerHsm, MachineContext, MachineInternal, MachinePort, MachinePublic, NotificationArgs, NotificationClient, NotificationHandler, NotificationQueue, NotifyFacet, OwnerActorHsm, ParentActor, PlannedTransition, ProtocolBucket, ProtocolIndex, ProtocolSlot, ReservedName, SelfNotifications, ServiceArgs, ServiceClient, ServiceHandler, ServiceReply, ServiceCallOptions, StateClassOf, TestActorHsm, TestHsm, TopStateArg, TransitionHost, TransitionResolver, TransitionRoutineExecuteOptions, TransitionRoutinePlan, TransitionRoutineStyle, TransitionTracer, TransitionTraceHost, ValidatedActorConfig, ValidatedTopStateArg, ActorIdentity, CauseRef, DispatchPhase, Instrumentation, LogRecord, MacrostepBegin, MacrostepEnd, MicrostepBegin, MicrostepEnd, TriggerKind, TraceFrame, ActorLogger, LogAttributes, DispatchError, EnqueueInfo, SpawnInfo, PortCallBegin, PortCallEnd, OutboundCallBegin, OutboundCallEnd, } from './internal/types';
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=defs.private.js.map
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}