@noy-db/hub 0.3.0-pre.9 → 0.4.0-pre.0

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 (968) hide show
  1. package/dist/aggregate/index.js +5 -5
  2. package/dist/api-3A3S4SHH.js +20 -0
  3. package/dist/as/index.js +11 -11
  4. package/dist/attestation/index.js +18 -18
  5. package/dist/backup-YPUEKIJC.js +242 -0
  6. package/dist/backup-YPUEKIJC.js.map +1 -0
  7. package/dist/blobs/index.js +13 -11
  8. package/dist/blobs/index.js.map +1 -1
  9. package/dist/broker/index.js +92 -0
  10. package/dist/broker/index.js.map +1 -0
  11. package/dist/bundle/index.js +25 -22
  12. package/dist/bundle/index.js.map +1 -1
  13. package/dist/by/index.js +2 -2
  14. package/dist/cargo/index.js +31 -32
  15. package/dist/chunk-2PCAVW2I.js +50 -0
  16. package/dist/chunk-3ELCWU56.js +344 -0
  17. package/dist/chunk-3ELCWU56.js.map +1 -0
  18. package/dist/chunk-4GPE63GU.js +111 -0
  19. package/dist/chunk-4GPE63GU.js.map +1 -0
  20. package/dist/chunk-554KLAAN.js +778 -0
  21. package/dist/chunk-5PFOMHTB.js +135 -0
  22. package/dist/chunk-5WZXVULX.js +209 -0
  23. package/dist/chunk-6HPG2YNX.js +38 -0
  24. package/dist/chunk-6HY2X62D.js +69 -0
  25. package/dist/chunk-6NQMXTYC.js +123 -0
  26. package/dist/chunk-6XE5TMPR.js +367 -0
  27. package/dist/chunk-A4FXFAKF.js +45 -0
  28. package/dist/chunk-A5BDDEXK.js +1537 -0
  29. package/dist/chunk-A5BDDEXK.js.map +1 -0
  30. package/dist/chunk-ANATMTOA.js +205 -0
  31. package/dist/chunk-BOKIKJJB.js +94 -0
  32. package/dist/chunk-CJ5KKU6X.js +49 -0
  33. package/dist/chunk-CZTLE22N.js +381 -0
  34. package/dist/chunk-CZTLE22N.js.map +1 -0
  35. package/dist/chunk-DDHM2TLX.js +164 -0
  36. package/dist/chunk-DDHM2TLX.js.map +1 -0
  37. package/dist/chunk-DRWBEDYO.js +37 -0
  38. package/dist/chunk-DRWBEDYO.js.map +1 -0
  39. package/dist/chunk-DSBQODMZ.js +202 -0
  40. package/dist/chunk-EO43ANYJ.js +382 -0
  41. package/dist/chunk-EWPOHMN2.js +255 -0
  42. package/dist/chunk-FH52K7EG.js +50 -0
  43. package/dist/chunk-FH52K7EG.js.map +1 -0
  44. package/dist/chunk-FXZDAV62.js +826 -0
  45. package/dist/chunk-FXZDAV62.js.map +1 -0
  46. package/dist/chunk-GDG5VVYG.js +167 -0
  47. package/dist/chunk-GDG5VVYG.js.map +1 -0
  48. package/dist/chunk-GULTLPFB.js +621 -0
  49. package/dist/chunk-GULTLPFB.js.map +1 -0
  50. package/dist/chunk-GWKAVKHI.js +71 -0
  51. package/dist/chunk-H2KSZMIX.js +164 -0
  52. package/dist/chunk-HOONYZY2.js +404 -0
  53. package/dist/chunk-HQBM64EE.js +957 -0
  54. package/dist/chunk-HQBM64EE.js.map +1 -0
  55. package/dist/chunk-IAO54J4R.js +333 -0
  56. package/dist/chunk-IAO54J4R.js.map +1 -0
  57. package/dist/chunk-IFJTPAQQ.js +150 -0
  58. package/dist/chunk-IFJTPAQQ.js.map +1 -0
  59. package/dist/chunk-IGJCYUT5.js +99 -0
  60. package/dist/chunk-IGJCYUT5.js.map +1 -0
  61. package/dist/chunk-IK43HLDQ.js +739 -0
  62. package/dist/chunk-IK43HLDQ.js.map +1 -0
  63. package/dist/chunk-ISMV2QVG.js +54 -0
  64. package/dist/chunk-IY23KFNZ.js +95 -0
  65. package/dist/chunk-JBBSYJHP.js +129 -0
  66. package/dist/chunk-JFCV5QIK.js +117 -0
  67. package/dist/chunk-JK733I5V.js +23 -0
  68. package/dist/chunk-JK733I5V.js.map +1 -0
  69. package/dist/chunk-JRBNCUNT.js +371 -0
  70. package/dist/chunk-JRBNCUNT.js.map +1 -0
  71. package/dist/chunk-JVBO4SZL.js +29 -0
  72. package/dist/chunk-JVBO4SZL.js.map +1 -0
  73. package/dist/chunk-KPZS5QAQ.js +151 -0
  74. package/dist/chunk-KPZS5QAQ.js.map +1 -0
  75. package/dist/chunk-KS6SAVCZ.js +247 -0
  76. package/dist/chunk-KS6SAVCZ.js.map +1 -0
  77. package/dist/chunk-LVGTA624.js +480 -0
  78. package/dist/chunk-LVGTA624.js.map +1 -0
  79. package/dist/chunk-M75ZZHSR.js +30 -0
  80. package/dist/chunk-MT62YSPZ.js +392 -0
  81. package/dist/chunk-MT62YSPZ.js.map +1 -0
  82. package/dist/chunk-N6WF5PKC.js +29 -0
  83. package/dist/chunk-NCCBLYEB.js +150 -0
  84. package/dist/chunk-OCVM6KDH.js +99 -0
  85. package/dist/chunk-ONTBCHCP.js +80 -0
  86. package/dist/chunk-PK6JIDQ4.js +14425 -0
  87. package/dist/chunk-PK6JIDQ4.js.map +1 -0
  88. package/dist/chunk-QDPZWTN2.js +74 -0
  89. package/dist/chunk-QDPZWTN2.js.map +1 -0
  90. package/dist/chunk-R3BLCFD2.js +130 -0
  91. package/dist/chunk-RA5VTXXG.js +173 -0
  92. package/dist/chunk-RA5VTXXG.js.map +1 -0
  93. package/dist/chunk-RDXW3OBQ.js +21 -0
  94. package/dist/chunk-RFI7GGFO.js +230 -0
  95. package/dist/chunk-RJ6K6K5M.js +36 -0
  96. package/dist/chunk-RJ6K6K5M.js.map +1 -0
  97. package/dist/chunk-RNG4VRP4.js +75 -0
  98. package/dist/chunk-RTEK4C4I.js +41 -0
  99. package/dist/chunk-S3BFKGET.js +369 -0
  100. package/dist/chunk-S3BFKGET.js.map +1 -0
  101. package/dist/chunk-S6Q37VGE.js +30 -0
  102. package/dist/chunk-SMIRGMS7.js +30 -0
  103. package/dist/chunk-SMIRGMS7.js.map +1 -0
  104. package/dist/chunk-SV6EAJEP.js +86 -0
  105. package/dist/chunk-T36RFODW.js +180 -0
  106. package/dist/chunk-T36RFODW.js.map +1 -0
  107. package/dist/chunk-T3GY65MA.js +367 -0
  108. package/dist/chunk-TAGR72IR.js +515 -0
  109. package/dist/chunk-TAGR72IR.js.map +1 -0
  110. package/dist/chunk-THVIPWRF.js +495 -0
  111. package/dist/chunk-THVIPWRF.js.map +1 -0
  112. package/dist/chunk-TIGPQDYP.js +14 -0
  113. package/dist/chunk-U6JMEH2P.js +261 -0
  114. package/dist/chunk-UC2ETWF3.js +34 -0
  115. package/dist/chunk-UDSR4X4L.js +235 -0
  116. package/dist/chunk-UHNGNKLV.js +2782 -0
  117. package/dist/chunk-UHNGNKLV.js.map +1 -0
  118. package/dist/chunk-VAIS3SOM.js +74 -0
  119. package/dist/chunk-VCBHAE4R.js +124 -0
  120. package/dist/chunk-VCTXU4AT.js +32 -0
  121. package/dist/chunk-VCTXU4AT.js.map +1 -0
  122. package/dist/chunk-VEALDPHW.js +524 -0
  123. package/dist/chunk-VEALDPHW.js.map +1 -0
  124. package/dist/chunk-VKCADNMR.js +589 -0
  125. package/dist/chunk-VRBTNCM4.js +720 -0
  126. package/dist/chunk-VRBTNCM4.js.map +1 -0
  127. package/dist/chunk-VYYM3MEN.js +98 -0
  128. package/dist/chunk-VYYM3MEN.js.map +1 -0
  129. package/dist/chunk-W2OG6JOL.js +1554 -0
  130. package/dist/chunk-W2OG6JOL.js.map +1 -0
  131. package/dist/chunk-W4TCUGQR.js +1128 -0
  132. package/dist/chunk-W4TCUGQR.js.map +1 -0
  133. package/dist/chunk-WG4QBZDN.js +283 -0
  134. package/dist/chunk-WG4QBZDN.js.map +1 -0
  135. package/dist/chunk-WHXXI3W5.js +135 -0
  136. package/dist/chunk-WHXXI3W5.js.map +1 -0
  137. package/dist/chunk-WKGF2TJR.js +45 -0
  138. package/dist/chunk-WNGGJWF7.js +36 -0
  139. package/dist/chunk-WOM2HTML.js +59 -0
  140. package/dist/chunk-WQIYTNJV.js +70 -0
  141. package/dist/chunk-WZSHL6DQ.js +59 -0
  142. package/dist/chunk-XDIAFPUM.js +42 -0
  143. package/dist/chunk-XJMBYYQK.js +40 -0
  144. package/dist/chunk-XTHCN77N.js +91 -0
  145. package/dist/chunk-XUW3PXHU.js +248 -0
  146. package/dist/chunk-XUW3PXHU.js.map +1 -0
  147. package/dist/chunk-YCH5GBN6.js +99 -0
  148. package/dist/chunk-YTGDPCPW.js +155 -0
  149. package/dist/chunk-YZQOGE2L.js +23 -0
  150. package/dist/chunk-Z4PD65VQ.js +265 -0
  151. package/dist/chunk-Z4PD65VQ.js.map +1 -0
  152. package/dist/chunk-ZXEZCY6F.js +85 -0
  153. package/dist/classified/index.js +5 -5
  154. package/dist/classified-marker-QWMASIT7.js +28 -0
  155. package/dist/classified-marker-QWMASIT7.js.map +1 -0
  156. package/dist/collection-facade-KMBWNCYP.js +44 -0
  157. package/dist/computed-DSMPXG2Y.js +11 -0
  158. package/dist/consent/index.js +9 -9
  159. package/dist/cover-QJRXINN5.js +52 -0
  160. package/dist/crdt/index.js +1 -1
  161. package/dist/dead-filter-66VGI6JV.js +28 -0
  162. package/dist/delegation-SU6CV3W7.js +25 -0
  163. package/dist/derivations/index.js +12 -12
  164. package/dist/derive-6RWU4EOA.js +21 -0
  165. package/dist/enclave-TKPN2G2U.js +141 -0
  166. package/dist/executor-KGNLJD6M.js +9 -0
  167. package/dist/executor-UX4FASYZ.js +26 -0
  168. package/dist/executor-XGIS6CR7.js +9 -0
  169. package/dist/export-accessible-LKW3QV22.js +23 -0
  170. package/dist/extract-partition-UP2ARO75.js +38 -0
  171. package/dist/fanout-sidecar-B5LVUMQX.js +74 -0
  172. package/dist/find-YS6XWB46.js +11 -0
  173. package/dist/forget/index.js +10 -10
  174. package/dist/forget/index.js.map +1 -1
  175. package/dist/guards/index.js +6 -6
  176. package/dist/history/index.js +14 -11
  177. package/dist/history/index.js.map +1 -1
  178. package/dist/i18n/index.js +21 -19
  179. package/dist/i18n/index.js.map +1 -1
  180. package/dist/index.d.ts +310 -1493
  181. package/dist/index.js +331 -191
  182. package/dist/index.js.map +1 -1
  183. package/dist/indexing/index.js +7 -7
  184. package/dist/indexing/index.js.map +1 -1
  185. package/dist/issue-3ACYX7LO.js +19 -0
  186. package/dist/kernel/best-effort-revert.d.ts +52 -0
  187. package/dist/kernel/cache/index.d.ts +10 -0
  188. package/dist/kernel/cache/lru.d.ts +97 -0
  189. package/dist/kernel/cache/policy.d.ts +32 -0
  190. package/dist/kernel/collection-config.d.ts +809 -0
  191. package/dist/kernel/collection.d.ts +1522 -0
  192. package/dist/kernel/constants.d.ts +18 -0
  193. package/dist/kernel/debug.d.ts +25 -0
  194. package/dist/kernel/enclave/broker/proof.d.ts +154 -0
  195. package/dist/kernel/enclave/classify/bidx.d.ts +77 -0
  196. package/dist/kernel/enclave/classify/compare.d.ts +10 -0
  197. package/dist/kernel/enclave/classify/digest.d.ts +8 -0
  198. package/dist/kernel/enclave/classify/find.d.ts +36 -0
  199. package/dist/kernel/enclave/classify/kofn.d.ts +7 -0
  200. package/dist/kernel/enclave/classify/normalize.d.ts +7 -0
  201. package/dist/kernel/enclave/classify/reveal.d.ts +10 -0
  202. package/dist/kernel/enclave/classify/vdig.d.ts +39 -0
  203. package/dist/kernel/enclave/classify/verify.d.ts +36 -0
  204. package/dist/kernel/enclave/classify/write.d.ts +8 -0
  205. package/dist/kernel/enclave/crypto.d.ts +263 -0
  206. package/dist/kernel/enclave/index.d.ts +79 -0
  207. package/dist/kernel/enclave/record-keys/deterministic.d.ts +55 -0
  208. package/dist/kernel/enclave/record-keys/envelope-body.d.ts +79 -0
  209. package/dist/kernel/enclave/record-keys/lifecycle.d.ts +107 -0
  210. package/dist/kernel/enclave/record-keys/record-codec.d.ts +328 -0
  211. package/dist/kernel/enclave/record-keys/sealed-slot.d.ts +14 -0
  212. package/dist/kernel/enclave/record-keys/sealed-slots.d.ts +123 -0
  213. package/dist/kernel/enclave/record-keys/sealing.d.ts +70 -0
  214. package/dist/kernel/enclave/record-keys/tombstone.d.ts +57 -0
  215. package/dist/kernel/env-check.d.ts +1 -0
  216. package/dist/kernel/errors.d.ts +1927 -0
  217. package/dist/kernel/events.d.ts +11 -0
  218. package/dist/kernel/lazy-count.d.ts +13 -0
  219. package/dist/kernel/memory-store.d.ts +17 -0
  220. package/dist/kernel/mutation.d.ts +14 -0
  221. package/dist/kernel/noydb.d.ts +836 -0
  222. package/dist/kernel/paths.d.ts +25 -0
  223. package/dist/kernel/query/builder.d.ts +520 -0
  224. package/dist/kernel/query/index.d.ts +31 -0
  225. package/dist/kernel/query/join.d.ts +205 -0
  226. package/dist/kernel/query/live.d.ts +111 -0
  227. package/dist/kernel/query/predicate.d.ts +139 -0
  228. package/dist/kernel/query/scan-builder.d.ts +334 -0
  229. package/dist/kernel/refs.d.ts +205 -0
  230. package/dist/kernel/schema.d.ts +134 -0
  231. package/dist/kernel/sync-policy.d.ts +188 -0
  232. package/dist/kernel/tier-visibility.d.ts +54 -0
  233. package/dist/kernel/types.d.ts +3245 -0
  234. package/dist/kernel/util/discriminant.d.ts +58 -0
  235. package/dist/kernel/util/index.d.ts +14 -0
  236. package/dist/kernel/util/sanitize-filename.d.ts +75 -0
  237. package/dist/kernel/validation.d.ts +130 -0
  238. package/dist/kernel/vault.d.ts +1744 -0
  239. package/dist/kernel/via/compose.d.ts +144 -0
  240. package/dist/kernel/via/dispatch.d.ts +195 -0
  241. package/dist/kernel/via/graph-wiring.d.ts +145 -0
  242. package/dist/kernel/via/graph.d.ts +166 -0
  243. package/dist/kernel/via/index.d.ts +200 -0
  244. package/dist/kernel/via/pipeline.d.ts +266 -0
  245. package/dist/kernel/via/reconcile.d.ts +153 -0
  246. package/dist/kernel/via/taint-binding.d.ts +66 -0
  247. package/dist/kernel/write-queue.d.ts +46 -0
  248. package/dist/ledger-PTK7XZYT.js +42 -0
  249. package/dist/legacy/bundle.d.ts +30 -0
  250. package/dist/legacy/kernel.d.ts +33 -0
  251. package/dist/liberate-MQQXBUCY.js +24 -0
  252. package/dist/link-set-SLJHDNRB.js +31 -0
  253. package/dist/materialized-views/index.js +20 -17
  254. package/dist/noydb-ANIW5FLE.js +69 -0
  255. package/dist/on/index.js +9 -9
  256. package/dist/overlay-views/index.js +4 -4
  257. package/dist/periods/index.js +12 -12
  258. package/dist/pod/index.js +13 -11
  259. package/dist/policy-YDLCOX4P.js +41 -0
  260. package/dist/port/as/index.d.ts +26 -0
  261. package/dist/port/at/index.d.ts +18 -0
  262. package/dist/port/by/default-provider.d.ts +9 -0
  263. package/dist/port/by/index.d.ts +17 -0
  264. package/dist/port/by/types.d.ts +86 -0
  265. package/dist/port/in/index.d.ts +21 -0
  266. package/dist/port/on/index.d.ts +27 -0
  267. package/dist/port/to/index.d.ts +19 -0
  268. package/dist/port/ui/index.d.ts +21 -0
  269. package/dist/port/with/blob-strategy.d.ts +98 -0
  270. package/dist/port/with/broker-strategy.d.ts +84 -0
  271. package/dist/port/with/capabilities.d.ts +31 -0
  272. package/dist/port/with/classified-marker.d.ts +9 -0
  273. package/dist/port/with/classified-strategy.d.ts +62 -0
  274. package/dist/port/with/computed-strategy.d.ts +19 -0
  275. package/dist/port/with/i18n-strategy.d.ts +175 -0
  276. package/dist/port/with/index.d.ts +18 -0
  277. package/dist/port/with/lazy-strategy.d.ts +48 -0
  278. package/dist/port/with/lookup-strategy.d.ts +129 -0
  279. package/dist/port/with/service-bus.d.ts +156 -0
  280. package/dist/port/with/team-strategy.d.ts +36 -0
  281. package/dist/port/with/write-hooks.d.ts +34 -0
  282. package/dist/portability/index.js +8 -8
  283. package/dist/post-register-2YHSADFI.js +60 -0
  284. package/dist/post-register-2YHSADFI.js.map +1 -0
  285. package/dist/purge-scope-FGNNLWHD.js +24 -0
  286. package/dist/purge-scope-FGNNLWHD.js.map +1 -0
  287. package/dist/query/index.js +12 -10
  288. package/dist/read-only-facade-CHCKSEPD.js +8 -0
  289. package/dist/register-PAM3ASRZ.js +23 -0
  290. package/dist/registry-4S2U2TR4.js +19 -0
  291. package/dist/registry-NPOWJHC4.js +9 -0
  292. package/dist/registry-VZ3CCI2R.js +18 -0
  293. package/dist/request-withdrawal-DI3H5WUI.js +31 -0
  294. package/dist/reveal-HWO4YMTJ.js +38 -0
  295. package/dist/reveal-HWO4YMTJ.js.map +1 -0
  296. package/dist/revoke-R5CZSVUT.js +24 -0
  297. package/dist/satellites/index.js +1 -1
  298. package/dist/sealed-record/index.js +12 -12
  299. package/dist/seed-3ZMF5EQA.js +231 -0
  300. package/dist/seed-3ZMF5EQA.js.map +1 -0
  301. package/dist/session/index.js +9 -9
  302. package/dist/shadow/index.js +2 -2
  303. package/dist/signer-MBVHW4WE.js +25 -0
  304. package/dist/snapshots/index.js +10 -10
  305. package/dist/stale-VZL4OGUB.js +29 -0
  306. package/dist/storage-3MEJUENZ.js +23 -0
  307. package/dist/store-coordination-provider-FKX3F6TQ.js +142 -0
  308. package/dist/sync/index.js +9 -9
  309. package/dist/team/index.js +15 -15
  310. package/dist/tiers/index.js +14 -10
  311. package/dist/to/index.js +1 -2
  312. package/dist/tx/index.js +3 -3
  313. package/dist/util/index.js +1 -1
  314. package/dist/verify-26Y5GNMK.js +140 -0
  315. package/dist/verify-26Y5GNMK.js.map +1 -0
  316. package/dist/via/blob/active.d.ts +34 -0
  317. package/dist/via/blob/binding.d.ts +86 -0
  318. package/dist/via/blob/index.d.ts +34 -0
  319. package/dist/via/classified/active.d.ts +3 -0
  320. package/dist/via/classified/binding.d.ts +83 -0
  321. package/dist/via/classified/config-drift.d.ts +34 -0
  322. package/dist/via/classified/descriptor.d.ts +66 -0
  323. package/dist/via/classified/errors.d.ts +19 -0
  324. package/dist/via/classified/guards.d.ts +23 -0
  325. package/dist/via/classified/index.d.ts +11 -0
  326. package/dist/via/classified/presets.d.ts +65 -0
  327. package/dist/via/classified/resolve.d.ts +9 -0
  328. package/dist/via/classified/strategy.d.ts +11 -0
  329. package/dist/via/classified/validators.d.ts +3 -0
  330. package/dist/via/classified/write.d.ts +4 -0
  331. package/dist/via/computed/binding.d.ts +34 -0
  332. package/dist/via/computed/descriptor.d.ts +35 -0
  333. package/dist/via/i18n/active.d.ts +28 -0
  334. package/dist/via/i18n/binding.d.ts +36 -0
  335. package/dist/via/i18n/core.d.ts +267 -0
  336. package/dist/via/i18n/densify.d.ts +24 -0
  337. package/dist/via/i18n/dictionary.d.ts +200 -0
  338. package/dist/via/i18n/index.d.ts +21 -0
  339. package/dist/via/i18n/policy.d.ts +44 -0
  340. package/dist/via/i18n/script.d.ts +26 -0
  341. package/dist/via/i18n/strategy.d.ts +13 -0
  342. package/dist/via/lookup/active.d.ts +19 -0
  343. package/dist/via/lookup/binding.d.ts +99 -0
  344. package/dist/via/lookup/descriptor.d.ts +123 -0
  345. package/dist/via/lookup/handle.d.ts +220 -0
  346. package/dist/via/lookup/index.d.ts +17 -0
  347. package/dist/via/lookup/registry.d.ts +228 -0
  348. package/dist/via/lookup/snapshot.d.ts +67 -0
  349. package/dist/via/money/arith.d.ts +68 -0
  350. package/dist/via/money/binding.d.ts +21 -0
  351. package/dist/via/money/branded.d.ts +61 -0
  352. package/dist/via/money/descriptor.d.ts +73 -0
  353. package/dist/via/money/fixed-point.d.ts +51 -0
  354. package/dist/via/money/index.d.ts +15 -0
  355. package/dist/via/money/iso4217.d.ts +6 -0
  356. package/dist/via/money/money-reducer.d.ts +33 -0
  357. package/dist/via/money/normalize.d.ts +105 -0
  358. package/dist/via/money/paths.d.ts +61 -0
  359. package/dist/via/money/where.d.ts +127 -0
  360. package/dist/walk-IPLXE36W.js +241 -0
  361. package/dist/with/index.js +11 -11
  362. package/dist/with-audit/attestation/active.d.ts +10 -0
  363. package/dist/with-audit/attestation/index.d.ts +16 -0
  364. package/dist/with-audit/attestation/issue.d.ts +29 -0
  365. package/dist/with-audit/attestation/revoke.d.ts +15 -0
  366. package/dist/with-audit/attestation/signer.d.ts +33 -0
  367. package/dist/with-audit/attestation/strategy.d.ts +44 -0
  368. package/dist/with-audit/attestation/vault-facade.d.ts +62 -0
  369. package/dist/with-audit/consent/active.d.ts +14 -0
  370. package/dist/with-audit/consent/consent.d.ts +114 -0
  371. package/dist/with-audit/consent/index.d.ts +14 -0
  372. package/dist/with-audit/consent/strategy.d.ts +36 -0
  373. package/dist/with-audit/forget/active.d.ts +31 -0
  374. package/dist/with-audit/forget/index.d.ts +28 -0
  375. package/dist/with-audit/forget/purge-scope.d.ts +54 -0
  376. package/dist/with-audit/forget/strategy.d.ts +199 -0
  377. package/dist/with-audit/forget/subject-index.d.ts +83 -0
  378. package/dist/with-audit/guards/executor.d.ts +26 -0
  379. package/dist/with-audit/guards/immutable-guard.d.ts +63 -0
  380. package/dist/with-audit/guards/index.d.ts +10 -0
  381. package/dist/with-audit/guards/read-only-facade.d.ts +31 -0
  382. package/dist/with-audit/guards/registry.d.ts +83 -0
  383. package/dist/with-audit/guards/transition-guard.d.ts +82 -0
  384. package/dist/with-audit/guards/types.d.ts +134 -0
  385. package/dist/with-audit/guards/with-guard.d.ts +15 -0
  386. package/dist/with-audit/periods/active.d.ts +11 -0
  387. package/dist/with-audit/periods/index.d.ts +18 -0
  388. package/dist/with-audit/periods/periods.d.ts +417 -0
  389. package/dist/with-audit/periods/strategy.d.ts +32 -0
  390. package/dist/with-audit/periods/vault-facade.d.ts +95 -0
  391. package/dist/with-audit/portability/active.d.ts +11 -0
  392. package/dist/with-audit/portability/export-accessible.d.ts +46 -0
  393. package/dist/with-audit/portability/index.d.ts +18 -0
  394. package/dist/with-audit/portability/request-withdrawal.d.ts +85 -0
  395. package/dist/with-audit/portability/strategy.d.ts +31 -0
  396. package/dist/with-audit/portability/withdraw-accessible.d.ts +82 -0
  397. package/dist/with-audit/sealed-record/active.d.ts +9 -0
  398. package/dist/with-audit/sealed-record/index.d.ts +55 -0
  399. package/dist/with-audit/sealed-record/strategy.d.ts +34 -0
  400. package/dist/with-audit/sealed-record/types.d.ts +27 -0
  401. package/dist/with-audit/tiers/active.d.ts +9 -0
  402. package/dist/with-audit/tiers/index.d.ts +394 -0
  403. package/dist/with-audit/tiers/strategy.d.ts +36 -0
  404. package/dist/with-cargo/active.d.ts +11 -0
  405. package/dist/with-cargo/adopt-partition.d.ts +81 -0
  406. package/dist/with-cargo/decrypt-partition.d.ts +19 -0
  407. package/dist/with-cargo/describe-extraction.d.ts +41 -0
  408. package/dist/with-cargo/extract-partition.d.ts +155 -0
  409. package/dist/with-cargo/index.d.ts +33 -0
  410. package/dist/with-cargo/strategy.d.ts +30 -0
  411. package/dist/with-cargo/vault-diff.d.ts +144 -0
  412. package/dist/with-cargo/walk-closure.d.ts +67 -0
  413. package/dist/with-commit/crdt/active.d.ts +25 -0
  414. package/dist/with-commit/crdt/crdt.d.ts +42 -0
  415. package/dist/with-commit/crdt/index.d.ts +16 -0
  416. package/dist/with-commit/crdt/strategy.d.ts +25 -0
  417. package/dist/with-commit/history/active.d.ts +40 -0
  418. package/dist/with-commit/history/diff.d.ts +23 -0
  419. package/dist/with-commit/history/history.d.ts +73 -0
  420. package/dist/with-commit/history/index.d.ts +30 -0
  421. package/dist/with-commit/history/ledger/constants.d.ts +37 -0
  422. package/dist/with-commit/history/ledger/entry.d.ts +195 -0
  423. package/dist/with-commit/history/ledger/hash.d.ts +30 -0
  424. package/dist/with-commit/history/ledger/index.d.ts +19 -0
  425. package/dist/with-commit/history/ledger/patch.d.ts +99 -0
  426. package/dist/with-commit/history/ledger/store.d.ts +356 -0
  427. package/dist/with-commit/history/strategy.d.ts +136 -0
  428. package/dist/with-commit/history/time-machine.d.ts +202 -0
  429. package/dist/with-commit/numbering/descriptor.d.ts +27 -0
  430. package/dist/with-commit/numbering/index.d.ts +69 -0
  431. package/dist/with-commit/sequence/active.d.ts +10 -0
  432. package/dist/with-commit/sequence/index.d.ts +150 -0
  433. package/dist/with-commit/sequence/strategy.d.ts +26 -0
  434. package/dist/with-commit/tx/active.d.ts +27 -0
  435. package/dist/with-commit/tx/dry-run.d.ts +29 -0
  436. package/dist/with-commit/tx/elevated-handle.d.ts +59 -0
  437. package/dist/with-commit/tx/index.d.ts +13 -0
  438. package/dist/with-commit/tx/invariants.d.ts +68 -0
  439. package/dist/with-commit/tx/strategy.d.ts +23 -0
  440. package/dist/with-commit/tx/transaction.d.ts +212 -0
  441. package/dist/with-fork/archive/engine.d.ts +71 -0
  442. package/dist/with-fork/archive/index.d.ts +23 -0
  443. package/dist/with-fork/shadow/active.d.ts +6 -0
  444. package/dist/with-fork/shadow/index.d.ts +14 -0
  445. package/dist/with-fork/shadow/strategy.d.ts +28 -0
  446. package/dist/with-fork/shadow/vault-frame.d.ts +93 -0
  447. package/dist/with-fork/snapshots/active.d.ts +20 -0
  448. package/dist/with-fork/snapshots/engine.d.ts +36 -0
  449. package/dist/with-fork/snapshots/index.d.ts +5 -0
  450. package/dist/with-fork/snapshots/noydb-facade.d.ts +64 -0
  451. package/dist/with-fork/snapshots/policy.d.ts +23 -0
  452. package/dist/with-fork/snapshots/scheduler.d.ts +34 -0
  453. package/dist/with-fork/snapshots/strategy.d.ts +48 -0
  454. package/dist/with-formula/computed/index.d.ts +48 -0
  455. package/dist/with-formula/computed/lazy.d.ts +13 -0
  456. package/dist/with-formula/derivations/executor.d.ts +61 -0
  457. package/dist/with-formula/derivations/fanout-sidecar.d.ts +75 -0
  458. package/dist/with-formula/derivations/index.d.ts +6 -0
  459. package/dist/with-formula/derivations/registry.d.ts +67 -0
  460. package/dist/with-formula/derivations/stale.d.ts +39 -0
  461. package/dist/with-formula/derivations/strategy-hash.d.ts +1 -0
  462. package/dist/with-formula/derivations/types.d.ts +248 -0
  463. package/dist/with-formula/derivations/with-derivation.d.ts +10 -0
  464. package/dist/with-formula/derivations/with-rollup.d.ts +34 -0
  465. package/dist/with-formula/materialized-views/dependency-analyzer.d.ts +73 -0
  466. package/dist/with-formula/materialized-views/executor.d.ts +80 -0
  467. package/dist/with-formula/materialized-views/index.d.ts +11 -0
  468. package/dist/with-formula/materialized-views/query-hash.d.ts +23 -0
  469. package/dist/with-formula/materialized-views/registry.d.ts +128 -0
  470. package/dist/with-formula/materialized-views/stale.d.ts +113 -0
  471. package/dist/with-formula/materialized-views/types.d.ts +399 -0
  472. package/dist/with-formula/materialized-views/with-materialized-view.d.ts +28 -0
  473. package/dist/with-formula/overlay-views/index.d.ts +5 -0
  474. package/dist/with-formula/overlay-views/registry.d.ts +42 -0
  475. package/dist/with-formula/overlay-views/types.d.ts +97 -0
  476. package/dist/with-formula/overlay-views/virtual-collection.d.ts +90 -0
  477. package/dist/with-formula/overlay-views/with-overlayed-view.d.ts +9 -0
  478. package/dist/with-lookup/aggregate/active.d.ts +33 -0
  479. package/dist/with-lookup/aggregate/aggregation.d.ts +166 -0
  480. package/dist/with-lookup/aggregate/canonical-key.d.ts +16 -0
  481. package/dist/with-lookup/aggregate/groupby.d.ts +280 -0
  482. package/dist/with-lookup/aggregate/index.d.ts +23 -0
  483. package/dist/with-lookup/aggregate/reducers.d.ts +257 -0
  484. package/dist/with-lookup/aggregate/strategy.d.ts +59 -0
  485. package/dist/with-lookup/embeddings/cosine.d.ts +2 -0
  486. package/dist/with-lookup/embeddings/descriptor.d.ts +8 -0
  487. package/dist/with-lookup/embeddings/index.d.ts +4 -0
  488. package/dist/with-lookup/embeddings/vec-id.d.ts +47 -0
  489. package/dist/with-lookup/embeddings/vector-set.d.ts +19 -0
  490. package/dist/with-lookup/indexing/active.d.ts +30 -0
  491. package/dist/with-lookup/indexing/collection-facade.d.ts +157 -0
  492. package/dist/with-lookup/indexing/eager-indexes.d.ts +122 -0
  493. package/dist/with-lookup/indexing/index.d.ts +27 -0
  494. package/dist/with-lookup/indexing/lazy-builder.d.ts +102 -0
  495. package/dist/with-lookup/indexing/persisted-indexes.d.ts +229 -0
  496. package/dist/with-lookup/indexing/strategy.d.ts +56 -0
  497. package/dist/with-lookup/indexing/unique-constraints.d.ts +74 -0
  498. package/dist/with-lookup/search/active.d.ts +10 -0
  499. package/dist/with-lookup/search/build-docs.d.ts +15 -0
  500. package/dist/with-lookup/search/collection-facade.d.ts +163 -0
  501. package/dist/with-lookup/search/fuse.d.ts +22 -0
  502. package/dist/with-lookup/search/index-store.d.ts +19 -0
  503. package/dist/with-lookup/search/index.d.ts +19 -0
  504. package/dist/with-lookup/search/inverted-index.d.ts +47 -0
  505. package/dist/with-lookup/search/persisted-index-store.d.ts +121 -0
  506. package/dist/with-lookup/search/retrieve-types.d.ts +29 -0
  507. package/dist/with-lookup/search/scan.d.ts +28 -0
  508. package/dist/with-lookup/search/segment.d.ts +15 -0
  509. package/dist/with-lookup/search/serialize.d.ts +4 -0
  510. package/dist/with-lookup/search/snippet.d.ts +5 -0
  511. package/dist/with-lookup/search/strategy.d.ts +41 -0
  512. package/dist/with-lookup/search/tokenize.d.ts +12 -0
  513. package/dist/with-party/auth-introspection/index.d.ts +44 -0
  514. package/dist/with-party/broker/active.d.ts +23 -0
  515. package/dist/with-party/broker/index.d.ts +28 -0
  516. package/dist/with-party/broker/seed.d.ts +77 -0
  517. package/dist/with-party/custody/active.d.ts +10 -0
  518. package/dist/with-party/custody/index.d.ts +69 -0
  519. package/dist/with-party/custody/liberate.d.ts +64 -0
  520. package/dist/with-party/custody/strategy.d.ts +48 -0
  521. package/dist/with-party/directory/cover/custom.d.ts +34 -0
  522. package/dist/with-party/directory/cover/index.d.ts +19 -0
  523. package/dist/with-party/directory/cover/schema.d.ts +39 -0
  524. package/dist/with-party/directory/cover/storage.d.ts +71 -0
  525. package/dist/with-party/directory/cover/types.d.ts +149 -0
  526. package/dist/with-party/directory/index.d.ts +11 -0
  527. package/dist/with-party/directory/storage.d.ts +33 -0
  528. package/dist/with-party/directory/types.d.ts +43 -0
  529. package/dist/with-party/directory/user-envelope/api.d.ts +201 -0
  530. package/dist/with-party/directory/user-envelope/index.d.ts +12 -0
  531. package/dist/with-party/directory/user-envelope/storage.d.ts +54 -0
  532. package/dist/with-party/directory/visibility.d.ts +47 -0
  533. package/dist/with-party/policy/engine.d.ts +60 -0
  534. package/dist/with-party/policy/index.d.ts +15 -0
  535. package/dist/with-party/policy/noydb-facade.d.ts +39 -0
  536. package/dist/with-party/policy/presets.d.ts +38 -0
  537. package/dist/with-party/policy/storage.d.ts +31 -0
  538. package/dist/with-party/session/active.d.ts +34 -0
  539. package/dist/with-party/session/dev-unlock.d.ts +128 -0
  540. package/dist/with-party/session/index.d.ts +23 -0
  541. package/dist/with-party/session/session-policy.d.ts +92 -0
  542. package/dist/with-party/session/session.d.ts +131 -0
  543. package/dist/with-party/session/strategy.d.ts +42 -0
  544. package/dist/with-party/session/unlock-state.d.ts +47 -0
  545. package/dist/with-party/sync/index.d.ts +31 -0
  546. package/dist/with-party/tab-coordination.d.ts +73 -0
  547. package/dist/with-party/tab-write-relay.d.ts +39 -0
  548. package/dist/with-party/team/active.d.ts +13 -0
  549. package/dist/with-party/team/authenticators.d.ts +95 -0
  550. package/dist/with-party/team/deed.d.ts +97 -0
  551. package/dist/with-party/team/delegation.d.ts +88 -0
  552. package/dist/with-party/team/index.d.ts +38 -0
  553. package/dist/with-party/team/keyring.d.ts +318 -0
  554. package/dist/with-party/team/magic-link-grant.d.ts +152 -0
  555. package/dist/with-party/team/managed-passphrase.d.ts +280 -0
  556. package/dist/with-party/team/noydb-facade.d.ts +484 -0
  557. package/dist/with-party/team/peer-recover.d.ts +81 -0
  558. package/dist/with-party/team/presence.d.ts +81 -0
  559. package/dist/with-party/team/recovery.d.ts +191 -0
  560. package/dist/with-party/team/reserved-secret-collections.d.ts +41 -0
  561. package/dist/with-party/team/rotate-recover.d.ts +275 -0
  562. package/dist/with-party/team/shamir-recovery-provider.d.ts +15 -0
  563. package/dist/with-party/team/strategy.d.ts +9 -0
  564. package/dist/with-party/team/sync-active.d.ts +33 -0
  565. package/dist/with-party/team/sync-credentials.d.ts +113 -0
  566. package/dist/with-party/team/sync-strategy.d.ts +67 -0
  567. package/dist/with-party/team/sync-transaction.d.ts +39 -0
  568. package/dist/with-party/team/sync.d.ts +174 -0
  569. package/dist/with-party/team/tiers.d.ts +39 -0
  570. package/dist/with-party/team/wrapped-deks.d.ts +86 -0
  571. package/dist/with-pod/backup.d.ts +74 -0
  572. package/dist/with-pod/bundle.d.ts +416 -0
  573. package/dist/with-pod/format.d.ts +207 -0
  574. package/dist/with-pod/index.d.ts +21 -0
  575. package/dist/with-pod/pod-store.d.ts +54 -0
  576. package/dist/with-pod/ulid.d.ts +64 -0
  577. package/dist/with-shape/blobs/blob-compaction.d.ts +170 -0
  578. package/dist/with-shape/blobs/blob-intent.d.ts +153 -0
  579. package/dist/with-shape/blobs/blob-set.d.ts +1286 -0
  580. package/dist/with-shape/blobs/export-blobs.d.ts +110 -0
  581. package/dist/with-shape/blobs/import-external.d.ts +50 -0
  582. package/dist/with-shape/blobs/mime-magic.d.ts +48 -0
  583. package/dist/with-shape/blobs/object-projection.d.ts +70 -0
  584. package/dist/with-shape/introspection/describe.d.ts +237 -0
  585. package/dist/with-shape/introspection/field-meta.d.ts +61 -0
  586. package/dist/with-shape/introspection/fields.d.ts +14 -0
  587. package/dist/with-shape/introspection/index.d.ts +12 -0
  588. package/dist/with-shape/introspection/json-schema.d.ts +13 -0
  589. package/dist/with-shape/introspection/meta.d.ts +22 -0
  590. package/dist/with-shape/introspection/projection.d.ts +13 -0
  591. package/dist/with-shape/introspection/types.d.ts +154 -0
  592. package/dist/with-shape/introspection/walk.d.ts +50 -0
  593. package/dist/with-shape/links/lazy-handle.d.ts +36 -0
  594. package/dist/with-shape/links/link-set.d.ts +67 -0
  595. package/dist/with-shape/links/names.d.ts +65 -0
  596. package/dist/with-shape/links/vault-facade.d.ts +211 -0
  597. package/dist/with-shape/persisted-schemas/canonicalize.d.ts +11 -0
  598. package/dist/with-shape/persisted-schemas/derive.d.ts +29 -0
  599. package/dist/with-shape/persisted-schemas/index.d.ts +21 -0
  600. package/dist/with-shape/persisted-schemas/register.d.ts +66 -0
  601. package/dist/with-shape/persisted-schemas/storage.d.ts +61 -0
  602. package/dist/with-shape/persisted-schemas/types.d.ts +54 -0
  603. package/dist/with-shape/satellites/dead-filter.d.ts +21 -0
  604. package/dist/with-shape/satellites/declare.d.ts +60 -0
  605. package/dist/with-shape/satellites/existence.d.ts +5 -0
  606. package/dist/with-shape/satellites/fanout.d.ts +38 -0
  607. package/dist/with-shape/satellites/forget.d.ts +47 -0
  608. package/dist/with-shape/satellites/index.d.ts +3 -0
  609. package/dist/with-shape/satellites/joined.d.ts +19 -0
  610. package/dist/with-shape/satellites/marker.d.ts +10 -0
  611. package/dist/with-shape/satellites/migrate-cek.d.ts +26 -0
  612. package/dist/with-shape/satellites/post-register.d.ts +6 -0
  613. package/dist/with-shape/satellites/proxy.d.ts +37 -0
  614. package/dist/with-shape/satellites/raw-target.d.ts +14 -0
  615. package/dist/with-shape/satellites/registry.d.ts +19 -0
  616. package/dist/with-shape/satellites/types.d.ts +37 -0
  617. package/dist/with-shape/satellites/validate.d.ts +17 -0
  618. package/dist/with-shape/schema-update/client-registry.d.ts +35 -0
  619. package/dist/with-shape/schema-update/cutover.d.ts +5 -0
  620. package/dist/with-shape/schema-update/delta.d.ts +2 -0
  621. package/dist/with-shape/schema-update/dispatch.d.ts +3 -0
  622. package/dist/with-shape/schema-update/fence-controller.d.ts +62 -0
  623. package/dist/with-shape/schema-update/fence-watcher.d.ts +37 -0
  624. package/dist/with-shape/schema-update/fence.d.ts +15 -0
  625. package/dist/with-shape/schema-update/gate.d.ts +16 -0
  626. package/dist/with-shape/schema-update/index.d.ts +6 -0
  627. package/dist/with-shape/schema-update/store-coordination-provider.d.ts +29 -0
  628. package/dist/with-shape/schema-update/strategies.d.ts +12 -0
  629. package/dist/with-shape/schema-update/types.d.ts +53 -0
  630. package/dist/with-store/index.d.ts +15 -0
  631. package/dist/with-store/lazy/active.d.ts +12 -0
  632. package/dist/with-store/lazy/index.d.ts +14 -0
  633. package/dist/with-store/lazy/strategy.d.ts +9 -0
  634. package/dist/with-store/route-store.d.ts +259 -0
  635. package/dist/with-store/store-middleware.d.ts +189 -0
  636. package/dist/withdraw-accessible-TZDATQVR.js +28 -0
  637. package/package.json +47 -55
  638. package/dist/adapter/index.d.ts +0 -4
  639. package/dist/adapter/index.js +0 -15
  640. package/dist/aggregate/index.d.ts +0 -41
  641. package/dist/api-HV4PDUWF.js +0 -20
  642. package/dist/as/index.d.ts +0 -6
  643. package/dist/at/index.d.ts +0 -4
  644. package/dist/attestation/index.d.ts +0 -19
  645. package/dist/backup-ODXO7OGA.js +0 -225
  646. package/dist/backup-ODXO7OGA.js.map +0 -1
  647. package/dist/blobs/index.d.ts +0 -43
  648. package/dist/bundle/index.d.ts +0 -121
  649. package/dist/bundle-DlSxo31R.d.ts +0 -548
  650. package/dist/by/index.d.ts +0 -1
  651. package/dist/cargo/index.d.ts +0 -8
  652. package/dist/chunk-2644KEGW.js +0 -247
  653. package/dist/chunk-2644KEGW.js.map +0 -1
  654. package/dist/chunk-2HVUKRNE.js +0 -21
  655. package/dist/chunk-2KOSJTMU.js +0 -69
  656. package/dist/chunk-2UQ4RMHV.js +0 -167
  657. package/dist/chunk-2UQ4RMHV.js.map +0 -1
  658. package/dist/chunk-2XE6LIXT.js +0 -515
  659. package/dist/chunk-2XE6LIXT.js.map +0 -1
  660. package/dist/chunk-34RRRIC3.js +0 -71
  661. package/dist/chunk-3C5CKXFI.js +0 -621
  662. package/dist/chunk-3C5CKXFI.js.map +0 -1
  663. package/dist/chunk-3I4KYWNP.js +0 -30
  664. package/dist/chunk-42KVY3OC.js +0 -86
  665. package/dist/chunk-4C4WBS4V.js +0 -13822
  666. package/dist/chunk-4C4WBS4V.js.map +0 -1
  667. package/dist/chunk-4G3IT7J7.js +0 -280
  668. package/dist/chunk-4G3IT7J7.js.map +0 -1
  669. package/dist/chunk-4RQ62VSR.js +0 -53
  670. package/dist/chunk-4RQ62VSR.js.map +0 -1
  671. package/dist/chunk-4ZSGSRBI.js +0 -1221
  672. package/dist/chunk-4ZSGSRBI.js.map +0 -1
  673. package/dist/chunk-5GAX2QOH.js +0 -132
  674. package/dist/chunk-5GAX2QOH.js.map +0 -1
  675. package/dist/chunk-5SAZMBW7.js +0 -202
  676. package/dist/chunk-5TZZUL5X.js +0 -30
  677. package/dist/chunk-6CU3FN74.js +0 -777
  678. package/dist/chunk-6G2SCQYS.js +0 -29
  679. package/dist/chunk-6G2SCQYS.js.map +0 -1
  680. package/dist/chunk-6MWUANRF.js +0 -29
  681. package/dist/chunk-6S7T6WC4.js +0 -111
  682. package/dist/chunk-6S7T6WC4.js.map +0 -1
  683. package/dist/chunk-6ULCYCMU.js +0 -74
  684. package/dist/chunk-7HAPHVRJ.js +0 -1695
  685. package/dist/chunk-7HAPHVRJ.js.map +0 -1
  686. package/dist/chunk-7IZQTCTR.js +0 -382
  687. package/dist/chunk-7ZANJ6JZ.js +0 -265
  688. package/dist/chunk-7ZANJ6JZ.js.map +0 -1
  689. package/dist/chunk-A2APWS32.js +0 -150
  690. package/dist/chunk-A2APWS32.js.map +0 -1
  691. package/dist/chunk-A4MAD6PO.js +0 -99
  692. package/dist/chunk-ANDBBA2P.js +0 -36
  693. package/dist/chunk-ANDBBA2P.js.map +0 -1
  694. package/dist/chunk-AUR7MRHA.js +0 -404
  695. package/dist/chunk-AYGZMQP5.js +0 -75
  696. package/dist/chunk-BGIZAFY7.js +0 -1
  697. package/dist/chunk-CJEMA2Z6.js +0 -230
  698. package/dist/chunk-CTSFKDGA.js +0 -40
  699. package/dist/chunk-CU62BBRB.js +0 -1465
  700. package/dist/chunk-CU62BBRB.js.map +0 -1
  701. package/dist/chunk-CWCCYH34.js +0 -23
  702. package/dist/chunk-DEYAO3N6.js +0 -589
  703. package/dist/chunk-DFIBOSOQ.js +0 -85
  704. package/dist/chunk-E5AHO65E.js +0 -150
  705. package/dist/chunk-FC3XK5JT.js +0 -99
  706. package/dist/chunk-FGOGS7CE.js +0 -662
  707. package/dist/chunk-FGOGS7CE.js.map +0 -1
  708. package/dist/chunk-GX2BYNCT.js +0 -117
  709. package/dist/chunk-GZ2MOPVX.js +0 -291
  710. package/dist/chunk-GZ2MOPVX.js.map +0 -1
  711. package/dist/chunk-H57P2SJB.js +0 -126
  712. package/dist/chunk-H57P2SJB.js.map +0 -1
  713. package/dist/chunk-HBTT7YQX.js +0 -94
  714. package/dist/chunk-HOCEGVGQ.js +0 -36
  715. package/dist/chunk-ICV32FPK.js +0 -50
  716. package/dist/chunk-IIP5WFVT.js +0 -462
  717. package/dist/chunk-IIP5WFVT.js.map +0 -1
  718. package/dist/chunk-IUKGIB2Q.js +0 -91
  719. package/dist/chunk-IWTYFS3D.js +0 -129
  720. package/dist/chunk-JC5R7P44.js +0 -355
  721. package/dist/chunk-JC5R7P44.js.map +0 -1
  722. package/dist/chunk-K2WCO3NX.js +0 -1
  723. package/dist/chunk-KBBWY46Y.js +0 -14
  724. package/dist/chunk-KBF5GSGX.js +0 -367
  725. package/dist/chunk-KCG3BHFG.js +0 -99
  726. package/dist/chunk-KCG3BHFG.js.map +0 -1
  727. package/dist/chunk-KNXN47MO.js +0 -155
  728. package/dist/chunk-KNXN47MO.js.map +0 -1
  729. package/dist/chunk-KWLD2D75.js +0 -38
  730. package/dist/chunk-KXKLKJW4.js +0 -49
  731. package/dist/chunk-KYC4LIEU.js +0 -123
  732. package/dist/chunk-LEOXZY36.js +0 -130
  733. package/dist/chunk-M5I354EE.js +0 -235
  734. package/dist/chunk-MK2BSS44.js +0 -34
  735. package/dist/chunk-MSVY7ULZ.js +0 -70
  736. package/dist/chunk-NNWK3PSY.js +0 -135
  737. package/dist/chunk-NSZ6J5DF.js +0 -59
  738. package/dist/chunk-NUEFXLZU.js +0 -59
  739. package/dist/chunk-NYVQCZ54.js +0 -261
  740. package/dist/chunk-OQAODTYR.js +0 -45
  741. package/dist/chunk-OV4CMJGR.js +0 -164
  742. package/dist/chunk-PEDZFFKW.js +0 -41
  743. package/dist/chunk-PF3FQCCF.js +0 -164
  744. package/dist/chunk-PF3FQCCF.js.map +0 -1
  745. package/dist/chunk-Q2KVKTC2.js +0 -823
  746. package/dist/chunk-Q2KVKTC2.js.map +0 -1
  747. package/dist/chunk-QJR3W3MF.js +0 -23
  748. package/dist/chunk-QJR3W3MF.js.map +0 -1
  749. package/dist/chunk-QTXQ6RNZ.js +0 -255
  750. package/dist/chunk-RJ5522XX.js +0 -453
  751. package/dist/chunk-RJ5522XX.js.map +0 -1
  752. package/dist/chunk-RMUXPHIH.js +0 -930
  753. package/dist/chunk-RMUXPHIH.js.map +0 -1
  754. package/dist/chunk-S6AQXDN4.js +0 -155
  755. package/dist/chunk-SSFC3IYA.js +0 -275
  756. package/dist/chunk-SSFC3IYA.js.map +0 -1
  757. package/dist/chunk-SZCHEDML.js +0 -209
  758. package/dist/chunk-TDPEJINP.js +0 -188
  759. package/dist/chunk-TDPEJINP.js.map +0 -1
  760. package/dist/chunk-TQ3REHVF.js +0 -95
  761. package/dist/chunk-TQ3REHVF.js.map +0 -1
  762. package/dist/chunk-UNJU345Q.js +0 -32
  763. package/dist/chunk-UNJU345Q.js.map +0 -1
  764. package/dist/chunk-V7RNIND6.js +0 -265
  765. package/dist/chunk-V7RNIND6.js.map +0 -1
  766. package/dist/chunk-VJ3NQK4K.js +0 -205
  767. package/dist/chunk-WNA6T3MA.js +0 -686
  768. package/dist/chunk-WNA6T3MA.js.map +0 -1
  769. package/dist/chunk-WVCQ75OK.js +0 -124
  770. package/dist/chunk-WXSYDNBT.js +0 -39
  771. package/dist/chunk-WXSYDNBT.js.map +0 -1
  772. package/dist/chunk-X66MXMR5.js +0 -42
  773. package/dist/chunk-XHD3L3JO.js +0 -930
  774. package/dist/chunk-XHD3L3JO.js.map +0 -1
  775. package/dist/chunk-XJK2WIYN.js +0 -430
  776. package/dist/chunk-XJK2WIYN.js.map +0 -1
  777. package/dist/chunk-XQ7UYPVN.js +0 -95
  778. package/dist/chunk-Y2OCKFZ3.js +0 -80
  779. package/dist/chunk-YBFOBRTO.js +0 -367
  780. package/dist/chunk-YLN33ADH.js +0 -97
  781. package/dist/chunk-YLN33ADH.js.map +0 -1
  782. package/dist/chunk-Z5YFRMG5.js +0 -45
  783. package/dist/chunk-ZWQFOXBR.js +0 -54
  784. package/dist/classified/index.d.ts +0 -16
  785. package/dist/classified-marker-IO5EBW7Q.js +0 -24
  786. package/dist/classified-marker-IO5EBW7Q.js.map +0 -1
  787. package/dist/collection-facade-3RAXG2OU.js +0 -38
  788. package/dist/computed-R62HGCO4.js +0 -11
  789. package/dist/consent/index.d.ts +0 -22
  790. package/dist/crdt/index.d.ts +0 -33
  791. package/dist/dead-filter-VNA4M3GP.js +0 -28
  792. package/dist/decrypt-partition-IHtxEnTi.d.ts +0 -21
  793. package/dist/delegation-ZKII5UBI.js +0 -25
  794. package/dist/derivations/index.d.ts +0 -69
  795. package/dist/derive-5D2C3WG4.js +0 -21
  796. package/dist/describe/index.d.ts +0 -4
  797. package/dist/describe/index.js +0 -1
  798. package/dist/dev-unlock-DDTafVO6.d.ts +0 -263
  799. package/dist/discriminant-BN9REW3o.d.ts +0 -60
  800. package/dist/enclave-EUBEJGPG.js +0 -125
  801. package/dist/executor-IL7SRNUZ.js +0 -23
  802. package/dist/executor-OUA2Y6YC.js +0 -9
  803. package/dist/executor-WAEI6PDV.js +0 -9
  804. package/dist/export-accessible-O55RKAGC.js +0 -23
  805. package/dist/extract-partition-VBGCBA6Q.js +0 -36
  806. package/dist/fanout-sidecar-CI5BCMQM.js +0 -74
  807. package/dist/find-FISGUWSK.js +0 -11
  808. package/dist/forget/index.d.ts +0 -36
  809. package/dist/guards/index.d.ts +0 -34
  810. package/dist/hash-DBkZfIBW.d.ts +0 -72
  811. package/dist/history/index.d.ts +0 -60
  812. package/dist/i18n/index.d.ts +0 -56
  813. package/dist/in/index.d.ts +0 -4
  814. package/dist/index-B9QdHytu.d.ts +0 -123
  815. package/dist/index-CyclmyDr.d.ts +0 -122
  816. package/dist/index-DzhNI2vE.d.ts +0 -23260
  817. package/dist/indexing/index.d.ts +0 -38
  818. package/dist/issue-EQAWIYFQ.js +0 -19
  819. package/dist/kernel/index.d.ts +0 -31
  820. package/dist/kernel/index.js +0 -60
  821. package/dist/lazy/index.d.ts +0 -20
  822. package/dist/ledger-AJA2SR3C.js +0 -42
  823. package/dist/liberate-SEGR4JLY.js +0 -24
  824. package/dist/link-set-YBAC2DQT.js +0 -31
  825. package/dist/materialized-views/index.d.ts +0 -182
  826. package/dist/mime-magic-CbV1quyp.d.ts +0 -103
  827. package/dist/noydb-AMEOU456.js +0 -65
  828. package/dist/on/index.d.ts +0 -4
  829. package/dist/overlay-views/index.d.ts +0 -97
  830. package/dist/periods/index.d.ts +0 -19
  831. package/dist/pod/index.d.ts +0 -62
  832. package/dist/policy-SDGRWVIL.js +0 -41
  833. package/dist/portability/index.d.ts +0 -19
  834. package/dist/post-register-MROIUA5O.js +0 -55
  835. package/dist/post-register-MROIUA5O.js.map +0 -1
  836. package/dist/public-envelope-J5PLQOW2.js +0 -32
  837. package/dist/query/index.d.ts +0 -4
  838. package/dist/read-only-facade-UCYNRE56.js +0 -8
  839. package/dist/register-OVJKW7BS.js +0 -23
  840. package/dist/registry-5RJSK5AJ.js +0 -9
  841. package/dist/registry-DQRNTWRL.js +0 -18
  842. package/dist/registry-LTGLERS7.js +0 -19
  843. package/dist/request-withdrawal-27O77D2V.js +0 -31
  844. package/dist/reveal-LT3I2K4P.js +0 -38
  845. package/dist/reveal-LT3I2K4P.js.map +0 -1
  846. package/dist/revoke-4N45G7D2.js +0 -24
  847. package/dist/revoke-4N45G7D2.js.map +0 -1
  848. package/dist/satellites/index.d.ts +0 -4
  849. package/dist/sealed-record/index.d.ts +0 -68
  850. package/dist/session/index.d.ts +0 -43
  851. package/dist/shadow/index.d.ts +0 -14
  852. package/dist/signer-XJCOV7JD.js +0 -25
  853. package/dist/signer-XJCOV7JD.js.map +0 -1
  854. package/dist/snapshots/index.d.ts +0 -25
  855. package/dist/stale-IYYXEH3U.js +0 -14
  856. package/dist/stale-IYYXEH3U.js.map +0 -1
  857. package/dist/storage-Y44CAPE6.js +0 -23
  858. package/dist/storage-Y44CAPE6.js.map +0 -1
  859. package/dist/store-coordination-provider-WKGAE2WI.js +0 -142
  860. package/dist/subject-index-CyOgGMJL.d.ts +0 -380
  861. package/dist/sync/index.d.ts +0 -40
  862. package/dist/team/index.d.ts +0 -154
  863. package/dist/tiers/index.d.ts +0 -4
  864. package/dist/to/index.d.ts +0 -4
  865. package/dist/transition-guard-BOUkzQU4.d.ts +0 -165
  866. package/dist/tx/index.d.ts +0 -34
  867. package/dist/ui/index.d.ts +0 -4
  868. package/dist/ulid-DRH25k3y.d.ts +0 -66
  869. package/dist/util/index.d.ts +0 -79
  870. package/dist/validators-B3SalxlJ.d.ts +0 -101
  871. package/dist/vault-diff-Dt9NkLzw.d.ts +0 -147
  872. package/dist/verify-GH6CWVSW.js +0 -139
  873. package/dist/verify-GH6CWVSW.js.map +0 -1
  874. package/dist/walk-76UCFXYV.js +0 -241
  875. package/dist/with/index.d.ts +0 -37
  876. package/dist/with-materialized-view-BP33v1Z6.d.ts +0 -27
  877. package/dist/with-overlayed-view-DntFpOKN.d.ts +0 -12
  878. package/dist/with-rollup-ClCHO6-4.d.ts +0 -47
  879. package/dist/withdraw-accessible-6J2UH3IN.js +0 -28
  880. package/dist/withdraw-accessible-6J2UH3IN.js.map +0 -1
  881. /package/dist/{adapter/index.js.map → api-3A3S4SHH.js.map} +0 -0
  882. /package/dist/{chunk-ICV32FPK.js.map → chunk-2PCAVW2I.js.map} +0 -0
  883. /package/dist/{chunk-6CU3FN74.js.map → chunk-554KLAAN.js.map} +0 -0
  884. /package/dist/{chunk-NNWK3PSY.js.map → chunk-5PFOMHTB.js.map} +0 -0
  885. /package/dist/{chunk-SZCHEDML.js.map → chunk-5WZXVULX.js.map} +0 -0
  886. /package/dist/{chunk-KWLD2D75.js.map → chunk-6HPG2YNX.js.map} +0 -0
  887. /package/dist/{chunk-2KOSJTMU.js.map → chunk-6HY2X62D.js.map} +0 -0
  888. /package/dist/{chunk-KYC4LIEU.js.map → chunk-6NQMXTYC.js.map} +0 -0
  889. /package/dist/{chunk-KBF5GSGX.js.map → chunk-6XE5TMPR.js.map} +0 -0
  890. /package/dist/{chunk-Z5YFRMG5.js.map → chunk-A4FXFAKF.js.map} +0 -0
  891. /package/dist/{chunk-VJ3NQK4K.js.map → chunk-ANATMTOA.js.map} +0 -0
  892. /package/dist/{chunk-HBTT7YQX.js.map → chunk-BOKIKJJB.js.map} +0 -0
  893. /package/dist/{chunk-KXKLKJW4.js.map → chunk-CJ5KKU6X.js.map} +0 -0
  894. /package/dist/{chunk-5SAZMBW7.js.map → chunk-DSBQODMZ.js.map} +0 -0
  895. /package/dist/{chunk-7IZQTCTR.js.map → chunk-EO43ANYJ.js.map} +0 -0
  896. /package/dist/{chunk-QTXQ6RNZ.js.map → chunk-EWPOHMN2.js.map} +0 -0
  897. /package/dist/{chunk-34RRRIC3.js.map → chunk-GWKAVKHI.js.map} +0 -0
  898. /package/dist/{chunk-OV4CMJGR.js.map → chunk-H2KSZMIX.js.map} +0 -0
  899. /package/dist/{chunk-AUR7MRHA.js.map → chunk-HOONYZY2.js.map} +0 -0
  900. /package/dist/{chunk-ZWQFOXBR.js.map → chunk-ISMV2QVG.js.map} +0 -0
  901. /package/dist/{chunk-XQ7UYPVN.js.map → chunk-IY23KFNZ.js.map} +0 -0
  902. /package/dist/{chunk-IWTYFS3D.js.map → chunk-JBBSYJHP.js.map} +0 -0
  903. /package/dist/{chunk-GX2BYNCT.js.map → chunk-JFCV5QIK.js.map} +0 -0
  904. /package/dist/{chunk-5TZZUL5X.js.map → chunk-M75ZZHSR.js.map} +0 -0
  905. /package/dist/{chunk-6MWUANRF.js.map → chunk-N6WF5PKC.js.map} +0 -0
  906. /package/dist/{chunk-E5AHO65E.js.map → chunk-NCCBLYEB.js.map} +0 -0
  907. /package/dist/{chunk-A4MAD6PO.js.map → chunk-OCVM6KDH.js.map} +0 -0
  908. /package/dist/{chunk-Y2OCKFZ3.js.map → chunk-ONTBCHCP.js.map} +0 -0
  909. /package/dist/{chunk-LEOXZY36.js.map → chunk-R3BLCFD2.js.map} +0 -0
  910. /package/dist/{chunk-2HVUKRNE.js.map → chunk-RDXW3OBQ.js.map} +0 -0
  911. /package/dist/{chunk-CJEMA2Z6.js.map → chunk-RFI7GGFO.js.map} +0 -0
  912. /package/dist/{chunk-AYGZMQP5.js.map → chunk-RNG4VRP4.js.map} +0 -0
  913. /package/dist/{chunk-PEDZFFKW.js.map → chunk-RTEK4C4I.js.map} +0 -0
  914. /package/dist/{chunk-3I4KYWNP.js.map → chunk-S6Q37VGE.js.map} +0 -0
  915. /package/dist/{chunk-42KVY3OC.js.map → chunk-SV6EAJEP.js.map} +0 -0
  916. /package/dist/{chunk-YBFOBRTO.js.map → chunk-T3GY65MA.js.map} +0 -0
  917. /package/dist/{chunk-KBBWY46Y.js.map → chunk-TIGPQDYP.js.map} +0 -0
  918. /package/dist/{chunk-NYVQCZ54.js.map → chunk-U6JMEH2P.js.map} +0 -0
  919. /package/dist/{chunk-MK2BSS44.js.map → chunk-UC2ETWF3.js.map} +0 -0
  920. /package/dist/{chunk-M5I354EE.js.map → chunk-UDSR4X4L.js.map} +0 -0
  921. /package/dist/{chunk-6ULCYCMU.js.map → chunk-VAIS3SOM.js.map} +0 -0
  922. /package/dist/{chunk-WVCQ75OK.js.map → chunk-VCBHAE4R.js.map} +0 -0
  923. /package/dist/{chunk-DEYAO3N6.js.map → chunk-VKCADNMR.js.map} +0 -0
  924. /package/dist/{chunk-OQAODTYR.js.map → chunk-WKGF2TJR.js.map} +0 -0
  925. /package/dist/{chunk-HOCEGVGQ.js.map → chunk-WNGGJWF7.js.map} +0 -0
  926. /package/dist/{chunk-NSZ6J5DF.js.map → chunk-WOM2HTML.js.map} +0 -0
  927. /package/dist/{chunk-MSVY7ULZ.js.map → chunk-WQIYTNJV.js.map} +0 -0
  928. /package/dist/{chunk-NUEFXLZU.js.map → chunk-WZSHL6DQ.js.map} +0 -0
  929. /package/dist/{chunk-X66MXMR5.js.map → chunk-XDIAFPUM.js.map} +0 -0
  930. /package/dist/{chunk-CTSFKDGA.js.map → chunk-XJMBYYQK.js.map} +0 -0
  931. /package/dist/{chunk-IUKGIB2Q.js.map → chunk-XTHCN77N.js.map} +0 -0
  932. /package/dist/{chunk-FC3XK5JT.js.map → chunk-YCH5GBN6.js.map} +0 -0
  933. /package/dist/{chunk-S6AQXDN4.js.map → chunk-YTGDPCPW.js.map} +0 -0
  934. /package/dist/{chunk-CWCCYH34.js.map → chunk-YZQOGE2L.js.map} +0 -0
  935. /package/dist/{chunk-DFIBOSOQ.js.map → chunk-ZXEZCY6F.js.map} +0 -0
  936. /package/dist/{api-HV4PDUWF.js.map → collection-facade-KMBWNCYP.js.map} +0 -0
  937. /package/dist/{chunk-BGIZAFY7.js.map → computed-DSMPXG2Y.js.map} +0 -0
  938. /package/dist/{chunk-K2WCO3NX.js.map → cover-QJRXINN5.js.map} +0 -0
  939. /package/dist/{dead-filter-VNA4M3GP.js.map → dead-filter-66VGI6JV.js.map} +0 -0
  940. /package/dist/{collection-facade-3RAXG2OU.js.map → delegation-SU6CV3W7.js.map} +0 -0
  941. /package/dist/{computed-R62HGCO4.js.map → derive-6RWU4EOA.js.map} +0 -0
  942. /package/dist/{delegation-ZKII5UBI.js.map → enclave-TKPN2G2U.js.map} +0 -0
  943. /package/dist/{derive-5D2C3WG4.js.map → executor-KGNLJD6M.js.map} +0 -0
  944. /package/dist/{describe/index.js.map → executor-UX4FASYZ.js.map} +0 -0
  945. /package/dist/{enclave-EUBEJGPG.js.map → executor-XGIS6CR7.js.map} +0 -0
  946. /package/dist/{executor-IL7SRNUZ.js.map → export-accessible-LKW3QV22.js.map} +0 -0
  947. /package/dist/{executor-OUA2Y6YC.js.map → extract-partition-UP2ARO75.js.map} +0 -0
  948. /package/dist/{fanout-sidecar-CI5BCMQM.js.map → fanout-sidecar-B5LVUMQX.js.map} +0 -0
  949. /package/dist/{executor-WAEI6PDV.js.map → find-YS6XWB46.js.map} +0 -0
  950. /package/dist/{export-accessible-O55RKAGC.js.map → issue-3ACYX7LO.js.map} +0 -0
  951. /package/dist/{extract-partition-VBGCBA6Q.js.map → ledger-PTK7XZYT.js.map} +0 -0
  952. /package/dist/{find-FISGUWSK.js.map → liberate-MQQXBUCY.js.map} +0 -0
  953. /package/dist/{issue-EQAWIYFQ.js.map → link-set-SLJHDNRB.js.map} +0 -0
  954. /package/dist/{kernel/index.js.map → noydb-ANIW5FLE.js.map} +0 -0
  955. /package/dist/{ledger-AJA2SR3C.js.map → policy-YDLCOX4P.js.map} +0 -0
  956. /package/dist/{liberate-SEGR4JLY.js.map → read-only-facade-CHCKSEPD.js.map} +0 -0
  957. /package/dist/{link-set-YBAC2DQT.js.map → register-PAM3ASRZ.js.map} +0 -0
  958. /package/dist/{noydb-AMEOU456.js.map → registry-4S2U2TR4.js.map} +0 -0
  959. /package/dist/{policy-SDGRWVIL.js.map → registry-NPOWJHC4.js.map} +0 -0
  960. /package/dist/{public-envelope-J5PLQOW2.js.map → registry-VZ3CCI2R.js.map} +0 -0
  961. /package/dist/{read-only-facade-UCYNRE56.js.map → request-withdrawal-DI3H5WUI.js.map} +0 -0
  962. /package/dist/{register-OVJKW7BS.js.map → revoke-R5CZSVUT.js.map} +0 -0
  963. /package/dist/{registry-5RJSK5AJ.js.map → signer-MBVHW4WE.js.map} +0 -0
  964. /package/dist/{registry-DQRNTWRL.js.map → stale-VZL4OGUB.js.map} +0 -0
  965. /package/dist/{registry-LTGLERS7.js.map → storage-3MEJUENZ.js.map} +0 -0
  966. /package/dist/{store-coordination-provider-WKGAE2WI.js.map → store-coordination-provider-FKX3F6TQ.js.map} +0 -0
  967. /package/dist/{walk-76UCFXYV.js.map → walk-IPLXE36W.js.map} +0 -0
  968. /package/dist/{request-withdrawal-27O77D2V.js.map → withdraw-accessible-TZDATQVR.js.map} +0 -0
@@ -0,0 +1,74 @@
1
+ import {
2
+ linkI18nVia
3
+ } from "./chunk-GULTLPFB.js";
4
+
5
+ // src/via/i18n/dictionary.ts
6
+ function dictKey(name, keysOrMap, opts) {
7
+ linkI18nVia();
8
+ let keys;
9
+ let labels;
10
+ if (Array.isArray(keysOrMap)) {
11
+ keys = keysOrMap;
12
+ labels = opts?.labels;
13
+ } else if (keysOrMap && typeof keysOrMap === "object") {
14
+ keys = Object.keys(keysOrMap);
15
+ labels = keysOrMap;
16
+ } else {
17
+ keys = void 0;
18
+ labels = opts?.labels;
19
+ }
20
+ const equiv = {
21
+ _viaBrand: "lookup",
22
+ dimension: name,
23
+ key: "id",
24
+ vocabulary: "open",
25
+ backing: "reserved",
26
+ onDelete: "restrict",
27
+ ...keys !== void 0 ? { keys } : {},
28
+ ...opts?.onMissing !== void 0 ? { onMissing: opts.onMissing } : {},
29
+ ...opts?.substitute !== void 0 ? { substitute: opts.substitute } : {},
30
+ ...labels !== void 0 ? { labels } : {}
31
+ };
32
+ return {
33
+ _noydbDictKey: true,
34
+ _viaBrand: "i18n",
35
+ name: equiv.dimension,
36
+ keys: equiv.keys,
37
+ ...equiv.onMissing !== void 0 ? { onMissing: equiv.onMissing } : {},
38
+ ...equiv.substitute !== void 0 ? { substitute: equiv.substitute } : {},
39
+ ...equiv.labels !== void 0 ? { labels: equiv.labels } : {}
40
+ };
41
+ }
42
+ function staticDict(name, table, opts) {
43
+ linkI18nVia();
44
+ const equiv = {
45
+ _viaBrand: "lookup",
46
+ dimension: name,
47
+ key: "id",
48
+ vocabulary: "closed",
49
+ backing: "static",
50
+ onDelete: "restrict",
51
+ table,
52
+ keys: Object.keys(table),
53
+ ...opts?.displayLocale !== void 0 ? { displayLocale: opts.displayLocale } : {},
54
+ ...opts?.onMissing !== void 0 ? { onMissing: opts.onMissing } : {},
55
+ ...opts?.substitute !== void 0 ? { substitute: opts.substitute } : {}
56
+ };
57
+ return {
58
+ _noydbStaticDict: true,
59
+ _viaBrand: "i18n",
60
+ name: equiv.dimension,
61
+ table: equiv.table,
62
+ keys: equiv.keys,
63
+ ...equiv.displayLocale !== void 0 ? { displayLocale: equiv.displayLocale } : {},
64
+ ...equiv.onMissing !== void 0 ? { onMissing: equiv.onMissing } : {},
65
+ ...equiv.substitute !== void 0 ? { substitute: equiv.substitute } : {},
66
+ ...opts?.validateCodes !== void 0 ? { validateCodes: opts.validateCodes } : {}
67
+ };
68
+ }
69
+
70
+ export {
71
+ dictKey,
72
+ staticDict
73
+ };
74
+ //# sourceMappingURL=chunk-QDPZWTN2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/via/i18n/dictionary.ts"],"sourcesContent":["/**\n * _dict_* reserved collections + dictKey schema descriptor —\n *\n * Stores bounded enum-like field dictionaries as reserved encrypted\n * collections (`_dict_<name>/`) within a vault. Each dictionary\n * entry maps a stable key (e.g. `'paid'`) to a locale → label record\n * (e.g. `{ en: 'Paid', th: 'ชำระแล้ว' }`).\n *\n * Design decisions\n * ────────────────\n *\n * **Why reserved collections, not a separate store?**\n * Same answer as `_sync_credentials`: the compartment's existing\n * encryption stack is exactly right. Dictionaries are encrypted under the\n * same vault DEK, inherit ACL, ledger, and backup/restore for free.\n *\n * **One collection per dictionary, not one collection with namespaces.**\n * Each `_dict_<name>/` collection holds entries `{ id: key, labels: {...} }`.\n * This composes with `ref()` naturally (a dictKey IS a ref to the dict\n * collection), and means the query DSL works over dictionary entries\n * without any special-casing.\n *\n * **dictKey() is a descriptor, not a Zod type.**\n * The descriptor pattern matches `ref()`: declare NOYDB-specific metadata\n * in the collection options alongside `refs`. TypeScript inference comes\n * from the descriptor's generic parameter, not from Zod internals.\n *\n * API:\n * `dictKey(name, keys?)` — returns a DictKeyDescriptor\n * `vault.dictionary(name)` — returns a DictionaryHandle\n * `DictionaryHandle.put/putAll/get/delete/rename/list` — CRUD\n *\n * The storage engine (`DictionaryHandle`, `DictEntry`, `DictionaryOptions`,\n * `DICT_COLLECTION_PREFIX`, `dictCollectionName`) moved to\n * `via/lookup/handle.ts` (#650 Task 1 — via-lookup extraction, phase\n * D of the Via port) and is renamed `LookupHandle` there; re-exported here\n * under the original names for one release so existing importers of this\n * module compile unchanged. This file keeps only the descriptor factories\n * (`dictKey`/`staticDict`), which are locale/i18n-coupled and stay put.\n */\n\nimport type { OnMissingPolicy } from './policy.js'\nimport { linkI18nVia } from './binding.js'\n// #650 Task 2 — type-only: dictKey()/staticDict() construct the equivalent\n// LookupDescriptor shape internally (the reserved/static tiers via-lookup's\n// dict()/lookup(static) also produce) before adapting it to their own\n// legacy public return shape. No runtime dependency on via/lookup.\nimport type { LookupDescriptor } from '../lookup/descriptor.js'\n\n// `isDictCollectionName` now lives on the kernel port (#623 Task 7,\n// port/with/i18n-strategy.ts) — re-exported here for compat. Its `'_dict_'`\n// check is a duplicate of DICT_COLLECTION_PREFIX (now on\n// via/lookup/handle.ts, not an import, to avoid a port→feature value\n// dependency); keep the two in sync.\nexport { isDictCollectionName } from '../../port/with/i18n-strategy.js'\n\n// Storage-engine re-exports (#650 Task 1 — moved to via/lookup/handle.ts).\nexport {\n DictionaryHandle,\n DICT_COLLECTION_PREFIX,\n dictCollectionName,\n type DictEntry,\n type DictionaryOptions,\n} from '../lookup/handle.js'\n\n// ─── DictKey descriptor ────────────────────────────────────────────────\n\n/**\n * Descriptor returned by `dictKey()`. Attach to the collection's\n * `dictKeyFields` option to declare which fields are dictionary-backed:\n *\n * ```ts\n * const invoices = company.collection<Invoice>('invoices', {\n * dictKeyFields: {\n * status: dictKey('status', ['draft', 'open', 'paid'] as const),\n * },\n * })\n * ```\n *\n * The generic parameter `Keys` narrows the TypeScript type of the field\n * to a literal union; the runtime value of `keys` is used by `put()`\n * validation to reject unknown keys when a key set is declared.\n */\nexport interface DictKeyDescriptor<Keys extends string = string> {\n readonly _noydbDictKey: true\n /** Via port brand marker (#623 Task 9) — dictKey shares the i18n binding brand. */\n readonly _viaBrand: 'i18n'\n /** Which dictionary this field references. */\n readonly name: string\n /** Declared valid keys. When set, `put()` rejects keys not in this set. */\n readonly keys: readonly Keys[] | undefined\n /**\n * What to do when a label is missing for the resolved locale. Mirrors\n * `i18nText`'s `onMissing`. Default behavior (when unset) preserves the\n * legacy contract: a missing label is omitted (scalar) or `null`\n * (array element) — i.e. `'null'`. Set `'substitute'` to walk the\n * declared `substitute` chain, or `'throw'` to raise.\n */\n readonly onMissing?: OnMissingPolicy\n /** Ordered preferred-substitute locales for label resolution. */\n readonly substitute?: readonly string[]\n /**\n * Optional inline display labels (value → label map). A SYNC display\n * fallback for `describe()` when async `dictLabels` (from `_dict_`) are\n * not resolved. The async path still wins when available.\n */\n readonly labels?: Record<string, string>\n}\n\n/**\n * Create a `DictKeyDescriptor` for a dictionary-backed enum field.\n *\n * @param name The dictionary name (corresponds to `_dict_<name>` collection).\n * @param keysOrMap Either:\n * - An `as const` array of valid key literals — narrows the TypeScript type\n * to a literal union and enables put-time validation.\n * - A **value→label map** (`{ draft: 'Draft', paid: 'Paid' }`) — keys are\n * inferred from the map, and the labels are stored as inline display\n * defaults surfaced by `describe()` without a store read.\n * @param opts `{ labels?, onMissing?, substitute? }` when the array form\n * is used; `opts.labels` provides inline display defaults for\n * specific keys (same semantics as the map form, but\n * explicit key order from the array is preserved).\n *\n * @example\n * ```ts\n * // array form (original):\n * dictKey('status', ['draft', 'open', 'paid'] as const)\n *\n * // value→label map form (keys inferred, inline labels for describe()):\n * dictKey('status', { draft: 'Draft', open: 'Open', paid: 'Paid' })\n *\n * // array + opts.labels (preserves explicit order, partial labels OK):\n * dictKey('status', ['draft', 'open', 'paid'] as const, { labels: { paid: 'Paid' } })\n * ```\n */\nexport function dictKey<Keys extends string>(\n name: string,\n keysOrMap?: readonly Keys[] | Record<Keys, string>,\n opts?: { onMissing?: OnMissingPolicy; substitute?: readonly string[]; labels?: Record<string, string> },\n): DictKeyDescriptor<Keys> {\n // The declaration is the Via binding's opt-in unit (#553) — same pattern\n // as i18nText()/money().\n linkI18nVia()\n let keys: readonly Keys[] | undefined\n let labels: Record<string, string> | undefined\n if (Array.isArray(keysOrMap)) {\n keys = keysOrMap as readonly Keys[]\n labels = opts?.labels\n } else if (keysOrMap && typeof keysOrMap === 'object') {\n keys = Object.keys(keysOrMap) as Keys[]\n labels = keysOrMap as Record<string, string>\n } else {\n keys = undefined\n labels = opts?.labels\n }\n // #650 Task 2 — dictKey is the reserved-backing tier of via-lookup\n // (dict()'s alias); construct the equivalent LookupDescriptor shape so\n // the two tiers' field semantics stay in lockstep, then adapt it to\n // dictKey's legacy public return shape. `_viaBrand` stays `'i18n'` for\n // one release (see task-2-report.md's alias-brand decision) —\n // mergeViaFields/compileViaBindings's existing i18nFields+dictKeyFields\n // path is untouched.\n const equiv: LookupDescriptor<Keys> = {\n _viaBrand: 'lookup',\n dimension: name,\n key: 'id',\n vocabulary: 'open',\n backing: 'reserved',\n onDelete: 'restrict',\n ...(keys !== undefined ? { keys } : {}),\n ...(opts?.onMissing !== undefined ? { onMissing: opts.onMissing } : {}),\n ...(opts?.substitute !== undefined ? { substitute: opts.substitute } : {}),\n ...(labels !== undefined ? { labels } : {}),\n }\n return {\n _noydbDictKey: true,\n _viaBrand: 'i18n',\n name: equiv.dimension,\n keys: equiv.keys,\n ...(equiv.onMissing !== undefined ? { onMissing: equiv.onMissing } : {}),\n ...(equiv.substitute !== undefined ? { substitute: equiv.substitute } : {}),\n ...(equiv.labels !== undefined ? { labels: equiv.labels } : {}),\n }\n}\n\n// `isDictKeyDescriptor` now lives on the kernel port (#623 Task 11,\n// port/with/i18n-strategy.ts, alongside `isStaticDictDescriptor`) —\n// re-exported here for compat with existing importers of this module.\nexport { isDictKeyDescriptor } from '../../port/with/i18n-strategy.js'\n\n// ─── StaticDict descriptor (code-provided dictionary) ──────────────────\n\n/**\n * Descriptor returned by `staticDict()`. A sibling to {@link DictKeyDescriptor}\n * for **closed, defined-in-code, identical-across-vaults** enums (honorific,\n * civil-status, gender, religion, ContactTitle, status…).\n *\n * Unlike `dictKey`, the labels are supplied **at registration in code** and\n * resolved through the *same* label machinery, but with **no `_dict_*`\n * per-vault encrypted copy** and **no `rename()`**. The record stores only\n * the **code**; a static dict has no mutation surface.\n *\n * **Hybrid resolution.** Because a static dict is pure code with no\n * vault-locale dependency, it can — via a configured `displayLocale` — emit a\n * `<field>Label` even under a **locale-less read** (the property a locale-less\n * consumer needs and `dictKey` cannot provide). When a locale *is* active it\n * behaves exactly like `dictKey` (honoring `onMissing`/`substitute`).\n *\n * ```ts\n * const workers = vault.collection<Worker>('workers', {\n * dictKeyFields: {\n * civilStatus: staticDict('civilStatus', {\n * adultMale: { th: 'นาย', en: 'Mr' },\n * adultFemale: { th: 'นาง', en: 'Mrs' },\n * }, { displayLocale: 'th' }),\n * },\n * })\n * ```\n */\nexport interface StaticDictDescriptor<Keys extends string = string> {\n readonly _noydbStaticDict: true\n /** Via port brand marker (#623 Task 9) — staticDict shares the i18n binding brand. */\n readonly _viaBrand: 'i18n'\n /** Which dictionary this field references (the registry name). */\n readonly name: string\n /** The in-code label table: key → { locale → label }. */\n readonly table: Readonly<Record<Keys, Readonly<Record<string, string>>>>\n /** Declared valid keys — derived from `Object.keys(table)`. */\n readonly keys: readonly Keys[]\n /**\n * Locale used to emit `<field>Label` under a **locale-less** read — the\n * hybrid hinge. When unset, a static dict behaves like `dictKey` under a\n * locale-less read (no label); a locale-less consumer almost always wants\n * it set.\n */\n readonly displayLocale?: string\n /** Same `onMissing` policy engine as `dictKey`. Default `'null'`. */\n readonly onMissing?: OnMissingPolicy\n /** Ordered preferred-substitute locales for label resolution. */\n readonly substitute?: readonly string[]\n /**\n * Validate the stored code against `keys` on every `put()`. Default `true`\n * — codes are closed by construction, so an unknown code is a bug. Set\n * `false` to allow open codes (skips the `UnknownDictCodeError` guard).\n */\n readonly validateCodes?: boolean\n}\n\n/**\n * Create a `StaticDictDescriptor` for a code-provided enum field — a sibling\n * to {@link dictKey} for closed, code-defined, identical-across-vaults enums.\n *\n * The labels live in `table` (no `_dict_*` collection, no `rename()`); the\n * record stores only the stable code. Pass `displayLocale` so `<field>Label`\n * resolves even under a locale-less read.\n *\n * @param name The dictionary name (used for the readonly-guard registry and\n * the query label seam — never creates a `_dict_<name>` key).\n * @param table `{ key: { locale: label } }` map.\n * @param opts `displayLocale` (locale-less label), `onMissing`, `substitute`.\n *\n * @example\n * ```ts\n * staticDict('civilStatus', {\n * adultMale: { th: 'นาย', en: 'Mr' },\n * adultFemale: { th: 'นาง', en: 'Mrs' },\n * }, { displayLocale: 'th' })\n * ```\n */\nexport function staticDict<const T extends Record<string, Record<string, string>>>(\n name: string,\n table: T,\n opts?: {\n displayLocale?: string\n onMissing?: OnMissingPolicy\n substitute?: readonly string[]\n validateCodes?: boolean\n },\n): StaticDictDescriptor<Extract<keyof T, string>> {\n // The declaration is the Via binding's opt-in unit (#553) — same pattern\n // as i18nText()/dictKey()/money().\n linkI18nVia()\n type K = Extract<keyof T, string>\n // #650 Task 2 — staticDict is the static-backing tier of via-lookup\n // (lookup(dimension, {backing:'static', table, ...})'s alias); construct\n // the equivalent LookupDescriptor shape, then adapt it to staticDict's\n // legacy public return shape. `validateCodes` has no LookupDescriptor\n // equivalent (a dictKey-family-only put-time knob) — applied directly\n // below. `_viaBrand` stays `'i18n'` for one release — see\n // task-2-report.md's alias-brand decision.\n const equiv: LookupDescriptor<K> = {\n _viaBrand: 'lookup',\n dimension: name,\n key: 'id',\n vocabulary: 'closed',\n backing: 'static',\n onDelete: 'restrict',\n table: table as Readonly<Record<string, Readonly<Record<string, string>>>>,\n keys: Object.keys(table) as K[],\n ...(opts?.displayLocale !== undefined ? { displayLocale: opts.displayLocale } : {}),\n ...(opts?.onMissing !== undefined ? { onMissing: opts.onMissing } : {}),\n ...(opts?.substitute !== undefined ? { substitute: opts.substitute } : {}),\n }\n return {\n _noydbStaticDict: true,\n _viaBrand: 'i18n',\n name: equiv.dimension,\n table: equiv.table as Readonly<Record<K, Readonly<Record<string, string>>>>,\n keys: equiv.keys as readonly K[],\n ...(equiv.displayLocale !== undefined ? { displayLocale: equiv.displayLocale } : {}),\n ...(equiv.onMissing !== undefined ? { onMissing: equiv.onMissing } : {}),\n ...(equiv.substitute !== undefined ? { substitute: equiv.substitute } : {}),\n ...(opts?.validateCodes !== undefined ? { validateCodes: opts.validateCodes } : {}),\n }\n}\n\n// `isStaticDictDescriptor` now lives on the kernel port (#623 Task 7,\n// port/with/i18n-strategy.ts) — re-exported here for compat.\nexport { isStaticDictDescriptor } from '../../port/with/i18n-strategy.js'\n\n"],"mappings":";;;;;AAwIO,SAAS,QACd,MACA,WACA,MACyB;AAGzB,cAAY;AACZ,MAAI;AACJ,MAAI;AACJ,MAAI,MAAM,QAAQ,SAAS,GAAG;AAC5B,WAAO;AACP,aAAS,MAAM;AAAA,EACjB,WAAW,aAAa,OAAO,cAAc,UAAU;AACrD,WAAO,OAAO,KAAK,SAAS;AAC5B,aAAS;AAAA,EACX,OAAO;AACL,WAAO;AACP,aAAS,MAAM;AAAA,EACjB;AAQA,QAAM,QAAgC;AAAA,IACpC,WAAW;AAAA,IACX,WAAW;AAAA,IACX,KAAK;AAAA,IACL,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,UAAU;AAAA,IACV,GAAI,SAAS,SAAY,EAAE,KAAK,IAAI,CAAC;AAAA,IACrC,GAAI,MAAM,cAAc,SAAY,EAAE,WAAW,KAAK,UAAU,IAAI,CAAC;AAAA,IACrE,GAAI,MAAM,eAAe,SAAY,EAAE,YAAY,KAAK,WAAW,IAAI,CAAC;AAAA,IACxE,GAAI,WAAW,SAAY,EAAE,OAAO,IAAI,CAAC;AAAA,EAC3C;AACA,SAAO;AAAA,IACL,eAAe;AAAA,IACf,WAAW;AAAA,IACX,MAAM,MAAM;AAAA,IACZ,MAAM,MAAM;AAAA,IACZ,GAAI,MAAM,cAAc,SAAY,EAAE,WAAW,MAAM,UAAU,IAAI,CAAC;AAAA,IACtE,GAAI,MAAM,eAAe,SAAY,EAAE,YAAY,MAAM,WAAW,IAAI,CAAC;AAAA,IACzE,GAAI,MAAM,WAAW,SAAY,EAAE,QAAQ,MAAM,OAAO,IAAI,CAAC;AAAA,EAC/D;AACF;AAsFO,SAAS,WACd,MACA,OACA,MAMgD;AAGhD,cAAY;AASZ,QAAM,QAA6B;AAAA,IACjC,WAAW;AAAA,IACX,WAAW;AAAA,IACX,KAAK;AAAA,IACL,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,UAAU;AAAA,IACV;AAAA,IACA,MAAM,OAAO,KAAK,KAAK;AAAA,IACvB,GAAI,MAAM,kBAAkB,SAAY,EAAE,eAAe,KAAK,cAAc,IAAI,CAAC;AAAA,IACjF,GAAI,MAAM,cAAc,SAAY,EAAE,WAAW,KAAK,UAAU,IAAI,CAAC;AAAA,IACrE,GAAI,MAAM,eAAe,SAAY,EAAE,YAAY,KAAK,WAAW,IAAI,CAAC;AAAA,EAC1E;AACA,SAAO;AAAA,IACL,kBAAkB;AAAA,IAClB,WAAW;AAAA,IACX,MAAM,MAAM;AAAA,IACZ,OAAO,MAAM;AAAA,IACb,MAAM,MAAM;AAAA,IACZ,GAAI,MAAM,kBAAkB,SAAY,EAAE,eAAe,MAAM,cAAc,IAAI,CAAC;AAAA,IAClF,GAAI,MAAM,cAAc,SAAY,EAAE,WAAW,MAAM,UAAU,IAAI,CAAC;AAAA,IACtE,GAAI,MAAM,eAAe,SAAY,EAAE,YAAY,MAAM,WAAW,IAAI,CAAC;AAAA,IACzE,GAAI,MAAM,kBAAkB,SAAY,EAAE,eAAe,KAAK,cAAc,IAAI,CAAC;AAAA,EACnF;AACF;","names":[]}
@@ -0,0 +1,130 @@
1
+ import {
2
+ linkCollectionName,
3
+ linkRowKey
4
+ } from "./chunk-RTEK4C4I.js";
5
+ import {
6
+ openEnvelopeJson
7
+ } from "./chunk-W4TCUGQR.js";
8
+ import {
9
+ encrypt
10
+ } from "./chunk-HOONYZY2.js";
11
+ import {
12
+ NOYDB_FORMAT_VERSION
13
+ } from "./chunk-VCTXU4AT.js";
14
+ import {
15
+ NoydbError
16
+ } from "./chunk-W2OG6JOL.js";
17
+
18
+ // src/with-shape/links/link-set.ts
19
+ var LinkSet = class {
20
+ constructor(adapter, vault, name, spec, encrypted, getDEK, actor, emitter, endpointExists) {
21
+ this.adapter = adapter;
22
+ this.vault = vault;
23
+ this.name = name;
24
+ this.spec = spec;
25
+ this.encrypted = encrypted;
26
+ this.getDEK = getDEK;
27
+ this.actor = actor;
28
+ this.emitter = emitter;
29
+ this.endpointExists = endpointExists;
30
+ this.collName = linkCollectionName(name);
31
+ }
32
+ adapter;
33
+ vault;
34
+ name;
35
+ spec;
36
+ encrypted;
37
+ getDEK;
38
+ actor;
39
+ emitter;
40
+ endpointExists;
41
+ collName;
42
+ dekPromise = null;
43
+ dek() {
44
+ if (!this.dekPromise) this.dekPromise = this.getDEK(this.collName);
45
+ return this.dekPromise;
46
+ }
47
+ async encryptEntry(entry, version) {
48
+ const json = JSON.stringify(entry);
49
+ const base = { _noydb: NOYDB_FORMAT_VERSION, _v: version, _ts: (/* @__PURE__ */ new Date()).toISOString(), _by: this.actor };
50
+ if (!this.encrypted) return { ...base, _iv: "", _data: json };
51
+ const { iv, data } = await encrypt(json, await this.dek());
52
+ return { ...base, _iv: iv, _data: data };
53
+ }
54
+ async decryptEntry(env) {
55
+ const json = this.encrypted ? await openEnvelopeJson(env, await this.dek()) : env._data;
56
+ return JSON.parse(json);
57
+ }
58
+ async connect(aId, bId, meta) {
59
+ if (!await this.endpointExists(this.spec.a, aId)) {
60
+ throw new LinkEndpointError(this.name, this.spec.a, aId);
61
+ }
62
+ if (!await this.endpointExists(this.spec.b, bId)) {
63
+ throw new LinkEndpointError(this.name, this.spec.b, bId);
64
+ }
65
+ const key = linkRowKey(aId, bId);
66
+ const entry = meta !== void 0 ? { a: aId, b: bId, meta } : { a: aId, b: bId };
67
+ const existing = await this.adapter.get(this.vault, this.collName, key);
68
+ const env = await this.encryptEntry(entry, (existing?._v ?? 0) + 1);
69
+ await this.adapter.put(this.vault, this.collName, key, env, existing?._v);
70
+ this.emitter.emit("change", { vault: this.vault, collection: this.collName, id: key, action: "put" });
71
+ }
72
+ async disconnect(aId, bId) {
73
+ const key = linkRowKey(aId, bId);
74
+ const existing = await this.adapter.get(this.vault, this.collName, key);
75
+ if (!existing) return;
76
+ await this.adapter.delete(this.vault, this.collName, key);
77
+ this.emitter.emit("change", { vault: this.vault, collection: this.collName, id: key, action: "delete" });
78
+ }
79
+ async has(aId, bId) {
80
+ return await this.adapter.get(this.vault, this.collName, linkRowKey(aId, bId)) !== null;
81
+ }
82
+ async of(id) {
83
+ const rows = await this.list();
84
+ return rows.filter((r) => r.a === id || r.b === id);
85
+ }
86
+ async list() {
87
+ const keys = await this.adapter.list(this.vault, this.collName);
88
+ const out = [];
89
+ for (const key of keys) {
90
+ const env = await this.adapter.get(this.vault, this.collName, key);
91
+ if (!env) continue;
92
+ const e = await this.decryptEntry(env);
93
+ out.push(e.meta !== void 0 ? { a: e.a, b: e.b, meta: e.meta } : { a: e.a, b: e.b });
94
+ }
95
+ return out;
96
+ }
97
+ // ── Vault-internal cascade helpers ──────────────────────────────────
98
+ /** @internal — rows where the deleted endpoint id matches the relevant slot. */
99
+ async _rowsTouchingEndpoint(collection, id) {
100
+ const rows = await this.list();
101
+ return rows.filter(
102
+ (r) => this.spec.a === collection && r.a === id || this.spec.b === collection && r.b === id
103
+ );
104
+ }
105
+ /** @internal — the storage collection name (for tx pre-image capture). */
106
+ get _collectionName() {
107
+ return this.collName;
108
+ }
109
+ };
110
+ var LinkEndpointError = class extends NoydbError {
111
+ link;
112
+ endpoint;
113
+ missingId;
114
+ constructor(link, endpoint, missingId) {
115
+ super(
116
+ "LINK_ENDPOINT",
117
+ `link("${link}").connect: endpoint "${endpoint}" has no record "${missingId}".`
118
+ );
119
+ this.name = "LinkEndpointError";
120
+ this.link = link;
121
+ this.endpoint = endpoint;
122
+ this.missingId = missingId;
123
+ }
124
+ };
125
+
126
+ export {
127
+ LinkSet,
128
+ LinkEndpointError
129
+ };
130
+ //# sourceMappingURL=chunk-R3BLCFD2.js.map
@@ -0,0 +1,173 @@
1
+ import {
2
+ readPath
3
+ } from "./chunk-IGJCYUT5.js";
4
+ import {
5
+ DanglingReferenceError,
6
+ JoinTooLargeError
7
+ } from "./chunk-W2OG6JOL.js";
8
+
9
+ // src/kernel/query/join.ts
10
+ var DEFAULT_JOIN_MAX_ROWS = 5e4;
11
+ var JOIN_WARN_FRACTION = 0.8;
12
+ function coerceRefKey(value) {
13
+ if (value === null || value === void 0) return null;
14
+ if (typeof value === "string") return value;
15
+ if (typeof value === "number" || typeof value === "bigint") return String(value);
16
+ return null;
17
+ }
18
+ var warnedDanglingKeys = /* @__PURE__ */ new Set();
19
+ function warnOnceDangling(field, target, refId) {
20
+ const key = `${field}\u2192${target}:${refId}`;
21
+ if (warnedDanglingKeys.has(key)) return;
22
+ warnedDanglingKeys.add(key);
23
+ console.warn(
24
+ `[noy-db] .join() encountered dangling ref in 'warn' mode: field "${field}" \u2192 "${target}:${refId}" not found. Attaching null.`
25
+ );
26
+ }
27
+ var warnedCeilingKeys = /* @__PURE__ */ new Set();
28
+ function warnCeilingApproaching(target, side, rows, maxRows) {
29
+ const key = `${target}:${side}`;
30
+ if (warnedCeilingKeys.has(key)) return;
31
+ warnedCeilingKeys.add(key);
32
+ const pct = Math.round(rows / maxRows * 100);
33
+ console.warn(
34
+ `[noy-db] .join() ${side} side is at ${pct}% of the ${maxRows}-row ceiling for target "${target}" (${rows} rows). Streaming joins over scan() are not yet supported for collections that need to exceed this.`
35
+ );
36
+ }
37
+ function applyJoins(rows, joins, context, locale) {
38
+ if (joins.length === 0) return [...rows];
39
+ let result = [...rows];
40
+ for (const leg of joins) {
41
+ result = applyOneJoin(result, leg, context, locale);
42
+ }
43
+ return result;
44
+ }
45
+ function applyOneJoin(leftRows, leg, context, locale) {
46
+ if (leg.isDictJoin) {
47
+ const dictSource = context.resolveDictSource?.(leg.field);
48
+ if (!dictSource) {
49
+ throw new Error(
50
+ `.join() field "${leg.field}" on "${context.leftCollection}" is declared as a dictKey join but the dict source could not be resolved. Ensure the dictionary has at least one entry.`
51
+ );
52
+ }
53
+ const out = [];
54
+ const snapshot = dictSource.snapshot();
55
+ const dictMap = /* @__PURE__ */ new Map();
56
+ for (const entry of snapshot) {
57
+ const k = readPath(entry, "key");
58
+ if (typeof k === "string") dictMap.set(k, entry);
59
+ }
60
+ for (const left of leftRows) {
61
+ const rawId = readPath(left, leg.field);
62
+ const key = coerceRefKey(rawId);
63
+ const dictEntry = key === null ? void 0 : dictMap.get(key);
64
+ out.push({ ...left, [leg.as]: dictEntry ?? null });
65
+ }
66
+ return out;
67
+ }
68
+ const source = context.resolveSource(leg.target);
69
+ if (!source) {
70
+ throw new Error(
71
+ `.join() cannot resolve target collection "${leg.target}" (referenced from field "${leg.field}" on "${context.leftCollection}"). Make sure the target collection has been opened via vault.collection() at least once before running the query.`
72
+ );
73
+ }
74
+ const maxRows = leg.maxRows ?? DEFAULT_JOIN_MAX_ROWS;
75
+ if (leftRows.length > maxRows) {
76
+ throw new JoinTooLargeError({
77
+ leftRows: leftRows.length,
78
+ rightRows: -1,
79
+ maxRows,
80
+ side: "left",
81
+ message: `.join() left side has ${leftRows.length} rows, exceeding the ${maxRows}-row ceiling for target "${leg.target}". Filter the left side further with where()/limit() before joining, or raise the ceiling via { maxRows }. Streaming joins over scan() are not yet supported.`
82
+ });
83
+ }
84
+ if (leftRows.length > maxRows * JOIN_WARN_FRACTION) {
85
+ warnCeilingApproaching(leg.target, "left", leftRows.length, maxRows);
86
+ }
87
+ const rightSnapshot = source.snapshot();
88
+ if (rightSnapshot.length > maxRows) {
89
+ throw new JoinTooLargeError({
90
+ leftRows: leftRows.length,
91
+ rightRows: rightSnapshot.length,
92
+ maxRows,
93
+ side: "right",
94
+ message: `.join() right side "${leg.target}" has ${rightSnapshot.length} rows, exceeding the ${maxRows}-row ceiling. Raise the ceiling via { maxRows } if the data genuinely fits in memory, or track for streaming joins.`
95
+ });
96
+ }
97
+ if (rightSnapshot.length > maxRows * JOIN_WARN_FRACTION) {
98
+ warnCeilingApproaching(leg.target, "right", rightSnapshot.length, maxRows);
99
+ }
100
+ const effLocale = locale ?? context.defaultLocale;
101
+ const presentResolve = effLocale !== void 0 && source.presentForJoin !== void 0 ? (right) => right !== null && typeof right === "object" ? source.presentForJoin(right, effLocale) : right : void 0;
102
+ const strategy = leg.strategy ?? (source.lookupById ? "nested" : "hash");
103
+ if (strategy === "nested" && source.lookupById) {
104
+ const lookup = (id) => source.lookupById?.(id);
105
+ return nestedLoopJoin(leftRows, leg, lookup, presentResolve);
106
+ }
107
+ return hashJoin(leftRows, leg, rightSnapshot, presentResolve);
108
+ }
109
+ function nestedLoopJoin(leftRows, leg, lookupById, presentResolve) {
110
+ const out = [];
111
+ for (const left of leftRows) {
112
+ const rawId = readPath(left, leg.field);
113
+ const key = coerceRefKey(rawId);
114
+ let right = key === null ? void 0 : lookupById(key);
115
+ if (presentResolve && right !== void 0) right = presentResolve(right);
116
+ out.push(attachJoin(left, leg, right, rawId));
117
+ }
118
+ return out;
119
+ }
120
+ function hashJoin(leftRows, leg, rightSnapshot, presentResolve) {
121
+ const rightMap = /* @__PURE__ */ new Map();
122
+ for (const record of rightSnapshot) {
123
+ const rawId = readPath(record, "id");
124
+ const key = coerceRefKey(rawId);
125
+ if (key !== null) {
126
+ rightMap.set(key, record);
127
+ }
128
+ }
129
+ const out = [];
130
+ for (const left of leftRows) {
131
+ const rawId = readPath(left, leg.field);
132
+ const key = coerceRefKey(rawId);
133
+ let right = key === null ? void 0 : rightMap.get(key);
134
+ if (presentResolve && right !== void 0) right = presentResolve(right);
135
+ out.push(attachJoin(left, leg, right, rawId));
136
+ }
137
+ return out;
138
+ }
139
+ function attachJoin(left, leg, right, rawId) {
140
+ if (left === null || typeof left !== "object") {
141
+ return left;
142
+ }
143
+ const merged = { ...left };
144
+ const refKey = coerceRefKey(rawId);
145
+ if (right === void 0) {
146
+ if (refKey !== null && leg.mode === "strict") {
147
+ throw new DanglingReferenceError({
148
+ field: leg.field,
149
+ target: leg.target,
150
+ refId: refKey,
151
+ message: `.join() strict dangling: record references "${leg.target}:${refKey}" via field "${leg.field}", but no such record exists. Use ref() mode 'warn' or 'cascade' if dangling refs are acceptable, or run vault.checkIntegrity() to find and fix the orphans.`
152
+ });
153
+ }
154
+ if (refKey !== null && leg.mode === "warn") {
155
+ warnOnceDangling(leg.field, leg.target, refKey);
156
+ }
157
+ merged[leg.as] = null;
158
+ } else {
159
+ merged[leg.as] = right;
160
+ }
161
+ return merged;
162
+ }
163
+ function resetJoinWarnings() {
164
+ warnedDanglingKeys.clear();
165
+ warnedCeilingKeys.clear();
166
+ }
167
+
168
+ export {
169
+ DEFAULT_JOIN_MAX_ROWS,
170
+ applyJoins,
171
+ resetJoinWarnings
172
+ };
173
+ //# sourceMappingURL=chunk-RA5VTXXG.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/kernel/query/join.ts"],"sourcesContent":["/**\n * Query DSL `.join()` — eager, single-FK, intra-vault joins.\n *\n * resolves a ref()-declared foreign key into an attached\n * right-side record under an alias, using one of two planner paths\n * selected automatically:\n *\n * - **nested-loop** — right-side source exposes `lookupById`, so\n * each left row costs O(1). This is the common path for joins\n * against a Collection, which backs `lookupById` with a Map\n * lookup.\n * - **hash** — right-side has only `snapshot()`. Build a\n * `Map<id, record>` once, probe per left row. Same asymptotic\n * cost for our collections, but the path exists as a fallback\n * for custom QuerySource implementations and as an explicit\n * test-only override via `{ strategy: 'hash' }`.\n *\n * Scope:\n *\n * - Equi-joins on declared `ref()` fields only. Joins on\n * undeclared fields throw at plan time with an actionable error\n * naming the field and collection.\n * - Same-vault only. Cross-vault correlation goes\n * through `queryAcross`; this is an architectural\n * invariant, not a limitation we plan to lift.\n * - Hard row ceiling via `JoinTooLargeError` — default 50k per\n * side, override via `{ maxRows }`. Warns at 80% of the ceiling\n * on the existing warn channel.\n * - Three ref-mode behaviors on dangling refs:\n * strict → `DanglingReferenceError`,\n * warn → attach `null` with a one-shot warning,\n * cascade → attach `null` silently (cascade is a delete-time\n * mode; any dangling refs still present at read time are\n * mid-flight cascades or orphans from earlier, not a DSL error).\n *\n * Partition-awareness seam:\n *\n * Every `JoinLeg` carries a `partitionScope` field that is always\n * `'all'` in. The executor never reads this field.\n * partition-aware joins will start populating it from `where()`\n * predicates on the partition key without changing the planner's\n * external shape — this is the whole reason it exists now.\n *\n * Joins stay OUT of the ledger: reads don't touch `_ledger/`,\n * including joined reads.\n */\n\nimport type { RefDescriptor, RefMode } from '../refs.js'\nimport { readPath } from './predicate.js'\nimport { JoinTooLargeError, DanglingReferenceError } from '../errors.js'\n\n/** Planner strategy for a single join leg. Auto-selected unless overridden. */\nexport type JoinStrategy = 'hash' | 'nested'\n\n/** Default per-side row ceiling before `.join()` throws `JoinTooLargeError`. */\nexport const DEFAULT_JOIN_MAX_ROWS = 50_000\n\n/**\n * Fraction of the row ceiling at which a one-shot warning is emitted.\n * At 80% we warn; at 100% we throw. The warn gives consumers a\n * heads-up before the hard error so they can raise the ceiling or\n * filter further without first hitting a broken query.\n */\nconst JOIN_WARN_FRACTION = 0.8\n\n/**\n * Internal representation of a single join leg in the query plan.\n *\n * This is the primary place where constraint #1 is honored:\n * every leg carries a `partitionScope` field that is always `'all'`\n * in and is never read by the executor. partition-aware\n * joins will start populating it from `where()` predicates on the\n * partition key without changing the planner's external shape.\n */\nexport interface JoinLeg {\n /** Field on the left-side record holding the foreign key value. */\n readonly field: string\n /** Alias key under which the joined right-side record attaches. */\n readonly as: string\n /** Target collection name, resolved from the `ref()` declaration. */\n readonly target: string\n /** Ref mode controlling behavior on dangling refs at read time. */\n readonly mode: RefMode\n /** Manual planner strategy override. `undefined` → auto-select. */\n readonly strategy: JoinStrategy | undefined\n /** Per-side row ceiling override. `undefined` → DEFAULT_JOIN_MAX_ROWS. */\n readonly maxRows: number | undefined\n /**\n * Partition scope for future partition-aware joins. Always `'all'`\n * today — the executor never reads this field. Future versions will\n * populate it from `where()` predicates without breaking the\n * planner's external shape. Do not remove even though it looks\n * unused today — that's the whole point of having it.\n */\n readonly partitionScope: 'all' | readonly string[]\n /**\n * When `true`, this is a dictionary join. The executor\n * resolves the left-field value against the dict snapshot and\n * attaches `{ ...labels, key }` rather than a right-side record.\n * `target` holds the dictionary name (not a collection name).\n */\n readonly isDictJoin?: true\n}\n\n/**\n * Minimal shape of a joinable right-side record source.\n *\n * Collections implement this structurally via their `QuerySource`;\n * sources without `lookupById` force the hash-join fallback. Kept as\n * a thin interface so tests can wire up plain-object sources without\n * pulling in the full Collection class.\n *\n * The optional `subscribe` is used by `Query.live()` to merge\n * right-side change streams into the live re-run trigger. Sources\n * that omit `subscribe` still work for live joins — they just\n * don't drive re-fires when their right side mutates. Collection\n * implements `subscribe` by hooking into the existing per-\n * vault event emitter.\n */\nexport interface JoinableSource {\n snapshot(): readonly unknown[]\n lookupById?(id: string): unknown\n /**\n * Default locale a label-resolving query falls back to when the query\n * itself is locale-less. Set by a `staticDict()`-backed source from its\n * `displayLocale` so `{ by: 'label' }` resolves under a locale-less read.\n * Plain `_dict_*`-backed sources omit it.\n */\n readonly displayLocale?: string\n /**\n * Sync present-for-join dressing (#626 retirement, #650 Task 6) — when\n * present and the query carries a locale, each joined right-side record\n * is passed through this hook (built by the right-side `Collection` from\n * its own i18n-text + lookup-label bindings) BEFORE it is attached under\n * the leg's alias — so a joined `i18nText` field resolves to a string\n * (not a raw `{ locale }` map) and a joined lookup field gains its\n * `<field>Label`. Locale-less queries leave joined fields raw\n * (consistent with a locale-less read). Replaces the old `i18nFields`\n * data field — the join executor no longer resolves i18n locale itself,\n * it just calls this hook.\n */\n readonly presentForJoin?: (record: unknown, locale: string) => unknown\n /**\n * Subscribe to mutations on this source. The callback fires\n * AFTER the underlying record set has been updated. Returns an\n * unsubscribe function. Optional — sources without this method\n * cannot trigger live-join re-fires from their side.\n */\n subscribe?(cb: () => void): () => void\n}\n\n/**\n * Join resolution context attached to a `Query` when it's constructed\n * from a `Collection`. Holds everything the `.join()` method needs to\n * translate a field name into a target collection + ref mode, and\n * everything the executor needs to read the right side.\n *\n * Kept as a structural interface so `Vault` can implement it\n * without `Query` needing to import `Vault` (circular-import\n * avoid). The Collection wires this up in its `query()` method using\n * the `joinResolver` back-reference the Vault passes in.\n */\nexport interface JoinContext {\n /** Name of the left-side (owning) collection. */\n readonly leftCollection: string\n /**\n * The owning collection's default locale. Used to resolve joined\n * i18n fields at the `join` layer when a terminal call doesn't pass an\n * explicit locale — so `openVault({ locale })` flows to joins like it does\n * to `get`/`list`. A per-call `toArray({ locale })` overrides it.\n */\n readonly defaultLocale?: string\n /** Look up a `RefDescriptor` by field name on the left collection. */\n resolveRef(field: string): RefDescriptor | null\n /** Resolve a right-side source by target collection name. */\n resolveSource(collectionName: string): JoinableSource | null\n /**\n * Resolve a dictKey join source. Returns a `JoinableSource`\n * whose snapshot exposes `{ key, ...labels }` records, keyed by the\n * stable dictionary key. `null` when the field is not a dictKey.\n *\n * The source is built from the compartment's in-memory dictionary\n * snapshot — same data as `DictionaryHandle.list()`, O(1) per lookup.\n */\n resolveDictSource?(field: string): JoinableSource | null\n}\n\n/**\n * Coerce an unknown FK value into a lookup key string.\n *\n * Legitimate ref values are strings or numbers — the same narrowing\n * the write-time `enforceRefsOnPut` path applies. Anything else\n * (objects, arrays, booleans, null, undefined) is treated as \"no\n * ref\" and returns `null`, so the join attaches `null` instead of\n * running `String({})` and producing `'[object Object]'` as a\n * bucket key. This matches the lint rule guidance and keeps\n * bizarre FK values from producing silently-wrong lookups.\n */\nfunction coerceRefKey(value: unknown): string | null {\n if (value === null || value === undefined) return null\n if (typeof value === 'string') return value\n if (typeof value === 'number' || typeof value === 'bigint') return String(value)\n return null\n}\n\n/**\n * Warn-channel deduplication for dangling-ref `'warn'` mode. Keyed\n * by `field → target:refId` so the same dangling ref only produces\n * one warning even across many rows or repeated queries.\n */\nconst warnedDanglingKeys = new Set<string>()\nfunction warnOnceDangling(field: string, target: string, refId: string): void {\n const key = `${field}→${target}:${refId}`\n if (warnedDanglingKeys.has(key)) return\n warnedDanglingKeys.add(key)\n console.warn(\n `[noy-db] .join() encountered dangling ref in 'warn' mode: ` +\n `field \"${field}\" → \"${target}:${refId}\" not found. Attaching null.`,\n )\n}\n\n/**\n * Track row-ceiling warnings to fire only once per (target, side).\n * Prevents per-query spam when a consumer is running the same query\n * repeatedly (e.g. in a reactive loop).\n */\nconst warnedCeilingKeys = new Set<string>()\nfunction warnCeilingApproaching(\n target: string,\n side: 'left' | 'right',\n rows: number,\n maxRows: number,\n): void {\n const key = `${target}:${side}`\n if (warnedCeilingKeys.has(key)) return\n warnedCeilingKeys.add(key)\n const pct = Math.round((rows / maxRows) * 100)\n console.warn(\n `[noy-db] .join() ${side} side is at ${pct}% of the ${maxRows}-row ` +\n `ceiling for target \"${target}\" (${rows} rows). Streaming joins over ` +\n `scan() are not yet supported for collections that need to exceed this.`,\n )\n}\n\n/**\n * Apply every join leg in the plan against a base set of left-side\n * rows. Called by the query executor after `where` / `orderBy` /\n * `offset` / `limit` have narrowed the left set.\n *\n * Each leg attaches a `leg.as` field to every row. Returns a new\n * array of plain objects — the original left rows are not mutated\n * (structural sharing is fine for the inner fields, but the\n * top-level object is a fresh clone so consumers can further mutate\n * safely).\n *\n * **Ordering:** joins run AFTER orderBy / limit / offset in v1.\n * This keeps the planner simple and means queries like \"top 10\n * invoices with client\" sort and paginate the left side first, then\n * join. Sorting *by* a joined field is out of scope for — users\n * can post-sort the result array in userland or wait for \n * (multi-FK chaining) which can be layered on top.\n *\n * **Multi-FK chaining:** each leg's `maxRows` is enforced\n * against the current left-row count independently. Because\n * joins are equi-joins on the target's primary key (one-to-one or\n * one-to-null), the left row count is constant across legs — no\n * cartesian blowup. The per-leg left-side check is still necessary\n * so that a later leg with a tighter ceiling correctly fires on a\n * query like `.join('a', { maxRows: 100_000 }).join('b', { maxRows: 50 })`,\n * which should throw on the second leg if the left set exceeds 50.\n */\nexport function applyJoins(\n rows: readonly unknown[],\n joins: readonly JoinLeg[],\n context: JoinContext,\n locale?: string,\n): unknown[] {\n if (joins.length === 0) return [...rows]\n\n let result: unknown[] = [...rows]\n for (const leg of joins) {\n result = applyOneJoin(result, leg, context, locale)\n }\n return result\n}\n\nfunction applyOneJoin(\n leftRows: readonly unknown[],\n leg: JoinLeg,\n context: JoinContext,\n locale?: string,\n): unknown[] {\n // Dict join path — resolve left-field value against the\n // dictionary snapshot and attach { key, ...labels } under leg.as.\n if (leg.isDictJoin) {\n const dictSource = context.resolveDictSource?.(leg.field)\n if (!dictSource) {\n throw new Error(\n `.join() field \"${leg.field}\" on \"${context.leftCollection}\" is declared as a ` +\n `dictKey join but the dict source could not be resolved. ` +\n `Ensure the dictionary has at least one entry.`,\n )\n }\n const out: unknown[] = []\n const snapshot = dictSource.snapshot()\n const dictMap = new Map<string, unknown>()\n for (const entry of snapshot) {\n const k = readPath(entry, 'key')\n if (typeof k === 'string') dictMap.set(k, entry)\n }\n for (const left of leftRows) {\n const rawId = readPath(left, leg.field)\n const key = coerceRefKey(rawId)\n const dictEntry = key === null ? undefined : dictMap.get(key)\n out.push({ ...(left as Record<string, unknown>), [leg.as]: dictEntry ?? null })\n }\n return out\n }\n\n const source = context.resolveSource(leg.target)\n if (!source) {\n throw new Error(\n `.join() cannot resolve target collection \"${leg.target}\" ` +\n `(referenced from field \"${leg.field}\" on \"${context.leftCollection}\"). ` +\n `Make sure the target collection has been opened via vault.collection() ` +\n `at least once before running the query.`,\n )\n }\n\n const maxRows = leg.maxRows ?? DEFAULT_JOIN_MAX_ROWS\n\n // Per-leg left-side ceiling check. In a\n // multi-FK chain, each leg's `maxRows` is enforced independently\n // against the current left-row count, so\n // `.join('a', { maxRows: 100_000 }).join('b', { maxRows: 50 })`\n // correctly throws on the second leg if the left set exceeds 50.\n if (leftRows.length > maxRows) {\n throw new JoinTooLargeError({\n leftRows: leftRows.length,\n rightRows: -1,\n maxRows,\n side: 'left',\n message:\n `.join() left side has ${leftRows.length} rows, exceeding the ${maxRows}-row ` +\n `ceiling for target \"${leg.target}\". Filter the left side further with ` +\n `where()/limit() before joining, or raise the ceiling via { maxRows }. ` +\n `Streaming joins over scan() are not yet supported.`,\n })\n }\n if (leftRows.length > maxRows * JOIN_WARN_FRACTION) {\n warnCeilingApproaching(leg.target, 'left', leftRows.length, maxRows)\n }\n\n const rightSnapshot = source.snapshot()\n if (rightSnapshot.length > maxRows) {\n throw new JoinTooLargeError({\n leftRows: leftRows.length,\n rightRows: rightSnapshot.length,\n maxRows,\n side: 'right',\n message:\n `.join() right side \"${leg.target}\" has ${rightSnapshot.length} rows, ` +\n `exceeding the ${maxRows}-row ceiling. Raise the ceiling via { maxRows } ` +\n `if the data genuinely fits in memory, or track for streaming joins.`,\n })\n }\n if (rightSnapshot.length > maxRows * JOIN_WARN_FRACTION) {\n warnCeilingApproaching(leg.target, 'right', rightSnapshot.length, maxRows)\n }\n\n // `join`-layer dressing (#650 Task 6, #626 retirement). When the query\n // carries a locale (per-call or the owning collection's default) and the\n // right side declares a `presentForJoin` hook, resolve each matched right\n // record through it before it's attached. Locale-less → leave raw.\n const effLocale = locale ?? context.defaultLocale\n const presentResolve: ((right: unknown) => unknown) | undefined =\n effLocale !== undefined && source.presentForJoin !== undefined\n ? (right) =>\n right !== null && typeof right === 'object'\n ? source.presentForJoin!(right, effLocale)\n : right\n : undefined\n\n // Strategy selection: explicit override wins; otherwise prefer\n // nested-loop when the source exposes lookupById (O(1) per row),\n // falling back to hash join when it doesn't.\n const strategy: JoinStrategy =\n leg.strategy ?? (source.lookupById ? 'nested' : 'hash')\n\n if (strategy === 'nested' && source.lookupById) {\n // Bind through an arrow so the `this` context of lookupById\n // doesn't drift — same pattern as the existing candidateRecords\n // helper in builder.ts.\n const lookup = (id: string): unknown => source.lookupById?.(id)\n return nestedLoopJoin(leftRows, leg, lookup, presentResolve)\n }\n return hashJoin(leftRows, leg, rightSnapshot, presentResolve)\n}\n\nfunction nestedLoopJoin(\n leftRows: readonly unknown[],\n leg: JoinLeg,\n lookupById: (id: string) => unknown,\n presentResolve?: (right: unknown) => unknown,\n): unknown[] {\n const out: unknown[] = []\n for (const left of leftRows) {\n const rawId = readPath(left, leg.field)\n const key = coerceRefKey(rawId)\n let right = key === null ? undefined : lookupById(key)\n if (presentResolve && right !== undefined) right = presentResolve(right)\n out.push(attachJoin(left, leg, right, rawId))\n }\n return out\n}\n\nfunction hashJoin(\n leftRows: readonly unknown[],\n leg: JoinLeg,\n rightSnapshot: readonly unknown[],\n presentResolve?: (right: unknown) => unknown,\n): unknown[] {\n // Build the right-side hash once per query execution. We key on\n // the `id` field because ref() always points to a target's primary\n // key — non-equi and non-id joins are out of scope for.\n const rightMap = new Map<string, unknown>()\n for (const record of rightSnapshot) {\n const rawId = readPath(record, 'id')\n const key = coerceRefKey(rawId)\n if (key !== null) {\n rightMap.set(key, record)\n }\n }\n const out: unknown[] = []\n for (const left of leftRows) {\n const rawId = readPath(left, leg.field)\n const key = coerceRefKey(rawId)\n let right = key === null ? undefined : rightMap.get(key)\n if (presentResolve && right !== undefined) right = presentResolve(right)\n out.push(attachJoin(left, leg, right, rawId))\n }\n return out\n}\n\n/**\n * Attach the resolved right-side record (or null) to the left row\n * under the alias, applying ref-mode semantics for the dangling\n * case.\n *\n * A left-side record whose FK field is null/undefined is NOT a\n * dangling ref — it's \"no reference at all\", which is always\n * allowed regardless of mode. This matches the write-time\n * `enforceRefsOnPut` behavior: \"Nullish ref values are allowed —\n * treat them as 'no reference'.\"\n *\n * Only non-null FKs pointing at non-existent targets trigger the\n * mode behavior.\n */\nfunction attachJoin(\n left: unknown,\n leg: JoinLeg,\n right: unknown,\n rawId: unknown,\n): unknown {\n if (left === null || typeof left !== 'object') {\n // Pathological input — return as-is. Shouldn't happen in\n // practice because QuerySource yields objects, but defensive\n // because plan execution is untyped at this layer.\n return left\n }\n const merged: Record<string, unknown> = { ...(left as Record<string, unknown>) }\n\n // \"No ref at all\" — null/undefined FK value, or a non-string/non-\n // number FK that coerceRefKey treated as no-ref. Never throws\n // regardless of mode; matches the write-time policy that nullish\n // refs are allowed.\n const refKey = coerceRefKey(rawId)\n if (right === undefined) {\n if (refKey !== null && leg.mode === 'strict') {\n throw new DanglingReferenceError({\n field: leg.field,\n target: leg.target,\n refId: refKey,\n message:\n `.join() strict dangling: record references \"${leg.target}:${refKey}\" ` +\n `via field \"${leg.field}\", but no such record exists. Use ref() mode 'warn' ` +\n `or 'cascade' if dangling refs are acceptable, or run ` +\n `vault.checkIntegrity() to find and fix the orphans.`,\n })\n }\n if (refKey !== null && leg.mode === 'warn') {\n warnOnceDangling(leg.field, leg.target, refKey)\n }\n // For 'cascade' and null refs we attach null silently. Cascade\n // is a delete-time mode; any dangling refs visible at read time\n // are either mid-flight or pre-existing orphans, not a DSL error.\n merged[leg.as] = null\n } else {\n merged[leg.as] = right\n }\n return merged\n}\n\n/**\n * Test-only: reset the join warning deduplication state between\n * tests. Production code never calls this — the dedup state is\n * intentionally process-scoped so a noisy query doesn't spam the\n * console once per component render.\n */\nexport function resetJoinWarnings(): void {\n warnedDanglingKeys.clear()\n warnedCeilingKeys.clear()\n}\n"],"mappings":";;;;;;;;;AAuDO,IAAM,wBAAwB;AAQrC,IAAM,qBAAqB;AAuI3B,SAAS,aAAa,OAA+B;AACnD,MAAI,UAAU,QAAQ,UAAU,OAAW,QAAO;AAClD,MAAI,OAAO,UAAU,SAAU,QAAO;AACtC,MAAI,OAAO,UAAU,YAAY,OAAO,UAAU,SAAU,QAAO,OAAO,KAAK;AAC/E,SAAO;AACT;AAOA,IAAM,qBAAqB,oBAAI,IAAY;AAC3C,SAAS,iBAAiB,OAAe,QAAgB,OAAqB;AAC5E,QAAM,MAAM,GAAG,KAAK,SAAI,MAAM,IAAI,KAAK;AACvC,MAAI,mBAAmB,IAAI,GAAG,EAAG;AACjC,qBAAmB,IAAI,GAAG;AAC1B,UAAQ;AAAA,IACN,oEACY,KAAK,aAAQ,MAAM,IAAI,KAAK;AAAA,EAC1C;AACF;AAOA,IAAM,oBAAoB,oBAAI,IAAY;AAC1C,SAAS,uBACP,QACA,MACA,MACA,SACM;AACN,QAAM,MAAM,GAAG,MAAM,IAAI,IAAI;AAC7B,MAAI,kBAAkB,IAAI,GAAG,EAAG;AAChC,oBAAkB,IAAI,GAAG;AACzB,QAAM,MAAM,KAAK,MAAO,OAAO,UAAW,GAAG;AAC7C,UAAQ;AAAA,IACN,oBAAoB,IAAI,eAAe,GAAG,YAAY,OAAO,4BACpC,MAAM,MAAM,IAAI;AAAA,EAE3C;AACF;AA6BO,SAAS,WACd,MACA,OACA,SACA,QACW;AACX,MAAI,MAAM,WAAW,EAAG,QAAO,CAAC,GAAG,IAAI;AAEvC,MAAI,SAAoB,CAAC,GAAG,IAAI;AAChC,aAAW,OAAO,OAAO;AACvB,aAAS,aAAa,QAAQ,KAAK,SAAS,MAAM;AAAA,EACpD;AACA,SAAO;AACT;AAEA,SAAS,aACP,UACA,KACA,SACA,QACW;AAGX,MAAI,IAAI,YAAY;AAClB,UAAM,aAAa,QAAQ,oBAAoB,IAAI,KAAK;AACxD,QAAI,CAAC,YAAY;AACf,YAAM,IAAI;AAAA,QACR,kBAAkB,IAAI,KAAK,SAAS,QAAQ,cAAc;AAAA,MAG5D;AAAA,IACF;AACA,UAAM,MAAiB,CAAC;AACxB,UAAM,WAAW,WAAW,SAAS;AACrC,UAAM,UAAU,oBAAI,IAAqB;AACzC,eAAW,SAAS,UAAU;AAC5B,YAAM,IAAI,SAAS,OAAO,KAAK;AAC/B,UAAI,OAAO,MAAM,SAAU,SAAQ,IAAI,GAAG,KAAK;AAAA,IACjD;AACA,eAAW,QAAQ,UAAU;AAC3B,YAAM,QAAQ,SAAS,MAAM,IAAI,KAAK;AACtC,YAAM,MAAM,aAAa,KAAK;AAC9B,YAAM,YAAY,QAAQ,OAAO,SAAY,QAAQ,IAAI,GAAG;AAC5D,UAAI,KAAK,EAAE,GAAI,MAAkC,CAAC,IAAI,EAAE,GAAG,aAAa,KAAK,CAAC;AAAA,IAChF;AACA,WAAO;AAAA,EACT;AAEA,QAAM,SAAS,QAAQ,cAAc,IAAI,MAAM;AAC/C,MAAI,CAAC,QAAQ;AACX,UAAM,IAAI;AAAA,MACR,6CAA6C,IAAI,MAAM,6BAC1B,IAAI,KAAK,SAAS,QAAQ,cAAc;AAAA,IAGvE;AAAA,EACF;AAEA,QAAM,UAAU,IAAI,WAAW;AAO/B,MAAI,SAAS,SAAS,SAAS;AAC7B,UAAM,IAAI,kBAAkB;AAAA,MAC1B,UAAU,SAAS;AAAA,MACnB,WAAW;AAAA,MACX;AAAA,MACA,MAAM;AAAA,MACN,SACE,yBAAyB,SAAS,MAAM,wBAAwB,OAAO,4BAChD,IAAI,MAAM;AAAA,IAGrC,CAAC;AAAA,EACH;AACA,MAAI,SAAS,SAAS,UAAU,oBAAoB;AAClD,2BAAuB,IAAI,QAAQ,QAAQ,SAAS,QAAQ,OAAO;AAAA,EACrE;AAEA,QAAM,gBAAgB,OAAO,SAAS;AACtC,MAAI,cAAc,SAAS,SAAS;AAClC,UAAM,IAAI,kBAAkB;AAAA,MAC1B,UAAU,SAAS;AAAA,MACnB,WAAW,cAAc;AAAA,MACzB;AAAA,MACA,MAAM;AAAA,MACN,SACE,uBAAuB,IAAI,MAAM,SAAS,cAAc,MAAM,wBAC7C,OAAO;AAAA,IAE5B,CAAC;AAAA,EACH;AACA,MAAI,cAAc,SAAS,UAAU,oBAAoB;AACvD,2BAAuB,IAAI,QAAQ,SAAS,cAAc,QAAQ,OAAO;AAAA,EAC3E;AAMA,QAAM,YAAY,UAAU,QAAQ;AACpC,QAAM,iBACJ,cAAc,UAAa,OAAO,mBAAmB,SACjD,CAAC,UACC,UAAU,QAAQ,OAAO,UAAU,WAC/B,OAAO,eAAgB,OAAO,SAAS,IACvC,QACN;AAKN,QAAM,WACJ,IAAI,aAAa,OAAO,aAAa,WAAW;AAElD,MAAI,aAAa,YAAY,OAAO,YAAY;AAI9C,UAAM,SAAS,CAAC,OAAwB,OAAO,aAAa,EAAE;AAC9D,WAAO,eAAe,UAAU,KAAK,QAAQ,cAAc;AAAA,EAC7D;AACA,SAAO,SAAS,UAAU,KAAK,eAAe,cAAc;AAC9D;AAEA,SAAS,eACP,UACA,KACA,YACA,gBACW;AACX,QAAM,MAAiB,CAAC;AACxB,aAAW,QAAQ,UAAU;AAC3B,UAAM,QAAQ,SAAS,MAAM,IAAI,KAAK;AACtC,UAAM,MAAM,aAAa,KAAK;AAC9B,QAAI,QAAQ,QAAQ,OAAO,SAAY,WAAW,GAAG;AACrD,QAAI,kBAAkB,UAAU,OAAW,SAAQ,eAAe,KAAK;AACvE,QAAI,KAAK,WAAW,MAAM,KAAK,OAAO,KAAK,CAAC;AAAA,EAC9C;AACA,SAAO;AACT;AAEA,SAAS,SACP,UACA,KACA,eACA,gBACW;AAIX,QAAM,WAAW,oBAAI,IAAqB;AAC1C,aAAW,UAAU,eAAe;AAClC,UAAM,QAAQ,SAAS,QAAQ,IAAI;AACnC,UAAM,MAAM,aAAa,KAAK;AAC9B,QAAI,QAAQ,MAAM;AAChB,eAAS,IAAI,KAAK,MAAM;AAAA,IAC1B;AAAA,EACF;AACA,QAAM,MAAiB,CAAC;AACxB,aAAW,QAAQ,UAAU;AAC3B,UAAM,QAAQ,SAAS,MAAM,IAAI,KAAK;AACtC,UAAM,MAAM,aAAa,KAAK;AAC9B,QAAI,QAAQ,QAAQ,OAAO,SAAY,SAAS,IAAI,GAAG;AACvD,QAAI,kBAAkB,UAAU,OAAW,SAAQ,eAAe,KAAK;AACvE,QAAI,KAAK,WAAW,MAAM,KAAK,OAAO,KAAK,CAAC;AAAA,EAC9C;AACA,SAAO;AACT;AAgBA,SAAS,WACP,MACA,KACA,OACA,OACS;AACT,MAAI,SAAS,QAAQ,OAAO,SAAS,UAAU;AAI7C,WAAO;AAAA,EACT;AACA,QAAM,SAAkC,EAAE,GAAI,KAAiC;AAM/E,QAAM,SAAS,aAAa,KAAK;AACjC,MAAI,UAAU,QAAW;AACvB,QAAI,WAAW,QAAQ,IAAI,SAAS,UAAU;AAC5C,YAAM,IAAI,uBAAuB;AAAA,QAC/B,OAAO,IAAI;AAAA,QACX,QAAQ,IAAI;AAAA,QACZ,OAAO;AAAA,QACP,SACE,+CAA+C,IAAI,MAAM,IAAI,MAAM,gBACrD,IAAI,KAAK;AAAA,MAG3B,CAAC;AAAA,IACH;AACA,QAAI,WAAW,QAAQ,IAAI,SAAS,QAAQ;AAC1C,uBAAiB,IAAI,OAAO,IAAI,QAAQ,MAAM;AAAA,IAChD;AAIA,WAAO,IAAI,EAAE,IAAI;AAAA,EACnB,OAAO;AACL,WAAO,IAAI,EAAE,IAAI;AAAA,EACnB;AACA,SAAO;AACT;AAQO,SAAS,oBAA0B;AACxC,qBAAmB,MAAM;AACzB,oBAAkB,MAAM;AAC1B;","names":[]}
@@ -0,0 +1,21 @@
1
+ import {
2
+ SealedRecordNotEnabledError
3
+ } from "./chunk-W2OG6JOL.js";
4
+
5
+ // src/with-audit/sealed-record/strategy.ts
6
+ var NO_SEALED_RECORD = {
7
+ async sealRecordToHost() {
8
+ throw new SealedRecordNotEnabledError();
9
+ },
10
+ async revokeSealedRecord() {
11
+ throw new SealedRecordNotEnabledError();
12
+ },
13
+ async rotateRecordCek() {
14
+ throw new SealedRecordNotEnabledError();
15
+ }
16
+ };
17
+
18
+ export {
19
+ NO_SEALED_RECORD
20
+ };
21
+ //# sourceMappingURL=chunk-RDXW3OBQ.js.map