ihsm 0.0.21 → 0.0.23

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 (46) hide show
  1. package/README.md +161 -8
  2. package/lib/cjs/index.d.ts +521 -58
  3. package/lib/cjs/index.js +279 -5
  4. package/lib/cjs/index.js.map +1 -1
  5. package/lib/cjs/internal/defs.private.d.ts +10 -0
  6. package/lib/cjs/internal/dispatch.debug.js +4 -2
  7. package/lib/cjs/internal/dispatch.debug.js.map +1 -1
  8. package/lib/cjs/internal/dispatch.production.js +4 -2
  9. package/lib/cjs/internal/dispatch.production.js.map +1 -1
  10. package/lib/cjs/internal/dispatch.trace.js +10 -2
  11. package/lib/cjs/internal/dispatch.trace.js.map +1 -1
  12. package/lib/cjs/internal/hsm.d.ts +7 -1
  13. package/lib/cjs/internal/hsm.js +36 -3
  14. package/lib/cjs/internal/hsm.js.map +1 -1
  15. package/lib/cjs/internal/lookup.d.ts +15 -0
  16. package/lib/cjs/internal/lookup.js +32 -0
  17. package/lib/cjs/internal/lookup.js.map +1 -0
  18. package/lib/cjs/internal/utils.d.ts +8 -0
  19. package/lib/cjs/internal/utils.js +12 -0
  20. package/lib/cjs/internal/utils.js.map +1 -1
  21. package/lib/cjs/testing.d.ts +279 -0
  22. package/lib/cjs/testing.js +392 -0
  23. package/lib/cjs/testing.js.map +1 -0
  24. package/lib/esm/index.d.ts +521 -58
  25. package/lib/esm/index.js +275 -5
  26. package/lib/esm/index.js.map +1 -1
  27. package/lib/esm/internal/defs.private.d.ts +10 -0
  28. package/lib/esm/internal/dispatch.debug.js +5 -3
  29. package/lib/esm/internal/dispatch.debug.js.map +1 -1
  30. package/lib/esm/internal/dispatch.production.js +5 -3
  31. package/lib/esm/internal/dispatch.production.js.map +1 -1
  32. package/lib/esm/internal/dispatch.trace.js +11 -3
  33. package/lib/esm/internal/dispatch.trace.js.map +1 -1
  34. package/lib/esm/internal/hsm.d.ts +7 -1
  35. package/lib/esm/internal/hsm.js +36 -3
  36. package/lib/esm/internal/hsm.js.map +1 -1
  37. package/lib/esm/internal/lookup.d.ts +15 -0
  38. package/lib/esm/internal/lookup.js +29 -0
  39. package/lib/esm/internal/lookup.js.map +1 -0
  40. package/lib/esm/internal/utils.d.ts +8 -0
  41. package/lib/esm/internal/utils.js +11 -0
  42. package/lib/esm/internal/utils.js.map +1 -1
  43. package/lib/esm/testing.d.ts +279 -0
  44. package/lib/esm/testing.js +370 -0
  45. package/lib/esm/testing.js.map +1 -0
  46. package/package.json +20 -4
@@ -1 +1 @@
1
- {"version":3,"file":"dispatch.trace.js","sourceRoot":"","sources":["../../../src/internal/dispatch.trace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dispatch.trace.js","sourceRoot":"","sources":["../../../src/internal/dispatch.trace.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { DispatchErrorCallback, PostedEvent, EventPayload, ServiceResponse, ServiceName, ServiceRequest, StateClass, TraceLevel, TraceWriter } from '../index.js';
1
+ import { Disposable, DispatchErrorCallback, EventObserver, PostedEvent, EventPayload, ServiceResponse, ServiceName, ServiceRequest, StateClass, TraceLevel, TraceWriter } from '../index.js';
2
2
  import { HsmWithTracing, Instance, Task, Transition } from './defs.private.js';
3
3
  /** @internal */
4
4
  export declare class HsmObject<Context, Protocol extends {} | undefined> implements HsmWithTracing<Context, Protocol> {
@@ -14,6 +14,7 @@ export declare class HsmObject<Context, Protocol extends {} | undefined> impleme
14
14
  _transitionState?: StateClass<Context, Protocol>;
15
15
  _currentEventName?: string;
16
16
  _currentEventPayload?: any[];
17
+ private _observers?;
17
18
  dispatchErrorCallback: DispatchErrorCallback<Context, Protocol>;
18
19
  private _traceLevel;
19
20
  private _traceDomainStack;
@@ -22,6 +23,8 @@ export declare class HsmObject<Context, Protocol extends {} | undefined> impleme
22
23
  constructor(TopState: StateClass<Context, Protocol>, instance: Instance<Context, Protocol>, traceWriter: TraceWriter, traceLevel: TraceLevel, dispatchErrorCallback: DispatchErrorCallback<Context, Protocol>, initialize: boolean);
23
24
  get ctx(): Context;
24
25
  set ctx(ctx: Context);
26
+ /** Outbound boundary supplied to (or defaulted by) the factory (see {@link makeHsm}); never `undefined` at runtime. */
27
+ get port(): unknown;
25
28
  get eventName(): string;
26
29
  get eventPayload(): any[];
27
30
  get currentStateName(): string;
@@ -29,6 +32,9 @@ export declare class HsmObject<Context, Protocol extends {} | undefined> impleme
29
32
  set currentState(newState: StateClass<Context, Protocol>);
30
33
  post<EventName extends keyof Protocol>(eventName: PostedEvent<Protocol, EventName>, ...eventPayload: EventPayload<Protocol, EventName>): void;
31
34
  postNow<EventName extends keyof Protocol>(eventName: PostedEvent<Protocol, EventName>, ...eventPayload: EventPayload<Protocol, EventName>): void;
35
+ /** Register a test-only observer; returns a Disposable that removes it. See {@link TestActor.subscribe}. */
36
+ subscribe(observer: EventObserver): Disposable;
37
+ private _notifyObservers;
32
38
  deferredPost<EventName extends keyof Protocol>(millis: number, eventName: PostedEvent<Protocol, EventName>, ...eventPayload: EventPayload<Protocol, EventName>): void;
33
39
  transition(nextState: StateClass<Context, Protocol>): void;
34
40
  unhandled(): never;
@@ -38,6 +38,7 @@ export class HsmObject {
38
38
  _transitionState;
39
39
  _currentEventName;
40
40
  _currentEventPayload;
41
+ _observers;
41
42
  dispatchErrorCallback;
42
43
  _traceLevel;
43
44
  _traceDomainStack;
@@ -72,15 +73,46 @@ export class HsmObject {
72
73
  set ctx(ctx) {
73
74
  this._instance.ctx = ctx;
74
75
  }
76
+ /** Outbound boundary supplied to (or defaulted by) the factory (see {@link makeHsm}); never `undefined` at runtime. */
77
+ get port() {
78
+ return this._instance.portRef;
79
+ }
75
80
  get eventName() { return this._currentEventName; }
76
81
  get eventPayload() { return this._currentEventPayload; }
77
82
  get currentStateName() { return getStateName(Object.getPrototypeOf(this._instance).constructor); }
78
83
  get currentState() { return Object.getPrototypeOf(this._instance).constructor; }
79
84
  set currentState(newState) { Object.setPrototypeOf(this._instance, newState.prototype); }
80
- post(eventName, ...eventPayload) { this.pushTask(this._createEventDispatchTask(this, eventName, ...eventPayload)); }
81
- postNow(eventName, ...eventPayload) { this.pushHiPriorityTask(this._createEventDispatchTask(this, eventName, ...eventPayload)); }
85
+ post(eventName, ...eventPayload) { this._notifyObservers(eventName, eventPayload); this.pushTask(this._createEventDispatchTask(this, eventName, ...eventPayload)); }
86
+ postNow(eventName, ...eventPayload) { this._notifyObservers(eventName, eventPayload); this.pushHiPriorityTask(this._createEventDispatchTask(this, eventName, ...eventPayload)); }
87
+ /** Register a test-only observer; returns a Disposable that removes it. See {@link TestActor.subscribe}. */
88
+ subscribe(observer) {
89
+ if (this._observers === undefined)
90
+ this._observers = new Set();
91
+ this._observers.add(observer);
92
+ return {
93
+ dispose: () => {
94
+ this._observers?.delete(observer);
95
+ },
96
+ };
97
+ }
98
+ _notifyObservers(eventName, eventPayload) {
99
+ if (this._observers === undefined || this._observers.size === 0)
100
+ return;
101
+ const message = { event: String(eventName), payload: [...eventPayload] };
102
+ for (const observer of this._observers)
103
+ observer(message);
104
+ }
82
105
  deferredPost(millis, eventName, ...eventPayload) {
83
- setTimeout(() => this.pushTask(this._createEventDispatchTask(this, eventName, ...eventPayload)), millis);
106
+ const enqueue = () => { this.pushTask(this._createEventDispatchTask(this, eventName, ...eventPayload)); };
107
+ // Use the port's timer service when available (Port / TestPort always provide setTimeout);
108
+ // fall back to global setTimeout for bare BasePort subclasses that omit it.
109
+ const port = this._instance.portRef;
110
+ if (port !== undefined && typeof port.setTimeout === 'function') {
111
+ port.setTimeout(enqueue, millis);
112
+ }
113
+ else {
114
+ setTimeout(enqueue, Math.max(0, millis));
115
+ }
84
116
  }
85
117
  transition(nextState) { this._transitionState = nextState; }
86
118
  unhandled() { throw new UnhandledEventError(this); }
@@ -169,6 +201,7 @@ export class HsmObject {
169
201
  return `${this._traceDomainStack.length === 0 ? '' : this._traceDomainStack.join('|') + '|'}`;
170
202
  }
171
203
  call(eventName, ...eventPayload) {
204
+ this._notifyObservers(eventName, eventPayload);
172
205
  return new Promise((resolve, reject) => {
173
206
  const taskFactory = this._createEventDispatchTask;
174
207
  this.pushTask(taskFactory(this, eventName, ...[resolve, reject, ...eventPayload]));
@@ -1 +1 @@
1
- {"version":3,"file":"hsm.js","sourceRoot":"","sources":["../../../src/internal/hsm.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hsm.js","sourceRoot":"","sources":["../../../src/internal/hsm.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { HsmWithTracing } from './defs.private.js';
2
+ /**
3
+ * Canonical event-handler lookup shared by every dispatch mode (production, debug, verbose).
4
+ *
5
+ * Walks the **state-class constructor chain** starting at `hsm.currentState` and going up to and
6
+ * **including** {@link TopState}, returning the first state that defines `eventName` as an **own**
7
+ * prototype property. Stopping at `TopState` keeps resolution inside the user's state hierarchy: it
8
+ * never falls through to `State.prototype` / `Object.prototype`, so a posted event can never
9
+ * accidentally resolve to a runtime method (`post`, `transition`, `toString`, …). Returns
10
+ * `undefined` when no state owns the handler — the caller then routes the event to `onUnhandled`.
11
+ *
12
+ * The verbose-trace dispatcher narrates this exact algorithm step by step; sharing it here
13
+ * guarantees production / debug / verbose dispatch all resolve handlers identically (proposal T6).
14
+ */
15
+ export declare function lookupEventHandler<Context, Protocol extends {} | undefined>(hsm: HsmWithTracing<Context, Protocol>, eventName: PropertyKey): ((...args: any[]) => unknown) | undefined;
@@ -0,0 +1,29 @@
1
+ /** @internal */
2
+ import { TopState } from '../index.js';
3
+ /**
4
+ * Canonical event-handler lookup shared by every dispatch mode (production, debug, verbose).
5
+ *
6
+ * Walks the **state-class constructor chain** starting at `hsm.currentState` and going up to and
7
+ * **including** {@link TopState}, returning the first state that defines `eventName` as an **own**
8
+ * prototype property. Stopping at `TopState` keeps resolution inside the user's state hierarchy: it
9
+ * never falls through to `State.prototype` / `Object.prototype`, so a posted event can never
10
+ * accidentally resolve to a runtime method (`post`, `transition`, `toString`, …). Returns
11
+ * `undefined` when no state owns the handler — the caller then routes the event to `onUnhandled`.
12
+ *
13
+ * The verbose-trace dispatcher narrates this exact algorithm step by step; sharing it here
14
+ * guarantees production / debug / verbose dispatch all resolve handlers identically (proposal T6).
15
+ */
16
+ export function lookupEventHandler(hsm, eventName) {
17
+ let state = hsm.currentState;
18
+ while (true) {
19
+ const prototype = state.prototype;
20
+ if (Object.prototype.hasOwnProperty.call(prototype, eventName)) {
21
+ return prototype[eventName];
22
+ }
23
+ if (state === TopState) {
24
+ return undefined;
25
+ }
26
+ state = Object.getPrototypeOf(state);
27
+ }
28
+ }
29
+ //# sourceMappingURL=lookup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lookup.js","sourceRoot":"","sources":["../../../src/internal/lookup.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,OAAO,EAAc,QAAQ,EAAE,MAAM,KAAK,CAAC;AAI3C;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,kBAAkB,CAA2C,GAAsC,EAAE,SAAsB;IAC1I,IAAI,KAAK,GAAkC,GAAG,CAAC,YAAY,CAAC;IAC5D,OAAO,IAAI,EAAE,CAAC;QACb,MAAM,SAAS,GAAG,KAAK,CAAC,SAAoD,CAAC;QAC7E,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC;YAChE,OAAO,SAAS,CAAC,SAAS,CAAgC,CAAC;QAC5D,CAAC;QACD,IAAK,KAAiB,KAAK,QAAQ,EAAE,CAAC;YACrC,OAAO,SAAS,CAAC;QAClB,CAAC;QACD,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAkC,CAAC;IACvE,CAAC;AACF,CAAC"}
@@ -16,3 +16,11 @@ export declare function getTransitionKey<Context, Protocol extends {} | undefine
16
16
  export declare function defineStateName<Context, Protocol extends {} | undefined>(state: StateClass<Context, Protocol>, displayName: string): void;
17
17
  /** @internal — prefers an own explicit name registered for minified browser bundles. */
18
18
  export declare function getStateName<Context, Protocol extends {} | undefined>(state: StateClass<Context, Protocol>): string;
19
+ /**
20
+ * @internal Switch the instance prototype to `state` immediately before `onEntry`.
21
+ * Invariants and `this.currentState` must reflect the entering state during the hook.
22
+ */
23
+ export declare function adoptStateBeforeOnEntry<Context, Protocol extends {} | undefined>(hsm: {
24
+ _instance: object;
25
+ currentState: StateClass<Context, Protocol>;
26
+ }, state: StateClass<Context, Protocol>): void;
@@ -38,4 +38,15 @@ export function getStateName(state) {
38
38
  }
39
39
  return state.name;
40
40
  }
41
+ /**
42
+ * @internal Switch the instance prototype to `state` immediately before `onEntry`.
43
+ * Invariants and `this.currentState` must reflect the entering state during the hook.
44
+ */
45
+ export function adoptStateBeforeOnEntry(hsm, state) {
46
+ hsm.currentState = state;
47
+ const actual = Object.getPrototypeOf(hsm._instance).constructor;
48
+ if (actual !== state) {
49
+ throw new Error(`ihsm: prototype must be ${getStateName(state)} before onEntry, was ${getStateName(actual)}`);
50
+ }
51
+ }
41
52
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/internal/utils.ts"],"names":[],"mappings":"AAGA,gBAAgB;AAChB,MAAM,UAAU,OAAO,CAAC,GAAY;IACnC,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,YAAY,CAAC,GAAY;IACxC,OAAO,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AACjC,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,UAAU,CAAC,GAAU;IACpC,OAAO,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,wBAAwB,EAAE,CAAC;AACpF,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,eAAe,CAA2C,KAAoC;IAC7G,OAAQ,KAAgC,CAAC,aAA8C,CAAC;AACzF,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,eAAe,CAA2C,KAAoC;IAC7G,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;AACrE,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,gBAAgB,CAA2C,SAAwC,EAAE,OAAsC;IAC1J,OAAO,GAAG,YAAY,CAAC,SAAS,CAAC,KAAK,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;AAC/D,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,eAAe,CAA2C,KAAoC,EAAE,WAAmB;IAClI,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE;QAC1C,KAAK,EAAE,WAAW;QAClB,QAAQ,EAAE,KAAK;QACf,YAAY,EAAE,KAAK;QACnB,UAAU,EAAE,KAAK;KACjB,CAAC,CAAC;AACJ,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,YAAY,CAA2C,KAAoC;IAC1G,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE,CAAC;QAC/D,OAAQ,KAA2C,CAAC,UAAU,CAAC;IAChE,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/internal/utils.ts"],"names":[],"mappings":"AAGA,gBAAgB;AAChB,MAAM,UAAU,OAAO,CAAC,GAAY;IACnC,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,YAAY,CAAC,GAAY;IACxC,OAAO,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AACjC,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,UAAU,CAAC,GAAU;IACpC,OAAO,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,wBAAwB,EAAE,CAAC;AACpF,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,eAAe,CAA2C,KAAoC;IAC7G,OAAQ,KAAgC,CAAC,aAA8C,CAAC;AACzF,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,eAAe,CAA2C,KAAoC;IAC7G,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;AACrE,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,gBAAgB,CAA2C,SAAwC,EAAE,OAAsC;IAC1J,OAAO,GAAG,YAAY,CAAC,SAAS,CAAC,KAAK,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;AAC/D,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,eAAe,CAA2C,KAAoC,EAAE,WAAmB;IAClI,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE;QAC1C,KAAK,EAAE,WAAW;QAClB,QAAQ,EAAE,KAAK;QACf,YAAY,EAAE,KAAK;QACnB,UAAU,EAAE,KAAK;KACjB,CAAC,CAAC;AACJ,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,YAAY,CAA2C,KAAoC;IAC1G,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE,CAAC;QAC/D,OAAQ,KAA2C,CAAC,UAAU,CAAC;IAChE,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAA2C,GAAuE,EAAE,KAAoC;IAC9L,GAAG,CAAC,YAAY,GAAG,KAAK,CAAC;IACzB,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC;IAChE,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,2BAA2B,YAAY,CAAC,KAAK,CAAC,wBAAwB,YAAY,CAAC,MAAuC,CAAC,EAAE,CAAC,CAAC;IAChJ,CAAC;AACF,CAAC"}
@@ -0,0 +1,279 @@
1
+ /**
2
+ * `ihsm/testing` — deterministic-simulation testing utilities for ihsm.
3
+ *
4
+ * This entry point is **separate from the core runtime** (`ihsm`): the mock-port machinery,
5
+ * the manual virtual clock, and the full-access test actor live here so they are never bundled
6
+ * into production code that only imports `ihsm`. Import test helpers from `ihsm/testing`:
7
+ *
8
+ * ```ts
9
+ * import { makeHsm, TopState } from 'ihsm'; // production code
10
+ * import { makeTestActor, mock, TestPort } from 'ihsm/testing'; // tests only
11
+ * ```
12
+ *
13
+ * For convenience this module also re-exports the entire core API, so a test file may import
14
+ * everything it needs from `ihsm/testing` alone.
15
+ *
16
+ * @packageDocumentation
17
+ */
18
+ import { Any, ActorOptions, BasePort, Disjoint, Dispatch, Disposable, EventObserver, Hsm, MachinePort, PortHandle, RandomService, TimerHandle, TopStateArg, TracedMessage } from './index.js';
19
+ export * from './index.js';
20
+ /**
21
+ * Full-access view returned by {@link makeTestActor} for **deterministic testing**.
22
+ *
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.
26
+ *
27
+ * @typeParam Context - Domain context
28
+ * @typeParam Protocol - Public protocol
29
+ * @typeParam InternalProtocol - Internal (port-driven) protocol
30
+ * @typeParam P - Port type
31
+ *
32
+ * @category State machine
33
+ */
34
+ export type TestActor<Context = Any, Protocol extends {} | undefined = undefined, InternalProtocol extends {} = {}, P = undefined> = Hsm<Context, Dispatch<Protocol, InternalProtocol>> & {
35
+ readonly port: P;
36
+ /**
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}).
39
+ *
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.
43
+ *
44
+ * @param observer - Callback receiving each {@link TracedMessage}
45
+ * @returns A {@link Disposable} that stops the observation
46
+ */
47
+ subscribe(observer: EventObserver): Disposable;
48
+ };
49
+ export declare class TestPort<T = Any> extends BasePort<T> implements RandomService {
50
+ private readonly _messages;
51
+ private readonly _preloads;
52
+ private _now;
53
+ private _timerSeq;
54
+ private readonly _timers;
55
+ private readonly _cancelled;
56
+ private readonly _randomQueue;
57
+ private readonly _cryptoRandomQueue;
58
+ private readonly _uuidQueue;
59
+ private readonly _byteQueue;
60
+ /**
61
+ * Append an entry to the recorded message log (for assertions / golden traces).
62
+ *
63
+ * Callable both from inside the mock (e.g. a port method logging its outbound call) and from a
64
+ * test (e.g. a `Disposable.dispose` closure recording its own teardown into the trace).
65
+ *
66
+ * @param event - Event name or free-form label (e.g. `'connect'`, `'attempt 1: ok'`)
67
+ * @param payload - Optional values associated with the entry
68
+ */
69
+ record(event: string, ...payload: unknown[]): void;
70
+ private _slot;
71
+ /** @internal Set the persistent implementation for a stubbed method (used by `method.default`). */
72
+ _stubDefault(name: string, impl: (...args: unknown[]) => unknown): void;
73
+ /** @internal Queue a one-shot implementation for a stubbed method (used by `method.once`). */
74
+ _stubOnce(name: string, impl: (...args: unknown[]) => unknown): void;
75
+ /** @internal Clear a stubbed method's queued/persistent implementations and recorded calls (`method.reset`). */
76
+ _stubReset(name: string): void;
77
+ /** @internal The live, typed list of argument tuples a stubbed method was called with (`method.calls`). */
78
+ _stubCalls(name: string): unknown[][];
79
+ /**
80
+ * @internal Consume the next implementation for a stubbed method. Installed as the body of every
81
+ * `@`{@link mock}-stubbed method by {@link makeTestPort}; not called directly.
82
+ *
83
+ * The call is recorded first (globally in {@link trace} and in the method's {@link Stubbed.calls}),
84
+ * then one-shot stubs (queued via `method.once`) are consumed in order; otherwise the persistent
85
+ * `method.default` implementation runs. With neither set, a {@link PreloadError} naming the method
86
+ * is thrown.
87
+ *
88
+ * @param name - Port method name
89
+ * @param args - Arguments the machine passed to the method
90
+ * @throws {@link PreloadError} if nothing was stubbed for `name`
91
+ */
92
+ _consumePreload(name: string, args: unknown[]): unknown;
93
+ /** Every recorded message, in order. */
94
+ get messages(): readonly TracedMessage[];
95
+ /** Just the recorded event names, in order. */
96
+ get events(): readonly string[];
97
+ /** Rendered `event` / `event:arg,arg` strings — convenient for `deep.equal` / `include`. */
98
+ get trace(): readonly string[];
99
+ /** The most recently recorded message, or `undefined`. */
100
+ get last(): TracedMessage | undefined;
101
+ /** Number of recorded messages. */
102
+ get count(): number;
103
+ /** Clear the recorded message log. */
104
+ clear(): void;
105
+ private _sortTimers;
106
+ /** @inheritdoc Port.setTimeout — backed by the virtual clock; fire with {@link TestPort.advance | advance}. */
107
+ setTimeout(callback: () => void, millis?: number): TimerHandle;
108
+ /** @inheritdoc Port.clearTimeout */
109
+ clearTimeout(id: TimerHandle | undefined): void;
110
+ /** @inheritdoc Port.setInterval — backed by the virtual clock; fire with {@link TestPort.advance | advance}. */
111
+ setInterval(callback: () => void, millis?: number): TimerHandle;
112
+ /** @inheritdoc Port.clearInterval */
113
+ clearInterval(id: TimerHandle | undefined): void;
114
+ /**
115
+ * Advance the virtual clock by `millis`, firing every timer whose deadline is reached, in
116
+ * deadline order. Timers scheduled by a fired callback within the same window are **not** run
117
+ * until a later `advance` — mirroring how a deferred re-schedule lands on the next run-to-completion turn.
118
+ *
119
+ * @param millis - Virtual milliseconds to advance (negative values are clamped to `0`)
120
+ */
121
+ advance(millis: number): void;
122
+ /** Current virtual time, in milliseconds since construction. */
123
+ get now(): number;
124
+ /** Number of timers still pending (not yet fired or disposed). */
125
+ get pending(): number;
126
+ /** Queue values returned by successive {@link TestPort.random | random} calls (FIFO). */
127
+ feedRandom(...values: number[]): void;
128
+ /** Queue values returned by successive {@link TestPort.cryptoRandom | cryptoRandom} calls (FIFO). */
129
+ feedCryptoRandom(...values: number[]): void;
130
+ /** Queue values returned by successive {@link TestPort.randomUUID | randomUUID} calls (FIFO). */
131
+ feedUUID(...values: string[]): void;
132
+ /** Queue bytes used to fill arrays in successive {@link TestPort.getRandomValues | getRandomValues} calls (FIFO). */
133
+ feedRandomBytes(...bytes: number[]): void;
134
+ /** Clear all scripted random queues ({@link TestPort.feedRandom | feedRandom} / {@link TestPort.feedCryptoRandom | feedCryptoRandom} / …). */
135
+ resetRandom(): void;
136
+ /** @inheritdoc RandomService.random — queued values only; returns `0` when empty (never calls `Math.random`). */
137
+ random(): number;
138
+ /** @inheritdoc RandomService.cryptoRandom — queued values only; returns `0` when empty (never calls `crypto.random`). */
139
+ cryptoRandom(): number;
140
+ /** @inheritdoc RandomService.randomUUID — queued values only; never calls `crypto.randomUUID`. */
141
+ randomUUID(): string;
142
+ /** @inheritdoc RandomService.getRandomValues — queued bytes only; never calls `crypto.getRandomValues`. */
143
+ getRandomValues<T extends ArrayBufferView>(array: T): T;
144
+ }
145
+ /**
146
+ * Thrown when an abstract `@`{@link mock} port method is called but the test scripted no
147
+ * implementation for it. The message names the method so the fix is obvious.
148
+ *
149
+ * @category Testing
150
+ */
151
+ export declare class PreloadError extends Error {
152
+ constructor(method: string);
153
+ }
154
+ /**
155
+ * A scriptable abstract port method on a {@link makeTestPort} mock — the per-method analogue of
156
+ * `jest.fn()` / Sinon stubs, fully typed from the machine's {@link TopState}.
157
+ *
158
+ * It stays **callable with the port method's exact signature** (so the machine invokes it normally),
159
+ * and carries the scripting + introspection surface a test drives:
160
+ *
161
+ * - `default(impl)` — set the **persistent** implementation (every call runs it until replaced).
162
+ * - `once(impl)` — queue a **one-shot** implementation, consumed by the next call; queue several to
163
+ * script a sequence. One-shots are consumed before the persistent `default`.
164
+ * - `reset()` — clear queued/persistent implementations **and** the recorded {@link calls}.
165
+ * - `calls` — the live, typed list of argument tuples this method was called with (`Parameters<F>[]`).
166
+ *
167
+ * 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.
170
+ *
171
+ * @typeParam A - The method's argument tuple (`Parameters<F>`)
172
+ * @typeParam R - The method's return type (`ReturnType<F>`)
173
+ *
174
+ * @category Testing
175
+ */
176
+ export interface Stubbed<A extends unknown[], R> {
177
+ (...args: A): R;
178
+ /** Set the persistent implementation run for every call (until replaced). Returns `this` for chaining. */
179
+ default(impl: (...args: A) => R): this;
180
+ /** Queue a one-shot implementation, consumed by the next call (FIFO). Returns `this` for chaining. */
181
+ once(impl: (...args: A) => R): this;
182
+ /** Clear all queued/persistent implementations and the recorded {@link calls}. Returns `this` for chaining. */
183
+ reset(): this;
184
+ /** Argument tuples this method was called with, in order — typed exactly as the port method's parameters. */
185
+ readonly calls: readonly A[];
186
+ }
187
+ /**
188
+ * 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
190
+ * a scriptable, introspectable {@link Stubbed} method.
191
+ *
192
+ * @typeParam P - The mock port class instance type
193
+ * @typeParam T - The machine's root {@link TopState} subclass
194
+ *
195
+ * @category Testing
196
+ */
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];
199
+ };
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>;
251
+ /**
252
+ * Creates a **full-access** actor for deterministic tests: merged protocol + typed `port`.
253
+ *
254
+ * 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.
258
+ *
259
+ * Unlike {@link makeActor}, `traceLevel` defaults to {@link TraceLevel.VERBOSE_DEBUG} so a failing
260
+ * test is fully readable; opt down explicitly via `options.traceLevel` only when you need a quiet run.
261
+ *
262
+ * @typeParam Context - Domain context type
263
+ * @typeParam Public - Public protocol
264
+ * @typeParam Internal - Internal protocol
265
+ * @typeParam P - Port type
266
+ * @param topState - Root state class; `Context` / `Public` / `Internal` are inferred from it (see {@link TopStateArg})
267
+ * @param ctx - Mutable domain object shared by all states
268
+ * @param port - Outbound {@link Port} instance (its `actor` is bound by the factory)
269
+ * @param options - Optional tuning: `initialize` / `traceLevel` / `traceWriter` / … (see {@link ActorOptions})
270
+ * @returns A {@link TestActor} handle with full event + port access
271
+ *
272
+ * @example
273
+ * ```ts
274
+ * const sm = makeTestActor(ConnTop, new ConnCtx(), ihsmTest.makeTestPort(ConnMock));
275
+ * ```
276
+ *
277
+ * @category Factory
278
+ */
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>;