@playfast/reform-proof 1.4.0 → 1.4.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,MAAM,EAA8B,MAAM,QAAQ,CAAA;AAsBhF,OAAO,KAAK,EAAa,WAAW,EAAE,MAAM,aAAa,CAAA;AAEzD,OAAO,KAAK,EAAE,WAAW,EAAa,MAAM,SAAS,CAAA;AAErD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAEpC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACvC,YAAY,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AACtF,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAC1F,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAC1D,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AA0J1D,eAAO,MAAM,kBAAkB,GAAI,OAAO,KAAK,KAAG,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,CAgBtF,CAAA;AAEH,eAAO,MAAM,YAAY,GAAI,OAAO,KAAK,KAAG,OAAO,CAAC,WAAW,CACjB,CAAA;AA8D9C,eAAO,MAAM,gBAAgB,GAAI,OAAO,KAAK,KAAG,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,CAgBpF,CAAA;AAEH,eAAO,MAAM,UAAU,GAAI,OAAO,KAAK,KAAG,OAAO,CAAC,WAAW,CACjB,CAAA"}
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,EAA8B,MAAM,QAAQ,CAAA;AAuBlE,OAAO,KAAK,EAAa,WAAW,EAAE,MAAM,aAAa,CAAA;AAEzD,OAAO,KAAK,EAAE,WAAW,EAAa,MAAM,SAAS,CAAA;AAErD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAEpC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACvC,YAAY,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AACtF,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAC1F,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAC1D,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AA8I1D,eAAO,MAAM,kBAAkB,GAAI,OAAO,KAAK,KAAG,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,CAgBtF,CAAA;AAEH,eAAO,MAAM,YAAY,GAAI,OAAO,KAAK,KAAG,OAAO,CAAC,WAAW,CACjB,CAAA;AA8D9C,eAAO,MAAM,gBAAgB,GAAI,OAAO,KAAK,KAAG,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,CAgBpF,CAAA;AAEH,eAAO,MAAM,UAAU,GAAI,OAAO,KAAK,KAAG,OAAO,CAAC,WAAW,CACjB,CAAA"}
package/dist/engine.js CHANGED
@@ -1,9 +1,10 @@
1
- import { Array as Arr, Cause, Effect, Option, Record as Rec, Ref } from 'effect';
1
+ import { Cause, Effect, Option, Record as Rec, Ref } from 'effect';
2
2
  import { yieldWrapGet } from 'effect/Utils';
3
3
  import { makeAppRuntime, sceneInstrumentation, } from '@playfast/reform';
4
4
  import {} from '@playfast/reform/internal';
5
5
  import { invalidCompositionProps, makeSink, messageOf, } from './engineSink.js';
6
6
  import { childComposition, readRuntimeSlotChild, slotsOf } from './engineTree.js';
7
+ import { coverageFailure, missingCoverage } from './engineCoverage.js';
7
8
  import { makeRuntimeTreeFacade } from './engineTreeFacade.js';
8
9
  export { makeSink } from './engineSink.js';
9
10
  export { proofLayer } from './engineTree.js';
@@ -18,14 +19,6 @@ const withProofRuntimeTree = (scene, sink, dispatched, use) => Effect.acquireUse
18
19
  yield* Effect.sync(() => runtime.boot());
19
20
  return makeRuntimeTreeFacade(runtime, scene.composition, rootProps, sink, dispatched);
20
21
  }), (tree) => use(runtime, tree), (tree) => Effect.sync(tree.dispose)), (runtime) => Effect.sync(runtime.dispose));
21
- const missingCoverage = (proof, dispatched) => Option.match(proof.requirement.manifest.events, {
22
- onNone: () => [],
23
- onSome: (declared) => {
24
- const owner = compositionIdentity(proof.requirement.manifest.composition);
25
- const covered = new Set(Arr.filterMap(Arr.fromIterable(dispatched), (action) => Object.is(action.identity, owner) ? Option.some(action.event) : Option.none()));
26
- return declared.map(String).filter((event) => !covered.has(event));
27
- },
28
- });
29
22
  const compositionIdentity = (composition) => composition.capture((exact) => exact.identity);
30
23
  const verifyProofPlacement = (proof, scene, runtime) => {
31
24
  const expected = proof.requirement.manifest.composition;
@@ -65,10 +58,15 @@ const executeProofWithSink = Effect.fn('executeProofWithSink')(function* (proof,
65
58
  yield* verifyProofPlacement(proof, scene, runtime);
66
59
  yield* tree.settle;
67
60
  yield* runGenerator(proof.body(tree.facade), undefined, tree.settle);
68
- const missing = missingCoverage(proof, dispatched);
69
- const coverageError = `requirement declares events never dispatched: ${missing.join(', ')}`;
61
+ const coverage = {
62
+ requirement: proof.requirement,
63
+ host: compositionIdentity(scene.composition),
64
+ dispatched,
65
+ publications: tree.publications,
66
+ };
67
+ const missing = missingCoverage(coverage);
70
68
  return missing.length > 0
71
- ? { requirement: statement, ok: false, error: coverageError }
69
+ ? { requirement: statement, ok: false, error: coverageFailure(coverage, missing) }
72
70
  : { requirement: statement, ok: true, error: undefined };
73
71
  })).pipe(Effect.catchAllCause((cause) => Effect.succeed({
74
72
  requirement: statement,
@@ -1 +1 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { type DispatchedAction, type EventPublications } from './engineSink.js';
2
+ import type { Proof } from './index.js';
3
+ export interface Coverage {
4
+ readonly requirement: Proof['requirement'];
5
+ readonly host: symbol;
6
+ readonly dispatched: Set<DispatchedAction>;
7
+ readonly publications: EventPublications;
8
+ }
9
+ export declare const missingCoverage: (coverage: Coverage) => ReadonlyArray<string>;
10
+ export declare const coverageFailure: (coverage: Coverage, missing: ReadonlyArray<string>) => string;
11
+ //# sourceMappingURL=engineCoverage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engineCoverage.d.ts","sourceRoot":"","sources":["../src/engineCoverage.ts"],"names":[],"mappings":"AACA,OAAO,EAAyB,KAAK,gBAAgB,EAAE,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAA;AACnG,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAEpC,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,aAAa,CAAC,CAAA;IAG1C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAA;IAC1C,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CAAA;CACzC;AAiCD,eAAO,MAAM,eAAe,GAAI,UAAU,QAAQ,KAAG,aAAa,CAAC,MAAM,CAUrE,CAAA;AA2BJ,eAAO,MAAM,eAAe,GAAI,UAAU,QAAQ,EAAE,SAAS,aAAa,CAAC,MAAM,CAAC,KAAG,MAIpF,CAAA"}
@@ -0,0 +1,48 @@
1
+ import { Array as Arr, Option } from 'effect';
2
+ import { compositionIdentityOf } from './engineSink.js';
3
+ const samePublication = (published, declared) => Option.getOrElse(Option.zipWith(published, declared, (raised, owned) => raised === owned), () => false);
4
+ // A declared event is answered by a dispatch on the requirement's own composition — or
5
+ // by the composition that renders it raising the very same domain Event. The second
6
+ // case is the test-only parent that exists to feed a slot the props it needs and
7
+ // re-exposes its action: that dispatch reaches the child's reducer, so withholding
8
+ // coverage reports "never dispatched" about an event whose effects the proof body
9
+ // asserts two lines later. A composition that merely spells an action the same way
10
+ // publishes a different Event and stays uncovered, which is the collision the identity
11
+ // check exists for — as does a sibling raising the event without owning the action.
12
+ const answeredBy = ({ coverage, owner, event }) => (action) => Object.is(action.identity, owner)
13
+ ? action.event === event
14
+ : Object.is(action.identity, coverage.host) &&
15
+ samePublication(action.published, coverage.publications.publishedBy(owner, event));
16
+ export const missingCoverage = (coverage) => Option.match(coverage.requirement.manifest.events, {
17
+ onNone: () => [],
18
+ onSome: (declared) => {
19
+ const owner = compositionIdentityOf(coverage.requirement.manifest.composition);
20
+ const raised = Arr.fromIterable(coverage.dispatched);
21
+ return declared
22
+ .map(String)
23
+ .filter((event) => !raised.some(answeredBy({ coverage, owner, event })));
24
+ },
25
+ });
26
+ const publicationSuffix = (published) => Option.match(published, {
27
+ onNone: () => '',
28
+ onSome: (tag) => ` (publishes ${tag})`,
29
+ });
30
+ // "never dispatched" is the wrong story when the event was dispatched on a composition
31
+ // the requirement does not own, so name that composition and what each side publishes.
32
+ const uncoveredDetail = ({ coverage, owner, event }) => {
33
+ const ownerName = coverage.requirement.manifest.composition.manifest.name;
34
+ const elsewhere = Arr.dedupe(Arr.filterMap(Arr.fromIterable(coverage.dispatched), (action) => action.event === event && !Object.is(action.identity, owner)
35
+ ? Option.some(`${action.composition}${publicationSuffix(action.published)}`)
36
+ : Option.none()));
37
+ const owned = publicationSuffix(coverage.publications.publishedBy(owner, event));
38
+ return Arr.match(elsewhere, {
39
+ onEmpty: () => event,
40
+ onNonEmpty: (raisers) => `${event} — dispatched on ${Arr.join(raisers, ', ')}, not on ${ownerName}${owned}`,
41
+ });
42
+ };
43
+ export const coverageFailure = (coverage, missing) => {
44
+ const owner = compositionIdentityOf(coverage.requirement.manifest.composition);
45
+ const detail = missing.map((event) => uncoveredDetail({ coverage, owner, event }));
46
+ return `requirement declares events never dispatched: ${Arr.join(detail, '; ')}`;
47
+ };
48
+ //# sourceMappingURL=engineCoverage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engineCoverage.js","sourceRoot":"","sources":["../src/engineCoverage.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"engineMounted.d.ts","sourceRoot":"","sources":["../src/engineMounted.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,MAAM,EAAE,cAAc,EAAqB,MAAM,QAAQ,CAAA;AAE/F,OAAO,EACL,KAAK,aAAa,EAElB,KAAK,aAAa,EAElB,KAAK,UAAU,EAChB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAuB,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAC5E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACtC,OAAO,EAGL,KAAK,gBAAgB,EAGrB,KAAK,aAAa,EAKlB,KAAK,sBAAsB,EAE3B,KAAK,IAAI,EAEV,MAAM,cAAc,CAAA;AAYrB,wBAAgB,UAAU,CACxB,CAAC,SAAS,UAAU,EACpB,CAAC,SAAS,aAAa,CAAC,OAAO,CAAC,EAChC,QAAQ,EACR,CAAC,EACD,CAAC,SAAS,MAAM,EAChB,QAAQ,EAER,OAAO,EAAE,cAAc,CAAC,cAAc,CAAC,QAAQ,GAAG,WAAW,EAAE,KAAK,CAAC,EACrE,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,EACpD,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,GAAG,CAAC,gBAAgB,CAAC,GAChC;IACD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;CACnD,CASA;AA2KD,eAAO,MAAM,eAAe,GAC1B,CAAC,SAAS,UAAU,EACpB,CAAC,SAAS,aAAa,CAAC,OAAO,CAAC,EAChC,QAAQ,EACR,CAAC,EACD,CAAC,SAAS,MAAM,EAChB,QAAQ,EAER,SAAS,cAAc,CAAC,cAAc,CAAC,QAAQ,GAAG,WAAW,EAAE,KAAK,CAAC,EACrE,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,EACpD,MAAM,IAAI,EACV,YAAY,GAAG,CAAC,gBAAgB,CAAC,KAChC;IACD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;CAGnD,CAAA;AAED,eAAO,MAAM,uBAAuB,GAClC,QAAQ,EACR,cAAc,SAAS,OAAO,CAAC,QAAQ,CAAC,EACxC,CAAC,EACD,CAAC,SAAS,UAAU,EACpB,CAAC,SAAS,aAAa,CAAC,OAAO,CAAC,EAChC,CAAC,SAAS,MAAM,EAChB,QAAQ,EAER,SAAS,aAAa,CAAC,QAAQ,CAAC,EAChC,MAAM,sBAAsB,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,EAClE,MAAM,IAAI,EACV,YAAY,GAAG,CAAC,gBAAgB,CAAC,KAChC;IACD,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;CACiB,CAAA"}
1
+ {"version":3,"file":"engineMounted.d.ts","sourceRoot":"","sources":["../src/engineMounted.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,MAAM,EAAE,cAAc,EAAqB,MAAM,QAAQ,CAAA;AAE/F,OAAO,EACL,KAAK,aAAa,EAElB,KAAK,aAAa,EAElB,KAAK,UAAU,EAChB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAuB,WAAW,EAAmB,MAAM,2BAA2B,CAAA;AAC7F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACtC,OAAO,EAGL,KAAK,gBAAgB,EAGrB,KAAK,aAAa,EAKlB,KAAK,sBAAsB,EAE3B,KAAK,IAAI,EAEV,MAAM,cAAc,CAAA;AAYrB,wBAAgB,UAAU,CACxB,CAAC,SAAS,UAAU,EACpB,CAAC,SAAS,aAAa,CAAC,OAAO,CAAC,EAChC,QAAQ,EACR,CAAC,EACD,CAAC,SAAS,MAAM,EAChB,QAAQ,EAER,OAAO,EAAE,cAAc,CAAC,cAAc,CAAC,QAAQ,GAAG,WAAW,EAAE,KAAK,CAAC,EACrE,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,EACpD,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,GAAG,CAAC,gBAAgB,CAAC,GAChC;IACD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;CACnD,CASA;AAgLD,eAAO,MAAM,eAAe,GAC1B,CAAC,SAAS,UAAU,EACpB,CAAC,SAAS,aAAa,CAAC,OAAO,CAAC,EAChC,QAAQ,EACR,CAAC,EACD,CAAC,SAAS,MAAM,EAChB,QAAQ,EAER,SAAS,cAAc,CAAC,cAAc,CAAC,QAAQ,GAAG,WAAW,EAAE,KAAK,CAAC,EACrE,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,EACpD,MAAM,IAAI,EACV,YAAY,GAAG,CAAC,gBAAgB,CAAC,KAChC;IACD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;CAGnD,CAAA;AAED,eAAO,MAAM,uBAAuB,GAClC,QAAQ,EACR,cAAc,SAAS,OAAO,CAAC,QAAQ,CAAC,EACxC,CAAC,EACD,CAAC,SAAS,UAAU,EACpB,CAAC,SAAS,aAAa,CAAC,OAAO,CAAC,EAChC,CAAC,SAAS,MAAM,EAChB,QAAQ,EAER,SAAS,aAAa,CAAC,QAAQ,CAAC,EAChC,MAAM,sBAAsB,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,EAClE,MAAM,IAAI,EACV,YAAY,GAAG,CAAC,gBAAgB,CAAC,KAChC;IACD,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;CACiB,CAAA"}
@@ -1,7 +1,7 @@
1
1
  import { Array as Arr, Effect, ManagedRuntime, Option, TestClock } from 'effect';
2
2
  import { NoTestClock, UnknownAction, UnknownSlot } from './errors.js';
3
3
  import {} from '@playfast/reform';
4
- import { CaptureSink } from '@playfast/reform/internal';
4
+ import { CaptureSink, triggerEventTag } from '@playfast/reform/internal';
5
5
  import { compositionIdentityOf, directSettle, expectMatchingProps, keyed, uiNameOf, } from './engineSink.js';
6
6
  import { makeCaptureLookup, nodeCaptureFor, renderRuntimeFromContext, rootRef, slotCapturesFor, slotsOf, } from './engineTree.js';
7
7
  import { collectRuntimeBindings, renderTreeRuntime, settleTreeRuntime } from './engineRender.js';
@@ -37,7 +37,12 @@ function makeMountedFacade(runtime, root, sink, dispatched, settleBoundary) {
37
37
  props: propsFor(ref),
38
38
  expectProps: (partial) => propsFor(ref).pipe(Effect.flatMap((props) => expectMatchingProps({ actual: props, expected: partial }))),
39
39
  actions: keyed((event) => (payload) => rerender.pipe(Effect.flatMap(() => triggerOf(ref, event)), Effect.flatMap((trigger) => Effect.sync(() => {
40
- dispatched.add({ identity: compositionIdentityOf(comp), event });
40
+ dispatched.add({
41
+ identity: compositionIdentityOf(comp),
42
+ composition: uiNameOf(comp),
43
+ event,
44
+ published: triggerEventTag(trigger),
45
+ });
41
46
  trigger(payload);
42
47
  })), Effect.flatMap(() => settle), Effect.flatMap(() => propsFor(ref)))),
43
48
  slots: keyed((slotName) => slotFacade(ref, comp, slotName)),
@@ -1 +1 @@
1
- {"version":3,"file":"engineMounted.js","sourceRoot":"","sources":["../src/engineMounted.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engineMounted.js","sourceRoot":"","sources":["../src/engineMounted.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { type Context, type Duration, Effect } from 'effect';
1
+ import { type Context, type Duration, Effect, Option } from 'effect';
2
2
  import { type CompositionClass, type CompositionService, type RuntimeHandle, type Structure, type Trigger, type UiContract } from '@playfast/reform';
3
3
  import { type AnyComposition, type CapturedRender, type CaptureSinkApi, type Instrumentation } from '@playfast/reform/internal';
4
4
  import type { Facade, SlotFacade, SlotFacadesOf } from './facade.js';
@@ -46,8 +46,20 @@ export declare const keyed: <V>(get: (key: string) => V) => Record<string, V>;
46
46
  export declare const messageOf: (error: unknown) => string;
47
47
  export interface DispatchedAction {
48
48
  readonly identity: symbol;
49
+ readonly composition: string;
49
50
  readonly event: string;
51
+ readonly published: Option.Option<string>;
50
52
  }
53
+ export interface EventPublications {
54
+ readonly observe: (root: TreeNodeShape) => void;
55
+ readonly publishedBy: (identity: symbol, action: string) => Option.Option<string>;
56
+ }
57
+ export interface TreeNodeShape {
58
+ readonly comp: AnyComposition;
59
+ readonly events: Record<string, Trigger<unknown>>;
60
+ readonly slots: Readonly<Record<string, ReadonlyArray<TreeNodeShape>>>;
61
+ }
62
+ export declare const makeEventPublications: () => EventPublications;
51
63
  export declare const compositionIdentityOf: (composition: AnyComposition) => symbol;
52
64
  export declare const uiNameOf: (comp: AnyComposition) => string;
53
65
  export declare const eventsOf: (structure: Structure<UiContract>) => Record<string, Trigger<unknown>>;
@@ -1 +1 @@
1
- {"version":3,"file":"engineSink.d.ts","sourceRoot":"","sources":["../src/engineSink.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engineSink.d.ts","sourceRoot":"","sources":["../src/engineSink.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,MAAM,EAEN,MAAM,EAEP,MAAM,QAAQ,CAAA;AAEf,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EAEvB,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,OAAO,EACZ,KAAK,UAAU,EAChB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,eAAe,EAGrB,MAAM,2BAA2B,CAAA;AAElC,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAEjE,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE,UAAU,GAAG,iBAAiB,GAAG,YAAY,CAAC,CAAA;AAE9F,MAAM,MAAM,WAAW,GAAG,IAAI,CAC5B,aAAa,EACb,UAAU,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,YAAY,CAClE,CAAA;AAED,MAAM,MAAM,sBAAsB,CAChC,UAAU,EACV,CAAC,EACD,CAAC,SAAS,UAAU,EACpB,CAAC,SAAS,aAAa,CAAC,OAAO,CAAC,EAChC,CAAC,SAAS,MAAM,EAChB,QAAQ,IACN,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,GAAG;IAC3C,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;CAChE,CAAA;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;IACpD,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;IAC7E,QAAQ,CAAC,OAAO,EAAE,QAAQ,CACxB,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAC3E,CAAA;IACD,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC,CAAA;IAClE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;IACjD,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,aAAa,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;CAC1F;AAED,MAAM,WAAW,wBAAyB,SAAQ,oBAAoB;IACpE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,oBAAoB,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;IACjE,QAAQ,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,oBAAoB,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;IACjF,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,oBAAoB,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;IAC9E,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,oBAAoB,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;IAClF,QAAQ,CAAC,KAAK,EAAE,CACd,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,KACnC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,oBAAoB,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;IACrE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;CACpD;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;QACpD,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;QAC3E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;QACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;QACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;QACjD,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,aAAa,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;KAC1F,CAAA;IACD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;CACnD;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;AAC1D,MAAM,MAAM,cAAc,GAAG,CAAC,UAAU,EAAE,UAAU,KAAK,UAAU,CAAA;AAEnE,eAAO,MAAM,YAAY,EAAE,cAA2C,CAAA;AAItE,eAAO,MAAM,YAAY,KAAK,CAAA;AAC9B,eAAO,MAAM,WAAW,YAAY,CAAA;AACpC,eAAO,MAAM,kBAAkB,MAAM,CAAA;AAErC,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAwD,CAAA;AAQpG,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAE1C,CAAA;AAED,eAAO,MAAM,KAAK,GAAI,CAAC,EAAE,KAAK,CAAC,GAAG,EAAE,MAAM,KAAK,CAAC,KAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAGlE,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,OAAO,OAAO,KAAG,MACa,CAAA;AASxD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;CAC1C;AAID,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAA;IAC/C,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;CAClF;AAID,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAA;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAA;IACjD,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,CAAA;CACvE;AAED,eAAO,MAAM,qBAAqB,QAAO,iBAuBxC,CAAA;AAED,eAAO,MAAM,qBAAqB,GAAI,aAAa,cAAc,KAAG,MACZ,CAAA;AAExD,eAAO,MAAM,QAAQ,GAAI,MAAM,cAAc,KAAG,MAAwC,CAAA;AAGxF,eAAO,MAAM,QAAQ,GAAI,WAAW,SAAS,CAAC,UAAU,CAAC,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAEzF,CAAA;AAEF,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;CAC3B;AAED,eAAO,MAAM,mBAAmB,GAAI,uBAGjC,aAAa,KAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAI/C,CAAA;AAEJ,eAAO,MAAM,uBAAuB,GAAI,aAAa,cAAc,KAAG,MACM,CAAA;AAE5E,eAAO,MAAM,wBAAwB,GACnC,SAAS,aAAa,EACtB,aAAa,cAAc,EAC3B,OAAO,OAAO,KACb,SAAS,CAAC,UAAU,CA+BpB,CAAA;AAEH,MAAM,WAAW,IAAI;IACnB,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAA;IAC5B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,cAAc,CAAC,CAAA;IAChD,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAA;IACzC,KAAK,IAAI,IAAI,CAAA;CACd;AAED,eAAO,MAAM,QAAQ,GAAI,kBAAiB,eAAqC,KAAG,IAiBjF,CAAA;AAED,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,UAAU,IAAI,aAAa,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;AAEhF,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,UAAU,IAAI,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;AAElE,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,UAAU,IAAI,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA"}
@@ -1,7 +1,7 @@
1
- import { Clock, Effect, MutableRef, Option } from 'effect';
1
+ import { Clock, Effect, MutableRef, Option, Record as Rec, } from 'effect';
2
2
  import { AssertionFailed } from './errors.js';
3
3
  import { Composition, isStructure, } from '@playfast/reform';
4
- import { noopInstrumentation, } from '@playfast/reform/internal';
4
+ import { noopInstrumentation, triggerEventTag, } from '@playfast/reform/internal';
5
5
  import { matchProps } from './assert.js';
6
6
  export const directSettle = (settlement) => settlement;
7
7
  // Cooperative yields flush synchronous fibers; the real-time sleep prevents a
@@ -22,6 +22,25 @@ export const keyed = (get) => {
22
22
  return new Proxy(target, { get: (_target, key) => get(String(key)) });
23
23
  };
24
24
  export const messageOf = (error) => error instanceof Error ? error.message : String(error);
25
+ export const makeEventPublications = () => {
26
+ const byComposition = new Map();
27
+ const record = (node) => {
28
+ const identity = compositionIdentityOf(node.comp);
29
+ const actions = byComposition.get(identity) ?? new Map();
30
+ Rec.toEntries(node.events).forEach(([action, trigger]) => Option.match(triggerEventTag(trigger), {
31
+ onNone: () => { },
32
+ onSome: (tag) => {
33
+ actions.set(action, tag);
34
+ },
35
+ }));
36
+ byComposition.set(identity, actions);
37
+ Rec.toEntries(node.slots).forEach(([_name, children]) => children.forEach(record));
38
+ };
39
+ return {
40
+ observe: record,
41
+ publishedBy: (identity, action) => Option.fromNullable(byComposition.get(identity)).pipe(Option.flatMap((actions) => Option.fromNullable(actions.get(action)))),
42
+ };
43
+ };
25
44
  export const compositionIdentityOf = (composition) => composition.capture((exact) => exact.identity);
26
45
  export const uiNameOf = (comp) => comp.manifest.ui.manifest.name;
27
46
  // UiContract erases event values to never, so this boundary needs no assertion.
@@ -1 +1 @@
1
- {"version":3,"file":"engineSink.js","sourceRoot":"","sources":["../src/engineSink.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engineSink.js","sourceRoot":"","sources":["../src/engineSink.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"engineTreeFacade.d.ts","sourceRoot":"","sources":["../src/engineTreeFacade.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAEtE,OAAO,EAEL,KAAK,gBAAgB,EAKrB,KAAK,sBAAsB,EAC3B,KAAK,IAAI,EAEV,MAAM,cAAc,CAAA;AAErB,OAAO,KAAK,EAAE,iBAAiB,EAAsC,MAAM,mBAAmB,CAAA;AAE9F,wBAAgB,qBAAqB,CACnC,QAAQ,EACR,cAAc,SAAS,OAAO,CAAC,QAAQ,CAAC,EACxC,CAAC,EACD,CAAC,SAAS,UAAU,EACpB,CAAC,SAAS,aAAa,CAAC,OAAO,CAAC,EAChC,CAAC,SAAS,MAAM,EAChB,QAAQ,EAER,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,EAChC,IAAI,EAAE,sBAAsB,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,EAClE,SAAS,EAAE,CAAC,EACZ,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,GAAG,CAAC,gBAAgB,CAAC,GAChC,iBAAiB,CAAC,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"engineTreeFacade.d.ts","sourceRoot":"","sources":["../src/engineTreeFacade.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAEtE,OAAO,EAEL,KAAK,gBAAgB,EAMrB,KAAK,sBAAsB,EAC3B,KAAK,IAAI,EAEV,MAAM,cAAc,CAAA;AAErB,OAAO,KAAK,EAAE,iBAAiB,EAAsC,MAAM,mBAAmB,CAAA;AAE9F,wBAAgB,qBAAqB,CACnC,QAAQ,EACR,cAAc,SAAS,OAAO,CAAC,QAAQ,CAAC,EACxC,CAAC,EACD,CAAC,SAAS,UAAU,EACpB,CAAC,SAAS,aAAa,CAAC,OAAO,CAAC,EAChC,CAAC,SAAS,MAAM,EAChB,QAAQ,EAER,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,EAChC,IAAI,EAAE,sBAAsB,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,EAClE,SAAS,EAAE,CAAC,EACZ,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,GAAG,CAAC,gBAAgB,CAAC,GAChC,iBAAiB,CAAC,CAAC,CAAC,CAAA"}
@@ -2,11 +2,20 @@ import { Array as Arr, Effect, MutableRef, Option, TestClock } from 'effect';
2
2
  import { AssertionFailed, NoTestClock, UnknownAction, UnknownSlot } from './errors.js';
3
3
  import { matchProps } from './assert.js';
4
4
  import {} from '@playfast/reform';
5
- import { compositionIdentityOf, keyed, uiNameOf, } from './engineSink.js';
5
+ import { triggerEventTag } from '@playfast/reform/internal';
6
+ import { compositionIdentityOf, keyed, makeEventPublications, uiNameOf, } from './engineSink.js';
6
7
  import { makeTreeDriver } from './engineTreeDriver.js';
7
8
  export function makeRuntimeTreeFacade(runtime, root, rootProps, sink, dispatched) {
8
9
  const driver = makeTreeDriver(runtime, root, rootProps, sink);
9
- const currentRoot = () => driver.render().root;
10
+ const publications = makeEventPublications();
11
+ // Every resolver bottoms out here, so reading the tree is also when the ledger of
12
+ // "what does each composition publish under this action name" is refreshed. Coverage
13
+ // needs that for compositions the proof body never addressed directly.
14
+ const currentRoot = () => {
15
+ const node = driver.render().root;
16
+ publications.observe(node);
17
+ return node;
18
+ };
10
19
  // The nested-Feature twin of the mounted facade's `advance`: same virtual clock
11
20
  // off the same runtime, settled through this driver instead.
12
21
  const advance = (duration) => Option.match(runtime.readOption(TestClock.TestClock), {
@@ -38,7 +47,12 @@ export function makeRuntimeTreeFacade(runtime, root, rootProps, sink, dispatched
38
47
  rendered: 1,
39
48
  }).message);
40
49
  }
41
- dispatched.add({ identity: compositionIdentityOf(node.comp), event });
50
+ dispatched.add({
51
+ identity: compositionIdentityOf(node.comp),
52
+ composition: uiNameOf(node.comp),
53
+ event,
54
+ published: triggerEventTag(trigger),
55
+ });
42
56
  trigger(payload);
43
57
  yield* driver.settle;
44
58
  // A self-removing action leaves nothing to re-read; report what the
@@ -118,6 +132,7 @@ export function makeRuntimeTreeFacade(runtime, root, rootProps, sink, dispatched
118
132
  return {
119
133
  facade: nodeFacade(currentRoot, () => Option.some(currentRoot())),
120
134
  settle: driver.settle,
135
+ publications,
121
136
  dispose: driver.dispose,
122
137
  };
123
138
  }
@@ -1 +1 @@
1
- {"version":3,"file":"engineTreeFacade.js","sourceRoot":"","sources":["../src/engineTreeFacade.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engineTreeFacade.js","sourceRoot":"","sources":["../src/engineTreeFacade.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { type Effect, type Option } from 'effect';
2
2
  import type { FeatureLoadFailed, SlotFill, Trigger, UiContract } from '@playfast/reform';
3
3
  import type { AnyComposition, AnyFeatureBinding } from '@playfast/reform/internal';
4
- import { type HostRuntime, type MountedFacade, type MountedFacadeHandleErasure } from './engineSink.js';
4
+ import { type EventPublications, type HostRuntime, type MountedFacade, type MountedFacadeHandleErasure } from './engineSink.js';
5
5
  export type FeatureMountState = {
6
6
  readonly _tag: 'Loading';
7
7
  } | {
@@ -37,9 +37,11 @@ export interface TreeRenderState {
37
37
  export interface RuntimeTreeFacade<C extends UiContract> {
38
38
  readonly facade: MountedFacade<C>;
39
39
  readonly settle: Effect.Effect<void, never, never>;
40
+ readonly publications: EventPublications;
40
41
  dispose(): void;
41
42
  }
42
43
  export interface RuntimeTreeFacadeErasure extends MountedFacadeHandleErasure {
44
+ readonly publications: EventPublications;
43
45
  dispose(): void;
44
46
  }
45
47
  export interface TreeDriver {
@@ -1 +1 @@
1
- {"version":3,"file":"engineTreeTypes.d.ts","sourceRoot":"","sources":["../src/engineTreeTypes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAS,KAAK,MAAM,EAAiB,MAAM,QAAQ,CAAA;AACvE,OAAO,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AACxF,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAClF,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,0BAA0B,EAEhC,MAAM,cAAc,CAAA;AAErB,MAAM,MAAM,iBAAiB,GACzB;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GAC5B;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAA;CAAE,GACxD;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAA;CAAE,CAAA;AAElE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAA;IACnC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,iBAAiB,CAAA;IACxB,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IACnC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAA;IAC7B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAA;IACjD,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;CAClE;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAC7B;AAED,MAAM,WAAW,iBAAiB,CAAC,CAAC,SAAS,UAAU;IACrD,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;IAClD,OAAO,IAAI,IAAI,CAAA;CAChB;AAED,MAAM,WAAW,wBAAyB,SAAQ,0BAA0B;IAC1E,OAAO,IAAI,IAAI,CAAA;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,eAAe,CAAA;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;IAClD,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAA;CAC7B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAA;CACpC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;IAC5B,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAA;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CACxB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAA;IAC7B,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAA;IAC7B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC1B,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;CAC/B;AAED,eAAO,MAAM,kBAAkB,GAAI,MAAM,MAAM,KAAG,MAAkC,CAAA;AAEpF,eAAO,MAAM,WAAW,GACtB,UAAU,MAAM,EAChB,MAAM,QAAQ,CAAC,OAAO,CAAC,KACtB,aAAa,CAAC;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAM/D,CAAA;AAEH,eAAO,MAAM,eAAe,GAAI,MAAM,QAAQ,KAAG,OAKhD,CAAA"}
1
+ {"version":3,"file":"engineTreeTypes.d.ts","sourceRoot":"","sources":["../src/engineTreeTypes.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"engineTreeTypes.js","sourceRoot":"","sources":["../src/engineTreeTypes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,EAAe,MAAM,IAAI,GAAG,EAAE,MAAM,QAAQ,CAAA;AAGvE,OAAO,EAIL,QAAQ,GACT,MAAM,cAAc,CAAA;AA4ErB,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE,CAAA;AAEpF,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,QAAgB,EAChB,IAAuB,EAC2C,EAAE,CACpE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CACpB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAClD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,QAAQ,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,EAC1F,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EACxC,KAAK,CAAC,UAAU,CACjB,CAAA;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAc,EAAW,EAAE,CAAC;IAC1D,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IACnB,IAAI,CAAC,GAAG;IACR,IAAI,CAAC,KAAK;IACV,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;CACjE,CAAA"}
1
+ {"version":3,"file":"engineTreeTypes.js","sourceRoot":"","sources":["../src/engineTreeTypes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,EAAe,MAAM,IAAI,GAAG,EAAE,MAAM,QAAQ,CAAA;AAGvE,OAAO,EAKL,QAAQ,GACT,MAAM,cAAc,CAAA;AA8ErB,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE,CAAA;AAEpF,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,QAAgB,EAChB,IAAuB,EAC2C,EAAE,CACpE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CACpB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAClD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,QAAQ,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,EAC1F,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EACxC,KAAK,CAAC,UAAU,CACjB,CAAA;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAc,EAAW,EAAE,CAAC;IAC1D,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IACnB,IAAI,CAAC,GAAG;IACR,IAAI,CAAC,KAAK;IACV,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;CACjE,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@playfast/reform-proof",
3
- "version": "1.4.0",
3
+ "version": "1.4.1",
4
4
  "description": "Headless testing toolkit for reform — drive a scene's compositions and assert on the props they compute, with no DOM, timers, or text matching.",
5
5
  "keywords": [
6
6
  "effect",
@@ -0,0 +1,183 @@
1
+ import { Layer, Schema as S } from 'effect'
2
+ import {
3
+ Composition,
4
+ Engine,
5
+ Event,
6
+ mount,
7
+ one,
8
+ provide,
9
+ Reducer,
10
+ scene,
11
+ slot,
12
+ State,
13
+ StateGroup,
14
+ type Trigger,
15
+ Ui,
16
+ ui,
17
+ } from '@playfast/reform'
18
+ import { describe, expect, test } from 'vitest'
19
+ import { Product, Proof, ProductRequirement, expect as proofExpect } from './index'
20
+
21
+ // The dialog's own event, and one only the host raises.
22
+ class Confirmed extends Event.make('CovConfirmed', S.Struct({})) {}
23
+ class HostConfirmed extends Event.make('CovHostConfirmed', S.Struct({})) {}
24
+
25
+ class CountState extends State.make('covCount', S.Number) {}
26
+ class CountStates extends StateGroup.make(CountState) {}
27
+ class CountReducer extends Reducer.make('CovReducer', {
28
+ states: [CountState],
29
+ events: [Confirmed],
30
+ }) {}
31
+ const CountReducerLive = Reducer.live(CountReducer, (count) => count + 1)
32
+
33
+ class DialogUi extends ui('CovDialog')<{
34
+ props: { count: number }
35
+ events: { confirm: Trigger<Record<string, never>> }
36
+ }>() {}
37
+ class Dialog extends Composition.make('CovDialog', {
38
+ title: 'CovDialog',
39
+ states: [CountStates],
40
+ events: [Confirmed],
41
+ ui: DialogUi,
42
+ })<Dialog>() {}
43
+ const DialogLive = Composition.live(Dialog, function* () {
44
+ const count = yield* StateGroup.select(CountStates, 'covCount')
45
+ const confirm = yield* Event.trigger(Confirmed)
46
+ return mount({ props: { count }, slots: {}, events: { confirm } })
47
+ })
48
+ class DialogSlot extends slot('CovDialogSlot')<DialogSlot, typeof Dialog>() {}
49
+
50
+ // A sibling that raises the dialog's event without being the dialog.
51
+ class EchoUi extends ui('CovEcho')<{
52
+ props: { count: number }
53
+ events: { confirm: Trigger<Record<string, never>> }
54
+ }>() {}
55
+ class Echo extends Composition.make('CovEcho', {
56
+ title: 'CovEcho',
57
+ states: [CountStates],
58
+ events: [Confirmed],
59
+ ui: EchoUi,
60
+ })<Echo>() {}
61
+ const EchoLive = Composition.live(Echo, function* () {
62
+ const count = yield* StateGroup.select(CountStates, 'covCount')
63
+ const confirm = yield* Event.trigger(Confirmed)
64
+ return mount({ props: { count }, slots: {}, events: { confirm } })
65
+ })
66
+ class EchoSlot extends slot('CovEchoSlot')<EchoSlot, typeof Echo>() {}
67
+
68
+ // The test-only parent: it renders the dialog and re-exposes its event as
69
+ // `passthrough`, while its own `confirm` is a different event that happens to
70
+ // spell the dialog's action name.
71
+ class HostUi extends ui('CovHost')<{
72
+ props: { count: number }
73
+ events: {
74
+ confirm: Trigger<Record<string, never>>
75
+ passthrough: Trigger<Record<string, never>>
76
+ }
77
+ slots: { Dialog: DialogSlot; Echo: EchoSlot }
78
+ }>() {}
79
+ class Host extends Composition.make('CovHost', {
80
+ title: 'CovHost',
81
+ states: [CountStates],
82
+ events: [Confirmed, HostConfirmed],
83
+ slots: { Dialog: DialogSlot, Echo: EchoSlot },
84
+ ui: HostUi,
85
+ })<Host>() {}
86
+ const HostLive = Composition.live(Host, function* () {
87
+ const count = yield* StateGroup.select(CountStates, 'covCount')
88
+ const confirm = yield* Event.trigger(HostConfirmed)
89
+ const passthrough = yield* Event.trigger(Confirmed)
90
+ return mount({
91
+ props: { count },
92
+ slots: { Dialog: one({}), Echo: one({}) },
93
+ events: { confirm, passthrough },
94
+ })
95
+ })
96
+
97
+ const presentations = Layer.mergeAll(
98
+ provide(
99
+ HostUi,
100
+ Ui.make(HostUi, () => null),
101
+ ),
102
+ provide(
103
+ DialogUi,
104
+ Ui.make(DialogUi, () => null),
105
+ ),
106
+ provide(
107
+ EchoUi,
108
+ Ui.make(EchoUi, () => null),
109
+ ),
110
+ )
111
+ const Views = Layer.mergeAll(
112
+ HostLive,
113
+ DialogLive,
114
+ EchoLive,
115
+ provide(DialogSlot, Dialog),
116
+ provide(EchoSlot, Echo),
117
+ ).pipe(Layer.provideMerge(presentations))
118
+ const Logic = CountReducerLive.pipe(
119
+ Layer.provideMerge(Layer.mergeAll(Engine, StateGroup.live(CountStates, { covCount: 0 }))),
120
+ )
121
+ const HostScene = scene(Host, { provide: [Views.pipe(Layer.provideMerge(Logic))] })
122
+
123
+ class ConfirmsDialog extends ProductRequirement.make(Dialog, 'confirms the dialog', {
124
+ events: ['confirm'],
125
+ }) {}
126
+ class DialogProduct extends Product.make(Dialog, { requirements: [ConfirmsDialog] }) {}
127
+
128
+ const run = (proof: Proof) => Proof.run(Proof.suite(DialogProduct, { proofs: [proof] }))
129
+
130
+ describe('event coverage across a test-only host (issue #26)', () => {
131
+ test('the composition raising the requirement’s own event covers it', async () => {
132
+ const viaSlot = Proof.implementVia(ConfirmsDialog, HostScene, function* (app) {
133
+ const dialog = yield* app.slots.Dialog.first
134
+ const after = yield* dialog.actions.confirm({})
135
+ yield* proofExpect(after.count).toBe(1)
136
+ })
137
+ const result = await run(viaSlot)
138
+ expect(result.results[0]?.error).toBeUndefined()
139
+ expect(result.ok).toBe(true)
140
+ })
141
+
142
+ test('a host that re-raises the requirement’s event covers it too', async () => {
143
+ const viaHost = Proof.implementVia(ConfirmsDialog, HostScene, function* (app) {
144
+ const after = yield* app.actions.passthrough({})
145
+ yield* proofExpect(after.count).toBe(1)
146
+ })
147
+ const result = await run(viaHost)
148
+ expect(result.results[0]?.error).toBeUndefined()
149
+ expect(result.ok).toBe(true)
150
+ })
151
+
152
+ test('a host action that only spells the name the same does not cover it', async () => {
153
+ const sameName = Proof.implementVia(ConfirmsDialog, HostScene, function* (app) {
154
+ const after = yield* app.actions.confirm({})
155
+ yield* proofExpect(after.count).toBe(0)
156
+ })
157
+ const result = await run(sameName)
158
+ expect(result.ok).toBe(false)
159
+ expect(result.results[0]?.error).toContain('never dispatched')
160
+ })
161
+
162
+ test('a sibling raising the same event does not cover it', async () => {
163
+ const sibling = Proof.implementVia(ConfirmsDialog, HostScene, function* (app) {
164
+ const echo = yield* app.slots.Echo.first
165
+ const after = yield* echo.actions.confirm({})
166
+ yield* proofExpect(after.count).toBe(1)
167
+ })
168
+ const result = await run(sibling)
169
+ expect(result.ok).toBe(false)
170
+ expect(result.results[0]?.error).toContain('never dispatched')
171
+ })
172
+
173
+ test('the failure names where the event was dispatched instead', async () => {
174
+ const sameName = Proof.implementVia(ConfirmsDialog, HostScene, function* (app) {
175
+ yield* app.actions.confirm({})
176
+ })
177
+ const result = await run(sameName)
178
+ expect(result.results[0]?.error).toContain('dispatched on CovHost')
179
+ expect(result.results[0]?.error).toContain('CovHostConfirmed')
180
+ expect(result.results[0]?.error).toContain('not on CovDialog')
181
+ expect(result.results[0]?.error).toContain('CovConfirmed')
182
+ })
183
+ })
package/src/engine.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Array as Arr, Cause, Effect, Option, Record as Rec, Ref } from 'effect'
1
+ import { Cause, Effect, Option, Record as Rec, Ref } from 'effect'
2
2
  import { yieldWrapGet } from 'effect/Utils'
3
3
  import {
4
4
  type CapturedScene,
@@ -18,6 +18,7 @@ import {
18
18
  type Sink,
19
19
  } from './engineSink'
20
20
  import { childComposition, readRuntimeSlotChild, slotsOf } from './engineTree'
21
+ import { type Coverage, coverageFailure, missingCoverage } from './engineCoverage'
21
22
  import type { RuntimeTreeFacade } from './engineTreeTypes'
22
23
  import { makeRuntimeTreeFacade } from './engineTreeFacade'
23
24
  import type { ProofCase, ProofResult } from './proofCase'
@@ -78,23 +79,6 @@ const withProofRuntimeTree = <
78
79
  (runtime) => Effect.sync(runtime.dispose),
79
80
  )
80
81
 
81
- const missingCoverage = (
82
- proof: Pick<Proof, 'requirement'>,
83
- dispatched: Set<DispatchedAction>,
84
- ): ReadonlyArray<string> =>
85
- Option.match(proof.requirement.manifest.events, {
86
- onNone: () => [],
87
- onSome: (declared) => {
88
- const owner = compositionIdentity(proof.requirement.manifest.composition)
89
- const covered = new Set(
90
- Arr.filterMap(Arr.fromIterable(dispatched), (action) =>
91
- Object.is(action.identity, owner) ? Option.some(action.event) : Option.none(),
92
- ),
93
- )
94
- return declared.map(String).filter((event) => !covered.has(event))
95
- },
96
- })
97
-
98
82
  interface ProofPlacement {
99
83
  readonly requirement: Proof['requirement']
100
84
  readonly placement: 'Root' | 'Slot'
@@ -169,10 +153,15 @@ const executeProofWithSink = Effect.fn('executeProofWithSink')(function* <
169
153
  yield* verifyProofPlacement(proof, scene, runtime)
170
154
  yield* tree.settle
171
155
  yield* runGenerator(proof.body(tree.facade), undefined, tree.settle)
172
- const missing = missingCoverage(proof, dispatched)
173
- const coverageError = `requirement declares events never dispatched: ${missing.join(', ')}`
156
+ const coverage: Coverage = {
157
+ requirement: proof.requirement,
158
+ host: compositionIdentity(scene.composition),
159
+ dispatched,
160
+ publications: tree.publications,
161
+ }
162
+ const missing = missingCoverage(coverage)
174
163
  return missing.length > 0
175
- ? { requirement: statement, ok: false, error: coverageError }
164
+ ? { requirement: statement, ok: false, error: coverageFailure(coverage, missing) }
176
165
  : { requirement: statement, ok: true, error: undefined }
177
166
  }),
178
167
  ).pipe(
@@ -0,0 +1,86 @@
1
+ import { Array as Arr, Option } from 'effect'
2
+ import { compositionIdentityOf, type DispatchedAction, type EventPublications } from './engineSink'
3
+ import type { Proof } from './index'
4
+
5
+ export interface Coverage {
6
+ readonly requirement: Proof['requirement']
7
+ // The scene root — the composition that renders the requirement's own, and the only
8
+ // one whose dispatch can stand in for it.
9
+ readonly host: symbol
10
+ readonly dispatched: Set<DispatchedAction>
11
+ readonly publications: EventPublications
12
+ }
13
+
14
+ interface DeclaredEvent {
15
+ readonly coverage: Coverage
16
+ readonly owner: symbol
17
+ readonly event: string
18
+ }
19
+
20
+ const samePublication = (
21
+ published: Option.Option<string>,
22
+ declared: Option.Option<string>,
23
+ ): boolean =>
24
+ Option.getOrElse(
25
+ Option.zipWith(published, declared, (raised, owned) => raised === owned),
26
+ () => false,
27
+ )
28
+
29
+ // A declared event is answered by a dispatch on the requirement's own composition — or
30
+ // by the composition that renders it raising the very same domain Event. The second
31
+ // case is the test-only parent that exists to feed a slot the props it needs and
32
+ // re-exposes its action: that dispatch reaches the child's reducer, so withholding
33
+ // coverage reports "never dispatched" about an event whose effects the proof body
34
+ // asserts two lines later. A composition that merely spells an action the same way
35
+ // publishes a different Event and stays uncovered, which is the collision the identity
36
+ // check exists for — as does a sibling raising the event without owning the action.
37
+ const answeredBy =
38
+ ({ coverage, owner, event }: DeclaredEvent) =>
39
+ (action: DispatchedAction): boolean =>
40
+ Object.is(action.identity, owner)
41
+ ? action.event === event
42
+ : Object.is(action.identity, coverage.host) &&
43
+ samePublication(action.published, coverage.publications.publishedBy(owner, event))
44
+
45
+ export const missingCoverage = (coverage: Coverage): ReadonlyArray<string> =>
46
+ Option.match(coverage.requirement.manifest.events, {
47
+ onNone: () => [],
48
+ onSome: (declared) => {
49
+ const owner = compositionIdentityOf(coverage.requirement.manifest.composition)
50
+ const raised = Arr.fromIterable(coverage.dispatched)
51
+ return declared
52
+ .map(String)
53
+ .filter((event) => !raised.some(answeredBy({ coverage, owner, event })))
54
+ },
55
+ })
56
+
57
+ const publicationSuffix = (published: Option.Option<string>): string =>
58
+ Option.match(published, {
59
+ onNone: () => '',
60
+ onSome: (tag) => ` (publishes ${tag})`,
61
+ })
62
+
63
+ // "never dispatched" is the wrong story when the event was dispatched on a composition
64
+ // the requirement does not own, so name that composition and what each side publishes.
65
+ const uncoveredDetail = ({ coverage, owner, event }: DeclaredEvent): string => {
66
+ const ownerName = coverage.requirement.manifest.composition.manifest.name
67
+ const elsewhere = Arr.dedupe(
68
+ Arr.filterMap(Arr.fromIterable(coverage.dispatched), (action) =>
69
+ action.event === event && !Object.is(action.identity, owner)
70
+ ? Option.some(`${action.composition}${publicationSuffix(action.published)}`)
71
+ : Option.none(),
72
+ ),
73
+ )
74
+ const owned = publicationSuffix(coverage.publications.publishedBy(owner, event))
75
+ return Arr.match(elsewhere, {
76
+ onEmpty: () => event,
77
+ onNonEmpty: (raisers) =>
78
+ `${event} — dispatched on ${Arr.join(raisers, ', ')}, not on ${ownerName}${owned}`,
79
+ })
80
+ }
81
+
82
+ export const coverageFailure = (coverage: Coverage, missing: ReadonlyArray<string>): string => {
83
+ const owner = compositionIdentityOf(coverage.requirement.manifest.composition)
84
+ const detail = missing.map((event) => uncoveredDetail({ coverage, owner, event }))
85
+ return `requirement declares events never dispatched: ${Arr.join(detail, '; ')}`
86
+ }
@@ -7,7 +7,7 @@ import {
7
7
  type Trigger,
8
8
  type UiContract,
9
9
  } from '@playfast/reform'
10
- import { type AnyComposition, CaptureSink } from '@playfast/reform/internal'
10
+ import { type AnyComposition, CaptureSink, triggerEventTag } from '@playfast/reform/internal'
11
11
  import type { Facade } from './facade'
12
12
  import {
13
13
  compositionIdentityOf,
@@ -144,7 +144,12 @@ function makeMountedFacade(
144
144
  Effect.flatMap(() => triggerOf(ref, event)),
145
145
  Effect.flatMap((trigger) =>
146
146
  Effect.sync(() => {
147
- dispatched.add({ identity: compositionIdentityOf(comp), event })
147
+ dispatched.add({
148
+ identity: compositionIdentityOf(comp),
149
+ composition: uiNameOf(comp),
150
+ event,
151
+ published: triggerEventTag(trigger),
152
+ })
148
153
  trigger(payload)
149
154
  }),
150
155
  ),
package/src/engineSink.ts CHANGED
@@ -1,4 +1,12 @@
1
- import { Clock, type Context, type Duration, Effect, MutableRef, Option } from 'effect'
1
+ import {
2
+ Clock,
3
+ type Context,
4
+ type Duration,
5
+ Effect,
6
+ MutableRef,
7
+ Option,
8
+ Record as Rec,
9
+ } from 'effect'
2
10
  import { AssertionFailed } from './errors'
3
11
  import {
4
12
  Composition,
@@ -16,6 +24,7 @@ import {
16
24
  type CaptureSinkApi,
17
25
  type Instrumentation,
18
26
  noopInstrumentation,
27
+ triggerEventTag,
19
28
  } from '@playfast/reform/internal'
20
29
  import { matchProps } from './assert'
21
30
  import type { Facade, SlotFacade, SlotFacadesOf } from './facade'
@@ -106,10 +115,55 @@ export const messageOf = (error: unknown): string =>
106
115
  // An action credited to the composition that actually raised it. A bare event name
107
116
  // is not enough: two contracts in one tree can expose the same action name, and a
108
117
  // requirement's coverage must be answered by *its* composition's action, not by a
109
- // child that happens to spell its own action the same way.
118
+ // child that happens to spell its own action the same way. `published` is the domain
119
+ // Event the trigger reached — None for a trigger built outside `Event.trigger` — which
120
+ // is what tells a harness parent re-exposing the child's own action apart from an
121
+ // unrelated composition that merely spells one the same.
110
122
  export interface DispatchedAction {
111
123
  readonly identity: symbol
124
+ readonly composition: string
112
125
  readonly event: string
126
+ readonly published: Option.Option<string>
127
+ }
128
+
129
+ // What each composition in the tree publishes under a given action name, so coverage
130
+ // can ask that question of a composition the proof body never addressed directly.
131
+ export interface EventPublications {
132
+ readonly observe: (root: TreeNodeShape) => void
133
+ readonly publishedBy: (identity: symbol, action: string) => Option.Option<string>
134
+ }
135
+
136
+ // The slice of a rendered node the publication ledger reads. Declared here rather than
137
+ // imported from the tree types to keep engineSink free of that cycle.
138
+ export interface TreeNodeShape {
139
+ readonly comp: AnyComposition
140
+ readonly events: Record<string, Trigger<unknown>>
141
+ readonly slots: Readonly<Record<string, ReadonlyArray<TreeNodeShape>>>
142
+ }
143
+
144
+ export const makeEventPublications = (): EventPublications => {
145
+ const byComposition = new Map<symbol, Map<string, string>>()
146
+ const record = (node: TreeNodeShape): void => {
147
+ const identity = compositionIdentityOf(node.comp)
148
+ const actions = byComposition.get(identity) ?? new Map<string, string>()
149
+ Rec.toEntries(node.events).forEach(([action, trigger]) =>
150
+ Option.match(triggerEventTag(trigger), {
151
+ onNone: () => {},
152
+ onSome: (tag) => {
153
+ actions.set(action, tag)
154
+ },
155
+ }),
156
+ )
157
+ byComposition.set(identity, actions)
158
+ Rec.toEntries(node.slots).forEach(([_name, children]) => children.forEach(record))
159
+ }
160
+ return {
161
+ observe: record,
162
+ publishedBy: (identity, action) =>
163
+ Option.fromNullable(byComposition.get(identity)).pipe(
164
+ Option.flatMap((actions) => Option.fromNullable(actions.get(action))),
165
+ ),
166
+ }
113
167
  }
114
168
 
115
169
  export const compositionIdentityOf = (composition: AnyComposition): symbol =>
@@ -2,12 +2,13 @@ import { Array as Arr, type Duration, Effect, MutableRef, Option, TestClock } fr
2
2
  import { AssertionFailed, NoTestClock, UnknownAction, UnknownSlot } from './errors'
3
3
  import { matchProps } from './assert'
4
4
  import { type RuntimeHandle, type UiContract } from '@playfast/reform'
5
- import type { AnyComposition } from '@playfast/reform/internal'
5
+ import { type AnyComposition, triggerEventTag } from '@playfast/reform/internal'
6
6
  import {
7
7
  compositionIdentityOf,
8
8
  type DispatchedAction,
9
9
  type HostRuntime,
10
10
  keyed,
11
+ makeEventPublications,
11
12
  type MountedFacadeErasure,
12
13
  type MountedSlotFacadeErasure,
13
14
  type RuntimeRootComposition,
@@ -40,7 +41,15 @@ export function makeRuntimeTreeFacade(
40
41
  dispatched: Set<DispatchedAction>,
41
42
  ): RuntimeTreeFacadeErasure {
42
43
  const driver = makeTreeDriver(runtime, root, rootProps, sink)
43
- const currentRoot = (): TreeNode => driver.render().root
44
+ const publications = makeEventPublications()
45
+ // Every resolver bottoms out here, so reading the tree is also when the ledger of
46
+ // "what does each composition publish under this action name" is refreshed. Coverage
47
+ // needs that for compositions the proof body never addressed directly.
48
+ const currentRoot = (): TreeNode => {
49
+ const node = driver.render().root
50
+ publications.observe(node)
51
+ return node
52
+ }
44
53
 
45
54
  // The nested-Feature twin of the mounted facade's `advance`: same virtual clock
46
55
  // off the same runtime, settled through this driver instead.
@@ -85,7 +94,12 @@ export function makeRuntimeTreeFacade(
85
94
  }).message,
86
95
  )
87
96
  }
88
- dispatched.add({ identity: compositionIdentityOf(node.comp), event })
97
+ dispatched.add({
98
+ identity: compositionIdentityOf(node.comp),
99
+ composition: uiNameOf(node.comp),
100
+ event,
101
+ published: triggerEventTag(trigger),
102
+ })
89
103
  trigger(payload)
90
104
  yield* driver.settle
91
105
  // A self-removing action leaves nothing to re-read; report what the
@@ -213,6 +227,7 @@ export function makeRuntimeTreeFacade(
213
227
  return {
214
228
  facade: nodeFacade(currentRoot, () => Option.some(currentRoot())),
215
229
  settle: driver.settle,
230
+ publications,
216
231
  dispose: driver.dispose,
217
232
  }
218
233
  }
@@ -2,6 +2,7 @@ import { type Effect, Match, type Option, Record as Rec } from 'effect'
2
2
  import type { FeatureLoadFailed, SlotFill, Trigger, UiContract } from '@playfast/reform'
3
3
  import type { AnyComposition, AnyFeatureBinding } from '@playfast/reform/internal'
4
4
  import {
5
+ type EventPublications,
5
6
  type HostRuntime,
6
7
  type MountedFacade,
7
8
  type MountedFacadeHandleErasure,
@@ -42,10 +43,12 @@ export interface TreeRenderState {
42
43
  export interface RuntimeTreeFacade<C extends UiContract> {
43
44
  readonly facade: MountedFacade<C>
44
45
  readonly settle: Effect.Effect<void, never, never>
46
+ readonly publications: EventPublications
45
47
  dispose(): void
46
48
  }
47
49
 
48
50
  export interface RuntimeTreeFacadeErasure extends MountedFacadeHandleErasure {
51
+ readonly publications: EventPublications
49
52
  dispose(): void
50
53
  }
51
54