@nicia-ai/typegraph 0.39.0 → 0.41.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 (255) hide show
  1. package/dist/backend/drizzle/indexes.cjs +8 -10
  2. package/dist/backend/drizzle/indexes.d.cts +2 -2
  3. package/dist/backend/drizzle/indexes.d.ts +2 -2
  4. package/dist/backend/drizzle/indexes.js +4 -6
  5. package/dist/backend/index.cjs +60 -39
  6. package/dist/backend/index.d.cts +60 -1
  7. package/dist/backend/index.d.ts +60 -1
  8. package/dist/backend/index.js +12 -3
  9. package/dist/backend/postgres/index.cjs +24 -26
  10. package/dist/backend/postgres/index.d.cts +6 -6
  11. package/dist/backend/postgres/index.d.ts +6 -6
  12. package/dist/backend/postgres/index.js +11 -13
  13. package/dist/backend/postgres/pglite-store.cjs +25 -26
  14. package/dist/backend/postgres/pglite-store.cjs.map +1 -1
  15. package/dist/backend/postgres/pglite-store.d.cts +6 -5
  16. package/dist/backend/postgres/pglite-store.d.ts +6 -5
  17. package/dist/backend/postgres/pglite-store.js +21 -22
  18. package/dist/backend/postgres/pglite-store.js.map +1 -1
  19. package/dist/backend/postgres/pglite.cjs +13 -15
  20. package/dist/backend/postgres/pglite.d.cts +3 -3
  21. package/dist/backend/postgres/pglite.d.ts +3 -3
  22. package/dist/backend/postgres/pglite.js +12 -14
  23. package/dist/backend/sqlite/index.cjs +25 -27
  24. package/dist/backend/sqlite/index.d.cts +6 -6
  25. package/dist/backend/sqlite/index.d.ts +6 -6
  26. package/dist/backend/sqlite/index.js +9 -11
  27. package/dist/backend/sqlite/libsql.cjs +15 -17
  28. package/dist/backend/sqlite/libsql.cjs.map +1 -1
  29. package/dist/backend/sqlite/libsql.d.cts +3 -3
  30. package/dist/backend/sqlite/libsql.d.ts +3 -3
  31. package/dist/backend/sqlite/libsql.js +14 -16
  32. package/dist/backend/sqlite/libsql.js.map +1 -1
  33. package/dist/backend/sqlite/local-store.cjs +26 -27
  34. package/dist/backend/sqlite/local-store.cjs.map +1 -1
  35. package/dist/backend/sqlite/local-store.d.cts +6 -5
  36. package/dist/backend/sqlite/local-store.d.ts +6 -5
  37. package/dist/backend/sqlite/local-store.js +22 -23
  38. package/dist/backend/sqlite/local-store.js.map +1 -1
  39. package/dist/backend/sqlite/local.cjs +14 -16
  40. package/dist/backend/sqlite/local.d.cts +3 -3
  41. package/dist/backend/sqlite/local.d.ts +3 -3
  42. package/dist/backend/sqlite/local.js +12 -14
  43. package/dist/{chunk-U4JDJKPD.js → chunk-2I3DNNBU.js} +4 -4
  44. package/dist/{chunk-U4JDJKPD.js.map → chunk-2I3DNNBU.js.map} +1 -1
  45. package/dist/{chunk-NPWACFQJ.cjs → chunk-2J5NMMVR.cjs} +43 -43
  46. package/dist/{chunk-NPWACFQJ.cjs.map → chunk-2J5NMMVR.cjs.map} +1 -1
  47. package/dist/{chunk-3YFDFOYB.cjs → chunk-2X73QTIC.cjs} +12 -13
  48. package/dist/chunk-2X73QTIC.cjs.map +1 -0
  49. package/dist/chunk-3SHAUJRB.js +79 -0
  50. package/dist/chunk-3SHAUJRB.js.map +1 -0
  51. package/dist/{chunk-3SK4SVTW.js → chunk-53BSOG3O.js} +8 -7
  52. package/dist/chunk-53BSOG3O.js.map +1 -0
  53. package/dist/chunk-5J4VNCUD.js +856 -0
  54. package/dist/chunk-5J4VNCUD.js.map +1 -0
  55. package/dist/chunk-5YBDB7UG.cjs +12 -0
  56. package/dist/{chunk-FMNUSGZ4.cjs.map → chunk-5YBDB7UG.cjs.map} +1 -1
  57. package/dist/{chunk-6XDBRDZE.js → chunk-6N7QBIWN.js} +7 -3
  58. package/dist/chunk-6N7QBIWN.js.map +1 -0
  59. package/dist/{chunk-EZH7FNUS.js → chunk-6QP4QXBR.js} +3 -3
  60. package/dist/{chunk-EZH7FNUS.js.map → chunk-6QP4QXBR.js.map} +1 -1
  61. package/dist/{chunk-E6TXEISH.cjs → chunk-7UTUKH4E.cjs} +4 -4
  62. package/dist/{chunk-E6TXEISH.cjs.map → chunk-7UTUKH4E.cjs.map} +1 -1
  63. package/dist/chunk-7WLEQIHA.cjs +605 -0
  64. package/dist/chunk-7WLEQIHA.cjs.map +1 -0
  65. package/dist/{chunk-BQITNFQJ.js → chunk-AQVDAKXH.js} +3 -3
  66. package/dist/{chunk-BQITNFQJ.js.map → chunk-AQVDAKXH.js.map} +1 -1
  67. package/dist/{chunk-X6CNEA32.js → chunk-BUZWMDNL.js} +5 -5
  68. package/dist/{chunk-X6CNEA32.js.map → chunk-BUZWMDNL.js.map} +1 -1
  69. package/dist/{chunk-7M3NACL3.cjs → chunk-CKFBZ4LV.cjs} +4 -4
  70. package/dist/{chunk-7M3NACL3.cjs.map → chunk-CKFBZ4LV.cjs.map} +1 -1
  71. package/dist/{chunk-IFRPHG7O.js → chunk-EFZ4S22A.js} +10 -9
  72. package/dist/chunk-EFZ4S22A.js.map +1 -0
  73. package/dist/chunk-ELA3V6UN.js +601 -0
  74. package/dist/chunk-ELA3V6UN.js.map +1 -0
  75. package/dist/chunk-HAQVISUF.cjs +1098 -0
  76. package/dist/chunk-HAQVISUF.cjs.map +1 -0
  77. package/dist/{chunk-BKAKAVRW.cjs → chunk-HQRZEYYB.cjs} +44 -44
  78. package/dist/{chunk-BKAKAVRW.cjs.map → chunk-HQRZEYYB.cjs.map} +1 -1
  79. package/dist/{chunk-KAFXPB2L.js → chunk-I5CRUPKO.js} +9 -10
  80. package/dist/{chunk-KAFXPB2L.js.map → chunk-I5CRUPKO.js.map} +1 -1
  81. package/dist/{chunk-IFDXG2YJ.js → chunk-JHK6NPFV.js} +217 -305
  82. package/dist/chunk-JHK6NPFV.js.map +1 -0
  83. package/dist/{chunk-VXAFOF6Z.cjs → chunk-JP5EICR6.cjs} +12 -7
  84. package/dist/chunk-JP5EICR6.cjs.map +1 -0
  85. package/dist/chunk-JZYMOHHM.cjs +226 -0
  86. package/dist/chunk-JZYMOHHM.cjs.map +1 -0
  87. package/dist/{chunk-ERZ4QPQX.js → chunk-K6CD6W5J.js} +5 -5
  88. package/dist/{chunk-ERZ4QPQX.js.map → chunk-K6CD6W5J.js.map} +1 -1
  89. package/dist/{chunk-JD2YC62H.cjs → chunk-KHNKYSGP.cjs} +34 -34
  90. package/dist/{chunk-JD2YC62H.cjs.map → chunk-KHNKYSGP.cjs.map} +1 -1
  91. package/dist/{chunk-CWX77JB4.cjs → chunk-KLR77R5A.cjs} +13 -13
  92. package/dist/{chunk-CWX77JB4.cjs.map → chunk-KLR77R5A.cjs.map} +1 -1
  93. package/dist/chunk-KOI7UEI5.js +81 -0
  94. package/dist/chunk-KOI7UEI5.js.map +1 -0
  95. package/dist/{chunk-AOL64O4Z.js → chunk-L3DDZUZP.js} +3 -3
  96. package/dist/{chunk-AOL64O4Z.js.map → chunk-L3DDZUZP.js.map} +1 -1
  97. package/dist/{chunk-PZHC5GCD.js → chunk-L5ET7FYQ.js} +3 -3
  98. package/dist/{chunk-PZHC5GCD.js.map → chunk-L5ET7FYQ.js.map} +1 -1
  99. package/dist/{chunk-B63IFHXR.cjs → chunk-LFFVD5ZR.cjs} +41 -41
  100. package/dist/{chunk-B63IFHXR.cjs.map → chunk-LFFVD5ZR.cjs.map} +1 -1
  101. package/dist/chunk-LL5D5T5W.cjs +157 -0
  102. package/dist/chunk-LL5D5T5W.cjs.map +1 -0
  103. package/dist/{chunk-GUUWKPTK.cjs → chunk-LLE25NRD.cjs} +7 -7
  104. package/dist/{chunk-GUUWKPTK.cjs.map → chunk-LLE25NRD.cjs.map} +1 -1
  105. package/dist/chunk-LLHMAHG4.cjs +886 -0
  106. package/dist/chunk-LLHMAHG4.cjs.map +1 -0
  107. package/dist/{chunk-6SRLCSAV.cjs → chunk-LOKG3KQV.cjs} +962 -875
  108. package/dist/chunk-LOKG3KQV.cjs.map +1 -0
  109. package/dist/{chunk-KIZSHRUI.cjs → chunk-M2RPZS7J.cjs} +10 -10
  110. package/dist/{chunk-KIZSHRUI.cjs.map → chunk-M2RPZS7J.cjs.map} +1 -1
  111. package/dist/chunk-MNURF4RF.cjs +85 -0
  112. package/dist/chunk-MNURF4RF.cjs.map +1 -0
  113. package/dist/{chunk-CBK2IVI2.js → chunk-MQBF3XGY.js} +119 -32
  114. package/dist/chunk-MQBF3XGY.js.map +1 -0
  115. package/dist/chunk-QCKD3RCI.cjs +83 -0
  116. package/dist/chunk-QCKD3RCI.cjs.map +1 -0
  117. package/dist/chunk-QOHTVDHU.js +144 -0
  118. package/dist/chunk-QOHTVDHU.js.map +1 -0
  119. package/dist/{chunk-HTQOBY75.cjs → chunk-QXKVUJLI.cjs} +110 -109
  120. package/dist/chunk-QXKVUJLI.cjs.map +1 -0
  121. package/dist/{chunk-GNPGGLAE.cjs → chunk-QYDUCWD2.cjs} +4 -4
  122. package/dist/{chunk-GNPGGLAE.cjs.map → chunk-QYDUCWD2.cjs.map} +1 -1
  123. package/dist/{chunk-DOKUXLFH.js → chunk-QZYGZVUI.js} +34 -34
  124. package/dist/chunk-QZYGZVUI.js.map +1 -0
  125. package/dist/{chunk-GKQU44SQ.cjs → chunk-SAMJLDGG.cjs} +103 -103
  126. package/dist/{chunk-GKQU44SQ.cjs.map → chunk-SAMJLDGG.cjs.map} +1 -1
  127. package/dist/{chunk-DOVMTPKE.cjs → chunk-SE422RES.cjs} +27 -27
  128. package/dist/{chunk-DOVMTPKE.cjs.map → chunk-SE422RES.cjs.map} +1 -1
  129. package/dist/{chunk-5ELKD2FQ.cjs → chunk-UCHW2MGP.cjs} +330 -431
  130. package/dist/chunk-UCHW2MGP.cjs.map +1 -0
  131. package/dist/{chunk-Y6UA55YS.cjs → chunk-UDS5DZNY.cjs} +495 -1095
  132. package/dist/chunk-UDS5DZNY.cjs.map +1 -0
  133. package/dist/{chunk-SU7VQOJ3.js → chunk-V3S74J44.js} +9 -5
  134. package/dist/chunk-V3S74J44.js.map +1 -0
  135. package/dist/{chunk-VDYA2HMS.js → chunk-VWEFXG73.js} +3 -3
  136. package/dist/{chunk-VDYA2HMS.js.map → chunk-VWEFXG73.js.map} +1 -1
  137. package/dist/{chunk-KXFUQNF2.js → chunk-W66YCXWT.js} +463 -1047
  138. package/dist/chunk-W66YCXWT.js.map +1 -0
  139. package/dist/{chunk-NQBYTLPW.js → chunk-XMEYZYGE.js} +6 -6
  140. package/dist/{chunk-NQBYTLPW.js.map → chunk-XMEYZYGE.js.map} +1 -1
  141. package/dist/{chunk-G3CSQLLT.js → chunk-Y5UC3IXF.js} +461 -6
  142. package/dist/chunk-Y5UC3IXF.js.map +1 -0
  143. package/dist/{chunk-SDHV2MWU.js → chunk-YGX4PMG6.js} +5 -5
  144. package/dist/{chunk-SDHV2MWU.js.map → chunk-YGX4PMG6.js.map} +1 -1
  145. package/dist/{chunk-E2Q7SP2K.cjs → chunk-YIX3BEBR.cjs} +86 -85
  146. package/dist/chunk-YIX3BEBR.cjs.map +1 -0
  147. package/dist/{chunk-X6RDQ5NB.cjs → chunk-YX3H63VV.cjs} +8 -2
  148. package/dist/chunk-YX3H63VV.cjs.map +1 -0
  149. package/dist/chunk-YYLMXERH.js +211 -0
  150. package/dist/chunk-YYLMXERH.js.map +1 -0
  151. package/dist/{chunk-YPUNPG2T.js → chunk-ZE7E46IZ.js} +5 -5
  152. package/dist/{chunk-YPUNPG2T.js.map → chunk-ZE7E46IZ.js.map} +1 -1
  153. package/dist/{chunk-Z2PPIVOO.js → chunk-ZVME6OSV.js} +5 -5
  154. package/dist/{chunk-Z2PPIVOO.js.map → chunk-ZVME6OSV.js.map} +1 -1
  155. package/dist/core/index.cjs +15 -3
  156. package/dist/core/index.d.cts +4 -3
  157. package/dist/core/index.d.ts +4 -3
  158. package/dist/core/index.js +2 -2
  159. package/dist/{ddl-J6sDyABg.d.cts → ddl-BCXFRLWg.d.cts} +3 -3
  160. package/dist/{ddl-Dx3Z0_WC.d.ts → ddl-ByLmGgn9.d.ts} +3 -3
  161. package/dist/{define-graph-DRo9xpYN.d.ts → define-graph-BSviZubs.d.ts} +1 -1
  162. package/dist/{define-graph-CzEvA_8F.d.cts → define-graph-XyJheaFm.d.cts} +1 -1
  163. package/dist/graph-merge/index.cjs +37 -38
  164. package/dist/graph-merge/index.cjs.map +1 -1
  165. package/dist/graph-merge/index.d.cts +6 -5
  166. package/dist/graph-merge/index.d.ts +6 -5
  167. package/dist/graph-merge/index.js +15 -16
  168. package/dist/graph-merge/index.js.map +1 -1
  169. package/dist/index.cjs +146 -117
  170. package/dist/index.cjs.map +1 -1
  171. package/dist/index.d.cts +12 -10
  172. package/dist/index.d.ts +12 -10
  173. package/dist/index.js +23 -22
  174. package/dist/index.js.map +1 -1
  175. package/dist/indexes/index.cjs +12 -14
  176. package/dist/indexes/index.d.cts +5 -5
  177. package/dist/indexes/index.d.ts +5 -5
  178. package/dist/indexes/index.js +5 -7
  179. package/dist/interchange/index.cjs +28 -29
  180. package/dist/interchange/index.cjs.map +1 -1
  181. package/dist/interchange/index.d.cts +6 -5
  182. package/dist/interchange/index.d.ts +6 -5
  183. package/dist/interchange/index.js +9 -10
  184. package/dist/interchange/index.js.map +1 -1
  185. package/dist/{manager-CASfhmzV.d.ts → manager-C7iC5bk_.d.ts} +27 -3
  186. package/dist/{manager-nCEJiYBb.d.cts → manager-Dm6MCYO7.d.cts} +27 -3
  187. package/dist/{postgres-Cl1ZAN1G.d.ts → postgres-Cb6ceh4-.d.ts} +100 -49
  188. package/dist/{postgres-DMgIKQU-.d.cts → postgres-DZxwzCQ8.d.cts} +100 -49
  189. package/dist/profiler/index.d.cts +8 -7
  190. package/dist/profiler/index.d.ts +8 -7
  191. package/dist/provenance/index.cjs +19 -19
  192. package/dist/provenance/index.d.cts +6 -5
  193. package/dist/provenance/index.d.ts +6 -5
  194. package/dist/provenance/index.js +6 -6
  195. package/dist/schema/index.cjs +33 -101
  196. package/dist/schema/index.cjs.map +1 -1
  197. package/dist/schema/index.d.cts +55 -55
  198. package/dist/schema/index.d.ts +55 -55
  199. package/dist/schema/index.js +6 -86
  200. package/dist/schema/index.js.map +1 -1
  201. package/dist/{temporal-DqtOEo_B.d.ts → searchable-Cet4Oztt.d.ts} +3 -58
  202. package/dist/{temporal-BC_NQV5Y.d.cts → searchable-aUaKh3_r.d.cts} +3 -58
  203. package/dist/{sqlite-BDkW39aa.d.cts → sqlite-Cb3Ilj9_.d.ts} +124 -97
  204. package/dist/{sqlite-CYfhvESj.d.ts → sqlite-Dxklpizv.d.cts} +124 -97
  205. package/dist/{store-view-CLIhwMMX.d.ts → store-view-BDjGFjpN.d.ts} +67 -23
  206. package/dist/{store-view-BJd6Vwpt.d.cts → store-view-PCT7vTKH.d.cts} +67 -23
  207. package/dist/temporal-CyFsSPe8.d.ts +73 -0
  208. package/dist/temporal-Dn_JADWY.d.cts +73 -0
  209. package/dist/{types-CUevi_D1.d.ts → types-CFZiEEPh.d.ts} +1 -1
  210. package/dist/{types-COq3-vMC.d.cts → types-CsaG00wS.d.cts} +1 -1
  211. package/dist/{index-Bq7vSPHy.d.ts → types-D-vOo_pM.d.ts} +2 -2
  212. package/dist/{index-CrFL_ENI.d.cts → types-ho4DJJb_.d.cts} +2 -2
  213. package/dist/{where-BdE_cYtx.d.ts → where-DLYaXa4L.d.ts} +1 -1
  214. package/dist/{where-C92TXCzT.d.cts → where-udes1WRA.d.cts} +1 -1
  215. package/package.json +1 -1
  216. package/dist/chunk-3SK4SVTW.js.map +0 -1
  217. package/dist/chunk-3YFDFOYB.cjs.map +0 -1
  218. package/dist/chunk-5ELKD2FQ.cjs.map +0 -1
  219. package/dist/chunk-6SRLCSAV.cjs.map +0 -1
  220. package/dist/chunk-6XDBRDZE.js.map +0 -1
  221. package/dist/chunk-CBK2IVI2.js.map +0 -1
  222. package/dist/chunk-DDCIXXOO.js +0 -9
  223. package/dist/chunk-DDCIXXOO.js.map +0 -1
  224. package/dist/chunk-DDCYVIVV.cjs +0 -44
  225. package/dist/chunk-DDCYVIVV.cjs.map +0 -1
  226. package/dist/chunk-DOKUXLFH.js.map +0 -1
  227. package/dist/chunk-E2Q7SP2K.cjs.map +0 -1
  228. package/dist/chunk-EOJFGECD.cjs +0 -284
  229. package/dist/chunk-EOJFGECD.cjs.map +0 -1
  230. package/dist/chunk-FMNUSGZ4.cjs +0 -12
  231. package/dist/chunk-G3CSQLLT.js.map +0 -1
  232. package/dist/chunk-HTQOBY75.cjs.map +0 -1
  233. package/dist/chunk-I6FX7AAG.js +0 -39
  234. package/dist/chunk-I6FX7AAG.js.map +0 -1
  235. package/dist/chunk-IFDXG2YJ.js.map +0 -1
  236. package/dist/chunk-IFRPHG7O.js.map +0 -1
  237. package/dist/chunk-J6IJARLG.js +0 -94
  238. package/dist/chunk-J6IJARLG.js.map +0 -1
  239. package/dist/chunk-KXFUQNF2.js.map +0 -1
  240. package/dist/chunk-MTNEGGM2.js +0 -273
  241. package/dist/chunk-MTNEGGM2.js.map +0 -1
  242. package/dist/chunk-SU7VQOJ3.js.map +0 -1
  243. package/dist/chunk-SVUKGWSN.cjs +0 -102
  244. package/dist/chunk-SVUKGWSN.cjs.map +0 -1
  245. package/dist/chunk-UH2USOMG.cjs +0 -627
  246. package/dist/chunk-UH2USOMG.cjs.map +0 -1
  247. package/dist/chunk-VXAFOF6Z.cjs.map +0 -1
  248. package/dist/chunk-X6RDQ5NB.cjs.map +0 -1
  249. package/dist/chunk-Y6UA55YS.cjs.map +0 -1
  250. package/dist/chunk-Y7M44XEK.js +0 -462
  251. package/dist/chunk-Y7M44XEK.js.map +0 -1
  252. package/dist/chunk-Z5QHVL5U.cjs +0 -12
  253. package/dist/chunk-Z5QHVL5U.cjs.map +0 -1
  254. package/dist/chunk-ZKZAIX42.cjs +0 -479
  255. package/dist/chunk-ZKZAIX42.cjs.map +0 -1
@@ -1,102 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkDDCYVIVV_cjs = require('./chunk-DDCYVIVV.cjs');
4
- var chunkSAFZ6JTI_cjs = require('./chunk-SAFZ6JTI.cjs');
5
-
6
- // src/core/temporal.ts
7
- var RECORDED_MAX = "9999-12-31T23:59:59.999Z";
8
- function assertValidRecordedInstant(value, path) {
9
- chunkDDCYVIVV_cjs.validateCanonicalIsoDate(value, path);
10
- if (value >= RECORDED_MAX) {
11
- throw new chunkSAFZ6JTI_cjs.ValidationError(
12
- `${path} must be before the recorded-time open sentinel ${RECORDED_MAX}.`,
13
- {
14
- issues: [
15
- {
16
- path,
17
- message: `Expected a timestamp before ${RECORDED_MAX}, got "${value}"`
18
- }
19
- ]
20
- },
21
- {
22
- suggestion: "Use a real recorded-time commit instant, not the open-interval sentinel."
23
- }
24
- );
25
- }
26
- }
27
- function asRecordedInstant(value) {
28
- assertValidRecordedInstant(value, "asRecordedInstant");
29
- return value;
30
- }
31
- function resolveReadCoordinate(mode, asOf, suggestion) {
32
- if (mode !== "asOf" && asOf !== void 0) {
33
- throw new chunkSAFZ6JTI_cjs.ValidationError(
34
- `Temporal mode "${mode}" does not take an asOf timestamp.`,
35
- {
36
- issues: [
37
- {
38
- path: "asOf",
39
- message: `asOf is only valid with mode "asOf", not "${mode}"`
40
- }
41
- ]
42
- },
43
- {
44
- suggestion: 'Pin an instant with store.asOf(timestamp) or store.view({ mode: "asOf", asOf }); drop asOf for other modes.'
45
- }
46
- );
47
- }
48
- assertValidAsOf(
49
- mode,
50
- asOf,
51
- suggestion === void 0 ? void 0 : { suggestion }
52
- );
53
- return { valid: asOf === void 0 ? { mode } : { mode, asOf } };
54
- }
55
- function withRecordedCoordinate(coordinate, recordedAsOf) {
56
- assertValidRecordedInstant(recordedAsOf, "asOfRecorded");
57
- return {
58
- ...coordinate,
59
- recorded: { asOf: recordedAsOf }
60
- };
61
- }
62
- function assertValidAsOf(mode, asOf, options) {
63
- if (mode === "asOf" && asOf === void 0) {
64
- throw new chunkSAFZ6JTI_cjs.ValidationError(
65
- 'Temporal mode "asOf" requires a timestamp',
66
- {
67
- issues: [
68
- { path: "asOf", message: "Timestamp is required for asOf mode" }
69
- ]
70
- },
71
- {
72
- suggestion: options?.suggestion ?? 'Provide an ISO-8601 timestamp for asOf mode, e.g. "2026-01-01T00:00:00.000Z".'
73
- }
74
- );
75
- }
76
- if (asOf !== void 0) {
77
- chunkDDCYVIVV_cjs.validateCanonicalIsoDate(asOf, "asOf");
78
- }
79
- }
80
- function describeCoordinate(coordinate) {
81
- const { mode, asOf } = coordinate.valid;
82
- const valid = asOf === void 0 ? `mode "${mode}"` : `mode "${mode}" asOf ${asOf}`;
83
- return coordinate.recorded === void 0 ? valid : `${valid}, recorded asOf ${coordinate.recorded.asOf}`;
84
- }
85
- function coordinateContext(coordinate) {
86
- const { mode, asOf } = coordinate.valid;
87
- return {
88
- temporalMode: mode,
89
- ...asOf !== void 0 && { asOf },
90
- ...coordinate.recorded === void 0 ? {} : { recordedAsOf: coordinate.recorded.asOf }
91
- };
92
- }
93
-
94
- exports.RECORDED_MAX = RECORDED_MAX;
95
- exports.asRecordedInstant = asRecordedInstant;
96
- exports.assertValidRecordedInstant = assertValidRecordedInstant;
97
- exports.coordinateContext = coordinateContext;
98
- exports.describeCoordinate = describeCoordinate;
99
- exports.resolveReadCoordinate = resolveReadCoordinate;
100
- exports.withRecordedCoordinate = withRecordedCoordinate;
101
- //# sourceMappingURL=chunk-SVUKGWSN.cjs.map
102
- //# sourceMappingURL=chunk-SVUKGWSN.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/core/temporal.ts"],"names":["validateCanonicalIsoDate","ValidationError"],"mappings":"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","file":"chunk-SVUKGWSN.cjs","sourcesContent":["/**\n * Shared temporal coordinate + validation.\n */\nimport { ValidationError } from \"../errors\";\nimport { validateCanonicalIsoDate } from \"../utils/date\";\nimport { type TemporalMode } from \"./types\";\n\n/**\n * Open-ended recorded-time sentinel. Chosen so SQLite text ordering and\n * PostgreSQL `timestamptz` ordering both put every real commit instant before\n * the open interval end.\n */\nexport const RECORDED_MAX = \"9999-12-31T23:59:59.999Z\";\n\ndeclare const RECORDED_INSTANT_BRAND: unique symbol;\n\n/**\n * A canonical UTC ISO-8601 recorded-time instant (`YYYY-MM-DDTHH:mm:ss.sssZ`),\n * nominally branded so it can only originate from a recorded-time source —\n * {@link Store.recordedNow} or an explicit {@link asRecordedInstant} — never an\n * ad-hoc wall-clock string.\n *\n * The recorded commit clock is a logical, monotonic per-graph instant that can\n * run briefly ahead of wall time under bursty same-millisecond writes, so a raw\n * `new Date().toISOString()` may sort *before* the most recent commits and\n * silently omit them. The brand turns that footgun into a compile error:\n * `store.asOfRecorded` accepts only a `RecordedInstant`, so a bare wall-clock\n * string no longer type-checks — callers reach for `await store.recordedNow()`\n * (the monotonic high-water mark) or {@link asRecordedInstant} instead.\n */\nexport type RecordedInstant = string & {\n readonly [RECORDED_INSTANT_BRAND]: \"RecordedInstant\";\n};\n\nexport function assertValidRecordedInstant(value: string, path: string): void {\n validateCanonicalIsoDate(value, path);\n if (value >= RECORDED_MAX) {\n throw new ValidationError(\n `${path} must be before the recorded-time open sentinel ${RECORDED_MAX}.`,\n {\n issues: [\n {\n path,\n message: `Expected a timestamp before ${RECORDED_MAX}, got \"${value}\"`,\n },\n ],\n },\n {\n suggestion:\n \"Use a real recorded-time commit instant, not the open-interval sentinel.\",\n },\n );\n }\n}\n\n/**\n * Brands a canonical UTC ISO-8601 string as a {@link RecordedInstant}.\n *\n * The escape hatch for an instant that round-trips through untyped storage:\n * captured from {@link Store.recordedNow}, persisted as a plain string, read\n * back, and replayed into `asOfRecorded`. Validates the canonical form eagerly —\n * the same check `asOfRecorded` applies — so a malformed value fails here, at the\n * brand site, rather than deeper in a read. Does *not* assert the instant is a\n * real captured commit; it only guarantees the value is well-formed enough to\n * compare correctly against the recorded relations.\n *\n * @throws {ValidationError} when `value` is not a canonical UTC ISO-8601 string.\n */\nexport function asRecordedInstant(value: string): RecordedInstant {\n assertValidRecordedInstant(value, \"asRecordedInstant\");\n return value as RecordedInstant;\n}\n\n/**\n * The single opaque temporal coordinate every pinned read is resolved\n * against. It carries the valid-time axis plus an optional recorded/system-time\n * axis, so every surface can inject one coordinate object instead of threading\n * each temporal dimension separately.\n */\nexport type ReadCoordinate = Readonly<{\n /**\n * The valid-time axis: a resolved temporal mode and (only for `\"asOf\"`) the\n * instant it is pinned to.\n */\n valid: Readonly<{\n mode: TemporalMode;\n /** Defined only when `mode` is `\"asOf\"`. */\n asOf?: string;\n }>;\n /** The recorded/system-time axis. Defined only for recorded-pinned views. */\n recorded?: Readonly<{ asOf: RecordedInstant }>;\n}>;\n\n/**\n * Resolves and validates a `(mode, asOf)` pair into a {@link ReadCoordinate}.\n * Rejects an `asOf` paired with any non-`\"asOf\"` mode rather than silently\n * dropping it — pinning an instant is only meaningful in `\"asOf\"` mode, so a\n * `view({ mode: \"current\", asOf })` is a caller mistake, not a coordinate to\n * quietly discard. Then validates via {@link assertValidAsOf}.\n *\n * @param mode - The temporal mode to pin.\n * @param asOf - The supplied timestamp. Required for `\"asOf\"`; rejected for\n * every other mode.\n * @param suggestion - Caller-specific remediation hint for the\n * missing/invalid-timestamp case.\n */\nexport function resolveReadCoordinate(\n mode: TemporalMode,\n asOf: string | undefined,\n suggestion?: string,\n): ReadCoordinate {\n if (mode !== \"asOf\" && asOf !== undefined) {\n throw new ValidationError(\n `Temporal mode \"${mode}\" does not take an asOf timestamp.`,\n {\n issues: [\n {\n path: \"asOf\",\n message: `asOf is only valid with mode \"asOf\", not \"${mode}\"`,\n },\n ],\n },\n {\n suggestion:\n 'Pin an instant with store.asOf(timestamp) or store.view({ mode: \"asOf\", asOf }); drop asOf for other modes.',\n },\n );\n }\n assertValidAsOf(\n mode,\n asOf,\n suggestion === undefined ? undefined : { suggestion },\n );\n return { valid: asOf === undefined ? { mode } : { mode, asOf } };\n}\n\n/**\n * Adds a recorded/system-time pin to an existing valid-time coordinate.\n * Direct `store.asOfRecorded(T)` passes the diagonal valid-time coordinate\n * (`mode: \"asOf\", asOf: T`); `store.asOf(vt).asOfRecorded(rt)` passes the\n * already-resolved valid coordinate and adds the recorded sibling.\n */\nexport function withRecordedCoordinate(\n coordinate: ReadCoordinate,\n recordedAsOf: RecordedInstant,\n): ReadCoordinate {\n assertValidRecordedInstant(recordedAsOf, \"asOfRecorded\");\n return {\n ...coordinate,\n recorded: { asOf: recordedAsOf },\n };\n}\n\n/**\n * Validates the `asOf` coordinate of a temporal read: `\"asOf\"` mode\n * requires a timestamp, and any supplied timestamp must be a canonical\n * fixed-width UTC ISO-8601 string (`YYYY-MM-DDTHH:mm:ss.sssZ`). The latter\n * is load-bearing — temporal filters compare `asOf` against `valid_from` /\n * `valid_to` as text on SQLite, so a non-canonical value (date-only, an\n * offset, natural language, or variable-width / missing milliseconds like\n * `.1Z`) would sort and compare wrong rather than error. Reached only through\n * {@link resolveReadCoordinate}, which every temporal read entry point routes\n * through (direct reads, queries, subgraphs, algorithms, and StoreView), so\n * they all fail identically.\n *\n * @param mode - The resolved temporal mode.\n * @param asOf - The supplied timestamp (may be `undefined`).\n * @param options.suggestion - A caller-specific remediation hint for the\n * missing-timestamp case.\n *\n * @throws {ValidationError} when `mode` is `\"asOf\"` and `asOf` is missing, or\n * when any supplied `asOf` is not a canonical UTC ISO-8601 timestamp. The\n * canonical check runs for *every* mode that consumes `asOf`, so a\n * non-canonical value can never reach a text comparison.\n */\nfunction assertValidAsOf(\n mode: TemporalMode,\n asOf: string | undefined,\n options?: Readonly<{ suggestion?: string }>,\n): void {\n if (mode === \"asOf\" && asOf === undefined) {\n throw new ValidationError(\n 'Temporal mode \"asOf\" requires a timestamp',\n {\n issues: [\n { path: \"asOf\", message: \"Timestamp is required for asOf mode\" },\n ],\n },\n {\n suggestion:\n options?.suggestion ??\n 'Provide an ISO-8601 timestamp for asOf mode, e.g. \"2026-01-01T00:00:00.000Z\".',\n },\n );\n }\n if (asOf !== undefined) {\n validateCanonicalIsoDate(asOf, \"asOf\");\n }\n}\n\n/**\n * A human-readable description of a coordinate for error messages, e.g.\n * `mode \"current\"` or `mode \"asOf\" asOf 2026-01-01T00:00:00.000Z`. Shared by\n * every refusal path (the `StoreView` read-only / current-only / search facades\n * and the sealed-query builder) so they describe a coordinate identically — and\n * a future axis (recorded time) is reflected everywhere from one place.\n */\nexport function describeCoordinate(coordinate: ReadCoordinate): string {\n const { mode, asOf } = coordinate.valid;\n const valid =\n asOf === undefined ? `mode \"${mode}\"` : `mode \"${mode}\" asOf ${asOf}`;\n return coordinate.recorded === undefined ?\n valid\n : `${valid}, recorded asOf ${coordinate.recorded.asOf}`;\n}\n\n/**\n * The structured error-context fields describing a coordinate, shared by the\n * same refusal paths as {@link describeCoordinate}.\n */\nexport function coordinateContext(\n coordinate: ReadCoordinate,\n): Record<string, unknown> {\n const { mode, asOf } = coordinate.valid;\n return {\n temporalMode: mode,\n ...(asOf !== undefined && { asOf }),\n ...(coordinate.recorded === undefined ?\n {}\n : { recordedAsOf: coordinate.recorded.asOf }),\n };\n}\n"]}