@noy-db/hub 0.2.0-pre.18 → 0.2.0-pre.19

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 (283) hide show
  1. package/dist/aggregate/index.cjs +227 -3
  2. package/dist/aggregate/index.cjs.map +1 -1
  3. package/dist/aggregate/index.d.cts +3 -3
  4. package/dist/aggregate/index.d.ts +3 -3
  5. package/dist/aggregate/index.js +5 -4
  6. package/dist/aggregate/index.js.map +1 -1
  7. package/dist/attestation/index.cjs.map +1 -1
  8. package/dist/attestation/index.d.cts +5 -5
  9. package/dist/attestation/index.d.ts +5 -5
  10. package/dist/attestation/index.js +6 -6
  11. package/dist/blobs/index.cjs +4 -10
  12. package/dist/blobs/index.cjs.map +1 -1
  13. package/dist/blobs/index.d.cts +6 -6
  14. package/dist/blobs/index.d.ts +6 -6
  15. package/dist/blobs/index.js +6 -6
  16. package/dist/bundle/index.cjs +520 -46
  17. package/dist/bundle/index.cjs.map +1 -1
  18. package/dist/bundle/index.d.cts +7 -7
  19. package/dist/bundle/index.d.ts +7 -7
  20. package/dist/bundle/index.js +10 -10
  21. package/dist/{chunk-6Q5XRLKG.js → chunk-3FSMVWBN.js} +4 -4
  22. package/dist/{chunk-647TFNYL.js → chunk-3Q2AOPLT.js} +76 -28
  23. package/dist/chunk-3Q2AOPLT.js.map +1 -0
  24. package/dist/{chunk-2U226RDC.js → chunk-4ULLGYPA.js} +3 -3
  25. package/dist/{chunk-6FHCU3QO.js → chunk-5IGWRMEC.js} +5 -5
  26. package/dist/{chunk-Y5XVB75E.js → chunk-6KESZO5D.js} +35 -7
  27. package/dist/chunk-6KESZO5D.js.map +1 -0
  28. package/dist/{chunk-KQ523X3A.js → chunk-6OSOE6BY.js} +2 -2
  29. package/dist/{chunk-HWK75CYX.js → chunk-7C6VFNIY.js} +2 -2
  30. package/dist/{chunk-33DAO2XG.js → chunk-7HD67R6U.js} +2 -2
  31. package/dist/{chunk-RQFG2YSV.js → chunk-B6E5IRPJ.js} +3 -3
  32. package/dist/{chunk-YWYW2YNO.js → chunk-CYNTFU2D.js} +2 -2
  33. package/dist/{chunk-HMFC6M2G.js → chunk-DJF3FXW5.js} +17 -1
  34. package/dist/{chunk-HMFC6M2G.js.map → chunk-DJF3FXW5.js.map} +1 -1
  35. package/dist/{chunk-KTZ2MHQK.js → chunk-DY3EOJEN.js} +2 -2
  36. package/dist/{chunk-PGVEL5IZ.js → chunk-E66DSTJP.js} +3 -3
  37. package/dist/{chunk-6YEC7LLO.js → chunk-FBLAWK6A.js} +2 -2
  38. package/dist/{chunk-LQ3GD5LL.js → chunk-FPHRTW2Z.js} +5 -5
  39. package/dist/{chunk-ZJ67TB4S.js → chunk-G4PYA575.js} +2 -2
  40. package/dist/{chunk-45643PAU.js → chunk-GKQAU52M.js} +4 -4
  41. package/dist/{chunk-5KKNBDCT.js → chunk-GYAWXHFO.js} +2 -2
  42. package/dist/{chunk-KOURQXIU.js → chunk-H42KZXNV.js} +5 -210
  43. package/dist/chunk-H42KZXNV.js.map +1 -0
  44. package/dist/{chunk-6XEGHIBA.js → chunk-IBVTH4JR.js} +4 -4
  45. package/dist/{chunk-AB7JF2KF.js → chunk-IVP5IVON.js} +2 -2
  46. package/dist/{chunk-T4T5I5L6.js → chunk-KEDJDWWQ.js} +3 -3
  47. package/dist/{chunk-C2OYWD5S.js → chunk-KNKNOJFS.js} +3 -3
  48. package/dist/chunk-KNKNOJFS.js.map +1 -0
  49. package/dist/{chunk-F2IJ2HGD.js → chunk-KYGGXXT6.js} +228 -69
  50. package/dist/chunk-KYGGXXT6.js.map +1 -0
  51. package/dist/{chunk-RZWQNMMP.js → chunk-LSIIPKYT.js} +2 -2
  52. package/dist/{chunk-FQRAYDS4.js → chunk-M3FPNTO2.js} +4 -4
  53. package/dist/{chunk-DR5I7Q6N.js → chunk-MI36HL5G.js} +4 -4
  54. package/dist/{chunk-Z3I2WNGF.js → chunk-NN6IISZO.js} +2 -2
  55. package/dist/{chunk-32XVU2LT.js → chunk-OBMYMKGO.js} +29 -6
  56. package/dist/{chunk-32XVU2LT.js.map → chunk-OBMYMKGO.js.map} +1 -1
  57. package/dist/{chunk-QJKZ5WUP.js → chunk-OKOKPYWH.js} +2 -2
  58. package/dist/{chunk-CMISAJAE.js → chunk-OY7RX2VL.js} +9 -15
  59. package/dist/chunk-OY7RX2VL.js.map +1 -0
  60. package/dist/{chunk-Z3BE5BRK.js → chunk-PTGQPWMV.js} +2 -2
  61. package/dist/{chunk-QPJ7Z4L3.js → chunk-PWFTQHYX.js} +2 -2
  62. package/dist/{chunk-K3NYRK7U.js → chunk-Q5MCHUXZ.js} +2 -2
  63. package/dist/{chunk-IQ4GMEYZ.js → chunk-S22UOMHM.js} +6 -6
  64. package/dist/{chunk-WZCG3EZ6.js → chunk-S3XA7G35.js} +2 -2
  65. package/dist/{chunk-LGPSCKWZ.js → chunk-SHIUFIPW.js} +1 -1
  66. package/dist/chunk-SHIUFIPW.js.map +1 -0
  67. package/dist/{chunk-BUBJYIZ7.js → chunk-U7JNBSS3.js} +3 -3
  68. package/dist/{chunk-TFAN3NFD.js → chunk-V3VIRTTE.js} +3 -3
  69. package/dist/{chunk-VVDSDOVV.js → chunk-V5FZWQNN.js} +4 -4
  70. package/dist/chunk-VEIVAYJ7.js +361 -0
  71. package/dist/chunk-VEIVAYJ7.js.map +1 -0
  72. package/dist/{chunk-P57D4KBG.js → chunk-VNUE6FHP.js} +3 -3
  73. package/dist/{chunk-TPOHMOGX.js → chunk-WFK2EVYU.js} +10 -2
  74. package/dist/chunk-WFK2EVYU.js.map +1 -0
  75. package/dist/{chunk-TTS3RWL5.js → chunk-X7FJMKT3.js} +2 -2
  76. package/dist/{chunk-HZOEBM67.js → chunk-XPH3FWME.js} +7 -2
  77. package/dist/{chunk-HZOEBM67.js.map → chunk-XPH3FWME.js.map} +1 -1
  78. package/dist/{chunk-DKMPR76W.js → chunk-Y5J63SMF.js} +5 -5
  79. package/dist/{chunk-HOO5I3VG.js → chunk-YLRRU72W.js} +2 -2
  80. package/dist/{chunk-MGB67HKX.js → chunk-YX333DPS.js} +4 -4
  81. package/dist/{chunk-4UI5T3K7.js → chunk-YZE6C3TQ.js} +3 -3
  82. package/dist/consent/index.cjs.map +1 -1
  83. package/dist/consent/index.d.cts +6 -6
  84. package/dist/consent/index.d.ts +6 -6
  85. package/dist/consent/index.js +3 -3
  86. package/dist/{crypto-FNK3XPCS.js → crypto-B46VNH6X.js} +3 -3
  87. package/dist/{delegation-FMXNUWE6.js → delegation-5HON72PV.js} +5 -5
  88. package/dist/derivations/index.cjs.map +1 -1
  89. package/dist/derivations/index.d.cts +7 -7
  90. package/dist/derivations/index.d.ts +7 -7
  91. package/dist/derivations/index.js +4 -4
  92. package/dist/{dev-unlock-3_2b_vo6.d.cts → dev-unlock-BR1rMOS-.d.cts} +1 -1
  93. package/dist/{dev-unlock-BMvwPr_E.d.ts → dev-unlock-whL49sxV.d.ts} +1 -1
  94. package/dist/{errors-DUTlAt3Y.d.ts → errors-DL-zTrrF.d.cts} +14 -1
  95. package/dist/{errors-DUTlAt3Y.d.cts → errors-DL-zTrrF.d.ts} +14 -1
  96. package/dist/executor-44R5CUS2.js +12 -0
  97. package/dist/executor-AOACUK7Z.js +8 -0
  98. package/dist/executor-OKFLQCDW.js +8 -0
  99. package/dist/{fanout-sidecar-JGHXAJO5.js → fanout-sidecar-DCQWJQ6S.js} +2 -2
  100. package/dist/forget/index.cjs.map +1 -1
  101. package/dist/forget/index.d.cts +1 -1
  102. package/dist/forget/index.d.ts +1 -1
  103. package/dist/forget/index.js +4 -4
  104. package/dist/guards/index.cjs.map +1 -1
  105. package/dist/guards/index.d.cts +7 -7
  106. package/dist/guards/index.d.ts +7 -7
  107. package/dist/guards/index.js +3 -3
  108. package/dist/{hash-BnWnL9bQ.d.cts → hash-BEUBmmI4.d.cts} +1 -1
  109. package/dist/{hash-BThBJFO1.d.ts → hash-Dtb7FwWd.d.ts} +1 -1
  110. package/dist/history/index.cjs.map +1 -1
  111. package/dist/history/index.d.cts +7 -7
  112. package/dist/history/index.d.ts +7 -7
  113. package/dist/history/index.js +5 -5
  114. package/dist/i18n/index.cjs +149 -132
  115. package/dist/i18n/index.cjs.map +1 -1
  116. package/dist/i18n/index.d.cts +6 -6
  117. package/dist/i18n/index.d.ts +6 -6
  118. package/dist/i18n/index.js +14 -14
  119. package/dist/{index-C6lgoUhK.d.cts → index-BM7O48Ur.d.cts} +47 -8
  120. package/dist/{index-C-SSRIxP.d.ts → index-BMmajblo.d.cts} +14 -0
  121. package/dist/{index-C-SSRIxP.d.cts → index-BMmajblo.d.ts} +14 -0
  122. package/dist/{index-DP1JTWHZ.d.ts → index-BelbyUwz.d.ts} +47 -8
  123. package/dist/index.cjs +799 -465
  124. package/dist/index.cjs.map +1 -1
  125. package/dist/index.d.cts +29 -16
  126. package/dist/index.d.ts +29 -16
  127. package/dist/index.js +56 -52
  128. package/dist/index.js.map +1 -1
  129. package/dist/indexing/index.cjs.map +1 -1
  130. package/dist/indexing/index.js +4 -4
  131. package/dist/issue-EPA2PSWP.js +12 -0
  132. package/dist/{ledger-GXC2YA3A.js → ledger-LS6GXCBP.js} +5 -5
  133. package/dist/materialized-views/index.cjs +257 -4
  134. package/dist/materialized-views/index.cjs.map +1 -1
  135. package/dist/materialized-views/index.d.cts +7 -7
  136. package/dist/materialized-views/index.d.ts +7 -7
  137. package/dist/materialized-views/index.js +8 -7
  138. package/dist/noydb-BVKFP74P.js +38 -0
  139. package/dist/overlay-views/index.cjs.map +1 -1
  140. package/dist/overlay-views/index.d.cts +7 -7
  141. package/dist/overlay-views/index.d.ts +7 -7
  142. package/dist/overlay-views/index.js +4 -4
  143. package/dist/periods/index.cjs.map +1 -1
  144. package/dist/periods/index.d.cts +6 -6
  145. package/dist/periods/index.d.ts +6 -6
  146. package/dist/periods/index.js +5 -5
  147. package/dist/{public-envelope-HXOFHY4N.js → public-envelope-AGU6SS4Z.js} +4 -4
  148. package/dist/query/index.cjs +296 -27
  149. package/dist/query/index.cjs.map +1 -1
  150. package/dist/query/index.d.cts +3 -3
  151. package/dist/query/index.d.ts +3 -3
  152. package/dist/query/index.js +7 -6
  153. package/dist/registry-ERNAMRDE.js +8 -0
  154. package/dist/registry-EXTHSXQW.js +8 -0
  155. package/dist/{registry-WVXO6NH5.js → registry-RDPTFXQ7.js} +3 -3
  156. package/dist/{revoke-7LCWE2AH.js → revoke-IFLXEZA5.js} +6 -6
  157. package/dist/sealed-record/index.cjs.map +1 -1
  158. package/dist/sealed-record/index.d.cts +1 -1
  159. package/dist/sealed-record/index.d.ts +1 -1
  160. package/dist/sealed-record/index.js +2 -2
  161. package/dist/session/index.cjs.map +1 -1
  162. package/dist/session/index.d.cts +7 -7
  163. package/dist/session/index.d.ts +7 -7
  164. package/dist/session/index.js +3 -3
  165. package/dist/shadow/index.cjs.map +1 -1
  166. package/dist/shadow/index.d.cts +6 -6
  167. package/dist/shadow/index.d.ts +6 -6
  168. package/dist/shadow/index.js +2 -2
  169. package/dist/{signer-HAVDLGOK.js → signer-UNWOUJAK.js} +5 -5
  170. package/dist/snapshots/index.cjs.map +1 -1
  171. package/dist/snapshots/index.d.cts +6 -6
  172. package/dist/snapshots/index.d.ts +6 -6
  173. package/dist/snapshots/index.js +4 -4
  174. package/dist/{stale-PGTEGJDI.js → stale-NTEV5SLX.js} +2 -2
  175. package/dist/{state-vault-QKQKN3H3.js → state-vault-TUTFRTOA.js} +4 -4
  176. package/dist/store/index.cjs +8 -0
  177. package/dist/store/index.cjs.map +1 -1
  178. package/dist/store/index.d.cts +13 -6
  179. package/dist/store/index.d.ts +13 -6
  180. package/dist/store/index.js +2 -2
  181. package/dist/{strategy-Diwh5lzS.d.ts → strategy-BDxQnnTX.d.ts} +315 -4
  182. package/dist/{strategy-nuyN8K5N.d.cts → strategy-C5ol6NdV.d.cts} +315 -4
  183. package/dist/sync/index.cjs.map +1 -1
  184. package/dist/sync/index.d.cts +5 -5
  185. package/dist/sync/index.d.ts +5 -5
  186. package/dist/sync/index.js +4 -4
  187. package/dist/team/index.cjs.map +1 -1
  188. package/dist/team/index.d.cts +6 -6
  189. package/dist/team/index.d.ts +6 -6
  190. package/dist/team/index.js +8 -8
  191. package/dist/{transition-guard--t3exQHF.d.cts → transition-guard-B1N82hMf.d.cts} +1 -1
  192. package/dist/{transition-guard-BlI9Oy5K.d.ts → transition-guard-C__YeF3_.d.ts} +1 -1
  193. package/dist/tx/index.cjs.map +1 -1
  194. package/dist/tx/index.d.cts +6 -6
  195. package/dist/tx/index.d.ts +6 -6
  196. package/dist/tx/index.js +3 -3
  197. package/dist/{types-Diqc2caK.d.ts → types-CraiZOyO.d.ts} +134 -292
  198. package/dist/{types-BpLPqyaO.d.cts → types-D-gr5t0G.d.cts} +134 -292
  199. package/dist/{ulid-DNiRB4Mx.d.cts → ulid-DQnSAP5W.d.cts} +1 -1
  200. package/dist/{ulid-B1zNV8r9.d.ts → ulid-FFRRHkVf.d.ts} +1 -1
  201. package/dist/util/index.cjs.map +1 -1
  202. package/dist/util/index.js +1 -1
  203. package/dist/{vault-group-DPZVFRI5.js → vault-group-27EV7KB4.js} +29 -8
  204. package/dist/vault-group-27EV7KB4.js.map +1 -0
  205. package/dist/{with-materialized-view-BdH_A_r6.d.cts → with-materialized-view-BboqxyV3.d.cts} +1 -1
  206. package/dist/{with-materialized-view-CzAgp_HJ.d.ts → with-materialized-view-CguCeVcT.d.ts} +1 -1
  207. package/dist/{with-overlayed-view-BJbqQnsR.d.ts → with-overlayed-view-DO08u_tx.d.ts} +1 -1
  208. package/dist/{with-overlayed-view-C40rDPlu.d.cts → with-overlayed-view-mmsg5Of3.d.cts} +1 -1
  209. package/dist/{with-rollup-DrlGkxiE.d.ts → with-rollup-_TyBzz3T.d.ts} +1 -1
  210. package/dist/{with-rollup-Bopu5UDZ.d.cts → with-rollup-aaxOZcIb.d.cts} +1 -1
  211. package/package.json +3 -3
  212. package/dist/chunk-647TFNYL.js.map +0 -1
  213. package/dist/chunk-C2OYWD5S.js.map +0 -1
  214. package/dist/chunk-CMISAJAE.js.map +0 -1
  215. package/dist/chunk-F2IJ2HGD.js.map +0 -1
  216. package/dist/chunk-KOURQXIU.js.map +0 -1
  217. package/dist/chunk-LGPSCKWZ.js.map +0 -1
  218. package/dist/chunk-M3H7VSRV.js +0 -139
  219. package/dist/chunk-M3H7VSRV.js.map +0 -1
  220. package/dist/chunk-TPOHMOGX.js.map +0 -1
  221. package/dist/chunk-Y5XVB75E.js.map +0 -1
  222. package/dist/executor-IZ2NVXCY.js +0 -11
  223. package/dist/executor-THSEYEJG.js +0 -8
  224. package/dist/executor-WLFDUTOM.js +0 -8
  225. package/dist/issue-R2MWQO6K.js +0 -12
  226. package/dist/noydb-RJL6FQ4B.js +0 -37
  227. package/dist/registry-3T2RZC5A.js +0 -8
  228. package/dist/registry-DMS7OKBM.js +0 -8
  229. package/dist/vault-group-DPZVFRI5.js.map +0 -1
  230. /package/dist/{chunk-6Q5XRLKG.js.map → chunk-3FSMVWBN.js.map} +0 -0
  231. /package/dist/{chunk-2U226RDC.js.map → chunk-4ULLGYPA.js.map} +0 -0
  232. /package/dist/{chunk-6FHCU3QO.js.map → chunk-5IGWRMEC.js.map} +0 -0
  233. /package/dist/{chunk-KQ523X3A.js.map → chunk-6OSOE6BY.js.map} +0 -0
  234. /package/dist/{chunk-HWK75CYX.js.map → chunk-7C6VFNIY.js.map} +0 -0
  235. /package/dist/{chunk-33DAO2XG.js.map → chunk-7HD67R6U.js.map} +0 -0
  236. /package/dist/{chunk-RQFG2YSV.js.map → chunk-B6E5IRPJ.js.map} +0 -0
  237. /package/dist/{chunk-YWYW2YNO.js.map → chunk-CYNTFU2D.js.map} +0 -0
  238. /package/dist/{chunk-KTZ2MHQK.js.map → chunk-DY3EOJEN.js.map} +0 -0
  239. /package/dist/{chunk-PGVEL5IZ.js.map → chunk-E66DSTJP.js.map} +0 -0
  240. /package/dist/{chunk-6YEC7LLO.js.map → chunk-FBLAWK6A.js.map} +0 -0
  241. /package/dist/{chunk-LQ3GD5LL.js.map → chunk-FPHRTW2Z.js.map} +0 -0
  242. /package/dist/{chunk-ZJ67TB4S.js.map → chunk-G4PYA575.js.map} +0 -0
  243. /package/dist/{chunk-45643PAU.js.map → chunk-GKQAU52M.js.map} +0 -0
  244. /package/dist/{chunk-5KKNBDCT.js.map → chunk-GYAWXHFO.js.map} +0 -0
  245. /package/dist/{chunk-6XEGHIBA.js.map → chunk-IBVTH4JR.js.map} +0 -0
  246. /package/dist/{chunk-AB7JF2KF.js.map → chunk-IVP5IVON.js.map} +0 -0
  247. /package/dist/{chunk-T4T5I5L6.js.map → chunk-KEDJDWWQ.js.map} +0 -0
  248. /package/dist/{chunk-RZWQNMMP.js.map → chunk-LSIIPKYT.js.map} +0 -0
  249. /package/dist/{chunk-FQRAYDS4.js.map → chunk-M3FPNTO2.js.map} +0 -0
  250. /package/dist/{chunk-DR5I7Q6N.js.map → chunk-MI36HL5G.js.map} +0 -0
  251. /package/dist/{chunk-Z3I2WNGF.js.map → chunk-NN6IISZO.js.map} +0 -0
  252. /package/dist/{chunk-QJKZ5WUP.js.map → chunk-OKOKPYWH.js.map} +0 -0
  253. /package/dist/{chunk-Z3BE5BRK.js.map → chunk-PTGQPWMV.js.map} +0 -0
  254. /package/dist/{chunk-QPJ7Z4L3.js.map → chunk-PWFTQHYX.js.map} +0 -0
  255. /package/dist/{chunk-K3NYRK7U.js.map → chunk-Q5MCHUXZ.js.map} +0 -0
  256. /package/dist/{chunk-IQ4GMEYZ.js.map → chunk-S22UOMHM.js.map} +0 -0
  257. /package/dist/{chunk-WZCG3EZ6.js.map → chunk-S3XA7G35.js.map} +0 -0
  258. /package/dist/{chunk-BUBJYIZ7.js.map → chunk-U7JNBSS3.js.map} +0 -0
  259. /package/dist/{chunk-TFAN3NFD.js.map → chunk-V3VIRTTE.js.map} +0 -0
  260. /package/dist/{chunk-VVDSDOVV.js.map → chunk-V5FZWQNN.js.map} +0 -0
  261. /package/dist/{chunk-P57D4KBG.js.map → chunk-VNUE6FHP.js.map} +0 -0
  262. /package/dist/{chunk-TTS3RWL5.js.map → chunk-X7FJMKT3.js.map} +0 -0
  263. /package/dist/{chunk-DKMPR76W.js.map → chunk-Y5J63SMF.js.map} +0 -0
  264. /package/dist/{chunk-HOO5I3VG.js.map → chunk-YLRRU72W.js.map} +0 -0
  265. /package/dist/{chunk-MGB67HKX.js.map → chunk-YX333DPS.js.map} +0 -0
  266. /package/dist/{chunk-4UI5T3K7.js.map → chunk-YZE6C3TQ.js.map} +0 -0
  267. /package/dist/{crypto-FNK3XPCS.js.map → crypto-B46VNH6X.js.map} +0 -0
  268. /package/dist/{delegation-FMXNUWE6.js.map → delegation-5HON72PV.js.map} +0 -0
  269. /package/dist/{executor-IZ2NVXCY.js.map → executor-44R5CUS2.js.map} +0 -0
  270. /package/dist/{executor-THSEYEJG.js.map → executor-AOACUK7Z.js.map} +0 -0
  271. /package/dist/{executor-WLFDUTOM.js.map → executor-OKFLQCDW.js.map} +0 -0
  272. /package/dist/{fanout-sidecar-JGHXAJO5.js.map → fanout-sidecar-DCQWJQ6S.js.map} +0 -0
  273. /package/dist/{issue-R2MWQO6K.js.map → issue-EPA2PSWP.js.map} +0 -0
  274. /package/dist/{ledger-GXC2YA3A.js.map → ledger-LS6GXCBP.js.map} +0 -0
  275. /package/dist/{noydb-RJL6FQ4B.js.map → noydb-BVKFP74P.js.map} +0 -0
  276. /package/dist/{public-envelope-HXOFHY4N.js.map → public-envelope-AGU6SS4Z.js.map} +0 -0
  277. /package/dist/{registry-3T2RZC5A.js.map → registry-ERNAMRDE.js.map} +0 -0
  278. /package/dist/{registry-DMS7OKBM.js.map → registry-EXTHSXQW.js.map} +0 -0
  279. /package/dist/{registry-WVXO6NH5.js.map → registry-RDPTFXQ7.js.map} +0 -0
  280. /package/dist/{revoke-7LCWE2AH.js.map → revoke-IFLXEZA5.js.map} +0 -0
  281. /package/dist/{signer-HAVDLGOK.js.map → signer-UNWOUJAK.js.map} +0 -0
  282. /package/dist/{stale-PGTEGJDI.js.map → stale-NTEV5SLX.js.map} +0 -0
  283. /package/dist/{state-vault-QKQKN3H3.js.map → state-vault-TUTFRTOA.js.map} +0 -0
@@ -1,12 +1,12 @@
1
- import { aj as PeriodsStrategy } from '../types-BpLPqyaO.cjs';
2
- export { ak as CarryForwardContext, al as ClosePeriodOptions, am as OpenPeriodOptions, an as PERIODS_COLLECTION, ao as PeriodRecord, ap as ReadOnlyCollection, aq as appendPeriodLedgerEntry, ar as assertTsWritable, as as chainAnchor, at as loadPeriods, au as validatePeriodName } from '../types-BpLPqyaO.cjs';
1
+ import { a4 as PeriodsStrategy } from '../types-D-gr5t0G.cjs';
2
+ export { a5 as CarryForwardContext, a6 as ClosePeriodOptions, a7 as OpenPeriodOptions, a8 as PERIODS_COLLECTION, a9 as PeriodRecord, aa as ReadOnlyCollection, ab as appendPeriodLedgerEntry, ac as assertTsWritable, ad as chainAnchor, ae as loadPeriods, af as validatePeriodName } from '../types-D-gr5t0G.cjs';
3
3
  import '../lazy-builder-eYZzLEL1.cjs';
4
4
  import '../predicate-BmhBSPCH.cjs';
5
- import '../strategy-nuyN8K5N.cjs';
6
- import '../errors-DUTlAt3Y.cjs';
5
+ import '../strategy-C5ol6NdV.cjs';
6
+ import '../errors-DL-zTrrF.cjs';
7
7
  import '../strategy-BSxFXGzb.cjs';
8
- import '../index-C-SSRIxP.cjs';
9
- import '../index-C6lgoUhK.cjs';
8
+ import '../index-BMmajblo.cjs';
9
+ import '../index-BM7O48Ur.cjs';
10
10
  import '@noy-db/attestation';
11
11
 
12
12
  /**
@@ -1,12 +1,12 @@
1
- import { aj as PeriodsStrategy } from '../types-Diqc2caK.js';
2
- export { ak as CarryForwardContext, al as ClosePeriodOptions, am as OpenPeriodOptions, an as PERIODS_COLLECTION, ao as PeriodRecord, ap as ReadOnlyCollection, aq as appendPeriodLedgerEntry, ar as assertTsWritable, as as chainAnchor, at as loadPeriods, au as validatePeriodName } from '../types-Diqc2caK.js';
1
+ import { a4 as PeriodsStrategy } from '../types-CraiZOyO.js';
2
+ export { a5 as CarryForwardContext, a6 as ClosePeriodOptions, a7 as OpenPeriodOptions, a8 as PERIODS_COLLECTION, a9 as PeriodRecord, aa as ReadOnlyCollection, ab as appendPeriodLedgerEntry, ac as assertTsWritable, ad as chainAnchor, ae as loadPeriods, af as validatePeriodName } from '../types-CraiZOyO.js';
3
3
  import '../lazy-builder-ChSqcF5t.js';
4
4
  import '../predicate-BmhBSPCH.js';
5
- import '../strategy-Diwh5lzS.js';
6
- import '../errors-DUTlAt3Y.js';
5
+ import '../strategy-BDxQnnTX.js';
6
+ import '../errors-DL-zTrrF.js';
7
7
  import '../strategy-BSxFXGzb.js';
8
- import '../index-C-SSRIxP.js';
9
- import '../index-DP1JTWHZ.js';
8
+ import '../index-BMmajblo.js';
9
+ import '../index-BelbyUwz.js';
10
10
  import '@noy-db/attestation';
11
11
 
12
12
  /**
@@ -6,13 +6,13 @@ import {
6
6
  loadPeriods,
7
7
  validatePeriodName,
8
8
  withPeriods
9
- } from "../chunk-4UI5T3K7.js";
9
+ } from "../chunk-YZE6C3TQ.js";
10
10
  import "../chunk-UF3BUNQZ.js";
11
- import "../chunk-MGB67HKX.js";
11
+ import "../chunk-YX333DPS.js";
12
12
  import "../chunk-PDVP3C2I.js";
13
- import "../chunk-LGPSCKWZ.js";
14
- import "../chunk-QJKZ5WUP.js";
15
- import "../chunk-HMFC6M2G.js";
13
+ import "../chunk-SHIUFIPW.js";
14
+ import "../chunk-OKOKPYWH.js";
15
+ import "../chunk-DJF3FXW5.js";
16
16
  export {
17
17
  PERIODS_COLLECTION,
18
18
  appendPeriodLedgerEntry,
@@ -12,9 +12,9 @@ import {
12
12
  resolveLocale,
13
13
  savePublicEnvelope,
14
14
  validatePublicEnvelopeInput
15
- } from "./chunk-PGVEL5IZ.js";
16
- import "./chunk-LGPSCKWZ.js";
17
- import "./chunk-HMFC6M2G.js";
15
+ } from "./chunk-E66DSTJP.js";
16
+ import "./chunk-SHIUFIPW.js";
17
+ import "./chunk-DJF3FXW5.js";
18
18
  export {
19
19
  DEFAULT_PUBLIC_ENVELOPE_SCHEMA,
20
20
  PUBLIC_ENVELOPE_FIELDS,
@@ -28,4 +28,4 @@ export {
28
28
  savePublicEnvelope,
29
29
  validatePublicEnvelopeInput
30
30
  };
31
- //# sourceMappingURL=public-envelope-HXOFHY4N.js.map
31
+ //# sourceMappingURL=public-envelope-AGU6SS4Z.js.map
@@ -275,6 +275,18 @@ var IndexWriteFailureError = class extends NoydbError {
275
275
  this.cause = args.cause;
276
276
  }
277
277
  };
278
+ var LocaleNotSpecifiedError = class extends NoydbError {
279
+ /** The field name that required a locale. */
280
+ field;
281
+ constructor(field, message) {
282
+ super(
283
+ "LOCALE_NOT_SPECIFIED",
284
+ message ?? `Cannot read i18nText field "${field}" without a locale. Pass { locale } to get()/list()/query() or set a default via openVault(name, { locale }).`
285
+ );
286
+ this.name = "LocaleNotSpecifiedError";
287
+ this.field = field;
288
+ }
289
+ };
278
290
  var JoinTooLargeError = class extends NoydbError {
279
291
  leftRows;
280
292
  rightRows;
@@ -568,6 +580,198 @@ function hasFnClause(clauses) {
568
580
  return false;
569
581
  }
570
582
 
583
+ // src/i18n/policy.ts
584
+ function resolvePolicy(onMissing, layer) {
585
+ const explicit = onMissing && typeof onMissing === "object" ? onMissing[layer] : void 0;
586
+ const scalar = typeof onMissing === "string" ? onMissing : void 0;
587
+ const layerDefault = layer === "guard" ? "substitute" : void 0;
588
+ return explicit ?? layerDefault ?? scalar ?? "throw";
589
+ }
590
+
591
+ // src/i18n/script.ts
592
+ var LATIN_BASE = /* @__PURE__ */ new Set([
593
+ "en",
594
+ "fr",
595
+ "de",
596
+ "es",
597
+ "it",
598
+ "pt",
599
+ "nl",
600
+ "sv",
601
+ "no",
602
+ "da",
603
+ "fi",
604
+ "is",
605
+ "pl",
606
+ "cs",
607
+ "sk",
608
+ "hu",
609
+ "ro",
610
+ "hr",
611
+ "sl",
612
+ "et",
613
+ "lv",
614
+ "lt",
615
+ "tr",
616
+ "vi",
617
+ "id",
618
+ "ms",
619
+ "tl",
620
+ "sw",
621
+ "af",
622
+ "ca",
623
+ "gl",
624
+ "eu",
625
+ "cy",
626
+ "ga"
627
+ ]);
628
+ var SCRIPT_TABLE = {
629
+ th: ["Thai"],
630
+ ko: ["Hangul", "Han"],
631
+ ja: ["Han", "Hiragana", "Katakana"],
632
+ zh: ["Han"],
633
+ ar: ["Arabic"],
634
+ fa: ["Arabic"],
635
+ ur: ["Arabic"],
636
+ ru: ["Cyrillic"],
637
+ uk: ["Cyrillic"],
638
+ bg: ["Cyrillic"],
639
+ sr: ["Cyrillic"],
640
+ he: ["Hebrew"],
641
+ el: ["Greek"],
642
+ hi: ["Devanagari"],
643
+ ta: ["Tamil"],
644
+ km: ["Khmer"],
645
+ lo: ["Lao"],
646
+ my: ["Myanmar"]
647
+ };
648
+ var SUBTAG_SCRIPTS = {
649
+ Latn: ["Latin"],
650
+ Cyrl: ["Cyrillic", "Latin"],
651
+ Hans: ["Han", "Latin"],
652
+ Hant: ["Han", "Latin"],
653
+ Thai: ["Thai", "Latin"],
654
+ Arab: ["Arabic", "Latin"]
655
+ };
656
+ function inferScripts(locale) {
657
+ const parts = locale.split("-");
658
+ const subtag = parts.find((t) => /^[A-Z][a-z]{3}$/.test(t));
659
+ if (subtag && SUBTAG_SCRIPTS[subtag]) return SUBTAG_SCRIPTS[subtag];
660
+ const base = (parts[0] ?? "").toLowerCase();
661
+ if (LATIN_BASE.has(base)) return ["Latin"];
662
+ const primary = SCRIPT_TABLE[base];
663
+ if (primary) return [...primary, "Latin"];
664
+ return ["Latin"];
665
+ }
666
+ var BASELINE = String.raw`\p{White_Space}\p{Script=Common}\p{Script=Inherited}\p{Mark}`;
667
+
668
+ // src/i18n/core.ts
669
+ function toChain(fallback) {
670
+ return Array.isArray(fallback) ? fallback : fallback ? [fallback] : [];
671
+ }
672
+ function pickFromChain(value, chain) {
673
+ for (const fb of chain) {
674
+ if (fb === "any") {
675
+ const any = Object.values(value).find((v) => v !== "");
676
+ if (any !== void 0) return any;
677
+ } else if (value[fb] !== void 0 && value[fb] !== "") {
678
+ return value[fb];
679
+ }
680
+ }
681
+ return void 0;
682
+ }
683
+ function resolveI18nText(value, locale, fallback, field, opts) {
684
+ if (locale === "raw") {
685
+ return value;
686
+ }
687
+ if (!locale) {
688
+ throw new LocaleNotSpecifiedError(field ?? "<unknown>");
689
+ }
690
+ if (value[locale] !== void 0 && value[locale] !== "") {
691
+ return value[locale];
692
+ }
693
+ const policy = opts?.policy ?? "throw";
694
+ const callerChain = toChain(fallback);
695
+ const callerHit = pickFromChain(value, callerChain);
696
+ if (callerHit !== void 0) return callerHit;
697
+ if (policy === "substitute") {
698
+ const subHit = pickFromChain(value, toChain(opts?.substitute));
699
+ if (subHit !== void 0) return subHit;
700
+ if (opts?.smartSubstitute) {
701
+ const smartHit = pickNearestScript(value, locale);
702
+ if (smartHit !== void 0) return smartHit;
703
+ }
704
+ }
705
+ if (policy === "throw") {
706
+ throw new LocaleNotSpecifiedError(
707
+ field ?? "<unknown>",
708
+ `No translation available for locale "${locale}"` + (callerChain.length > 0 ? ` or fallback chain [${callerChain.join(", ")}]` : "") + "."
709
+ );
710
+ }
711
+ return null;
712
+ }
713
+ function pickNearestScript(value, target) {
714
+ const targetScript = inferScripts(target)[0] ?? "Latin";
715
+ let best;
716
+ for (const [loc, v] of Object.entries(value)) {
717
+ if (typeof v !== "string" || v === "") continue;
718
+ const s = inferScripts(loc)[0] ?? "Latin";
719
+ const score = s === targetScript ? 0 : s === "Latin" ? 1 : 2;
720
+ if (best === void 0 || score < best.score) best = { score, v };
721
+ if (score === 0) break;
722
+ }
723
+ return best?.v;
724
+ }
725
+ function applyAtPath(obj, path, locale, fallback, opts) {
726
+ const arrayIdx = path.indexOf("[].");
727
+ if (arrayIdx !== -1) {
728
+ const arrayKey = path.slice(0, arrayIdx);
729
+ const restPath = path.slice(arrayIdx + 3);
730
+ const arr = obj[arrayKey];
731
+ if (!Array.isArray(arr)) return obj;
732
+ return {
733
+ ...obj,
734
+ [arrayKey]: arr.map((item) => {
735
+ if (!item || typeof item !== "object" || Array.isArray(item)) return item;
736
+ return applyAtPath(item, restPath, locale, fallback, opts);
737
+ })
738
+ };
739
+ }
740
+ const dotIdx = path.indexOf(".");
741
+ if (dotIdx !== -1) {
742
+ const head = path.slice(0, dotIdx);
743
+ const rest = path.slice(dotIdx + 1);
744
+ const nested = obj[head];
745
+ if (!nested || typeof nested !== "object" || Array.isArray(nested)) return obj;
746
+ return {
747
+ ...obj,
748
+ [head]: applyAtPath(nested, rest, locale, fallback, opts)
749
+ };
750
+ }
751
+ const raw = obj[path];
752
+ if (raw === void 0 || raw === null) return obj;
753
+ if (typeof raw !== "object" || Array.isArray(raw)) return obj;
754
+ return {
755
+ ...obj,
756
+ [path]: resolveI18nText(raw, locale, fallback, path, opts)
757
+ };
758
+ }
759
+ function applyI18nLocale(record, i18nFields, locale, fallback, layer = "read") {
760
+ const fieldNames = Object.keys(i18nFields);
761
+ if (fieldNames.length === 0) return record;
762
+ let result = record;
763
+ for (const [field, descriptor] of Object.entries(i18nFields)) {
764
+ const { onMissing, substitute, smartSubstitute } = descriptor.options;
765
+ const opts = {
766
+ policy: resolvePolicy(onMissing, layer),
767
+ ...substitute !== void 0 ? { substitute } : {},
768
+ ...smartSubstitute ? { smartSubstitute } : {}
769
+ };
770
+ result = applyAtPath(result, field, locale, fallback, opts);
771
+ }
772
+ return result;
773
+ }
774
+
571
775
  // src/query/join.ts
572
776
  var DEFAULT_JOIN_MAX_ROWS = 5e4;
573
777
  var JOIN_WARN_FRACTION = 0.8;
@@ -596,15 +800,15 @@ function warnCeilingApproaching(target, side, rows, maxRows) {
596
800
  `[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.`
597
801
  );
598
802
  }
599
- function applyJoins(rows, joins, context) {
803
+ function applyJoins(rows, joins, context, locale) {
600
804
  if (joins.length === 0) return [...rows];
601
805
  let result = [...rows];
602
806
  for (const leg of joins) {
603
- result = applyOneJoin(result, leg, context);
807
+ result = applyOneJoin(result, leg, context, locale);
604
808
  }
605
809
  return result;
606
810
  }
607
- function applyOneJoin(leftRows, leg, context) {
811
+ function applyOneJoin(leftRows, leg, context, locale) {
608
812
  if (leg.isDictJoin) {
609
813
  const dictSource = context.resolveDictSource?.(leg.field);
610
814
  if (!dictSource) {
@@ -659,24 +863,27 @@ function applyOneJoin(leftRows, leg, context) {
659
863
  if (rightSnapshot.length > maxRows * JOIN_WARN_FRACTION) {
660
864
  warnCeilingApproaching(leg.target, "right", rightSnapshot.length, maxRows);
661
865
  }
866
+ const effLocale = locale ?? context.defaultLocale;
867
+ const i18nResolve = effLocale !== void 0 && source.i18nFields !== void 0 ? (right) => right !== null && typeof right === "object" ? applyI18nLocale(right, source.i18nFields, effLocale, void 0, "join") : right : void 0;
662
868
  const strategy = leg.strategy ?? (source.lookupById ? "nested" : "hash");
663
869
  if (strategy === "nested" && source.lookupById) {
664
870
  const lookup = (id) => source.lookupById?.(id);
665
- return nestedLoopJoin(leftRows, leg, lookup);
871
+ return nestedLoopJoin(leftRows, leg, lookup, i18nResolve);
666
872
  }
667
- return hashJoin(leftRows, leg, rightSnapshot);
873
+ return hashJoin(leftRows, leg, rightSnapshot, i18nResolve);
668
874
  }
669
- function nestedLoopJoin(leftRows, leg, lookupById) {
875
+ function nestedLoopJoin(leftRows, leg, lookupById, i18nResolve) {
670
876
  const out = [];
671
877
  for (const left of leftRows) {
672
878
  const rawId = readPath(left, leg.field);
673
879
  const key = coerceRefKey(rawId);
674
- const right = key === null ? void 0 : lookupById(key);
880
+ let right = key === null ? void 0 : lookupById(key);
881
+ if (i18nResolve && right !== void 0) right = i18nResolve(right);
675
882
  out.push(attachJoin(left, leg, right, rawId));
676
883
  }
677
884
  return out;
678
885
  }
679
- function hashJoin(leftRows, leg, rightSnapshot) {
886
+ function hashJoin(leftRows, leg, rightSnapshot, i18nResolve) {
680
887
  const rightMap = /* @__PURE__ */ new Map();
681
888
  for (const record of rightSnapshot) {
682
889
  const rawId = readPath(record, "id");
@@ -689,7 +896,8 @@ function hashJoin(leftRows, leg, rightSnapshot) {
689
896
  for (const left of leftRows) {
690
897
  const rawId = readPath(left, leg.field);
691
898
  const key = coerceRefKey(rawId);
692
- const right = key === null ? void 0 : rightMap.get(key);
899
+ let right = key === null ? void 0 : rightMap.get(key);
900
+ if (i18nResolve && right !== void 0) right = i18nResolve(right);
693
901
  out.push(attachJoin(left, leg, right, rawId));
694
902
  }
695
903
  return out;
@@ -1362,11 +1570,16 @@ var Query = class _Query {
1362
1570
  this.predicates
1363
1571
  );
1364
1572
  }
1365
- /** Sort by a field. Subsequent calls are tie-breakers. */
1366
- orderBy(field, direction = "asc") {
1573
+ /**
1574
+ * Sort by a field. Subsequent calls are tie-breakers. Pass
1575
+ * `{ by: 'label' }` to sort a `dictKey`/`staticDict` field by its resolved
1576
+ * label at the query locale instead of the stored code (#285).
1577
+ */
1578
+ orderBy(field, direction = "asc", opts) {
1579
+ const entry = opts?.by === "label" ? { field, direction, by: "label" } : { field, direction };
1367
1580
  return new _Query(
1368
1581
  this.source,
1369
- { ...this.plan, orderBy: [...this.plan.orderBy, { field, direction }] },
1582
+ { ...this.plan, orderBy: [...this.plan.orderBy, entry] },
1370
1583
  this.joinContext,
1371
1584
  this.aggregateStrategy,
1372
1585
  this.predicates
@@ -1569,16 +1782,21 @@ var Query = class _Query {
1569
1782
  * carries any join legs, they are applied after `where` / `orderBy`
1570
1783
  * / `limit` / `offset` narrow the left set. See the `.join()` doc
1571
1784
  * for the ordering rationale.
1785
+ *
1786
+ * `opts.locale` (#285 §3) resolves JOINED right-side i18n fields at the
1787
+ * `join` layer to that locale; without it, the owning collection's default
1788
+ * locale applies, and a locale-less query leaves joined i18n fields raw.
1789
+ * (Left/base i18n fields are resolved by `get`/`list`, not here.)
1572
1790
  */
1573
- toArray() {
1574
- const base = this.decodeMoney(executePlanWithSource(this.source, this.plan, this.joinContext));
1791
+ toArray(opts) {
1792
+ const base = this.decodeMoney(executePlanWithSource(this.source, this.plan, this.joinContext, opts?.locale));
1575
1793
  if (this.plan.joins.length === 0) return base;
1576
1794
  if (!this.joinContext) {
1577
1795
  throw new Error(
1578
1796
  `Query.toArray(): plan carries ${this.plan.joins.length} join leg(s) but no JoinContext is attached. This usually means the Query was constructed via the raw Query constructor with a plan that had joins pre-populated. Use collection.query().join(...) instead.`
1579
1797
  );
1580
1798
  }
1581
- return applyJoins(base, this.plan.joins, this.joinContext);
1799
+ return applyJoins(base, this.plan.joins, this.joinContext, opts?.locale);
1582
1800
  }
1583
1801
  /**
1584
1802
  * Decode this source's money fields on read (stored scaled-int → canonical
@@ -1597,9 +1815,9 @@ var Query = class _Query {
1597
1815
  if (!moneyFields || Object.keys(moneyFields).length === 0) return records;
1598
1816
  return records.map((r) => decodeMoneyFields(r, moneyFields, "raw"));
1599
1817
  }
1600
- /** Return the first matching record, or null. Joins are applied. */
1601
- first() {
1602
- const arr = this.limit(1).toArray();
1818
+ /** Return the first matching record, or null. Joins are applied. `opts.locale` resolves joined i18n fields (#285 §3). */
1819
+ first(opts) {
1820
+ const arr = this.limit(1).toArray(opts);
1603
1821
  return arr[0] ?? null;
1604
1822
  }
1605
1823
  /**
@@ -1842,7 +2060,7 @@ var Query = class _Query {
1842
2060
  return serializePlan(this.plan);
1843
2061
  }
1844
2062
  };
1845
- function executePlanWithSource(source, plan, joinContext) {
2063
+ function executePlanWithSource(source, plan, joinContext, locale) {
1846
2064
  const hasCrossJoins = plan.clauses.some((c) => c.type === "crossJoin");
1847
2065
  let result;
1848
2066
  if (hasCrossJoins) {
@@ -1857,7 +2075,8 @@ function executePlanWithSource(source, plan, joinContext) {
1857
2075
  result = remainingClauses.length === 0 ? [...candidates] : filterRecords(candidates, remainingClauses, fnViewDecoder(source));
1858
2076
  }
1859
2077
  if (plan.orderBy.length > 0) {
1860
- result = sortRecords(result, plan.orderBy, source.moneyFields);
2078
+ const labelMaps = buildOrderLabelMaps(plan.orderBy, joinContext, locale);
2079
+ result = sortRecords(result, plan.orderBy, source.moneyFields, labelMaps);
1861
2080
  }
1862
2081
  if (plan.offset > 0) {
1863
2082
  result = result.slice(plan.offset);
@@ -2014,11 +2233,19 @@ function applyCrossJoin(leftRel, clause, rightSource) {
2014
2233
  }
2015
2234
  return expanded;
2016
2235
  }
2017
- function sortRecords(records, orderBy, moneyFields) {
2236
+ function sortRecords(records, orderBy, moneyFields, labelMaps) {
2018
2237
  return [...records].sort((a, b) => {
2019
- for (const { field, direction } of orderBy) {
2020
- const av = readField(a, field);
2021
- const bv = readField(b, field);
2238
+ for (const { field, direction, by } of orderBy) {
2239
+ let av = readField(a, field);
2240
+ let bv = readField(b, field);
2241
+ const labelMap = by === "label" ? labelMaps?.get(field) : void 0;
2242
+ if (labelMap) {
2243
+ av = (typeof av === "string" ? labelMap.get(av) : void 0) ?? av;
2244
+ bv = (typeof bv === "string" ? labelMap.get(bv) : void 0) ?? bv;
2245
+ const cmp2 = compareValues(av, bv);
2246
+ if (cmp2 !== 0) return direction === "asc" ? cmp2 : -cmp2;
2247
+ continue;
2248
+ }
2022
2249
  const desc = moneyFields?.[field];
2023
2250
  const cmp = desc ? compareMoney(av, bv, desc) : compareValues(av, bv);
2024
2251
  if (cmp !== 0) return direction === "asc" ? cmp : -cmp;
@@ -2026,6 +2253,28 @@ function sortRecords(records, orderBy, moneyFields) {
2026
2253
  return 0;
2027
2254
  });
2028
2255
  }
2256
+ function buildOrderLabelMaps(orderBy, joinContext, locale) {
2257
+ if (!joinContext?.resolveDictSource) return void 0;
2258
+ const resolveDict = joinContext.resolveDictSource.bind(joinContext);
2259
+ let maps;
2260
+ for (const { field, by } of orderBy) {
2261
+ if (by !== "label") continue;
2262
+ const dictSource = resolveDict(field);
2263
+ if (!dictSource) continue;
2264
+ const loc = locale ?? dictSource.displayLocale;
2265
+ if (loc === void 0) continue;
2266
+ const codeToLabel = /* @__PURE__ */ new Map();
2267
+ for (const entry of dictSource.snapshot()) {
2268
+ const k = entry["key"];
2269
+ const labels = entry["labels"];
2270
+ const label = labels?.[loc];
2271
+ if (typeof k === "string" && typeof label === "string") codeToLabel.set(k, label);
2272
+ }
2273
+ ;
2274
+ (maps ??= /* @__PURE__ */ new Map()).set(field, codeToLabel);
2275
+ }
2276
+ return maps;
2277
+ }
2029
2278
  function compareMoney(a, b, desc) {
2030
2279
  const av = moneyScaledValue(a, desc);
2031
2280
  const bv = moneyScaledValue(b, desc);
@@ -2654,9 +2903,29 @@ var GroupedAggregation = class {
2654
2903
  upstreams;
2655
2904
  dictLabelResolver;
2656
2905
  fields;
2657
- /** Execute the query, group, reduce, and return an array of rows. */
2658
- run() {
2659
- return groupAndReduce(this.executeRecords(), this.fields, this.spec);
2906
+ /**
2907
+ * Execute the query, group, reduce, and return an array of rows.
2908
+ *
2909
+ * `opts` (#285 query-form MV grouping): when a `locale` + `i18nFields` are
2910
+ * given, the declared group-key `i18nText` fields are resolved to that locale
2911
+ * at the `mv` layer BEFORE bucketing — so an i18n group key is a stable string
2912
+ * instead of a raw `{locale}` map. The MV executor passes the MV's
2913
+ * `i18nLocale`/`i18nFields`; ordinary `.run()` callers pass nothing and are
2914
+ * unaffected.
2915
+ */
2916
+ run(opts) {
2917
+ let records = this.executeRecords();
2918
+ if (opts?.locale !== void 0 && opts.i18nFields !== void 0) {
2919
+ const groupI18n = {};
2920
+ for (const f of this.fields) {
2921
+ const d = opts.i18nFields[f];
2922
+ if (d !== void 0) groupI18n[f] = d;
2923
+ }
2924
+ if (Object.keys(groupI18n).length > 0) {
2925
+ records = records.map((r) => applyI18nLocale(r, groupI18n, opts.locale, void 0, "mv"));
2926
+ }
2927
+ }
2928
+ return groupAndReduce(records, this.fields, this.spec);
2660
2929
  }
2661
2930
  /**
2662
2931
  * Execute the query, group, reduce, and resolve `<field>Label` for