@noy-db/hub 0.2.0-pre.15 → 0.2.0-pre.16

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 (197) hide show
  1. package/dist/aggregate/index.cjs +106 -10
  2. package/dist/aggregate/index.cjs.map +1 -1
  3. package/dist/aggregate/index.d.cts +2 -2
  4. package/dist/aggregate/index.d.ts +2 -2
  5. package/dist/aggregate/index.js +1 -1
  6. package/dist/attestation/index.cjs.map +1 -1
  7. package/dist/attestation/index.d.cts +3 -3
  8. package/dist/attestation/index.d.ts +3 -3
  9. package/dist/attestation/index.js +4 -4
  10. package/dist/blobs/index.cjs.map +1 -1
  11. package/dist/blobs/index.d.cts +4 -4
  12. package/dist/blobs/index.d.ts +4 -4
  13. package/dist/blobs/index.js +3 -3
  14. package/dist/bundle/index.cjs +181 -46
  15. package/dist/bundle/index.cjs.map +1 -1
  16. package/dist/bundle/index.d.cts +5 -5
  17. package/dist/bundle/index.d.ts +5 -5
  18. package/dist/bundle/index.js +7 -7
  19. package/dist/{chunk-BIYRQQV6.js → chunk-3YWP3WBP.js} +3 -3
  20. package/dist/{chunk-VU7SWWT5.js → chunk-42FEUPZQ.js} +10 -6
  21. package/dist/chunk-42FEUPZQ.js.map +1 -0
  22. package/dist/{chunk-7EFFHEN5.js → chunk-667MB6AH.js} +118 -47
  23. package/dist/chunk-667MB6AH.js.map +1 -0
  24. package/dist/{chunk-A5ZOOZFB.js → chunk-6H2ZUNR7.js} +2 -2
  25. package/dist/{chunk-7HT2MEZ5.js → chunk-7BQ4QWYX.js} +3 -3
  26. package/dist/{chunk-DQU36Q7I.js → chunk-7Z7KSVA5.js} +13 -4
  27. package/dist/chunk-7Z7KSVA5.js.map +1 -0
  28. package/dist/{chunk-WBAYSNUQ.js → chunk-BI6ETQPF.js} +2 -2
  29. package/dist/{chunk-56DJ7JVK.js → chunk-BR3AMFGS.js} +2 -2
  30. package/dist/{chunk-COFPAMX6.js → chunk-DLZ2ONOD.js} +3 -3
  31. package/dist/{chunk-EYVQHAGH.js → chunk-DUREQF5W.js} +2 -2
  32. package/dist/{chunk-PE4AQGFH.js → chunk-E2CDVKMH.js} +3 -3
  33. package/dist/{chunk-GC4V7RU7.js → chunk-F3BPIPLS.js} +1 -1
  34. package/dist/{chunk-GC4V7RU7.js.map → chunk-F3BPIPLS.js.map} +1 -1
  35. package/dist/{chunk-L2FE64BU.js → chunk-FFXM3ZIF.js} +2 -2
  36. package/dist/{chunk-5LQG6ZO2.js → chunk-G4SCICH5.js} +8 -3
  37. package/dist/chunk-G4SCICH5.js.map +1 -0
  38. package/dist/{chunk-WGHU7BLI.js → chunk-GNI5STXQ.js} +2 -2
  39. package/dist/{chunk-C5T5AFWN.js → chunk-HBXJ37ZY.js} +11 -5
  40. package/dist/chunk-HBXJ37ZY.js.map +1 -0
  41. package/dist/{chunk-7PS7EOCF.js → chunk-IXBIFDEW.js} +2 -2
  42. package/dist/{chunk-LX3CB26H.js → chunk-KABJXG2F.js} +2 -2
  43. package/dist/{chunk-3EWXMOK3.js → chunk-L2BNJ6HM.js} +26 -11
  44. package/dist/chunk-L2BNJ6HM.js.map +1 -0
  45. package/dist/{chunk-DKO2QFSA.js → chunk-OB2ZJQ2D.js} +2 -2
  46. package/dist/{chunk-KIP6JLTF.js → chunk-OMAMZKKD.js} +2 -2
  47. package/dist/{chunk-EGD5DXFT.js → chunk-OQSRJG6A.js} +13 -1
  48. package/dist/chunk-OQSRJG6A.js.map +1 -0
  49. package/dist/{chunk-KI6HAJWL.js → chunk-QSUK7YWK.js} +2 -2
  50. package/dist/{chunk-YHPM5D7Y.js → chunk-QVIEAYTP.js} +61 -2
  51. package/dist/chunk-QVIEAYTP.js.map +1 -0
  52. package/dist/{chunk-NSCVNK5K.js → chunk-SCJPI4Z5.js} +3 -3
  53. package/dist/{chunk-NU6Q3FOR.js → chunk-TKIY625R.js} +11 -1
  54. package/dist/{chunk-NU6Q3FOR.js.map → chunk-TKIY625R.js.map} +1 -1
  55. package/dist/{chunk-OHVFWCJP.js → chunk-VLMPU56Q.js} +48 -18
  56. package/dist/chunk-VLMPU56Q.js.map +1 -0
  57. package/dist/{chunk-6AJBSQU4.js → chunk-XL35NSEN.js} +2 -2
  58. package/dist/consent/index.d.cts +4 -4
  59. package/dist/consent/index.d.ts +4 -4
  60. package/dist/derivations/index.cjs +24 -3
  61. package/dist/derivations/index.cjs.map +1 -1
  62. package/dist/derivations/index.d.cts +5 -5
  63. package/dist/derivations/index.d.ts +5 -5
  64. package/dist/derivations/index.js +2 -2
  65. package/dist/{dev-unlock-nVkuRLLe.d.cts → dev-unlock-8XzcD2Z4.d.cts} +1 -1
  66. package/dist/{dev-unlock-iAS8z9jc.d.ts → dev-unlock-DR3upLd1.d.ts} +1 -1
  67. package/dist/{executor-HSSRXDOB.js → executor-AZLS3KBK.js} +4 -4
  68. package/dist/{fanout-sidecar-N6OJX6QR.js → fanout-sidecar-67CMI3UT.js} +2 -2
  69. package/dist/guards/index.cjs +9 -5
  70. package/dist/guards/index.cjs.map +1 -1
  71. package/dist/guards/index.d.cts +5 -5
  72. package/dist/guards/index.d.ts +5 -5
  73. package/dist/guards/index.js +1 -1
  74. package/dist/{hash-DHOnRarj.d.ts → hash-CDjye9KV.d.ts} +1 -1
  75. package/dist/{hash-Cv6byZs7.d.cts → hash-DuQ88_5W.d.cts} +1 -1
  76. package/dist/history/index.cjs.map +1 -1
  77. package/dist/history/index.d.cts +5 -5
  78. package/dist/history/index.d.ts +5 -5
  79. package/dist/history/index.js +2 -2
  80. package/dist/i18n/index.cjs.map +1 -1
  81. package/dist/i18n/index.d.cts +4 -4
  82. package/dist/i18n/index.d.ts +4 -4
  83. package/dist/i18n/index.js +3 -3
  84. package/dist/{immutable-guard-yBEOYmif.d.cts → immutable-guard-CRPvu24K.d.cts} +16 -1
  85. package/dist/{immutable-guard-BehB1YGB.d.ts → immutable-guard-Dov3WvwF.d.ts} +16 -1
  86. package/dist/{index-D95VK1Qy.d.cts → index-C8Bk3-VF.d.cts} +1 -1
  87. package/dist/{index-XNB2r6bX.d.ts → index-nP99bXLg.d.ts} +1 -1
  88. package/dist/index.cjs +273 -52
  89. package/dist/index.cjs.map +1 -1
  90. package/dist/index.d.cts +13 -12
  91. package/dist/index.d.ts +13 -12
  92. package/dist/index.js +27 -25
  93. package/dist/index.js.map +1 -1
  94. package/dist/{issue-ADVS4OVP.js → issue-RZP3VI6O.js} +4 -4
  95. package/dist/{ledger-CWSE3BLF.js → ledger-A3LL253R.js} +3 -3
  96. package/dist/materialized-views/index.cjs +407 -5
  97. package/dist/materialized-views/index.cjs.map +1 -1
  98. package/dist/materialized-views/index.d.cts +5 -5
  99. package/dist/materialized-views/index.d.ts +5 -5
  100. package/dist/materialized-views/index.js +5 -5
  101. package/dist/noydb-WCMY2ZOW.js +35 -0
  102. package/dist/overlay-views/index.cjs +47 -17
  103. package/dist/overlay-views/index.cjs.map +1 -1
  104. package/dist/overlay-views/index.d.cts +26 -8
  105. package/dist/overlay-views/index.d.ts +26 -8
  106. package/dist/overlay-views/index.js +1 -1
  107. package/dist/periods/index.cjs.map +1 -1
  108. package/dist/periods/index.d.cts +4 -4
  109. package/dist/periods/index.d.ts +4 -4
  110. package/dist/periods/index.js +3 -3
  111. package/dist/{public-envelope-SYHEYQ3X.js → public-envelope-YP2UWMLG.js} +3 -3
  112. package/dist/query/index.cjs +24 -10
  113. package/dist/query/index.cjs.map +1 -1
  114. package/dist/query/index.d.cts +2 -2
  115. package/dist/query/index.d.ts +2 -2
  116. package/dist/query/index.js +2 -2
  117. package/dist/{registry-XGLNADIE.js → registry-EB6SISTA.js} +2 -2
  118. package/dist/{registry-DK5YWAAA.js → registry-UTA4CLQS.js} +2 -2
  119. package/dist/{revoke-ZDFKMR5E.js → revoke-HNMQZSCL.js} +4 -4
  120. package/dist/session/index.d.cts +5 -5
  121. package/dist/session/index.d.ts +5 -5
  122. package/dist/shadow/index.d.cts +4 -4
  123. package/dist/shadow/index.d.ts +4 -4
  124. package/dist/{signer-P5D7Y72U.js → signer-DCMNKXSF.js} +3 -3
  125. package/dist/snapshots/index.d.cts +4 -4
  126. package/dist/snapshots/index.d.ts +4 -4
  127. package/dist/snapshots/index.js +3 -3
  128. package/dist/{stale-JH67FU57.js → stale-W5PQTRYH.js} +2 -2
  129. package/dist/store/index.d.cts +4 -4
  130. package/dist/store/index.d.ts +4 -4
  131. package/dist/{strategy-CbneC7bS.d.ts → strategy-BtW8fAjz.d.cts} +1 -1
  132. package/dist/{strategy-CbneC7bS.d.cts → strategy-BtW8fAjz.d.ts} +1 -1
  133. package/dist/sync/index.cjs.map +1 -1
  134. package/dist/sync/index.d.cts +3 -3
  135. package/dist/sync/index.d.ts +3 -3
  136. package/dist/sync/index.js +2 -2
  137. package/dist/team/index.cjs.map +1 -1
  138. package/dist/team/index.d.cts +4 -4
  139. package/dist/team/index.d.ts +4 -4
  140. package/dist/team/index.js +5 -5
  141. package/dist/tx/index.cjs +66 -3
  142. package/dist/tx/index.cjs.map +1 -1
  143. package/dist/tx/index.d.cts +22 -6
  144. package/dist/tx/index.d.ts +22 -6
  145. package/dist/tx/index.js +7 -3
  146. package/dist/tx/index.js.map +1 -1
  147. package/dist/{types-BpPV5uyy.d.cts → types-Bze6vkwm.d.cts} +371 -139
  148. package/dist/{types-4t1-tWS4.d.ts → types-DrmBTscX.d.ts} +371 -139
  149. package/dist/{ulid-DAfenvFd.d.ts → ulid-DbBVrNSt.d.ts} +1 -1
  150. package/dist/{ulid-CiPrpGqm.d.cts → ulid-DfZlAh0u.d.cts} +1 -1
  151. package/dist/{vault-group-KOM7QRJG.js → vault-group-DX2HFQMX.js} +2 -2
  152. package/dist/{with-derivation-DBqJB3dQ.d.cts → with-derivation-CCqAchD5.d.cts} +1 -1
  153. package/dist/{with-derivation-OK9M2sJE.d.ts → with-derivation-_lySGdlm.d.ts} +1 -1
  154. package/dist/{with-materialized-view-NzuxYPDF.d.cts → with-materialized-view--4PsvMDu.d.cts} +1 -1
  155. package/dist/{with-materialized-view-Dt-ufPWQ.d.ts → with-materialized-view-QT1Tp7NO.d.ts} +1 -1
  156. package/dist/{with-overlayed-view-eDvMs6LO.d.ts → with-overlayed-view-BEXfpzSb.d.ts} +1 -1
  157. package/dist/{with-overlayed-view-CC0_ocy-.d.cts → with-overlayed-view-DlH5qmeB.d.cts} +1 -1
  158. package/package.json +3 -3
  159. package/dist/chunk-3EWXMOK3.js.map +0 -1
  160. package/dist/chunk-5LQG6ZO2.js.map +0 -1
  161. package/dist/chunk-7EFFHEN5.js.map +0 -1
  162. package/dist/chunk-C5T5AFWN.js.map +0 -1
  163. package/dist/chunk-DQU36Q7I.js.map +0 -1
  164. package/dist/chunk-EGD5DXFT.js.map +0 -1
  165. package/dist/chunk-OHVFWCJP.js.map +0 -1
  166. package/dist/chunk-VU7SWWT5.js.map +0 -1
  167. package/dist/chunk-YHPM5D7Y.js.map +0 -1
  168. package/dist/noydb-GZGFBA4E.js +0 -35
  169. /package/dist/{chunk-BIYRQQV6.js.map → chunk-3YWP3WBP.js.map} +0 -0
  170. /package/dist/{chunk-A5ZOOZFB.js.map → chunk-6H2ZUNR7.js.map} +0 -0
  171. /package/dist/{chunk-7HT2MEZ5.js.map → chunk-7BQ4QWYX.js.map} +0 -0
  172. /package/dist/{chunk-WBAYSNUQ.js.map → chunk-BI6ETQPF.js.map} +0 -0
  173. /package/dist/{chunk-56DJ7JVK.js.map → chunk-BR3AMFGS.js.map} +0 -0
  174. /package/dist/{chunk-COFPAMX6.js.map → chunk-DLZ2ONOD.js.map} +0 -0
  175. /package/dist/{chunk-EYVQHAGH.js.map → chunk-DUREQF5W.js.map} +0 -0
  176. /package/dist/{chunk-PE4AQGFH.js.map → chunk-E2CDVKMH.js.map} +0 -0
  177. /package/dist/{chunk-L2FE64BU.js.map → chunk-FFXM3ZIF.js.map} +0 -0
  178. /package/dist/{chunk-WGHU7BLI.js.map → chunk-GNI5STXQ.js.map} +0 -0
  179. /package/dist/{chunk-7PS7EOCF.js.map → chunk-IXBIFDEW.js.map} +0 -0
  180. /package/dist/{chunk-LX3CB26H.js.map → chunk-KABJXG2F.js.map} +0 -0
  181. /package/dist/{chunk-DKO2QFSA.js.map → chunk-OB2ZJQ2D.js.map} +0 -0
  182. /package/dist/{chunk-KIP6JLTF.js.map → chunk-OMAMZKKD.js.map} +0 -0
  183. /package/dist/{chunk-KI6HAJWL.js.map → chunk-QSUK7YWK.js.map} +0 -0
  184. /package/dist/{chunk-NSCVNK5K.js.map → chunk-SCJPI4Z5.js.map} +0 -0
  185. /package/dist/{chunk-6AJBSQU4.js.map → chunk-XL35NSEN.js.map} +0 -0
  186. /package/dist/{executor-HSSRXDOB.js.map → executor-AZLS3KBK.js.map} +0 -0
  187. /package/dist/{fanout-sidecar-N6OJX6QR.js.map → fanout-sidecar-67CMI3UT.js.map} +0 -0
  188. /package/dist/{issue-ADVS4OVP.js.map → issue-RZP3VI6O.js.map} +0 -0
  189. /package/dist/{ledger-CWSE3BLF.js.map → ledger-A3LL253R.js.map} +0 -0
  190. /package/dist/{noydb-GZGFBA4E.js.map → noydb-WCMY2ZOW.js.map} +0 -0
  191. /package/dist/{public-envelope-SYHEYQ3X.js.map → public-envelope-YP2UWMLG.js.map} +0 -0
  192. /package/dist/{registry-DK5YWAAA.js.map → registry-EB6SISTA.js.map} +0 -0
  193. /package/dist/{registry-XGLNADIE.js.map → registry-UTA4CLQS.js.map} +0 -0
  194. /package/dist/{revoke-ZDFKMR5E.js.map → revoke-HNMQZSCL.js.map} +0 -0
  195. /package/dist/{signer-P5D7Y72U.js.map → signer-DCMNKXSF.js.map} +0 -0
  196. /package/dist/{stale-JH67FU57.js.map → stale-W5PQTRYH.js.map} +0 -0
  197. /package/dist/{vault-group-KOM7QRJG.js.map → vault-group-DX2HFQMX.js.map} +0 -0
@@ -1,8 +1,8 @@
1
- export { w as withMaterializedView } from '../with-materialized-view-NzuxYPDF.cjs';
2
- import { aY as Collection, aK as TxContext, bz as MVQueryContext, bA as RegisteredMV, bB as MaterializedViewRegistry } from '../types-BpPV5uyy.cjs';
3
- export { bC as MaterializedFromMeta, bD as MaterializedViewOutput, aV as MaterializedViewStrategy, aW as MaterializedViewStrategyHandle, bE as UnionSource } from '../types-BpPV5uyy.cjs';
4
- import { Q as Query } from '../index-D95VK1Qy.cjs';
5
- export { a3 as MaterializedViewConfigError, a4 as MaterializedViewCycleError, a5 as MaterializedViewSourceUnknownError, a6 as MaterializedViewTooLargeError } from '../strategy-CbneC7bS.cjs';
1
+ export { w as withMaterializedView } from '../with-materialized-view--4PsvMDu.cjs';
2
+ import { aS as Collection, bv as TxContext, bw as MVQueryContext, bx as RegisteredMV, by as MaterializedViewRegistry } from '../types-Bze6vkwm.cjs';
3
+ export { bz as MaterializedFromMeta, bA as MaterializedViewOutput, aP as MaterializedViewStrategy, aQ as MaterializedViewStrategyHandle, bB as UnionArmJoin, bC as UnionSource } from '../types-Bze6vkwm.cjs';
4
+ import { Q as Query } from '../index-C8Bk3-VF.cjs';
5
+ export { a3 as MaterializedViewConfigError, a4 as MaterializedViewCycleError, a5 as MaterializedViewSourceUnknownError, a6 as MaterializedViewTooLargeError } from '../strategy-BtW8fAjz.cjs';
6
6
  import '../lazy-builder-eYZzLEL1.cjs';
7
7
  import '../predicate-BmhBSPCH.cjs';
8
8
  import '../strategy-BSxFXGzb.cjs';
@@ -1,8 +1,8 @@
1
- export { w as withMaterializedView } from '../with-materialized-view-Dt-ufPWQ.js';
2
- import { aY as Collection, aK as TxContext, bz as MVQueryContext, bA as RegisteredMV, bB as MaterializedViewRegistry } from '../types-4t1-tWS4.js';
3
- export { bC as MaterializedFromMeta, bD as MaterializedViewOutput, aV as MaterializedViewStrategy, aW as MaterializedViewStrategyHandle, bE as UnionSource } from '../types-4t1-tWS4.js';
4
- import { Q as Query } from '../index-XNB2r6bX.js';
5
- export { a3 as MaterializedViewConfigError, a4 as MaterializedViewCycleError, a5 as MaterializedViewSourceUnknownError, a6 as MaterializedViewTooLargeError } from '../strategy-CbneC7bS.js';
1
+ export { w as withMaterializedView } from '../with-materialized-view-QT1Tp7NO.js';
2
+ import { aS as Collection, bv as TxContext, bw as MVQueryContext, bx as RegisteredMV, by as MaterializedViewRegistry } from '../types-DrmBTscX.js';
3
+ export { bz as MaterializedFromMeta, bA as MaterializedViewOutput, aP as MaterializedViewStrategy, aQ as MaterializedViewStrategyHandle, bB as UnionArmJoin, bC as UnionSource } from '../types-DrmBTscX.js';
4
+ import { Q as Query } from '../index-nP99bXLg.js';
5
+ export { a3 as MaterializedViewConfigError, a4 as MaterializedViewCycleError, a5 as MaterializedViewSourceUnknownError, a6 as MaterializedViewTooLargeError } from '../strategy-BtW8fAjz.js';
6
6
  import '../lazy-builder-ChSqcF5t.js';
7
7
  import '../predicate-BmhBSPCH.js';
8
8
  import '../strategy-BSxFXGzb.js';
@@ -1,23 +1,23 @@
1
1
  import {
2
2
  withMaterializedView
3
- } from "../chunk-NU6Q3FOR.js";
3
+ } from "../chunk-TKIY625R.js";
4
4
  import {
5
5
  clearMVStale,
6
6
  isMVStale,
7
7
  markMVStale,
8
8
  resolveStaleMVOnRead
9
- } from "../chunk-KIP6JLTF.js";
9
+ } from "../chunk-OMAMZKKD.js";
10
10
  import {
11
11
  MaterializedViewExecutor
12
- } from "../chunk-C5T5AFWN.js";
12
+ } from "../chunk-HBXJ37ZY.js";
13
13
  import {
14
14
  MaterializedViewRegistry,
15
15
  analyzeDependencies,
16
16
  canonicalizeQueryPlan,
17
17
  computeQueryHash,
18
18
  summarizeQueryPlan
19
- } from "../chunk-5LQG6ZO2.js";
20
- import "../chunk-3EWXMOK3.js";
19
+ } from "../chunk-G4SCICH5.js";
20
+ import "../chunk-L2BNJ6HM.js";
21
21
  import "../chunk-CJORTUJ2.js";
22
22
  import {
23
23
  MaterializedViewConfigError,
@@ -0,0 +1,35 @@
1
+ import {
2
+ Noydb,
3
+ createNoydb
4
+ } from "./chunk-667MB6AH.js";
5
+ import "./chunk-ZC7J6ZYV.js";
6
+ import "./chunk-EMIGCR7X.js";
7
+ import "./chunk-QVIEAYTP.js";
8
+ import "./chunk-VLMPU56Q.js";
9
+ import "./chunk-CZI2A4MQ.js";
10
+ import "./chunk-GNI5STXQ.js";
11
+ import "./chunk-OB2ZJQ2D.js";
12
+ import "./chunk-QSUK7YWK.js";
13
+ import "./chunk-UF3BUNQZ.js";
14
+ import "./chunk-7BQ4QWYX.js";
15
+ import "./chunk-DLZ2ONOD.js";
16
+ import "./chunk-4TBBMHVC.js";
17
+ import "./chunk-6H2ZUNR7.js";
18
+ import "./chunk-2QR2PQTT.js";
19
+ import "./chunk-FZU343FL.js";
20
+ import "./chunk-BR3AMFGS.js";
21
+ import "./chunk-Z6FNBOTC.js";
22
+ import "./chunk-DUREQF5W.js";
23
+ import "./chunk-XWH4MXIU.js";
24
+ import "./chunk-IQLVUT37.js";
25
+ import "./chunk-L2BNJ6HM.js";
26
+ import "./chunk-CJORTUJ2.js";
27
+ import "./chunk-XL35NSEN.js";
28
+ import "./chunk-F3BPIPLS.js";
29
+ import "./chunk-YULZKK4F.js";
30
+ import "./chunk-535SSHBS.js";
31
+ export {
32
+ Noydb,
33
+ createNoydb
34
+ };
35
+ //# sourceMappingURL=noydb-WCMY2ZOW.js.map
@@ -217,37 +217,34 @@ var OverlayedCollection = class {
217
217
  /** Get the merged row by id. */
218
218
  async get(id) {
219
219
  const overlayRow = await this.overlayCollection.get(id);
220
- if (overlayRow !== null && this.shadowPredicateApplies(overlayRow)) {
221
- return overlayRow;
222
- }
223
220
  const baseRow = await this.baseCollection.get(id);
224
- if (baseRow !== null) return baseRow;
225
- return null;
221
+ return this.mergeRows(overlayRow, baseRow);
226
222
  }
227
223
  /** List union of base + overlay ids, applying the merge per row. */
228
224
  async list() {
229
225
  const baseRows = await this.baseCollection.list();
230
226
  const overlayRows = await this.overlayCollection.list();
231
- const merged = /* @__PURE__ */ new Map();
232
227
  const idOf = (row) => {
233
228
  if (this.baseRowKey) return this.baseRowKey(row);
234
229
  const idField = row.id;
235
230
  return typeof idField === "string" ? idField : "";
236
231
  };
232
+ const baseById = /* @__PURE__ */ new Map();
233
+ const overlayById = /* @__PURE__ */ new Map();
237
234
  for (const row of baseRows) {
238
235
  const id = idOf(row);
239
- if (id) merged.set(id, row);
236
+ if (id) baseById.set(id, row);
240
237
  }
241
238
  for (const row of overlayRows) {
242
239
  const id = idOf(row);
243
- if (!id) continue;
244
- if (this.shadowPredicateApplies(row)) {
245
- merged.set(id, row);
246
- } else if (!merged.has(id)) {
247
- continue;
248
- }
240
+ if (id) overlayById.set(id, row);
249
241
  }
250
- return [...merged.values()];
242
+ const out = [];
243
+ for (const id of /* @__PURE__ */ new Set([...baseById.keys(), ...overlayById.keys()])) {
244
+ const merged = this.mergeRows(overlayById.get(id) ?? null, baseById.get(id) ?? null);
245
+ if (merged !== null) out.push(merged);
246
+ }
247
+ return out;
251
248
  }
252
249
  /**
253
250
  * Write to the overlay. Two forms:
@@ -287,9 +284,42 @@ var OverlayedCollection = class {
287
284
  async delete(id) {
288
285
  await this.overlayCollection.delete(id);
289
286
  }
290
- /** True when `overlay[shadowField] === shadowValue`. */
291
- shadowPredicateApplies(row) {
292
- return row[this.spec.shadowField] === this.spec.shadowValue;
287
+ /**
288
+ * Merge a single id's overlay + base rows into the visible row.
289
+ *
290
+ * Priority (first match wins):
291
+ * 1. Binary shadow win — overlay present AND
292
+ * `overlay[shadowField] === shadowValue` → return the overlay row
293
+ * entirely. This stays FIRST so the original binary behaviour is
294
+ * unchanged whether or not `mergeMode` is configured.
295
+ * 2. Field-level merge — overlay present, `mergeMode` configured,
296
+ * and a rule whose `whenStatus` equals `overlay[shadowField]`.
297
+ * The matched rule pulls its `overlayFields` (those present on
298
+ * the overlay row) on top of the base row. With no base row, the
299
+ * overlay row is returned as-is.
300
+ * 3. Fallback — return the base row (possibly `null`). An
301
+ * overlay-only row that qualifies under neither (1) nor (2) and
302
+ * has no base is therefore NOT surfaced.
303
+ */
304
+ mergeRows(overlayRow, baseRow) {
305
+ const shadowField = this.spec.shadowField;
306
+ if (overlayRow !== null && overlayRow[shadowField] === this.spec.shadowValue) {
307
+ return overlayRow;
308
+ }
309
+ if (overlayRow !== null && this.spec.mergeMode) {
310
+ const status = overlayRow[shadowField];
311
+ const rule = this.spec.mergeMode.rules.find((r) => r.whenStatus === status);
312
+ if (rule) {
313
+ if (baseRow === null) return overlayRow;
314
+ const overlaySrc = overlayRow;
315
+ const picked = {};
316
+ for (const field of rule.overlayFields) {
317
+ if (field in overlaySrc) picked[field] = overlaySrc[field];
318
+ }
319
+ return { ...baseRow, ...picked };
320
+ }
321
+ }
322
+ return baseRow;
293
323
  }
294
324
  // ─── Throw-stubs for the unimplemented Collection<T> surface ───────
295
325
  //