@enricai/barnacle 1.12.20 → 1.12.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.
@@ -17,6 +17,8 @@ export declare function buildCapture(overrides: {
17
17
  responseBody: unknown;
18
18
  timestamp: string;
19
19
  requestHeaders?: Record<string, string>;
20
+ responseHeaders?: Record<string, string>;
21
+ method?: string;
20
22
  }): Capture;
21
23
  export declare function buildStep(varName: string, overrides: {
22
24
  url: string;
@@ -24,6 +26,8 @@ export declare function buildStep(varName: string, overrides: {
24
26
  responseBody: unknown;
25
27
  timestamp: string;
26
28
  requestHeaders?: Record<string, string>;
29
+ responseHeaders?: Record<string, string>;
30
+ method?: string;
27
31
  }): MulticallFixtureStep;
28
32
  /**
29
33
  * Reproduces a listings-fixture G1/G2 recon capture set: a
@@ -399,6 +403,30 @@ export declare function buildMulticallSingleShotSearchDrillDownChainedDependentM
399
403
  * chain's TERMINAL (history) response, not the drill step's own `prices[]`.
400
404
  */
401
405
  export declare function buildMulticallSingleShotSearchDrillDownChainedDependentActionSteps(): MulticallFixtureStep[];
406
+ /**
407
+ * A response-header sibling of {@link buildMulticallSingleShotSearchDrillDownChainedDependentActionSteps}:
408
+ * the drill step's (`r1`) response mints its join token (`tok-a1`) ONLY in a
409
+ * custom response HEADER (`X-Price-Token`) — its body is empty, unlike the
410
+ * sibling's `priceToken` body field. A third step (`r2`) threads that header
411
+ * value into its own request body and carries the real per-item `history[]`
412
+ * array. `computeFoldChain`'s `dependsOnChain` check must walk `r1`'s
413
+ * response headers (not just its body) to see the shared value, extending
414
+ * the chain to `[drillStepIndex, historyStepIndex]` rather than stopping at
415
+ * `r1`.
416
+ */
417
+ export declare function buildMulticallSingleShotSearchDrillDownHeaderMintedChainedResponseValueActionSteps(): MulticallFixtureStep[];
418
+ /**
419
+ * A boolean-threading sibling of {@link buildMulticallSingleShotSearchDrillDownChainedDependentActionSteps}:
420
+ * the drill step's (`r1`) response mints ONLY a boolean value
421
+ * (`{ verified: true }`) and carries no array of its own — unlike the
422
+ * `priceToken`/`prices[]` sibling, this drill step is NOT foldable in
423
+ * isolation. A third step (`r2`) threads that boolean (rendered as the
424
+ * string `"true"`) into its request and carries the real per-item
425
+ * `history[]` array in its response. `computeFoldChain` must recognize the
426
+ * boolean leaf as a genuine chain-dependency source and extend the chain to
427
+ * `[drillStepIndex, historyStepIndex]` rather than stopping at `r1`.
428
+ */
429
+ export declare function buildMulticallSingleShotSearchDrillDownBooleanChainedResponseValueActionSteps(): MulticallFixtureStep[];
402
430
  /**
403
431
  * A nested-join-key sibling of {@link buildMulticallSingleShotSearchDrillDownChainedDependentActionSteps}:
404
432
  * each primary `results[]` item carries its join key under a nested
@@ -538,6 +566,39 @@ export declare function buildMulticallSingleShotSearchDrillDownArrayWrappedChain
538
566
  * reproduces identically whether or not the terminal body is array-wrapped.
539
567
  */
540
568
  export declare function buildMulticallSingleShotSearchDrillDownArrayWrappedNumericChainedJoinFieldActionSteps(): MulticallFixtureStep[];
569
+ /**
570
+ * A sibling of
571
+ * {@link buildMulticallSingleShotSearchDrillDownArrayWrappedNumericChainedJoinFieldActionSteps}
572
+ * isolating a DIFFERENT gap in the numeric chain-produced join field family:
573
+ * `r1`'s produced token is a bare (non-array-wrapped) JSON number, and — the
574
+ * shape that matters here — it is SHORT (`42`/`43`, two digits) rather than
575
+ * an 8-digit token. `indexStateValues` gates every candidate state value on
576
+ * `MIN_STATE_VALUE_LENGTH` (8 chars), a threshold sized to keep an unrelated
577
+ * short STRING (an enum code, a page number) from colliding with arbitrary
578
+ * substrings elsewhere; applied uniformly to a bare NUMBER's stringified
579
+ * length, it also silently excludes a short numeric id/token — exactly the
580
+ * common shape for an order/account/status id — from ever being indexed as
581
+ * producible state. Without that index entry, `compileActionSteps` never
582
+ * emits a `produces[]` accessor for `r1`'s response, so `r2`'s templated
583
+ * body has nothing to substitute and falls back to treating `{"token":...}`
584
+ * as an opaque caller-supplied payload field (`payload.token`) instead of
585
+ * the per-item threaded value — every iteration would send whatever (or
586
+ * nothing) the caller passed, not each primary item's own token.
587
+ */
588
+ export declare function buildMulticallSingleShotSearchDrillDownShortNumericChainedJoinFieldActionSteps(): MulticallFixtureStep[];
589
+ /**
590
+ * Cookie-origin sibling of
591
+ * {@link buildMulticallSingleShotSearchDrillDownShortNumericChainedJoinFieldActionSteps}:
592
+ * here `r1` mints the short chain-produced token (`tok1`, under
593
+ * `MIN_STATE_VALUE_LENGTH`) via `Set-Cookie` rather than the response body,
594
+ * AND echoes the same value in its response body (the "body-level echo" that
595
+ * lets {@link collectDependentDrillDownChainValues} confirm the cookie value
596
+ * is chain-produced, exactly as a body-sourced token would be). `r2` threads
597
+ * `tok1` back via its request body. Exercises `indexStateValues`' Set-Cookie
598
+ * branch's `chainForceIncludeValues`/`forceIncludeValues` exemption, mirroring
599
+ * the body-value floor exemption.
600
+ */
601
+ export declare function buildMulticallSingleShotSearchDrillDownShortCookieChainedJoinFieldActionSteps(): MulticallFixtureStep[];
541
602
  /**
542
603
  * A different sibling of the same array-wrapped-join-field failure family:
543
604
  * here it's the IMMEDIATE drill step (`r1`), not a later chain hop, whose
@@ -564,4 +625,72 @@ export declare function buildMulticallSingleShotSearchDrillDownArrayWrappedImmed
564
625
  * for the fold-loop's later per-item `parameterize` pass.
565
626
  */
566
627
  export declare function buildMulticallSingleShotSearchDrillDownArrayWrappedNumericImmediateJoinFieldActionSteps(): MulticallFixtureStep[];
628
+ /**
629
+ * Same array-wrapped-immediate-join-field shape as
630
+ * {@link buildMulticallSingleShotSearchDrillDownArrayWrappedNumericImmediateJoinFieldActionSteps},
631
+ * but the primary item's join field is a bare JSON BOOLEAN (`flag: true`)
632
+ * rather than a number or string. `walkStringLeaves` (used by the spare
633
+ * check in `applyStructuredValuePayloadSubstitutions`) silently skips
634
+ * boolean leaves the same way it skips number leaves, so a boolean join
635
+ * value wrapped in `{"flags":[true]}` was frozen into an opaque
636
+ * `${JSON.stringify(payload.flags)}` blob instead of being spared for the
637
+ * fold-loop's later per-item `parameterize` pass.
638
+ */
639
+ export declare function buildMulticallSingleShotSearchDrillDownArrayWrappedBooleanImmediateJoinFieldActionSteps(): MulticallFixtureStep[];
640
+ /**
641
+ * A dependent (chained) drill-down whose join key is threaded ONLY through a
642
+ * request HEADER (`API-Token`) on the chain's ENTRY hop (`r1`) — invisible to
643
+ * `detectDrillDownFoldPlan`'s structural heuristic exactly like
644
+ * {@link buildMulticallSingleShotSearchDrillDownHeaderThreadedJoinActionSteps}
645
+ * — so only a flow-declared `foldReturn` can resolve this fold at all. Unlike
646
+ * every existing header-threaded-join fixture, though, a site author writing
647
+ * that `foldReturn` naturally points `endpointPattern` at `r2`
648
+ * (`/accounts/transactions`) — the call whose OWN response actually carries
649
+ * the per-item data (`transactions[]`) they want folded — not at `r1`
650
+ * (`/accounts/status`), the opaque intermediate hop that merely carries the
651
+ * `accountId`→`API-Token` header thread onward as a `statusToken`. `r2`'s own
652
+ * request only ever carries that threaded `statusToken`, never `accountId`
653
+ * in any form (body, URL, or header) — the join key is resolvable only by
654
+ * walking back to `r1`, exactly the way `computeFoldChain` already walks
655
+ * FORWARD from a resolved entry hop to a richer terminal. `resultsPath`
656
+ * anchors on `accounts`, `joinFields` on `accountId`.
657
+ */
658
+ export declare function buildMulticallSingleShotSearchDrillDownHeaderThreadedJoinChainedDependentActionSteps(): MulticallFixtureStep[];
659
+ /**
660
+ * A dependent (chained) drill-down whose ENTRY hop (`r1`) is a `GET`
661
+ * request — not the `POST` every other chained-dependent fixture in this
662
+ * file uses — and whose response produces the chain's join value
663
+ * (`statusToken`) as a non-UUID string. `indexStateValues` indexes a `GET`
664
+ * capture's response leaves ONLY when they are UUID-shaped
665
+ * (`isGet && !UUID_REGEX.test(value)` skips everything else, a filter aimed
666
+ * at excluding noisy short non-UUID strings a GET-only telemetry/schema
667
+ * fetch surfaces); that filter runs unconditionally, with no exemption for a
668
+ * value `collectDependentDrillDownChainValues` has already confirmed is
669
+ * threaded from this exact hop into a later chain hop's own request — unlike
670
+ * the `MIN_STATE_VALUE_LENGTH` floor a few lines above it, which DOES carry
671
+ * that exemption. So a chain-produced token minted by a GET response is
672
+ * never indexed as producible state at all, `compileActionSteps` never
673
+ * emits a `produces[]` accessor for it, and `r2`'s templated body has
674
+ * nothing to substitute — every iteration renders the literal string
675
+ * `"undefined"` instead of threading each primary item's own token.
676
+ */
677
+ export declare function buildMulticallSingleShotSearchDrillDownGetEntryHopChainedDependentActionSteps(): MulticallFixtureStep[];
678
+ /**
679
+ * A response-header sibling of {@link buildMulticallSingleShotSearchDrillDownGetEntryHopChainedDependentActionSteps}:
680
+ * the chain's drill hop (`r1`) mints its join token (`tok-a1`) ONLY in a
681
+ * custom response HEADER (`X-Price-Token`) — its body is empty ({}), unlike
682
+ * {@link buildMulticallSingleShotSearchDrillDownHeaderMintedChainedResponseValueActionSteps}'s
683
+ * body-echo-free sibling, which threads the header value forward via the
684
+ * request BODY. Here the terminal hop (`r2`) instead threads that value back
685
+ * as a REQUEST HEADER of its own (also named `X-Price-Token`) — the only
686
+ * shape `createHttpClient`'s `bind` option can actually thread a
687
+ * header-origin value into, since the emitted response variable never
688
+ * exposes response headers to the rest of the generated code. Exercises
689
+ * `compileActionSteps`' non-cookie response-header produce block: without it,
690
+ * `tok-a1` is never captured into a `produces[]`/`bind` entry at all, and
691
+ * `r2`'s per-item call goes out with no `X-Price-Token` header, so the
692
+ * terminal `history[]` fold silently collapses to whichever primary item the
693
+ * stub happens to answer first instead of each item's own token.
694
+ */
695
+ export declare function buildMulticallSingleShotSearchDrillDownResponseHeaderThreadedJoinChainedDependentActionSteps(): MulticallFixtureStep[];
567
696
  //# sourceMappingURL=recon-generate-multicall-fixture.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"recon-generate-multicall-fixture.d.ts","sourceRoot":"","sources":["../../src/scripts/recon-generate-multicall-fixture.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recon-generate-multicall-fixture.d.ts","sourceRoot":"","sources":["../../src/scripts/recon-generate-multicall-fixture.ts"],"names":[],"mappings":"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"}
@@ -32,6 +32,8 @@ exports.buildMulticallSingleShotSearchDrillDownMultiMatchActionSteps = buildMult
32
32
  exports.buildMulticallSingleShotSearchDrillDownTypeMismatchJoinActionSteps = buildMulticallSingleShotSearchDrillDownTypeMismatchJoinActionSteps;
33
33
  exports.buildMulticallSingleShotSearchDrillDownChainedDependentMultipartChainStepActionSteps = buildMulticallSingleShotSearchDrillDownChainedDependentMultipartChainStepActionSteps;
34
34
  exports.buildMulticallSingleShotSearchDrillDownChainedDependentActionSteps = buildMulticallSingleShotSearchDrillDownChainedDependentActionSteps;
35
+ exports.buildMulticallSingleShotSearchDrillDownHeaderMintedChainedResponseValueActionSteps = buildMulticallSingleShotSearchDrillDownHeaderMintedChainedResponseValueActionSteps;
36
+ exports.buildMulticallSingleShotSearchDrillDownBooleanChainedResponseValueActionSteps = buildMulticallSingleShotSearchDrillDownBooleanChainedResponseValueActionSteps;
35
37
  exports.buildMulticallSingleShotSearchDrillDownNestedJoinFieldChainedDependentActionSteps = buildMulticallSingleShotSearchDrillDownNestedJoinFieldChainedDependentActionSteps;
36
38
  exports.buildMulticallSingleShotSearchDrillDownRequeriedPrimaryOverlapActionSteps = buildMulticallSingleShotSearchDrillDownRequeriedPrimaryOverlapActionSteps;
37
39
  exports.buildMulticallSingleShotSearchTwoIndependentArraysActionSteps = buildMulticallSingleShotSearchTwoIndependentArraysActionSteps;
@@ -41,18 +43,24 @@ exports.buildMulticallSingleShotSearchDrillDownOpaqueIntermediateChainedDependen
41
43
  exports.buildMulticallSingleShotSearchDrillDownRichnessTiedConfirmationHopChainedDependentActionSteps = buildMulticallSingleShotSearchDrillDownRichnessTiedConfirmationHopChainedDependentActionSteps;
42
44
  exports.buildMulticallSingleShotSearchDrillDownArrayWrappedChainedDependentActionSteps = buildMulticallSingleShotSearchDrillDownArrayWrappedChainedDependentActionSteps;
43
45
  exports.buildMulticallSingleShotSearchDrillDownArrayWrappedNumericChainedJoinFieldActionSteps = buildMulticallSingleShotSearchDrillDownArrayWrappedNumericChainedJoinFieldActionSteps;
46
+ exports.buildMulticallSingleShotSearchDrillDownShortNumericChainedJoinFieldActionSteps = buildMulticallSingleShotSearchDrillDownShortNumericChainedJoinFieldActionSteps;
47
+ exports.buildMulticallSingleShotSearchDrillDownShortCookieChainedJoinFieldActionSteps = buildMulticallSingleShotSearchDrillDownShortCookieChainedJoinFieldActionSteps;
44
48
  exports.buildMulticallSingleShotSearchDrillDownArrayWrappedImmediateJoinFieldActionSteps = buildMulticallSingleShotSearchDrillDownArrayWrappedImmediateJoinFieldActionSteps;
45
49
  exports.buildMulticallSingleShotSearchDrillDownArrayWrappedNumericImmediateJoinFieldActionSteps = buildMulticallSingleShotSearchDrillDownArrayWrappedNumericImmediateJoinFieldActionSteps;
50
+ exports.buildMulticallSingleShotSearchDrillDownArrayWrappedBooleanImmediateJoinFieldActionSteps = buildMulticallSingleShotSearchDrillDownArrayWrappedBooleanImmediateJoinFieldActionSteps;
51
+ exports.buildMulticallSingleShotSearchDrillDownHeaderThreadedJoinChainedDependentActionSteps = buildMulticallSingleShotSearchDrillDownHeaderThreadedJoinChainedDependentActionSteps;
52
+ exports.buildMulticallSingleShotSearchDrillDownGetEntryHopChainedDependentActionSteps = buildMulticallSingleShotSearchDrillDownGetEntryHopChainedDependentActionSteps;
53
+ exports.buildMulticallSingleShotSearchDrillDownResponseHeaderThreadedJoinChainedDependentActionSteps = buildMulticallSingleShotSearchDrillDownResponseHeaderThreadedJoinChainedDependentActionSteps;
46
54
  function buildCapture(overrides) {
47
55
  return {
48
56
  timestamp: overrides.timestamp,
49
57
  phase: "action",
50
- method: "POST",
58
+ method: overrides.method ?? "POST",
51
59
  url: overrides.url,
52
60
  status: 200,
53
61
  requestHeaders: overrides.requestHeaders ?? { "Content-Type": "application/json" },
54
62
  requestPostData: overrides.requestPostData,
55
- responseHeaders: { "content-type": "application/json" },
63
+ responseHeaders: overrides.responseHeaders ?? { "content-type": "application/json" },
56
64
  responseBody: overrides.responseBody,
57
65
  operationName: null,
58
66
  query: null,
@@ -1102,6 +1110,84 @@ function buildMulticallSingleShotSearchDrillDownChainedDependentActionSteps() {
1102
1110
  }),
1103
1111
  ];
1104
1112
  }
1113
+ /**
1114
+ * A response-header sibling of {@link buildMulticallSingleShotSearchDrillDownChainedDependentActionSteps}:
1115
+ * the drill step's (`r1`) response mints its join token (`tok-a1`) ONLY in a
1116
+ * custom response HEADER (`X-Price-Token`) — its body is empty, unlike the
1117
+ * sibling's `priceToken` body field. A third step (`r2`) threads that header
1118
+ * value into its own request body and carries the real per-item `history[]`
1119
+ * array. `computeFoldChain`'s `dependsOnChain` check must walk `r1`'s
1120
+ * response headers (not just its body) to see the shared value, extending
1121
+ * the chain to `[drillStepIndex, historyStepIndex]` rather than stopping at
1122
+ * `r1`.
1123
+ */
1124
+ function buildMulticallSingleShotSearchDrillDownHeaderMintedChainedResponseValueActionSteps() {
1125
+ return [
1126
+ buildStep("r0", {
1127
+ url: CATALOG_SEARCH_URL,
1128
+ requestPostData: '{"page":1}',
1129
+ responseBody: {
1130
+ results: [{ sku: "sku-a" }, { sku: "sku-b" }],
1131
+ },
1132
+ timestamp: "2024-11-16T00:00:00Z",
1133
+ }),
1134
+ buildStep("r1", {
1135
+ url: CATALOG_PRICING_URL,
1136
+ requestPostData: '{"sku":"sku-a"}',
1137
+ responseBody: {},
1138
+ responseHeaders: { "content-type": "application/json", "X-Price-Token": "tok-a1" },
1139
+ timestamp: "2024-11-16T00:00:01Z",
1140
+ }),
1141
+ buildStep("r2", {
1142
+ url: CATALOG_PRICE_HISTORY_URL,
1143
+ requestPostData: '{"priceToken":"tok-a1"}',
1144
+ responseBody: {
1145
+ history: [{ sku: "sku-a", amount: 18.5, asOf: "2024-11-01" }],
1146
+ },
1147
+ timestamp: "2024-11-16T00:00:02Z",
1148
+ }),
1149
+ ];
1150
+ }
1151
+ const CATALOG_VERIFICATION_STATUS_URL = "https://api.example.com/catalog/verification-status";
1152
+ /**
1153
+ * A boolean-threading sibling of {@link buildMulticallSingleShotSearchDrillDownChainedDependentActionSteps}:
1154
+ * the drill step's (`r1`) response mints ONLY a boolean value
1155
+ * (`{ verified: true }`) and carries no array of its own — unlike the
1156
+ * `priceToken`/`prices[]` sibling, this drill step is NOT foldable in
1157
+ * isolation. A third step (`r2`) threads that boolean (rendered as the
1158
+ * string `"true"`) into its request and carries the real per-item
1159
+ * `history[]` array in its response. `computeFoldChain` must recognize the
1160
+ * boolean leaf as a genuine chain-dependency source and extend the chain to
1161
+ * `[drillStepIndex, historyStepIndex]` rather than stopping at `r1`.
1162
+ */
1163
+ function buildMulticallSingleShotSearchDrillDownBooleanChainedResponseValueActionSteps() {
1164
+ return [
1165
+ buildStep("r0", {
1166
+ url: CATALOG_SEARCH_URL,
1167
+ requestPostData: '{"page":1}',
1168
+ responseBody: {
1169
+ results: [{ sku: "sku-a" }, { sku: "sku-b" }],
1170
+ },
1171
+ timestamp: "2024-12-01T00:00:00Z",
1172
+ }),
1173
+ buildStep("r1", {
1174
+ url: CATALOG_PRICING_URL,
1175
+ requestPostData: '{"sku":"sku-a"}',
1176
+ responseBody: {
1177
+ verified: true,
1178
+ },
1179
+ timestamp: "2024-12-01T00:00:01Z",
1180
+ }),
1181
+ buildStep("r2", {
1182
+ url: CATALOG_VERIFICATION_STATUS_URL,
1183
+ requestPostData: '{"verified":"true"}',
1184
+ responseBody: {
1185
+ history: [{ sku: "sku-a", amount: 18.5, asOf: "2024-11-01" }],
1186
+ },
1187
+ timestamp: "2024-12-01T00:00:02Z",
1188
+ }),
1189
+ ];
1190
+ }
1105
1191
  /**
1106
1192
  * A nested-join-key sibling of {@link buildMulticallSingleShotSearchDrillDownChainedDependentActionSteps}:
1107
1193
  * each primary `results[]` item carries its join key under a nested
@@ -1505,6 +1591,90 @@ function buildMulticallSingleShotSearchDrillDownArrayWrappedNumericChainedJoinFi
1505
1591
  }),
1506
1592
  ];
1507
1593
  }
1594
+ /**
1595
+ * A sibling of
1596
+ * {@link buildMulticallSingleShotSearchDrillDownArrayWrappedNumericChainedJoinFieldActionSteps}
1597
+ * isolating a DIFFERENT gap in the numeric chain-produced join field family:
1598
+ * `r1`'s produced token is a bare (non-array-wrapped) JSON number, and — the
1599
+ * shape that matters here — it is SHORT (`42`/`43`, two digits) rather than
1600
+ * an 8-digit token. `indexStateValues` gates every candidate state value on
1601
+ * `MIN_STATE_VALUE_LENGTH` (8 chars), a threshold sized to keep an unrelated
1602
+ * short STRING (an enum code, a page number) from colliding with arbitrary
1603
+ * substrings elsewhere; applied uniformly to a bare NUMBER's stringified
1604
+ * length, it also silently excludes a short numeric id/token — exactly the
1605
+ * common shape for an order/account/status id — from ever being indexed as
1606
+ * producible state. Without that index entry, `compileActionSteps` never
1607
+ * emits a `produces[]` accessor for `r1`'s response, so `r2`'s templated
1608
+ * body has nothing to substitute and falls back to treating `{"token":...}`
1609
+ * as an opaque caller-supplied payload field (`payload.token`) instead of
1610
+ * the per-item threaded value — every iteration would send whatever (or
1611
+ * nothing) the caller passed, not each primary item's own token.
1612
+ */
1613
+ function buildMulticallSingleShotSearchDrillDownShortNumericChainedJoinFieldActionSteps() {
1614
+ return [
1615
+ buildStep("r0", {
1616
+ url: CATALOG_SEARCH_URL,
1617
+ requestPostData: '{"page":1}',
1618
+ responseBody: {
1619
+ results: [{ orderId: "order-a" }, { orderId: "order-b" }],
1620
+ },
1621
+ timestamp: "2024-10-04T00:00:00Z",
1622
+ }),
1623
+ buildStep("r1", {
1624
+ url: CATALOG_ORDER_STATUS_URL,
1625
+ requestPostData: '{"orderId":"order-a"}',
1626
+ responseBody: [42],
1627
+ timestamp: "2024-10-04T00:00:01Z",
1628
+ }),
1629
+ buildStep("r2", {
1630
+ url: ORDER_HISTORY_URL,
1631
+ requestPostData: '{"token":42}',
1632
+ responseBody: {
1633
+ entries: [{ token: 42, ts: "2024-10-04T00:00:02Z", event: "shipped" }],
1634
+ },
1635
+ timestamp: "2024-10-04T00:00:02Z",
1636
+ }),
1637
+ ];
1638
+ }
1639
+ /**
1640
+ * Cookie-origin sibling of
1641
+ * {@link buildMulticallSingleShotSearchDrillDownShortNumericChainedJoinFieldActionSteps}:
1642
+ * here `r1` mints the short chain-produced token (`tok1`, under
1643
+ * `MIN_STATE_VALUE_LENGTH`) via `Set-Cookie` rather than the response body,
1644
+ * AND echoes the same value in its response body (the "body-level echo" that
1645
+ * lets {@link collectDependentDrillDownChainValues} confirm the cookie value
1646
+ * is chain-produced, exactly as a body-sourced token would be). `r2` threads
1647
+ * `tok1` back via its request body. Exercises `indexStateValues`' Set-Cookie
1648
+ * branch's `chainForceIncludeValues`/`forceIncludeValues` exemption, mirroring
1649
+ * the body-value floor exemption.
1650
+ */
1651
+ function buildMulticallSingleShotSearchDrillDownShortCookieChainedJoinFieldActionSteps() {
1652
+ return [
1653
+ buildStep("r0", {
1654
+ url: CATALOG_SEARCH_URL,
1655
+ requestPostData: '{"page":1}',
1656
+ responseBody: {
1657
+ results: [{ orderId: "order-a" }, { orderId: "order-b" }],
1658
+ },
1659
+ timestamp: "2024-10-05T00:00:00Z",
1660
+ }),
1661
+ buildStep("r1", {
1662
+ url: CATALOG_ORDER_STATUS_URL,
1663
+ requestPostData: '{"orderId":"order-a"}',
1664
+ responseHeaders: { "set-cookie": "sess=tok1; Path=/; HttpOnly" },
1665
+ responseBody: { echoedToken: "tok1" },
1666
+ timestamp: "2024-10-05T00:00:01Z",
1667
+ }),
1668
+ buildStep("r2", {
1669
+ url: ORDER_HISTORY_URL,
1670
+ requestPostData: '{"token":"tok1"}',
1671
+ responseBody: {
1672
+ entries: [{ token: "tok1", ts: "2024-10-05T00:00:02Z", event: "shipped" }],
1673
+ },
1674
+ timestamp: "2024-10-05T00:00:02Z",
1675
+ }),
1676
+ ];
1677
+ }
1508
1678
  /**
1509
1679
  * A different sibling of the same array-wrapped-join-field failure family:
1510
1680
  * here it's the IMMEDIATE drill step (`r1`), not a later chain hop, whose
@@ -1585,4 +1755,185 @@ function buildMulticallSingleShotSearchDrillDownArrayWrappedNumericImmediateJoin
1585
1755
  }),
1586
1756
  ];
1587
1757
  }
1758
+ /**
1759
+ * Same array-wrapped-immediate-join-field shape as
1760
+ * {@link buildMulticallSingleShotSearchDrillDownArrayWrappedNumericImmediateJoinFieldActionSteps},
1761
+ * but the primary item's join field is a bare JSON BOOLEAN (`flag: true`)
1762
+ * rather than a number or string. `walkStringLeaves` (used by the spare
1763
+ * check in `applyStructuredValuePayloadSubstitutions`) silently skips
1764
+ * boolean leaves the same way it skips number leaves, so a boolean join
1765
+ * value wrapped in `{"flags":[true]}` was frozen into an opaque
1766
+ * `${JSON.stringify(payload.flags)}` blob instead of being spared for the
1767
+ * fold-loop's later per-item `parameterize` pass.
1768
+ */
1769
+ function buildMulticallSingleShotSearchDrillDownArrayWrappedBooleanImmediateJoinFieldActionSteps() {
1770
+ return [
1771
+ buildStep("r0", {
1772
+ url: CATALOG_SEARCH_URL,
1773
+ requestPostData: '{"page":1}',
1774
+ responseBody: {
1775
+ results: [{ flag: true }, { flag: false }],
1776
+ },
1777
+ timestamp: "2024-10-03T00:00:00Z",
1778
+ }),
1779
+ buildStep("r1", {
1780
+ url: CATALOG_ORDER_STATUS_URL,
1781
+ requestPostData: '{"flags":[true]}',
1782
+ responseBody: ["status-token-true"],
1783
+ timestamp: "2024-10-03T00:00:01Z",
1784
+ }),
1785
+ buildStep("r2", {
1786
+ url: ORDER_HISTORY_BULK_URL,
1787
+ requestPostData: '{"tokens":["status-token-true"]}',
1788
+ responseBody: {
1789
+ entries: [
1790
+ { statusToken: "status-token-true", ts: "2024-10-03T00:00:02Z", event: "shipped" },
1791
+ ],
1792
+ },
1793
+ timestamp: "2024-10-03T00:00:02Z",
1794
+ }),
1795
+ ];
1796
+ }
1797
+ const ACCOUNT_STATUS_URL = "https://api.example.com/accounts/status";
1798
+ const ACCOUNT_TRANSACTIONS_URL = "https://api.example.com/accounts/transactions";
1799
+ /**
1800
+ * A dependent (chained) drill-down whose join key is threaded ONLY through a
1801
+ * request HEADER (`API-Token`) on the chain's ENTRY hop (`r1`) — invisible to
1802
+ * `detectDrillDownFoldPlan`'s structural heuristic exactly like
1803
+ * {@link buildMulticallSingleShotSearchDrillDownHeaderThreadedJoinActionSteps}
1804
+ * — so only a flow-declared `foldReturn` can resolve this fold at all. Unlike
1805
+ * every existing header-threaded-join fixture, though, a site author writing
1806
+ * that `foldReturn` naturally points `endpointPattern` at `r2`
1807
+ * (`/accounts/transactions`) — the call whose OWN response actually carries
1808
+ * the per-item data (`transactions[]`) they want folded — not at `r1`
1809
+ * (`/accounts/status`), the opaque intermediate hop that merely carries the
1810
+ * `accountId`→`API-Token` header thread onward as a `statusToken`. `r2`'s own
1811
+ * request only ever carries that threaded `statusToken`, never `accountId`
1812
+ * in any form (body, URL, or header) — the join key is resolvable only by
1813
+ * walking back to `r1`, exactly the way `computeFoldChain` already walks
1814
+ * FORWARD from a resolved entry hop to a richer terminal. `resultsPath`
1815
+ * anchors on `accounts`, `joinFields` on `accountId`.
1816
+ */
1817
+ function buildMulticallSingleShotSearchDrillDownHeaderThreadedJoinChainedDependentActionSteps() {
1818
+ return [
1819
+ buildStep("r0", {
1820
+ url: ACCOUNT_SEARCH_URL,
1821
+ requestPostData: JSON.stringify({ page: 1 }),
1822
+ responseBody: {
1823
+ accounts: [
1824
+ { accountId: 42, name: "Acme" },
1825
+ { accountId: 43, name: "Globex" },
1826
+ ],
1827
+ },
1828
+ timestamp: "2024-08-01T00:00:00Z",
1829
+ }),
1830
+ buildStep("r1", {
1831
+ url: ACCOUNT_STATUS_URL,
1832
+ requestPostData: null,
1833
+ requestHeaders: { "Content-Type": "application/json", "API-Token": "42" },
1834
+ responseBody: { statusToken: "status-token-42" },
1835
+ timestamp: "2024-08-01T00:00:01Z",
1836
+ }),
1837
+ buildStep("r2", {
1838
+ url: ACCOUNT_TRANSACTIONS_URL,
1839
+ requestPostData: JSON.stringify({ statusToken: "status-token-42" }),
1840
+ responseBody: {
1841
+ transactions: [{ statusToken: "status-token-42", transactionId: "t-42", amount: 19.99 }],
1842
+ },
1843
+ timestamp: "2024-08-01T00:00:02Z",
1844
+ }),
1845
+ ];
1846
+ }
1847
+ const ORDER_STATUS_LOOKUP_URL = "https://api.example.com/orders/status-lookup";
1848
+ const ORDER_EVENTS_URL = "https://api.example.com/orders/events";
1849
+ /**
1850
+ * A dependent (chained) drill-down whose ENTRY hop (`r1`) is a `GET`
1851
+ * request — not the `POST` every other chained-dependent fixture in this
1852
+ * file uses — and whose response produces the chain's join value
1853
+ * (`statusToken`) as a non-UUID string. `indexStateValues` indexes a `GET`
1854
+ * capture's response leaves ONLY when they are UUID-shaped
1855
+ * (`isGet && !UUID_REGEX.test(value)` skips everything else, a filter aimed
1856
+ * at excluding noisy short non-UUID strings a GET-only telemetry/schema
1857
+ * fetch surfaces); that filter runs unconditionally, with no exemption for a
1858
+ * value `collectDependentDrillDownChainValues` has already confirmed is
1859
+ * threaded from this exact hop into a later chain hop's own request — unlike
1860
+ * the `MIN_STATE_VALUE_LENGTH` floor a few lines above it, which DOES carry
1861
+ * that exemption. So a chain-produced token minted by a GET response is
1862
+ * never indexed as producible state at all, `compileActionSteps` never
1863
+ * emits a `produces[]` accessor for it, and `r2`'s templated body has
1864
+ * nothing to substitute — every iteration renders the literal string
1865
+ * `"undefined"` instead of threading each primary item's own token.
1866
+ */
1867
+ function buildMulticallSingleShotSearchDrillDownGetEntryHopChainedDependentActionSteps() {
1868
+ return [
1869
+ buildStep("r0", {
1870
+ url: CATALOG_SEARCH_URL,
1871
+ requestPostData: '{"page":1}',
1872
+ responseBody: {
1873
+ results: [{ orderId: "order-a" }, { orderId: "order-b" }],
1874
+ },
1875
+ timestamp: "2024-10-05T00:00:00Z",
1876
+ }),
1877
+ buildStep("r1", {
1878
+ method: "GET",
1879
+ url: `${ORDER_STATUS_LOOKUP_URL}?orderId=order-a`,
1880
+ requestPostData: null,
1881
+ responseBody: { statusToken: "status-token-order-a" },
1882
+ timestamp: "2024-10-05T00:00:01Z",
1883
+ }),
1884
+ buildStep("r2", {
1885
+ url: ORDER_EVENTS_URL,
1886
+ requestPostData: '{"token":"status-token-order-a"}',
1887
+ responseBody: {
1888
+ entries: [{ token: "status-token-order-a", ts: "2024-10-05T00:00:02Z", event: "shipped" }],
1889
+ },
1890
+ timestamp: "2024-10-05T00:00:02Z",
1891
+ }),
1892
+ ];
1893
+ }
1894
+ /**
1895
+ * A response-header sibling of {@link buildMulticallSingleShotSearchDrillDownGetEntryHopChainedDependentActionSteps}:
1896
+ * the chain's drill hop (`r1`) mints its join token (`tok-a1`) ONLY in a
1897
+ * custom response HEADER (`X-Price-Token`) — its body is empty ({}), unlike
1898
+ * {@link buildMulticallSingleShotSearchDrillDownHeaderMintedChainedResponseValueActionSteps}'s
1899
+ * body-echo-free sibling, which threads the header value forward via the
1900
+ * request BODY. Here the terminal hop (`r2`) instead threads that value back
1901
+ * as a REQUEST HEADER of its own (also named `X-Price-Token`) — the only
1902
+ * shape `createHttpClient`'s `bind` option can actually thread a
1903
+ * header-origin value into, since the emitted response variable never
1904
+ * exposes response headers to the rest of the generated code. Exercises
1905
+ * `compileActionSteps`' non-cookie response-header produce block: without it,
1906
+ * `tok-a1` is never captured into a `produces[]`/`bind` entry at all, and
1907
+ * `r2`'s per-item call goes out with no `X-Price-Token` header, so the
1908
+ * terminal `history[]` fold silently collapses to whichever primary item the
1909
+ * stub happens to answer first instead of each item's own token.
1910
+ */
1911
+ function buildMulticallSingleShotSearchDrillDownResponseHeaderThreadedJoinChainedDependentActionSteps() {
1912
+ return [
1913
+ buildStep("r0", {
1914
+ url: CATALOG_SEARCH_URL,
1915
+ requestPostData: '{"page":1}',
1916
+ responseBody: {
1917
+ results: [{ sku: "sku-a" }, { sku: "sku-b" }],
1918
+ },
1919
+ timestamp: "2024-12-10T00:00:00Z",
1920
+ }),
1921
+ buildStep("r1", {
1922
+ url: CATALOG_PRICING_URL,
1923
+ requestPostData: '{"sku":"sku-a"}',
1924
+ responseBody: {},
1925
+ responseHeaders: { "content-type": "application/json", "X-Price-Token": "tok-a1" },
1926
+ timestamp: "2024-12-10T00:00:01Z",
1927
+ }),
1928
+ buildStep("r2", {
1929
+ url: CATALOG_PRICE_HISTORY_URL,
1930
+ requestPostData: "{}",
1931
+ requestHeaders: { "Content-Type": "application/json", "X-Price-Token": "tok-a1" },
1932
+ responseBody: {
1933
+ history: [{ sku: "sku-a", amount: 18.5, asOf: "2024-11-01" }],
1934
+ },
1935
+ timestamp: "2024-12-10T00:00:02Z",
1936
+ }),
1937
+ ];
1938
+ }
1588
1939
  //# sourceMappingURL=recon-generate-multicall-fixture.js.map