trellis 3.1.35 → 3.2.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 (422) hide show
  1. package/CHANGELOG.md +16 -5
  2. package/README.md +19 -2
  3. package/bin/trellis.mjs +2 -75
  4. package/dist/better-sqlite-backend-2P4F6AOJ.js +209 -0
  5. package/dist/{better-sqlite-backend-ahx5p0br.js → better-sqlite-backend-PII64VE6.js} +37 -25
  6. package/dist/better-sqlite-backend-VUBVQ7SN.js +209 -0
  7. package/dist/better-sqlite-backend-Y3AQN65E.js +159 -0
  8. package/dist/better-sqlite-backend-Y3M7DXOX.js +159 -0
  9. package/dist/boot-middleware-FJDGVUM4.js +9 -0
  10. package/dist/boot-middleware-MHLHFCUC.js +9 -0
  11. package/dist/boot-middleware-MLJUTLUM.js +9 -0
  12. package/dist/boot-middleware-ZZPDZNYR.js +9 -0
  13. package/dist/{index-wncptktd.js → chunk-276LKLZR.js} +126 -59
  14. package/dist/chunk-2BRTCEHB.js +143 -0
  15. package/dist/chunk-2CX5UCRV.js +111 -0
  16. package/dist/chunk-2ESYSVXG.js +48 -0
  17. package/dist/{index-yp88he8n.js → chunk-2I5JU73Y.js} +88 -64
  18. package/dist/{index-w5wccer3.js → chunk-2UNSRRNB.js} +10 -5
  19. package/dist/{index-4wxa8xz4.js → chunk-335UEHQR.js} +158 -22
  20. package/dist/chunk-36VSSTL7.js +357 -0
  21. package/dist/chunk-3ETIIPPB.js +1077 -0
  22. package/dist/chunk-3GDRZTAW.js +45 -0
  23. package/dist/chunk-44FFQKQX.js +142 -0
  24. package/dist/chunk-4CF2L46N.js +29 -0
  25. package/dist/chunk-4HYPLFJD.js +150 -0
  26. package/dist/chunk-4XIVMVHC.js +361 -0
  27. package/dist/chunk-5CINODKT.js +41 -0
  28. package/dist/chunk-5ESGWJ5L.js +45 -0
  29. package/dist/chunk-5FGLQGMF.js +1676 -0
  30. package/dist/chunk-5IQZFITY.js +357 -0
  31. package/dist/{index-wt8rz4gn.js → chunk-5JWFAQDW.js} +41 -23
  32. package/dist/{index-7pjz3tsy.js → chunk-62UHTVU3.js} +50 -16
  33. package/dist/{index-h32txmxe.js → chunk-66UJQT2I.js} +6 -13
  34. package/dist/chunk-6CTA6MCE.js +340 -0
  35. package/dist/{index-4cdr7x2x.js → chunk-6RNNVOAS.js} +178 -109
  36. package/dist/chunk-6X23PZ6H.js +969 -0
  37. package/dist/chunk-7C7LL6MB.js +315 -0
  38. package/dist/chunk-7F4HM3JG.js +394 -0
  39. package/dist/chunk-7KJ7T4D3.js +910 -0
  40. package/dist/chunk-7QQQNUB5.js +92 -0
  41. package/dist/{index-53f3b8p8.js → chunk-7QWJBS72.js} +210 -165
  42. package/dist/chunk-7R36OZK3.js +957 -0
  43. package/dist/chunk-7UPKCOHE.js +946 -0
  44. package/dist/chunk-7WQGTFVJ.js +7434 -0
  45. package/dist/chunk-A3BONW34.js +35 -0
  46. package/dist/chunk-AHMDVHBL.js +141 -0
  47. package/dist/chunk-AW6A4OZY.js +171 -0
  48. package/dist/chunk-B3ZIFA2O.js +2240 -0
  49. package/dist/chunk-BJ5EKCJ5.js +458 -0
  50. package/dist/chunk-BJ7EZ7FP.js +145 -0
  51. package/dist/chunk-BQBUVMRN.js +171 -0
  52. package/dist/chunk-BRGYDO7D.js +223 -0
  53. package/dist/chunk-BXSTJVE3.js +67 -0
  54. package/dist/chunk-C5KPSEDN.js +359 -0
  55. package/dist/chunk-CCTNYTUC.js +940 -0
  56. package/dist/chunk-CYQ2OVD2.js +35 -0
  57. package/dist/chunk-DDAK7YOE.js +299 -0
  58. package/dist/chunk-DRILKBY6.js +965 -0
  59. package/dist/chunk-DXE24HNN.js +45 -0
  60. package/dist/chunk-E7ICUNW7.js +945 -0
  61. package/dist/chunk-EAL2PUOE.js +10022 -0
  62. package/dist/chunk-ELT7MLZB.js +109 -0
  63. package/dist/chunk-EO3J7GRP.js +0 -0
  64. package/dist/chunk-EWEIRF6G.js +171 -0
  65. package/dist/chunk-F5VDGQJC.js +120 -0
  66. package/dist/chunk-FCPL3IEQ.js +98 -0
  67. package/dist/{index-nq520y6k.js → chunk-FDPKYSV7.js} +43 -31
  68. package/dist/chunk-FES3TC24.js +171 -0
  69. package/dist/chunk-FF36CQHZ.js +61 -0
  70. package/dist/chunk-FKQO5A3H.js +35 -0
  71. package/dist/chunk-FOWKR5TW.js +129 -0
  72. package/dist/chunk-FZVCXDYW.js +150 -0
  73. package/dist/chunk-G3XIHPSQ.js +361 -0
  74. package/dist/chunk-GD5QJXSS.js +98 -0
  75. package/dist/chunk-GFZCJ4EH.js +108 -0
  76. package/dist/chunk-GKJLYLVU.js +359 -0
  77. package/dist/chunk-GLM4HGN4.js +55 -0
  78. package/dist/chunk-GNXHXNVQ.js +113 -0
  79. package/dist/chunk-GSR6ILTM.js +277 -0
  80. package/dist/chunk-GWRIMRSX.js +45 -0
  81. package/dist/chunk-H72UW2HJ.js +45 -0
  82. package/dist/chunk-HGI74PXB.js +7417 -0
  83. package/dist/chunk-HGRA37LO.js +145 -0
  84. package/dist/chunk-HO4TURXW.js +1078 -0
  85. package/dist/chunk-HXSRQO3L.js +145 -0
  86. package/dist/chunk-IG2X2BVO.js +373 -0
  87. package/dist/chunk-IIJVDD54.js +373 -0
  88. package/dist/chunk-IUWVEEOX.js +145 -0
  89. package/dist/chunk-IX4BBOIT.js +394 -0
  90. package/dist/{index-yhwjgfvj.js → chunk-IXU4RMQM.js} +67 -60
  91. package/dist/chunk-J3WYZO3Q.js +211 -0
  92. package/dist/{index-vkpkfwhq.js → chunk-J6OUIION.js} +234 -194
  93. package/dist/{index-xzym9w0m.js → chunk-JA7AIHRK.js} +12 -7
  94. package/dist/chunk-JUEMDWLU.js +233 -0
  95. package/dist/chunk-K46RNFDE.js +171 -0
  96. package/dist/chunk-KAGU2XMY.js +359 -0
  97. package/dist/chunk-KCVYJNVX.js +394 -0
  98. package/dist/chunk-KFQGP6VL.js +33 -0
  99. package/dist/chunk-KKDRMIV6.js +419 -0
  100. package/dist/chunk-KQ4A2D2P.js +910 -0
  101. package/dist/chunk-KSU2GW22.js +958 -0
  102. package/dist/chunk-KYLIQ3YI.js +399 -0
  103. package/dist/chunk-KZYJJIRN.js +946 -0
  104. package/dist/chunk-LFOX744K.js +96 -0
  105. package/dist/{index-rv1p47gp.js → chunk-LHOVJEWR.js} +2756 -2307
  106. package/dist/{index-h9e2efx4.js → chunk-LNUIGRDZ.js} +71 -55
  107. package/dist/chunk-LOPXTPF3.js +120 -0
  108. package/dist/chunk-LZR3VIFU.js +907 -0
  109. package/dist/chunk-MBNBTJCR.js +394 -0
  110. package/dist/chunk-MCKGQKYU.js +15 -0
  111. package/dist/{index-skhn0agf.js → chunk-MLC5BUYO.js} +19 -20
  112. package/dist/chunk-MPXUVGT3.js +104 -0
  113. package/dist/chunk-MU6EOS6F.js +0 -0
  114. package/dist/chunk-MWRQ2TXT.js +357 -0
  115. package/dist/{index-nzb3am4f.js → chunk-NO73OK2I.js} +43 -21
  116. package/dist/chunk-NPE2YJHK.js +394 -0
  117. package/dist/{index-xhcp6xrn.js → chunk-NSDXU6QX.js} +654 -500
  118. package/dist/chunk-NXIRDSZ6.js +145 -0
  119. package/dist/chunk-NZWFNHCS.js +407 -0
  120. package/dist/chunk-O2AV5WMN.js +48 -0
  121. package/dist/{index-h7zxhhhh.js → chunk-OB4CMMX6.js} +46 -38
  122. package/dist/chunk-OBKU74FU.js +7411 -0
  123. package/dist/chunk-OQNDWRDE.js +145 -0
  124. package/dist/chunk-OVWAJMB6.js +394 -0
  125. package/dist/chunk-PDHLBTTD.js +45 -0
  126. package/dist/chunk-PEQNRKLG.js +210 -0
  127. package/dist/chunk-QERIS7QY.js +7403 -0
  128. package/dist/chunk-QHA2DM3C.js +373 -0
  129. package/dist/chunk-QLM4HSYC.js +45 -0
  130. package/dist/chunk-RSWUFTO2.js +857 -0
  131. package/dist/chunk-S2OT3TQJ.js +283 -0
  132. package/dist/chunk-S5PHSN5K.js +907 -0
  133. package/dist/chunk-SIAA4J6H.js +21 -0
  134. package/dist/chunk-SPSPV5BC.js +390 -0
  135. package/dist/chunk-SQBNLUIA.js +171 -0
  136. package/dist/chunk-STLN6A6B.js +355 -0
  137. package/dist/chunk-TCKXSOBP.js +123 -0
  138. package/dist/chunk-U7HV7GU2.js +17 -0
  139. package/dist/chunk-UBGUDMUV.js +59 -0
  140. package/dist/chunk-UGZHOGRA.js +39 -0
  141. package/dist/chunk-UICF66FS.js +359 -0
  142. package/dist/chunk-UK3EQREE.js +1078 -0
  143. package/dist/chunk-UPKPURVY.js +394 -0
  144. package/dist/chunk-URC74VCN.js +959 -0
  145. package/dist/chunk-USEINYUL.js +12 -0
  146. package/dist/{index-bmyt7k8n.js → chunk-UZRUP7QW.js} +12 -4
  147. package/dist/chunk-V3G7Q3QQ.js +102 -0
  148. package/dist/chunk-VDAKEOML.js +857 -0
  149. package/dist/chunk-VUJ6SA55.js +303 -0
  150. package/dist/chunk-VUJQLIML.js +141 -0
  151. package/dist/chunk-VWKLKLYB.js +267 -0
  152. package/dist/chunk-VYC3RZMK.js +277 -0
  153. package/dist/chunk-WMERMSWI.js +154 -0
  154. package/dist/chunk-WMR777PO.js +2213 -0
  155. package/dist/{index-n9f2qyh5.js → chunk-X46IECAC.js} +55 -33
  156. package/dist/chunk-X5FLTRUB.js +517 -0
  157. package/dist/chunk-X762XWVC.js +419 -0
  158. package/dist/chunk-XEN3OEYY.js +2234 -0
  159. package/dist/chunk-XMQ7G77X.js +260 -0
  160. package/dist/chunk-XZQ66K7A.js +124 -0
  161. package/dist/{index-w7ng765c.js → chunk-YCM7ZYEZ.js} +102 -49
  162. package/dist/chunk-YY3GF7DH.js +7411 -0
  163. package/dist/chunk-ZE5R3H4C.js +907 -0
  164. package/dist/chunk-ZHVI7BQN.js +1077 -0
  165. package/dist/chunk-ZMN5LUB7.js +7411 -0
  166. package/dist/chunk-ZUV4MD5U.js +94 -0
  167. package/dist/cli/errors.d.ts +6 -0
  168. package/dist/cli/errors.d.ts.map +1 -0
  169. package/dist/cli/examples.d.ts +23 -0
  170. package/dist/cli/examples.d.ts.map +1 -0
  171. package/dist/cli/index.d.ts.map +1 -1
  172. package/dist/cli/index.js +2338 -6190
  173. package/dist/client/index.d.ts +6 -1
  174. package/dist/client/index.d.ts.map +1 -1
  175. package/dist/client/index.js +41 -21
  176. package/dist/client/live.d.ts +67 -0
  177. package/dist/client/live.d.ts.map +1 -0
  178. package/dist/client/reactive.d.ts +31 -0
  179. package/dist/client/reactive.d.ts.map +1 -0
  180. package/dist/client/sdk.d.ts +26 -2
  181. package/dist/client/sdk.d.ts.map +1 -1
  182. package/dist/client/sdk.js +9 -0
  183. package/dist/client/vcs-client.d.ts +129 -0
  184. package/dist/client/vcs-client.d.ts.map +1 -0
  185. package/dist/cms/index.js +171 -163
  186. package/dist/{config-8hczw0rs.js → config-KMY6RRK3.js} +8 -9
  187. package/dist/config-PFTP67TR.js +19 -0
  188. package/dist/config-VDMK2DUJ.js +19 -0
  189. package/dist/core/computation/index.d.ts +5 -0
  190. package/dist/core/computation/index.d.ts.map +1 -0
  191. package/dist/core/computation/rollup.d.ts +18 -0
  192. package/dist/core/computation/rollup.d.ts.map +1 -0
  193. package/dist/core/index.d.ts +5 -0
  194. package/dist/core/index.d.ts.map +1 -1
  195. package/dist/core/index.js +168 -101
  196. package/dist/core/kernel/boot-middleware.d.ts +10 -0
  197. package/dist/core/kernel/boot-middleware.d.ts.map +1 -0
  198. package/dist/core/kernel/logic-middleware.d.ts +7 -1
  199. package/dist/core/kernel/logic-middleware.d.ts.map +1 -1
  200. package/dist/core/kernel/trellis-kernel.d.ts.map +1 -1
  201. package/dist/core/ontology/types.d.ts +5 -0
  202. package/dist/core/ontology/types.d.ts.map +1 -1
  203. package/dist/core/persist/better-sqlite-backend.d.ts +9 -2
  204. package/dist/core/persist/better-sqlite-backend.d.ts.map +1 -1
  205. package/dist/core/persist/factory.d.ts +6 -7
  206. package/dist/core/persist/factory.d.ts.map +1 -1
  207. package/dist/core/persist/factory.js +2 -3
  208. package/dist/core/persist/sqljs-backend.js +2 -3
  209. package/dist/db/index.d.ts +4 -1
  210. package/dist/db/index.d.ts.map +1 -1
  211. package/dist/db/index.js +69 -56
  212. package/dist/db/inspector.js +11 -19
  213. package/dist/decisions/index.js +9 -10
  214. package/dist/deploy-66EC752W.js +9 -0
  215. package/dist/deploy-SO7AFK6L.js +9 -0
  216. package/dist/embeddings/auto-embed.d.ts +2 -2
  217. package/dist/embeddings/auto-embed.d.ts.map +1 -1
  218. package/dist/embeddings/index.js +20 -22
  219. package/dist/embeddings/search.d.ts +2 -1
  220. package/dist/embeddings/search.d.ts.map +1 -1
  221. package/dist/embeddings/store.d.ts +25 -4
  222. package/dist/embeddings/store.d.ts.map +1 -1
  223. package/dist/engine-7GXBM4IT.js +7 -0
  224. package/dist/engine-NSR6BIF7.js +7 -0
  225. package/dist/engine.d.ts +32 -12
  226. package/dist/engine.d.ts.map +1 -1
  227. package/dist/factory-2P64OC7M.js +34 -0
  228. package/dist/factory-YP4ZZK5K.js +34 -0
  229. package/dist/import-AJLYHFIA.js +10 -0
  230. package/dist/import-UZEKXU3B.js +10 -0
  231. package/dist/index.js +102 -93
  232. package/dist/launch-explorer-AI6L2AWJ.js +91 -0
  233. package/dist/launch-explorer-HZ4ZJA4X.js +95 -0
  234. package/dist/links/index.js +24 -26
  235. package/dist/plugins/agent-memory/index.js +316 -0
  236. package/dist/plugins/idea-garden/index.js +165 -0
  237. package/dist/plugins/plan-approval/index.js +579 -0
  238. package/dist/plugins/proactive-watcher/index.js +194 -0
  239. package/dist/{index-2r4jxwnb.js → query-GJL3CVGN.js} +14 -15
  240. package/dist/query-MBJSK3EB.js +31 -0
  241. package/dist/query-TJHEVSKL.js +31 -0
  242. package/dist/query-WUIKOHPE.js +524 -0
  243. package/dist/query-XYLTJYSA.js +31 -0
  244. package/dist/react/index.js +39 -70
  245. package/dist/react/realtime.js +11 -0
  246. package/dist/react/schema-hooks.js +87 -0
  247. package/dist/realtime/broadcast-channel-transport.d.ts +43 -0
  248. package/dist/realtime/broadcast-channel-transport.d.ts.map +1 -0
  249. package/dist/realtime/durable-object-relay-transport.d.ts +96 -0
  250. package/dist/realtime/durable-object-relay-transport.d.ts.map +1 -0
  251. package/dist/realtime/index.d.ts +44 -0
  252. package/dist/realtime/index.d.ts.map +1 -0
  253. package/dist/realtime/index.js +40 -0
  254. package/dist/realtime/memory-hub.d.ts +32 -0
  255. package/dist/realtime/memory-hub.d.ts.map +1 -0
  256. package/dist/realtime/persistent-channel.d.ts +105 -0
  257. package/dist/realtime/persistent-channel.d.ts.map +1 -0
  258. package/dist/realtime/presence.d.ts +73 -0
  259. package/dist/realtime/presence.d.ts.map +1 -0
  260. package/dist/realtime/relay-persistence.d.ts +37 -0
  261. package/dist/realtime/relay-persistence.d.ts.map +1 -0
  262. package/dist/realtime/relay-persistence.js +107 -0
  263. package/dist/realtime/relay-server.d.ts +103 -0
  264. package/dist/realtime/relay-server.d.ts.map +1 -0
  265. package/dist/realtime/room.d.ts +98 -0
  266. package/dist/realtime/room.d.ts.map +1 -0
  267. package/dist/realtime/text.d.ts +73 -0
  268. package/dist/realtime/text.d.ts.map +1 -0
  269. package/dist/realtime/types.d.ts +89 -0
  270. package/dist/realtime/types.d.ts.map +1 -0
  271. package/dist/realtime/websocket-relay-transport.d.ts +28 -0
  272. package/dist/realtime/websocket-relay-transport.d.ts.map +1 -0
  273. package/dist/realtime.bundle.js +1100 -0
  274. package/dist/remote-manager-BLJZ6KF6.js +224 -0
  275. package/dist/{remote-manager-xvbg4230.js → remote-manager-BPYE46SI.js} +24 -15
  276. package/dist/remote-manager-FMESEAFA.js +224 -0
  277. package/dist/remote-manager-K2WZ5RHY.js +223 -0
  278. package/dist/remote-manager-SG545WNY.js +224 -0
  279. package/dist/remote-manager-SG5PQKCH.js +224 -0
  280. package/dist/remote-manager-WGP6MIQZ.js +224 -0
  281. package/dist/scaffold/write.d.ts.map +1 -1
  282. package/dist/schema/define.d.ts +137 -0
  283. package/dist/schema/define.d.ts.map +1 -0
  284. package/dist/schema/entity-projection.d.ts +34 -0
  285. package/dist/schema/entity-projection.d.ts.map +1 -0
  286. package/dist/schema/eql.d.ts +46 -0
  287. package/dist/schema/eql.d.ts.map +1 -0
  288. package/dist/schema/index.d.ts +21 -0
  289. package/dist/schema/index.d.ts.map +1 -0
  290. package/dist/schema/index.js +45 -0
  291. package/dist/schema/kernel-resolve.d.ts +21 -0
  292. package/dist/schema/kernel-resolve.d.ts.map +1 -0
  293. package/dist/schema/mutations.d.ts +20 -0
  294. package/dist/schema/mutations.d.ts.map +1 -0
  295. package/dist/schema/resolve.d.ts +21 -0
  296. package/dist/schema/resolve.d.ts.map +1 -0
  297. package/dist/sdk-3KBB3E6V.js +16 -0
  298. package/dist/sdk-4ZQO6UTU.js +16 -0
  299. package/dist/sdk-6JA6GV3G.js +16 -0
  300. package/dist/sdk-6VTP5UTZ.js +16 -0
  301. package/dist/sdk-7VS6TYCD.js +16 -0
  302. package/dist/sdk-HQ3FTLRT.js +16 -0
  303. package/dist/sdk-HZ7NU3XE.js +15 -0
  304. package/dist/sdk-KBQE2OXT.js +16 -0
  305. package/dist/sdk-LZ7W3EEY.js +9 -0
  306. package/dist/sdk-MSCDZ7JU.js +15 -0
  307. package/dist/sdk-WNZOGO3S.js +15 -0
  308. package/dist/sdk-YLV33ZCW.js +9 -0
  309. package/dist/sdk-ZSUD2LLJ.js +16 -0
  310. package/dist/server/index.d.ts +2 -0
  311. package/dist/server/index.d.ts.map +1 -1
  312. package/dist/server/index.js +69 -61
  313. package/dist/server/node-adapter.js +5 -104
  314. package/dist/server/realtime.d.ts +10 -2
  315. package/dist/server/realtime.d.ts.map +1 -1
  316. package/dist/server/server.d.ts +7 -16
  317. package/dist/server/server.d.ts.map +1 -1
  318. package/dist/server/sprites.d.ts.map +1 -1
  319. package/dist/server/tenancy.d.ts.map +1 -1
  320. package/dist/server-AFXFFBWA.js +11 -0
  321. package/dist/server-AGHC4VUL.js +11 -0
  322. package/dist/server-BOH7M4TT.js +13 -0
  323. package/dist/server-DBUY2KY5.js +11 -0
  324. package/dist/server-GWBQJPRG.js +11 -0
  325. package/dist/server-IGBIIJSF.js +13 -0
  326. package/dist/server-JZZFULVU.js +11 -0
  327. package/dist/server-L5XAF4M5.js +11 -0
  328. package/dist/server-NYFUHANA.js +12 -0
  329. package/dist/server-OABUB2LO.js +12 -0
  330. package/dist/server-P2CKZWWV.js +12 -0
  331. package/dist/{sprites-vc4qbrp1.js → sprites-RU3E4XQN.js} +6 -7
  332. package/dist/sprites-XVSMQLSI.js +15 -0
  333. package/dist/sql-wasm-FORCZFHZ.js +2148 -0
  334. package/dist/sql-wasm-JZH76RLO.js +2148 -0
  335. package/dist/sqljs-backend-CJQOIQYE.js +266 -0
  336. package/dist/sqljs-backend-KWXBUDUO.js +266 -0
  337. package/dist/state-demo.bundle.js +1033 -0
  338. package/dist/svelte/index.d.ts +17 -0
  339. package/dist/svelte/index.d.ts.map +1 -0
  340. package/dist/svelte/index.js +51 -0
  341. package/dist/svelte/schema-hooks.d.ts +45 -0
  342. package/dist/svelte/schema-hooks.d.ts.map +1 -0
  343. package/dist/svelte/schema-hooks.js +71 -0
  344. package/dist/svelte/stores.d.ts +78 -0
  345. package/dist/svelte/stores.d.ts.map +1 -0
  346. package/dist/sync/http-transport.d.ts +3 -3
  347. package/dist/sync/http-transport.d.ts.map +1 -1
  348. package/dist/sync/index.d.ts +15 -1
  349. package/dist/sync/index.d.ts.map +1 -1
  350. package/dist/sync/index.js +617 -0
  351. package/dist/sync/memory-room.d.ts +37 -0
  352. package/dist/sync/memory-room.d.ts.map +1 -0
  353. package/dist/sync/memory-transport.d.ts +3 -3
  354. package/dist/sync/memory-transport.d.ts.map +1 -1
  355. package/dist/sync/partykit-room.d.ts +40 -0
  356. package/dist/sync/partykit-room.d.ts.map +1 -0
  357. package/dist/sync/partykit-transport.d.ts +84 -0
  358. package/dist/sync/partykit-transport.d.ts.map +1 -0
  359. package/dist/sync/room-core.d.ts +53 -0
  360. package/dist/sync/room-core.d.ts.map +1 -0
  361. package/dist/sync/sync-engine.d.ts +40 -2
  362. package/dist/sync/sync-engine.d.ts.map +1 -1
  363. package/dist/sync/sync-room-server.d.ts +39 -0
  364. package/dist/sync/sync-room-server.d.ts.map +1 -0
  365. package/dist/sync/types.d.ts +70 -3
  366. package/dist/sync/types.d.ts.map +1 -1
  367. package/dist/sync/vcs-sync-peer.d.ts +63 -0
  368. package/dist/sync/vcs-sync-peer.d.ts.map +1 -0
  369. package/dist/sync/ws-transport.d.ts +2 -2
  370. package/dist/sync/ws-transport.d.ts.map +1 -1
  371. package/dist/tenancy-CBWYEVUB.js +11 -0
  372. package/dist/tenancy-FO6WVYFN.js +13 -0
  373. package/dist/tenancy-FWDBESMX.js +14 -0
  374. package/dist/tenancy-HGPIS5QA.js +13 -0
  375. package/dist/tenancy-HXFALA37.js +14 -0
  376. package/dist/tenancy-OP34NFFS.js +14 -0
  377. package/dist/tenancy-S676GLID.js +14 -0
  378. package/dist/tenancy-V7ARWNNV.js +14 -0
  379. package/dist/tenancy-ZDN4GXK5.js +13 -0
  380. package/dist/tenancy-ZT5VMY7B.js +14 -0
  381. package/dist/ui/client.html +355 -67
  382. package/dist/ui/launch-explorer.d.ts +22 -0
  383. package/dist/ui/launch-explorer.d.ts.map +1 -0
  384. package/dist/ui/server.d.ts +1 -1
  385. package/dist/ui/server.d.ts.map +1 -1
  386. package/dist/vcs/blob-store.d.ts.map +1 -1
  387. package/dist/vcs/idb-op-log.d.ts +67 -0
  388. package/dist/vcs/idb-op-log.d.ts.map +1 -0
  389. package/dist/vcs/index.d.ts +1 -0
  390. package/dist/vcs/index.d.ts.map +1 -1
  391. package/dist/vcs/index.js +81 -72
  392. package/dist/vcs/issue.d.ts +22 -5
  393. package/dist/vcs/issue.d.ts.map +1 -1
  394. package/dist/vcs/lane-materialize.d.ts +5 -0
  395. package/dist/vcs/lane-materialize.d.ts.map +1 -1
  396. package/dist/vcs/op-log.d.ts +28 -2
  397. package/dist/vcs/op-log.d.ts.map +1 -1
  398. package/dist/vcs/ops.d.ts +10 -0
  399. package/dist/vcs/ops.d.ts.map +1 -1
  400. package/dist/{vm-config-6xhsj6b3.js → vm-config-JI4OXKDQ.js} +9 -10
  401. package/dist/vm-config-YZRJ3KUB.js +21 -0
  402. package/dist/vue/hooks.d.ts +64 -0
  403. package/dist/vue/hooks.d.ts.map +1 -0
  404. package/dist/vue/index.d.ts +19 -0
  405. package/dist/vue/index.d.ts.map +1 -0
  406. package/dist/vue/index.js +59 -0
  407. package/dist/vue/schema-hooks.d.ts +41 -0
  408. package/dist/vue/schema-hooks.d.ts.map +1 -0
  409. package/dist/vue/schema-hooks.js +64 -0
  410. package/package.json +118 -16
  411. package/dist/deploy-999q207z.js +0 -10
  412. package/dist/engine-y0724kjq.js +0 -8
  413. package/dist/import-s2b8e0ft.js +0 -11
  414. package/dist/index-a76rekgs.js +0 -67
  415. package/dist/index-c9h37r6h.js +0 -1
  416. package/dist/index-hr9qvv77.js +0 -860
  417. package/dist/index-k5b0xskw.js +0 -1
  418. package/dist/index-y6a4kj0p.js +0 -43
  419. package/dist/sdk-bepky0xs.js +0 -16
  420. package/dist/server-szdjx0nt.js +0 -13
  421. package/dist/sqlite-backend-0vsmc6qj.js +0 -8
  422. package/dist/tenancy-pjm32b4v.js +0 -14
@@ -1,39 +1,46 @@
1
- // @bun
2
- import {
3
- readConfig
4
- } from "./index-xzym9w0m.js";
5
1
  import {
6
2
  TenantPool
7
- } from "./index-7pjz3tsy.js";
3
+ } from "./chunk-AHMDVHBL.js";
8
4
  import {
9
- __require
10
- } from "./index-a76rekgs.js";
5
+ readConfig
6
+ } from "./chunk-JA7AIHRK.js";
11
7
 
12
8
  // src/client/sdk.ts
13
9
  function isRemote(opts) {
14
10
  return "url" in opts;
15
11
  }
16
-
17
- class TrellisDb {
12
+ var TrellisDb = class _TrellisDb {
18
13
  opts;
19
14
  _pool = null;
20
15
  _ws = null;
21
- _subCallbacks = new Map;
16
+ _subCallbacks = /* @__PURE__ */ new Map();
22
17
  constructor(opts) {
23
18
  this.opts = opts;
24
19
  }
20
+ /**
21
+ * Create a TrellisDb instance from `.trellis-db.json` in the given directory.
22
+ */
25
23
  static fromConfig(dir = ".") {
26
24
  const config = readConfig(dir);
27
25
  if (!config)
28
- throw new Error("No .trellis-db.json found. Run `trellis db init` first.");
26
+ throw new Error(
27
+ "No .trellis-db.json found. Run `trellis db init` first."
28
+ );
29
29
  if (config.mode === "remote" && config.url) {
30
- return new TrellisDb({ url: config.url, apiKey: config.apiKey });
30
+ return new _TrellisDb({ url: config.url, apiKey: config.apiKey });
31
31
  }
32
32
  if (config.dbPath) {
33
- return new TrellisDb({ path: config.dbPath });
33
+ return new _TrellisDb({ path: config.dbPath });
34
34
  }
35
35
  throw new Error("Invalid .trellis-db.json: missing url or dbPath.");
36
36
  }
37
+ // -------------------------------------------------------------------------
38
+ // CRUD
39
+ // -------------------------------------------------------------------------
40
+ /**
41
+ * Create a new entity.
42
+ * Returns the generated entity ID.
43
+ */
37
44
  async create(type, attributes = {}, links) {
38
45
  if (isRemote(this.opts)) {
39
46
  const res = await this._fetch("POST", "/entities", {
@@ -50,13 +57,19 @@ class TrellisDb {
50
57
  await kernel.createEntity(entityId, type, attributes, links);
51
58
  return entityId;
52
59
  }
60
+ /**
61
+ * Read an entity by ID.
62
+ * Returns null if not found.
63
+ */
53
64
  async read(id) {
54
65
  if (isRemote(this.opts)) {
55
66
  try {
56
- return await this._fetch("GET", `/entities/${encodeURIComponent(id)}`);
67
+ return await this._fetch(
68
+ "GET",
69
+ `/entities/${encodeURIComponent(id)}`
70
+ );
57
71
  } catch (err) {
58
- if (err?.status === 404)
59
- return null;
72
+ if (err?.status === 404) return null;
60
73
  throw err;
61
74
  }
62
75
  }
@@ -64,13 +77,19 @@ class TrellisDb {
64
77
  const tenantId = this.opts.tenantId ?? null;
65
78
  const kernel = pool.get(tenantId);
66
79
  const entity = kernel.getEntity(id);
67
- if (!entity)
68
- return null;
80
+ if (!entity) return null;
69
81
  return entityToPlain(entity);
70
82
  }
83
+ /**
84
+ * Update an entity's attributes (partial update).
85
+ */
71
86
  async update(id, attributes) {
72
87
  if (isRemote(this.opts)) {
73
- await this._fetch("PUT", `/entities/${encodeURIComponent(id)}`, attributes);
88
+ await this._fetch(
89
+ "PUT",
90
+ `/entities/${encodeURIComponent(id)}`,
91
+ attributes
92
+ );
74
93
  return;
75
94
  }
76
95
  const pool = this._getPool();
@@ -78,6 +97,9 @@ class TrellisDb {
78
97
  const kernel = pool.get(tenantId);
79
98
  await kernel.updateEntity(id, attributes);
80
99
  }
100
+ /**
101
+ * Delete an entity by ID.
102
+ */
81
103
  async delete(id) {
82
104
  if (isRemote(this.opts)) {
83
105
  await this._fetch("DELETE", `/entities/${encodeURIComponent(id)}`);
@@ -88,15 +110,15 @@ class TrellisDb {
88
110
  const kernel = pool.get(tenantId);
89
111
  await kernel.deleteEntity(id);
90
112
  }
113
+ /**
114
+ * List entities of a given type.
115
+ */
91
116
  async list(type, opts = {}) {
92
117
  if (isRemote(this.opts)) {
93
- const params = new URLSearchParams;
94
- if (type)
95
- params.set("type", type);
96
- if (opts.limit)
97
- params.set("limit", String(opts.limit));
98
- if (opts.offset)
99
- params.set("offset", String(opts.offset));
118
+ const params = new URLSearchParams();
119
+ if (type) params.set("type", type);
120
+ if (opts.limit) params.set("limit", String(opts.limit));
121
+ if (opts.offset) params.set("offset", String(opts.offset));
100
122
  const qs = params.toString() ? `?${params}` : "";
101
123
  return await this._fetch("GET", `/entities${qs}`);
102
124
  }
@@ -114,14 +136,20 @@ class TrellisDb {
114
136
  offset
115
137
  };
116
138
  }
139
+ // -------------------------------------------------------------------------
140
+ // Query
141
+ // -------------------------------------------------------------------------
142
+ /**
143
+ * Run an EQL-S query string.
144
+ */
117
145
  async query(eql) {
118
146
  if (isRemote(this.opts)) {
119
147
  return await this._fetch("POST", "/query", {
120
148
  query: eql
121
149
  });
122
150
  }
123
- const { parseSimple } = await import("./index-2r4jxwnb.js");
124
- const { QueryEngine } = await import("./engine-y0724kjq.js");
151
+ const { parseSimple } = await import("./query-TJHEVSKL.js");
152
+ const { QueryEngine } = await import("./engine-NSR6BIF7.js");
125
153
  const pool = this._getPool();
126
154
  const tenantId = this.opts.tenantId ?? null;
127
155
  const kernel = pool.get(tenantId);
@@ -129,9 +157,19 @@ class TrellisDb {
129
157
  const engine = new QueryEngine(kernel.getStore());
130
158
  return engine.execute(parsed);
131
159
  }
160
+ // -------------------------------------------------------------------------
161
+ // File upload
162
+ // -------------------------------------------------------------------------
163
+ /**
164
+ * Upload a file to the blob store.
165
+ * Returns a content-addressed hash.
166
+ */
132
167
  async upload(data, contentType = "application/octet-stream") {
133
168
  const raw = data instanceof ArrayBuffer ? new Uint8Array(data) : data;
134
- const cleanBuf = raw.buffer.slice(raw.byteOffset, raw.byteOffset + raw.byteLength);
169
+ const cleanBuf = raw.buffer.slice(
170
+ raw.byteOffset,
171
+ raw.byteOffset + raw.byteLength
172
+ );
135
173
  const buffer = new Uint8Array(cleanBuf);
136
174
  if (isRemote(this.opts)) {
137
175
  const res = await fetch(`${this.opts.url}/upload`, {
@@ -142,8 +180,7 @@ class TrellisDb {
142
180
  },
143
181
  body: cleanBuf
144
182
  });
145
- if (!res.ok)
146
- throw new FetchError(res.status, await res.text());
183
+ if (!res.ok) throw new FetchError(res.status, await res.text());
147
184
  return await res.json();
148
185
  }
149
186
  const hashBuf = await crypto.subtle.digest("SHA-256", buffer);
@@ -152,19 +189,22 @@ class TrellisDb {
152
189
  const tenantId = this.opts.tenantId ?? null;
153
190
  const kernel = pool.get(tenantId);
154
191
  const backend = kernel.getBackend();
155
- if (!backend.hasBlob(hash))
156
- backend.putBlob(hash, buffer);
192
+ if (!backend.hasBlob(hash)) backend.putBlob(hash, buffer);
157
193
  return { hash, size: buffer.length, contentType };
158
194
  }
195
+ /**
196
+ * Download a file by its blob hash.
197
+ */
159
198
  async getFile(hash) {
160
199
  if (isRemote(this.opts)) {
161
- const res = await fetch(`${this.opts.url}/files/${encodeURIComponent(hash)}`, {
162
- headers: this.opts.apiKey ? { Authorization: `Bearer ${this.opts.apiKey}` } : {}
163
- });
164
- if (res.status === 404)
165
- return null;
166
- if (!res.ok)
167
- throw new FetchError(res.status, await res.text());
200
+ const res = await fetch(
201
+ `${this.opts.url}/files/${encodeURIComponent(hash)}`,
202
+ {
203
+ headers: this.opts.apiKey ? { Authorization: `Bearer ${this.opts.apiKey}` } : {}
204
+ }
205
+ );
206
+ if (res.status === 404) return null;
207
+ if (!res.ok) throw new FetchError(res.status, await res.text());
168
208
  return new Uint8Array(await res.arrayBuffer());
169
209
  }
170
210
  const pool = this._getPool();
@@ -173,6 +213,9 @@ class TrellisDb {
173
213
  const backend = kernel.getBackend();
174
214
  return backend.getBlob(hash) ?? null;
175
215
  }
216
+ // -------------------------------------------------------------------------
217
+ // Auth helpers
218
+ // -------------------------------------------------------------------------
176
219
  async register(email, password, name) {
177
220
  if (!isRemote(this.opts))
178
221
  throw new Error("register() requires remote mode");
@@ -183,21 +226,33 @@ class TrellisDb {
183
226
  });
184
227
  }
185
228
  async login(email, password) {
186
- if (!isRemote(this.opts))
187
- throw new Error("login() requires remote mode");
229
+ if (!isRemote(this.opts)) throw new Error("login() requires remote mode");
188
230
  return await this._fetch("POST", "/auth/login", {
189
231
  email,
190
232
  password
191
233
  });
192
234
  }
235
+ /**
236
+ * Set the active API key / JWT token for subsequent requests.
237
+ */
193
238
  setToken(token) {
194
- if (!isRemote(this.opts))
195
- return;
239
+ if (!isRemote(this.opts)) return;
196
240
  this.opts.apiKey = token;
197
241
  }
242
+ // -------------------------------------------------------------------------
243
+ // Realtime
244
+ // -------------------------------------------------------------------------
245
+ /**
246
+ * Subscribe to a live EQL-S query.
247
+ * Callback is fired immediately with the initial result, then on every update.
248
+ *
249
+ * Requires remote mode (WebSocket to server).
250
+ */
198
251
  subscribe(eql, callback) {
199
252
  if (!isRemote(this.opts)) {
200
- throw new Error("subscribe() requires remote mode (connect to a running server)");
253
+ throw new Error(
254
+ "subscribe() requires remote mode (connect to a running server)"
255
+ );
201
256
  }
202
257
  const subId = `sub_${crypto.randomUUID()}`;
203
258
  this._subCallbacks.set(subId, callback);
@@ -211,15 +266,24 @@ class TrellisDb {
211
266
  }
212
267
  };
213
268
  }
269
+ /**
270
+ * Close the WebSocket connection.
271
+ */
214
272
  disconnect() {
215
273
  this._ws?.close();
216
274
  this._ws = null;
217
275
  }
276
+ /**
277
+ * Close local kernel pool connections.
278
+ */
218
279
  close() {
219
280
  this._pool?.closeAll();
220
281
  this._pool = null;
221
282
  this.disconnect();
222
283
  }
284
+ // -------------------------------------------------------------------------
285
+ // Private
286
+ // -------------------------------------------------------------------------
223
287
  _getPool() {
224
288
  if (!this._pool) {
225
289
  const path = this.opts.path;
@@ -236,16 +300,19 @@ class TrellisDb {
236
300
  "Content-Type": "application/json",
237
301
  ...opts.apiKey ? { Authorization: `Bearer ${opts.apiKey}` } : {}
238
302
  },
239
- body: body !== undefined ? JSON.stringify(body) : undefined
303
+ body: body !== void 0 ? JSON.stringify(body) : void 0
240
304
  });
241
305
  const data = await res.json();
242
306
  if (!res.ok)
243
- throw new FetchError(res.status, data?.message ?? res.statusText, data);
307
+ throw new FetchError(
308
+ res.status,
309
+ data?.message ?? res.statusText,
310
+ data
311
+ );
244
312
  return data;
245
313
  }
246
314
  async _ensureWs() {
247
- if (this._ws && this._ws.readyState === WebSocket.OPEN)
248
- return this._ws;
315
+ if (this._ws && this._ws.readyState === WebSocket.OPEN) return this._ws;
249
316
  const opts = this.opts;
250
317
  const wsUrl = opts.url.replace(/^https?/, opts.url.startsWith("https") ? "wss" : "ws") + "/realtime";
251
318
  return new Promise((resolve, reject) => {
@@ -261,32 +328,32 @@ class TrellisDb {
261
328
  if (msg.type === "data" && this._subCallbacks.has(msg.id)) {
262
329
  this._subCallbacks.get(msg.id)(msg.result, msg.diff);
263
330
  }
264
- } catch {}
331
+ } catch {
332
+ }
265
333
  };
266
334
  ws.onclose = () => {
267
335
  this._ws = null;
268
336
  };
269
337
  });
270
338
  }
271
- }
339
+ };
272
340
  function entityToPlain(entity) {
273
341
  const obj = { id: entity.id, type: entity.type };
274
342
  for (const f of entity.facts) {
275
- if (f.a !== "type")
276
- obj[f.a] = f.v;
343
+ if (f.a !== "type") obj[f.a] = f.v;
277
344
  }
278
345
  return obj;
279
346
  }
280
-
281
- class FetchError extends Error {
282
- status;
283
- body;
347
+ var FetchError = class extends Error {
284
348
  constructor(status, message, body) {
285
349
  super(`HTTP ${status}: ${message}`);
286
350
  this.status = status;
287
351
  this.body = body;
288
352
  this.name = "FetchError";
289
353
  }
290
- }
354
+ };
291
355
 
292
- export { TrellisDb, FetchError };
356
+ export {
357
+ TrellisDb,
358
+ FetchError
359
+ };
@@ -0,0 +1,143 @@
1
+ import {
2
+ RelayPersistence
3
+ } from "./chunk-GFZCJ4EH.js";
4
+
5
+ // src/realtime/relay-server.ts
6
+ var REPLAY_GRACE_MS = 250;
7
+ var DEFAULT_ROOM = "default";
8
+ function roomFromPath(reqPath, basePath) {
9
+ const normalized = reqPath.replace(/\/+$/, "") || "/";
10
+ const base = basePath.replace(/\/+$/, "") || "/";
11
+ if (normalized === base) return DEFAULT_ROOM;
12
+ const prefix = base === "/" ? "/" : `${base}/`;
13
+ if (!reqPath.startsWith(prefix)) return null;
14
+ const rest = reqPath.slice(prefix.length).split("?")[0].replace(/\/+$/, "");
15
+ return rest ? decodeURIComponent(rest) : DEFAULT_ROOM;
16
+ }
17
+ async function attachRealtimeRelay(server, opts = {}) {
18
+ const path = opts.path ?? "/rt";
19
+ const graceMs = opts.replayGraceMs ?? REPLAY_GRACE_MS;
20
+ const makePersistence = opts.persistence === false ? null : opts.persistence ?? (() => new RelayPersistence());
21
+ const Wss = opts.WebSocketServerImpl ?? (await import("ws")).WebSocketServer;
22
+ const wss = new Wss({ noServer: true });
23
+ const rooms = /* @__PURE__ */ new Map();
24
+ const pendingRoom = /* @__PURE__ */ new WeakMap();
25
+ const roomState = (room) => {
26
+ let st = rooms.get(room);
27
+ if (!st) {
28
+ st = { clients: /* @__PURE__ */ new Set(), persistence: makePersistence?.() ?? null };
29
+ rooms.set(room, st);
30
+ }
31
+ return st;
32
+ };
33
+ const sendReplay = (ws, st) => {
34
+ if (!st.persistence) return;
35
+ const messages = st.persistence.buildReplay();
36
+ if (messages.length === 0) return;
37
+ const frame = { v: 1, t: "replay", from: "relay", messages };
38
+ ws.send(JSON.stringify(frame));
39
+ };
40
+ wss.on("connection", (ws) => {
41
+ const room = pendingRoom.get(ws) ?? DEFAULT_ROOM;
42
+ pendingRoom.delete(ws);
43
+ const st = roomState(room);
44
+ st.clients.add(ws);
45
+ const replaySent = { value: false };
46
+ const deliverReplay = () => {
47
+ if (replaySent.value) return;
48
+ replaySent.value = true;
49
+ sendReplay(ws, st);
50
+ };
51
+ const graceTimer = graceMs > 0 ? setTimeout(deliverReplay, graceMs) : null;
52
+ graceTimer?.unref?.();
53
+ ws.on("message", (data, isBinary) => {
54
+ const raw = isBinary ? data : String(data);
55
+ let message;
56
+ try {
57
+ message = JSON.parse(String(raw));
58
+ } catch {
59
+ return;
60
+ }
61
+ if (message?.v === 1) {
62
+ if (message.t === "hello") deliverReplay();
63
+ st.persistence?.record(message);
64
+ }
65
+ for (const peer of st.clients) {
66
+ if (peer === ws || peer.readyState !== peer.OPEN) continue;
67
+ peer.send(String(raw));
68
+ }
69
+ });
70
+ ws.on("close", () => {
71
+ if (graceTimer) clearTimeout(graceTimer);
72
+ st.clients.delete(ws);
73
+ if (st.clients.size === 0) rooms.delete(room);
74
+ });
75
+ });
76
+ const onUpgrade = (req, socket, head) => {
77
+ const reqPath = (req.url ?? "").split("?")[0];
78
+ const room = roomFromPath(reqPath, path);
79
+ if (room === null) return;
80
+ wss.handleUpgrade(req, socket, head, (ws) => {
81
+ pendingRoom.set(ws, room);
82
+ wss.emit("connection", ws, req);
83
+ });
84
+ };
85
+ server.on("upgrade", onUpgrade);
86
+ return {
87
+ clientCount: (room) => {
88
+ if (room !== void 0) return rooms.get(room)?.clients.size ?? 0;
89
+ let total = 0;
90
+ for (const st of rooms.values()) total += st.clients.size;
91
+ return total;
92
+ },
93
+ rooms: () => [...rooms.keys()],
94
+ persistenceFor: (room) => rooms.get(room)?.persistence ?? null,
95
+ close: () => new Promise((resolve) => {
96
+ server.off("upgrade", onUpgrade);
97
+ for (const st of rooms.values()) {
98
+ for (const ws of st.clients) {
99
+ try {
100
+ ws.close();
101
+ } catch {
102
+ }
103
+ }
104
+ st.clients.clear();
105
+ }
106
+ rooms.clear();
107
+ wss.close(() => resolve());
108
+ })
109
+ };
110
+ }
111
+ async function createRealtimeRelay(opts = {}) {
112
+ const { createServer } = await import("node:http");
113
+ const path = opts.path ?? "/rt";
114
+ const port = opts.port ?? 8231;
115
+ const hostname = opts.hostname ?? "0.0.0.0";
116
+ const server = createServer((req, res) => {
117
+ const reqPath = (req.url ?? "/").split("?")[0];
118
+ if (reqPath === "/" || reqPath === "/health") {
119
+ res.writeHead(200, { "content-type": "application/json" });
120
+ res.end(JSON.stringify({ ok: true, relay: path }));
121
+ return;
122
+ }
123
+ res.writeHead(404).end("not found");
124
+ });
125
+ const relay = await attachRealtimeRelay(server, opts);
126
+ await new Promise((resolve) => server.listen(port, hostname, resolve));
127
+ const addr = server.address();
128
+ const boundPort = typeof addr === "object" && addr ? addr.port : port;
129
+ return {
130
+ ...relay,
131
+ port: boundPort,
132
+ server,
133
+ close: async () => {
134
+ await relay.close();
135
+ await new Promise((resolve) => server.close(() => resolve()));
136
+ }
137
+ };
138
+ }
139
+
140
+ export {
141
+ attachRealtimeRelay,
142
+ createRealtimeRelay
143
+ };
@@ -0,0 +1,111 @@
1
+ import {
2
+ entitiesQuery,
3
+ resolveRelations
4
+ } from "./chunk-7QQQNUB5.js";
5
+ import {
6
+ Signal
7
+ } from "./chunk-UBGUDMUV.js";
8
+
9
+ // src/client/live.ts
10
+ function liveQuery(client, eql) {
11
+ const signal = new Signal({
12
+ data: [],
13
+ loading: true,
14
+ error: null
15
+ });
16
+ let sub = null;
17
+ return {
18
+ signal,
19
+ start() {
20
+ if (sub) return () => stop();
21
+ try {
22
+ sub = client.subscribe(eql, (rows) => {
23
+ signal.value = { data: rows, loading: false, error: null };
24
+ });
25
+ } catch (err) {
26
+ signal.value = {
27
+ data: [],
28
+ loading: false,
29
+ error: err instanceof Error ? err : new Error(String(err))
30
+ };
31
+ }
32
+ return () => stop();
33
+ }
34
+ };
35
+ function stop() {
36
+ sub?.unsubscribe();
37
+ sub = null;
38
+ }
39
+ }
40
+ function normalizeLiveEntitiesOpts(whereOrOpts) {
41
+ if (!whereOrOpts) return {};
42
+ if ("resolve" in whereOrOpts) return whereOrOpts;
43
+ return { where: whereOrOpts };
44
+ }
45
+ function liveEntities(client, typeOrSchema, whereOrOpts) {
46
+ const schema = typeof typeOrSchema === "string" ? void 0 : typeOrSchema;
47
+ const type = typeof typeOrSchema === "string" ? typeOrSchema : typeOrSchema.type;
48
+ const { where, resolve } = normalizeLiveEntitiesOpts(whereOrOpts);
49
+ const signal = new Signal({
50
+ data: [],
51
+ loading: true,
52
+ error: null
53
+ });
54
+ let sub = null;
55
+ let token = 0;
56
+ return {
57
+ signal,
58
+ start() {
59
+ if (sub) return () => stop();
60
+ try {
61
+ sub = client.subscribe(
62
+ entitiesQuery(type, where),
63
+ (rows) => {
64
+ const turn = ++token;
65
+ const ids = rows.map((r) => r.e).filter(Boolean);
66
+ Promise.all(ids.map((id) => client.read(id))).then(async (entities) => {
67
+ if (turn !== token) return;
68
+ let data = entities.filter(
69
+ (e) => e != null
70
+ );
71
+ if (schema && resolve && Object.keys(resolve).length > 0) {
72
+ data = await resolveRelations(
73
+ client,
74
+ schema,
75
+ data,
76
+ resolve
77
+ );
78
+ }
79
+ if (turn !== token) return;
80
+ signal.value = { data, loading: false, error: null };
81
+ }).catch((err) => {
82
+ if (turn !== token) return;
83
+ signal.value = {
84
+ data: signal.peek().data,
85
+ loading: false,
86
+ error: err instanceof Error ? err : new Error(String(err))
87
+ };
88
+ });
89
+ }
90
+ );
91
+ } catch (err) {
92
+ signal.value = {
93
+ data: [],
94
+ loading: false,
95
+ error: err instanceof Error ? err : new Error(String(err))
96
+ };
97
+ }
98
+ return () => stop();
99
+ }
100
+ };
101
+ function stop() {
102
+ token++;
103
+ sub?.unsubscribe();
104
+ sub = null;
105
+ }
106
+ }
107
+
108
+ export {
109
+ liveQuery,
110
+ liveEntities
111
+ };
@@ -0,0 +1,48 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
8
+ get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
9
+ }) : x)(function(x) {
10
+ if (typeof require !== "undefined") return require.apply(this, arguments);
11
+ throw Error('Dynamic require of "' + x + '" is not supported');
12
+ });
13
+ var __esm = (fn, res) => function __init() {
14
+ return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
15
+ };
16
+ var __commonJS = (cb, mod) => function __require2() {
17
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
18
+ };
19
+ var __export = (target, all) => {
20
+ for (var name in all)
21
+ __defProp(target, name, { get: all[name], enumerable: true });
22
+ };
23
+ var __copyProps = (to, from, except, desc) => {
24
+ if (from && typeof from === "object" || typeof from === "function") {
25
+ for (let key of __getOwnPropNames(from))
26
+ if (!__hasOwnProp.call(to, key) && key !== except)
27
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
28
+ }
29
+ return to;
30
+ };
31
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
32
+ // If the importer is in node compatibility mode or this is not an ESM
33
+ // file that has been converted to a CommonJS file using a Babel-
34
+ // compatible transform (i.e. "__esModule" has not been set), then set
35
+ // "default" to the CommonJS "module.exports" for node compatibility.
36
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
37
+ mod
38
+ ));
39
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
40
+
41
+ export {
42
+ __require,
43
+ __esm,
44
+ __commonJS,
45
+ __export,
46
+ __toESM,
47
+ __toCommonJS
48
+ };