@qlever-llc/trellis 0.8.3 → 0.9.0-rc.10

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 (693) hide show
  1. package/README.md +1 -1
  2. package/bin/trellis-generate.js +132 -0
  3. package/esm/auth/browser/login.d.ts.map +1 -1
  4. package/esm/auth/browser/login.js +46 -3
  5. package/esm/auth/browser/portal.d.ts.map +1 -1
  6. package/esm/auth/browser/portal.js +5 -1
  7. package/esm/auth/browser/session.d.ts +18 -7
  8. package/esm/auth/browser/session.d.ts.map +1 -1
  9. package/esm/auth/browser/session.js +47 -11
  10. package/esm/auth/browser/storage.d.ts +6 -1
  11. package/esm/auth/browser/storage.d.ts.map +1 -1
  12. package/esm/auth/browser/storage.js +15 -3
  13. package/esm/auth/browser.d.ts +2 -2
  14. package/esm/auth/browser.d.ts.map +1 -1
  15. package/esm/auth/browser.js +1 -1
  16. package/esm/auth/device_activation.d.ts +36 -33
  17. package/esm/auth/device_activation.d.ts.map +1 -1
  18. package/esm/auth/device_activation.js +26 -22
  19. package/esm/auth/mod.d.ts +4 -4
  20. package/esm/auth/mod.d.ts.map +1 -1
  21. package/esm/auth/mod.js +2 -2
  22. package/esm/auth/proof.d.ts +3 -1
  23. package/esm/auth/proof.d.ts.map +1 -1
  24. package/esm/auth/proof.js +21 -15
  25. package/esm/auth/protocol.d.ts +2457 -941
  26. package/esm/auth/protocol.d.ts.map +1 -1
  27. package/esm/auth/protocol.js +747 -375
  28. package/esm/auth/schemas.d.ts +25 -4
  29. package/esm/auth/schemas.d.ts.map +1 -1
  30. package/esm/auth/schemas.js +14 -4
  31. package/esm/auth/session_auth.d.ts +1 -1
  32. package/esm/auth/session_auth.d.ts.map +1 -1
  33. package/esm/auth/session_auth.js +7 -1
  34. package/esm/client_connect.d.ts +2 -0
  35. package/esm/client_connect.d.ts.map +1 -1
  36. package/esm/client_connect.js +76 -15
  37. package/esm/contract.d.ts +3 -0
  38. package/esm/contract.d.ts.map +1 -1
  39. package/esm/contract_support/mod.d.ts +422 -43
  40. package/esm/contract_support/mod.d.ts.map +1 -1
  41. package/esm/contract_support/mod.js +734 -33
  42. package/esm/contract_support/protocol.d.ts +20 -5
  43. package/esm/contract_support/protocol.d.ts.map +1 -1
  44. package/esm/contract_support/protocol.js +18 -10
  45. package/esm/contract_support/runtime.d.ts +11 -0
  46. package/esm/contract_support/runtime.d.ts.map +1 -1
  47. package/esm/contract_support/schema_pointers.d.ts.map +1 -1
  48. package/esm/contract_support/schema_pointers.js +32 -14
  49. package/esm/device.d.ts +2 -0
  50. package/esm/device.d.ts.map +1 -1
  51. package/esm/device.js +3 -0
  52. package/esm/errors/AuthError.d.ts +2 -1
  53. package/esm/errors/AuthError.d.ts.map +1 -1
  54. package/esm/errors/AuthError.js +8 -3
  55. package/esm/errors/index.d.ts +4 -4
  56. package/esm/errors/index.d.ts.map +1 -1
  57. package/esm/errors/index.js +1 -0
  58. package/esm/generated-sdk/auth/api.d.ts +27 -9
  59. package/esm/generated-sdk/auth/api.d.ts.map +1 -1
  60. package/esm/generated-sdk/auth/api.js +16 -590
  61. package/esm/generated-sdk/auth/client.d.ts +91 -85
  62. package/esm/generated-sdk/auth/client.d.ts.map +1 -1
  63. package/esm/generated-sdk/auth/contract.d.ts +1 -1
  64. package/esm/generated-sdk/auth/contract.d.ts.map +1 -1
  65. package/esm/generated-sdk/auth/contract.js +4 -2
  66. package/esm/generated-sdk/auth/mod.d.ts +1 -0
  67. package/esm/generated-sdk/auth/mod.d.ts.map +1 -1
  68. package/esm/generated-sdk/auth/owned_api.d.ts +3 -0
  69. package/esm/generated-sdk/auth/owned_api.d.ts.map +1 -0
  70. package/esm/generated-sdk/auth/owned_api.js +594 -0
  71. package/esm/generated-sdk/auth/schemas.d.ts +9959 -5160
  72. package/esm/generated-sdk/auth/schemas.d.ts.map +1 -1
  73. package/esm/generated-sdk/auth/schemas.js +136 -137
  74. package/esm/generated-sdk/auth/types.d.ts +2418 -1557
  75. package/esm/generated-sdk/auth/types.d.ts.map +1 -1
  76. package/esm/generated-sdk/auth/types.js +1 -1
  77. package/esm/generated-sdk/health/api.d.ts +24 -9
  78. package/esm/generated-sdk/health/api.d.ts.map +1 -1
  79. package/esm/generated-sdk/health/api.js +12 -20
  80. package/esm/generated-sdk/health/client.d.ts +2 -1
  81. package/esm/generated-sdk/health/client.d.ts.map +1 -1
  82. package/esm/generated-sdk/health/contract.d.ts.map +1 -1
  83. package/esm/generated-sdk/health/contract.js +2 -0
  84. package/esm/generated-sdk/health/owned_api.d.ts +3 -0
  85. package/esm/generated-sdk/health/owned_api.d.ts.map +1 -0
  86. package/esm/generated-sdk/health/owned_api.js +16 -0
  87. package/esm/generated-sdk/health/types.d.ts +2 -0
  88. package/esm/generated-sdk/health/types.d.ts.map +1 -1
  89. package/esm/generated-sdk/jobs/api.d.ts +33 -9
  90. package/esm/generated-sdk/jobs/api.d.ts.map +1 -1
  91. package/esm/generated-sdk/jobs/api.js +22 -87
  92. package/esm/generated-sdk/jobs/client.d.ts +9 -2
  93. package/esm/generated-sdk/jobs/client.d.ts.map +1 -1
  94. package/esm/generated-sdk/jobs/contract.d.ts +1 -1
  95. package/esm/generated-sdk/jobs/contract.d.ts.map +1 -1
  96. package/esm/generated-sdk/jobs/contract.js +4 -2
  97. package/esm/generated-sdk/jobs/owned_api.d.ts +3 -0
  98. package/esm/generated-sdk/jobs/owned_api.d.ts.map +1 -0
  99. package/esm/generated-sdk/jobs/owned_api.js +118 -0
  100. package/esm/generated-sdk/jobs/schemas.d.ts +336 -123
  101. package/esm/generated-sdk/jobs/schemas.d.ts.map +1 -1
  102. package/esm/generated-sdk/jobs/schemas.js +17 -15
  103. package/esm/generated-sdk/jobs/types.d.ts +144 -34
  104. package/esm/generated-sdk/jobs/types.d.ts.map +1 -1
  105. package/esm/generated-sdk/jobs/types.js +36 -1
  106. package/esm/generated-sdk/state/api.d.ts +27 -9
  107. package/esm/generated-sdk/state/api.d.ts.map +1 -1
  108. package/esm/generated-sdk/state/api.js +16 -71
  109. package/esm/generated-sdk/state/client.d.ts +4 -2
  110. package/esm/generated-sdk/state/client.d.ts.map +1 -1
  111. package/esm/generated-sdk/state/contract.d.ts +1 -1
  112. package/esm/generated-sdk/state/contract.d.ts.map +1 -1
  113. package/esm/generated-sdk/state/contract.js +4 -2
  114. package/esm/generated-sdk/state/owned_api.d.ts +3 -0
  115. package/esm/generated-sdk/state/owned_api.d.ts.map +1 -0
  116. package/esm/generated-sdk/state/owned_api.js +66 -0
  117. package/esm/generated-sdk/state/schemas.d.ts +264 -284
  118. package/esm/generated-sdk/state/schemas.d.ts.map +1 -1
  119. package/esm/generated-sdk/state/schemas.js +6 -6
  120. package/esm/generated-sdk/state/types.d.ts +24 -23
  121. package/esm/generated-sdk/state/types.d.ts.map +1 -1
  122. package/esm/generated-sdk/state/types.js +1 -1
  123. package/esm/generated-sdk/trellis-core/api.d.ts +27 -9
  124. package/esm/generated-sdk/trellis-core/api.d.ts.map +1 -1
  125. package/esm/generated-sdk/trellis-core/api.js +16 -39
  126. package/esm/generated-sdk/trellis-core/client.d.ts +5 -2
  127. package/esm/generated-sdk/trellis-core/client.d.ts.map +1 -1
  128. package/esm/generated-sdk/trellis-core/contract.d.ts +1 -1
  129. package/esm/generated-sdk/trellis-core/contract.d.ts.map +1 -1
  130. package/esm/generated-sdk/trellis-core/contract.js +4 -2
  131. package/esm/generated-sdk/trellis-core/owned_api.d.ts +3 -0
  132. package/esm/generated-sdk/trellis-core/owned_api.d.ts.map +1 -0
  133. package/esm/generated-sdk/trellis-core/owned_api.js +42 -0
  134. package/esm/generated-sdk/trellis-core/schemas.d.ts +259 -11
  135. package/esm/generated-sdk/trellis-core/schemas.d.ts.map +1 -1
  136. package/esm/generated-sdk/trellis-core/schemas.js +5 -3
  137. package/esm/generated-sdk/trellis-core/types.d.ts +56 -1
  138. package/esm/generated-sdk/trellis-core/types.d.ts.map +1 -1
  139. package/esm/generated-sdk/trellis-core/types.js +1 -1
  140. package/esm/helpers.d.ts.map +1 -1
  141. package/esm/index.d.ts +4 -3
  142. package/esm/index.d.ts.map +1 -1
  143. package/esm/index.js +1 -0
  144. package/esm/jobs.d.ts +10 -1
  145. package/esm/jobs.d.ts.map +1 -1
  146. package/esm/jobs.js +16 -1
  147. package/esm/kv.d.ts.map +1 -1
  148. package/esm/kv.js +10 -4
  149. package/esm/models/auth/rpc/Logout.d.ts +4 -4
  150. package/esm/models/auth/rpc/Logout.d.ts.map +1 -1
  151. package/esm/models/auth/rpc/Logout.js +2 -2
  152. package/esm/models/trellis/Page.d.ts +2 -0
  153. package/esm/models/trellis/Page.d.ts.map +1 -0
  154. package/esm/models/trellis/Page.js +1 -0
  155. package/esm/models/trellis/State.d.ts +1 -0
  156. package/esm/models/trellis/State.d.ts.map +1 -1
  157. package/esm/models/trellis/State.js +1 -0
  158. package/esm/models/trellis/rpc/StateList.d.ts +9 -12
  159. package/esm/models/trellis/rpc/StateList.d.ts.map +1 -1
  160. package/esm/models/trellis/rpc/StateList.js +16 -18
  161. package/esm/npm/src/auth/browser/login.d.ts.map +1 -1
  162. package/esm/npm/src/auth/browser/login.js +46 -3
  163. package/esm/npm/src/auth/browser/portal.d.ts.map +1 -1
  164. package/esm/npm/src/auth/browser/portal.js +5 -1
  165. package/esm/npm/src/auth/browser/session.d.ts +18 -7
  166. package/esm/npm/src/auth/browser/session.d.ts.map +1 -1
  167. package/esm/npm/src/auth/browser/session.js +47 -11
  168. package/esm/npm/src/auth/browser/storage.d.ts +6 -1
  169. package/esm/npm/src/auth/browser/storage.d.ts.map +1 -1
  170. package/esm/npm/src/auth/browser/storage.js +15 -3
  171. package/esm/npm/src/auth/browser.d.ts +2 -2
  172. package/esm/npm/src/auth/browser.d.ts.map +1 -1
  173. package/esm/npm/src/auth/browser.js +1 -1
  174. package/esm/npm/src/auth/device_activation.d.ts +36 -33
  175. package/esm/npm/src/auth/device_activation.d.ts.map +1 -1
  176. package/esm/npm/src/auth/device_activation.js +26 -22
  177. package/esm/npm/src/auth/mod.d.ts +4 -4
  178. package/esm/npm/src/auth/mod.d.ts.map +1 -1
  179. package/esm/npm/src/auth/mod.js +2 -2
  180. package/esm/npm/src/auth/proof.d.ts +3 -1
  181. package/esm/npm/src/auth/proof.d.ts.map +1 -1
  182. package/esm/npm/src/auth/proof.js +21 -15
  183. package/esm/npm/src/auth/protocol.d.ts +2457 -941
  184. package/esm/npm/src/auth/protocol.d.ts.map +1 -1
  185. package/esm/npm/src/auth/protocol.js +747 -375
  186. package/esm/npm/src/auth/schemas.d.ts +25 -4
  187. package/esm/npm/src/auth/schemas.d.ts.map +1 -1
  188. package/esm/npm/src/auth/schemas.js +14 -4
  189. package/esm/npm/src/auth/session_auth.d.ts +1 -1
  190. package/esm/npm/src/auth/session_auth.d.ts.map +1 -1
  191. package/esm/npm/src/auth/session_auth.js +7 -1
  192. package/esm/npm/src/client_connect.d.ts +2 -0
  193. package/esm/npm/src/client_connect.d.ts.map +1 -1
  194. package/esm/npm/src/client_connect.js +76 -15
  195. package/esm/npm/src/contract.d.ts +3 -0
  196. package/esm/npm/src/contract.d.ts.map +1 -1
  197. package/esm/npm/src/contract_support/mod.d.ts +422 -43
  198. package/esm/npm/src/contract_support/mod.d.ts.map +1 -1
  199. package/esm/npm/src/contract_support/mod.js +734 -33
  200. package/esm/npm/src/contract_support/protocol.d.ts +20 -5
  201. package/esm/npm/src/contract_support/protocol.d.ts.map +1 -1
  202. package/esm/npm/src/contract_support/protocol.js +18 -10
  203. package/esm/npm/src/contract_support/runtime.d.ts +11 -0
  204. package/esm/npm/src/contract_support/runtime.d.ts.map +1 -1
  205. package/esm/npm/src/contract_support/schema_pointers.d.ts.map +1 -1
  206. package/esm/npm/src/contract_support/schema_pointers.js +32 -14
  207. package/esm/npm/src/device/deno.d.ts.map +1 -1
  208. package/esm/npm/src/device/deno.js +6 -0
  209. package/esm/npm/src/device.d.ts +2 -0
  210. package/esm/npm/src/device.d.ts.map +1 -1
  211. package/esm/npm/src/device.js +3 -0
  212. package/esm/npm/src/errors/AuthError.d.ts +2 -1
  213. package/esm/npm/src/errors/AuthError.d.ts.map +1 -1
  214. package/esm/npm/src/errors/AuthError.js +8 -3
  215. package/esm/npm/src/errors/index.d.ts +4 -4
  216. package/esm/npm/src/errors/index.d.ts.map +1 -1
  217. package/esm/npm/src/errors/index.js +1 -0
  218. package/esm/npm/src/generate.js +54 -24
  219. package/esm/npm/src/helpers.d.ts.map +1 -1
  220. package/esm/npm/src/index.d.ts +4 -3
  221. package/esm/npm/src/index.d.ts.map +1 -1
  222. package/esm/npm/src/index.js +1 -0
  223. package/esm/npm/src/jobs.d.ts +10 -1
  224. package/esm/npm/src/jobs.d.ts.map +1 -1
  225. package/esm/npm/src/jobs.js +16 -1
  226. package/esm/npm/src/kv.d.ts.map +1 -1
  227. package/esm/npm/src/kv.js +10 -4
  228. package/esm/npm/src/models/auth/rpc/Logout.d.ts +4 -4
  229. package/esm/npm/src/models/auth/rpc/Logout.d.ts.map +1 -1
  230. package/esm/npm/src/models/auth/rpc/Logout.js +2 -2
  231. package/esm/npm/src/models/trellis/Page.d.ts +2 -0
  232. package/esm/npm/src/models/trellis/Page.d.ts.map +1 -0
  233. package/esm/npm/src/models/trellis/Page.js +1 -0
  234. package/esm/npm/src/models/trellis/State.d.ts +1 -0
  235. package/esm/npm/src/models/trellis/State.d.ts.map +1 -1
  236. package/esm/npm/src/models/trellis/State.js +1 -0
  237. package/esm/npm/src/models/trellis/rpc/StateList.d.ts +9 -12
  238. package/esm/npm/src/models/trellis/rpc/StateList.d.ts.map +1 -1
  239. package/esm/npm/src/models/trellis/rpc/StateList.js +16 -18
  240. package/esm/npm/src/operations.d.ts +16 -7
  241. package/esm/npm/src/operations.d.ts.map +1 -1
  242. package/esm/npm/src/operations.js +84 -19
  243. package/esm/npm/src/runtime_transport.d.ts +2 -0
  244. package/esm/npm/src/runtime_transport.d.ts.map +1 -1
  245. package/esm/npm/src/runtime_transport.js +1 -0
  246. package/esm/npm/src/server/internal_jobs/active-job.d.ts +2 -1
  247. package/esm/npm/src/server/internal_jobs/active-job.d.ts.map +1 -1
  248. package/esm/npm/src/server/internal_jobs/active-job.js +3 -0
  249. package/esm/npm/src/server/internal_jobs/job-manager.d.ts +4 -1
  250. package/esm/npm/src/server/internal_jobs/job-manager.d.ts.map +1 -1
  251. package/esm/npm/src/server/internal_jobs/job-manager.js +61 -1
  252. package/esm/npm/src/server/internal_jobs/projection.js +1 -0
  253. package/esm/npm/src/server/internal_jobs/runtime-worker.d.ts +13 -1
  254. package/esm/npm/src/server/internal_jobs/runtime-worker.d.ts.map +1 -1
  255. package/esm/npm/src/server/internal_jobs/runtime-worker.js +73 -13
  256. package/esm/npm/src/server/internal_jobs/types.d.ts +19 -0
  257. package/esm/npm/src/server/internal_jobs/types.d.ts.map +1 -1
  258. package/esm/npm/src/server/internal_jobs/types.js +10 -0
  259. package/esm/npm/src/server/runtime.d.ts +1 -0
  260. package/esm/npm/src/server/runtime.d.ts.map +1 -1
  261. package/esm/npm/src/server/service.d.ts +10 -1
  262. package/esm/npm/src/server/service.d.ts.map +1 -1
  263. package/esm/npm/src/server/service.js +210 -64
  264. package/esm/npm/src/server/transfer.d.ts.map +1 -1
  265. package/esm/npm/src/server/transfer.js +4 -0
  266. package/esm/npm/src/server.d.ts.map +1 -1
  267. package/esm/npm/src/server.js +337 -34
  268. package/esm/npm/src/store.d.ts +8 -1
  269. package/esm/npm/src/store.d.ts.map +1 -1
  270. package/esm/npm/src/store.js +46 -8
  271. package/esm/npm/src/transfer.d.ts +3 -0
  272. package/esm/npm/src/transfer.d.ts.map +1 -1
  273. package/esm/npm/src/transfer.js +20 -30
  274. package/esm/npm/src/trellis.d.ts +85 -22
  275. package/esm/npm/src/trellis.d.ts.map +1 -1
  276. package/esm/npm/src/trellis.js +525 -61
  277. package/esm/operations.d.ts +16 -7
  278. package/esm/operations.d.ts.map +1 -1
  279. package/esm/operations.js +84 -19
  280. package/esm/runtime_transport.d.ts +2 -0
  281. package/esm/runtime_transport.d.ts.map +1 -1
  282. package/esm/runtime_transport.js +1 -0
  283. package/esm/store.d.ts +8 -1
  284. package/esm/store.d.ts.map +1 -1
  285. package/esm/store.js +46 -8
  286. package/esm/transfer.d.ts +3 -0
  287. package/esm/transfer.d.ts.map +1 -1
  288. package/esm/transfer.js +20 -30
  289. package/esm/trellis.d.ts +85 -22
  290. package/esm/trellis.d.ts.map +1 -1
  291. package/esm/trellis.js +525 -61
  292. package/package.json +6 -4
  293. package/script/auth/browser/login.d.ts.map +1 -1
  294. package/script/auth/browser/login.js +46 -3
  295. package/script/auth/browser/portal.d.ts.map +1 -1
  296. package/script/auth/browser/portal.js +5 -1
  297. package/script/auth/browser/session.d.ts +18 -7
  298. package/script/auth/browser/session.d.ts.map +1 -1
  299. package/script/auth/browser/session.js +47 -11
  300. package/script/auth/browser/storage.d.ts +6 -1
  301. package/script/auth/browser/storage.d.ts.map +1 -1
  302. package/script/auth/browser/storage.js +15 -3
  303. package/script/auth/browser.d.ts +2 -2
  304. package/script/auth/browser.d.ts.map +1 -1
  305. package/script/auth/browser.js +2 -1
  306. package/script/auth/device_activation.d.ts +36 -33
  307. package/script/auth/device_activation.d.ts.map +1 -1
  308. package/script/auth/device_activation.js +25 -21
  309. package/script/auth/mod.d.ts +4 -4
  310. package/script/auth/mod.d.ts.map +1 -1
  311. package/script/auth/mod.js +132 -137
  312. package/script/auth/proof.d.ts +3 -1
  313. package/script/auth/proof.d.ts.map +1 -1
  314. package/script/auth/proof.js +21 -15
  315. package/script/auth/protocol.d.ts +2457 -941
  316. package/script/auth/protocol.d.ts.map +1 -1
  317. package/script/auth/protocol.js +749 -377
  318. package/script/auth/schemas.d.ts +25 -4
  319. package/script/auth/schemas.d.ts.map +1 -1
  320. package/script/auth/schemas.js +16 -5
  321. package/script/auth/session_auth.d.ts +1 -1
  322. package/script/auth/session_auth.d.ts.map +1 -1
  323. package/script/auth/session_auth.js +7 -1
  324. package/script/client_connect.d.ts +2 -0
  325. package/script/client_connect.d.ts.map +1 -1
  326. package/script/client_connect.js +76 -15
  327. package/script/contract.d.ts +3 -0
  328. package/script/contract.d.ts.map +1 -1
  329. package/script/contract_support/mod.d.ts +422 -43
  330. package/script/contract_support/mod.d.ts.map +1 -1
  331. package/script/contract_support/mod.js +757 -51
  332. package/script/contract_support/protocol.d.ts +20 -5
  333. package/script/contract_support/protocol.d.ts.map +1 -1
  334. package/script/contract_support/protocol.js +20 -11
  335. package/script/contract_support/runtime.d.ts +11 -0
  336. package/script/contract_support/runtime.d.ts.map +1 -1
  337. package/script/contract_support/schema_pointers.d.ts.map +1 -1
  338. package/script/contract_support/schema_pointers.js +32 -14
  339. package/script/device.d.ts +2 -0
  340. package/script/device.d.ts.map +1 -1
  341. package/script/device.js +3 -0
  342. package/script/errors/AuthError.d.ts +2 -1
  343. package/script/errors/AuthError.d.ts.map +1 -1
  344. package/script/errors/AuthError.js +8 -3
  345. package/script/errors/index.d.ts +4 -4
  346. package/script/errors/index.d.ts.map +1 -1
  347. package/script/errors/index.js +1 -0
  348. package/script/generated-sdk/auth/api.d.ts +27 -9
  349. package/script/generated-sdk/auth/api.d.ts.map +1 -1
  350. package/script/generated-sdk/auth/api.js +17 -591
  351. package/script/generated-sdk/auth/client.d.ts +91 -85
  352. package/script/generated-sdk/auth/client.d.ts.map +1 -1
  353. package/script/generated-sdk/auth/contract.d.ts +1 -1
  354. package/script/generated-sdk/auth/contract.d.ts.map +1 -1
  355. package/script/generated-sdk/auth/contract.js +4 -2
  356. package/script/generated-sdk/auth/mod.d.ts +1 -0
  357. package/script/generated-sdk/auth/mod.d.ts.map +1 -1
  358. package/script/generated-sdk/auth/owned_api.d.ts +3 -0
  359. package/script/generated-sdk/auth/owned_api.d.ts.map +1 -0
  360. package/script/generated-sdk/auth/owned_api.js +597 -0
  361. package/script/generated-sdk/auth/schemas.d.ts +9959 -5160
  362. package/script/generated-sdk/auth/schemas.d.ts.map +1 -1
  363. package/script/generated-sdk/auth/schemas.js +139 -140
  364. package/script/generated-sdk/auth/types.d.ts +2418 -1557
  365. package/script/generated-sdk/auth/types.d.ts.map +1 -1
  366. package/script/generated-sdk/auth/types.js +1 -1
  367. package/script/generated-sdk/health/api.d.ts +24 -9
  368. package/script/generated-sdk/health/api.d.ts.map +1 -1
  369. package/script/generated-sdk/health/api.js +13 -21
  370. package/script/generated-sdk/health/client.d.ts +2 -1
  371. package/script/generated-sdk/health/client.d.ts.map +1 -1
  372. package/script/generated-sdk/health/contract.d.ts.map +1 -1
  373. package/script/generated-sdk/health/contract.js +2 -0
  374. package/script/generated-sdk/health/owned_api.d.ts +3 -0
  375. package/script/generated-sdk/health/owned_api.d.ts.map +1 -0
  376. package/script/generated-sdk/health/owned_api.js +19 -0
  377. package/script/generated-sdk/health/types.d.ts +2 -0
  378. package/script/generated-sdk/health/types.d.ts.map +1 -1
  379. package/script/generated-sdk/jobs/api.d.ts +33 -9
  380. package/script/generated-sdk/jobs/api.d.ts.map +1 -1
  381. package/script/generated-sdk/jobs/api.js +23 -88
  382. package/script/generated-sdk/jobs/client.d.ts +9 -2
  383. package/script/generated-sdk/jobs/client.d.ts.map +1 -1
  384. package/script/generated-sdk/jobs/contract.d.ts +1 -1
  385. package/script/generated-sdk/jobs/contract.d.ts.map +1 -1
  386. package/script/generated-sdk/jobs/contract.js +4 -2
  387. package/script/generated-sdk/jobs/owned_api.d.ts +3 -0
  388. package/script/generated-sdk/jobs/owned_api.d.ts.map +1 -0
  389. package/script/generated-sdk/jobs/owned_api.js +154 -0
  390. package/script/generated-sdk/jobs/schemas.d.ts +336 -123
  391. package/script/generated-sdk/jobs/schemas.d.ts.map +1 -1
  392. package/script/generated-sdk/jobs/schemas.js +18 -16
  393. package/script/generated-sdk/jobs/types.d.ts +144 -34
  394. package/script/generated-sdk/jobs/types.d.ts.map +1 -1
  395. package/script/generated-sdk/jobs/types.js +38 -2
  396. package/script/generated-sdk/state/api.d.ts +27 -9
  397. package/script/generated-sdk/state/api.d.ts.map +1 -1
  398. package/script/generated-sdk/state/api.js +17 -72
  399. package/script/generated-sdk/state/client.d.ts +4 -2
  400. package/script/generated-sdk/state/client.d.ts.map +1 -1
  401. package/script/generated-sdk/state/contract.d.ts +1 -1
  402. package/script/generated-sdk/state/contract.d.ts.map +1 -1
  403. package/script/generated-sdk/state/contract.js +4 -2
  404. package/script/generated-sdk/state/owned_api.d.ts +3 -0
  405. package/script/generated-sdk/state/owned_api.d.ts.map +1 -0
  406. package/script/generated-sdk/state/owned_api.js +69 -0
  407. package/script/generated-sdk/state/schemas.d.ts +264 -284
  408. package/script/generated-sdk/state/schemas.d.ts.map +1 -1
  409. package/script/generated-sdk/state/schemas.js +6 -6
  410. package/script/generated-sdk/state/types.d.ts +24 -23
  411. package/script/generated-sdk/state/types.d.ts.map +1 -1
  412. package/script/generated-sdk/state/types.js +1 -1
  413. package/script/generated-sdk/trellis-core/api.d.ts +27 -9
  414. package/script/generated-sdk/trellis-core/api.d.ts.map +1 -1
  415. package/script/generated-sdk/trellis-core/api.js +17 -40
  416. package/script/generated-sdk/trellis-core/client.d.ts +5 -2
  417. package/script/generated-sdk/trellis-core/client.d.ts.map +1 -1
  418. package/script/generated-sdk/trellis-core/contract.d.ts +1 -1
  419. package/script/generated-sdk/trellis-core/contract.d.ts.map +1 -1
  420. package/script/generated-sdk/trellis-core/contract.js +4 -2
  421. package/script/generated-sdk/trellis-core/owned_api.d.ts +3 -0
  422. package/script/generated-sdk/trellis-core/owned_api.d.ts.map +1 -0
  423. package/script/generated-sdk/trellis-core/owned_api.js +45 -0
  424. package/script/generated-sdk/trellis-core/schemas.d.ts +259 -11
  425. package/script/generated-sdk/trellis-core/schemas.d.ts.map +1 -1
  426. package/script/generated-sdk/trellis-core/schemas.js +6 -4
  427. package/script/generated-sdk/trellis-core/types.d.ts +56 -1
  428. package/script/generated-sdk/trellis-core/types.d.ts.map +1 -1
  429. package/script/generated-sdk/trellis-core/types.js +1 -1
  430. package/script/helpers.d.ts.map +1 -1
  431. package/script/index.d.ts +4 -3
  432. package/script/index.d.ts.map +1 -1
  433. package/script/index.js +5 -2
  434. package/script/jobs.d.ts +10 -1
  435. package/script/jobs.d.ts.map +1 -1
  436. package/script/jobs.js +17 -2
  437. package/script/kv.d.ts.map +1 -1
  438. package/script/kv.js +10 -4
  439. package/script/models/auth/rpc/Logout.d.ts +4 -4
  440. package/script/models/auth/rpc/Logout.d.ts.map +1 -1
  441. package/script/models/auth/rpc/Logout.js +3 -3
  442. package/script/models/trellis/Page.d.ts +2 -0
  443. package/script/models/trellis/Page.d.ts.map +1 -0
  444. package/script/models/trellis/Page.js +6 -0
  445. package/script/models/trellis/State.d.ts +1 -0
  446. package/script/models/trellis/State.d.ts.map +1 -1
  447. package/script/models/trellis/State.js +1 -0
  448. package/script/models/trellis/rpc/StateList.d.ts +9 -12
  449. package/script/models/trellis/rpc/StateList.d.ts.map +1 -1
  450. package/script/models/trellis/rpc/StateList.js +16 -18
  451. package/script/npm/src/auth/browser/login.d.ts.map +1 -1
  452. package/script/npm/src/auth/browser/login.js +46 -3
  453. package/script/npm/src/auth/browser/portal.d.ts.map +1 -1
  454. package/script/npm/src/auth/browser/portal.js +5 -1
  455. package/script/npm/src/auth/browser/session.d.ts +18 -7
  456. package/script/npm/src/auth/browser/session.d.ts.map +1 -1
  457. package/script/npm/src/auth/browser/session.js +47 -11
  458. package/script/npm/src/auth/browser/storage.d.ts +6 -1
  459. package/script/npm/src/auth/browser/storage.d.ts.map +1 -1
  460. package/script/npm/src/auth/browser/storage.js +15 -3
  461. package/script/npm/src/auth/browser.d.ts +2 -2
  462. package/script/npm/src/auth/browser.d.ts.map +1 -1
  463. package/script/npm/src/auth/browser.js +2 -1
  464. package/script/npm/src/auth/device_activation.d.ts +36 -33
  465. package/script/npm/src/auth/device_activation.d.ts.map +1 -1
  466. package/script/npm/src/auth/device_activation.js +25 -21
  467. package/script/npm/src/auth/mod.d.ts +4 -4
  468. package/script/npm/src/auth/mod.d.ts.map +1 -1
  469. package/script/npm/src/auth/mod.js +132 -137
  470. package/script/npm/src/auth/proof.d.ts +3 -1
  471. package/script/npm/src/auth/proof.d.ts.map +1 -1
  472. package/script/npm/src/auth/proof.js +21 -15
  473. package/script/npm/src/auth/protocol.d.ts +2457 -941
  474. package/script/npm/src/auth/protocol.d.ts.map +1 -1
  475. package/script/npm/src/auth/protocol.js +749 -377
  476. package/script/npm/src/auth/schemas.d.ts +25 -4
  477. package/script/npm/src/auth/schemas.d.ts.map +1 -1
  478. package/script/npm/src/auth/schemas.js +16 -5
  479. package/script/npm/src/auth/session_auth.d.ts +1 -1
  480. package/script/npm/src/auth/session_auth.d.ts.map +1 -1
  481. package/script/npm/src/auth/session_auth.js +7 -1
  482. package/script/npm/src/client_connect.d.ts +2 -0
  483. package/script/npm/src/client_connect.d.ts.map +1 -1
  484. package/script/npm/src/client_connect.js +76 -15
  485. package/script/npm/src/contract.d.ts +3 -0
  486. package/script/npm/src/contract.d.ts.map +1 -1
  487. package/script/npm/src/contract_support/mod.d.ts +422 -43
  488. package/script/npm/src/contract_support/mod.d.ts.map +1 -1
  489. package/script/npm/src/contract_support/mod.js +757 -51
  490. package/script/npm/src/contract_support/protocol.d.ts +20 -5
  491. package/script/npm/src/contract_support/protocol.d.ts.map +1 -1
  492. package/script/npm/src/contract_support/protocol.js +20 -11
  493. package/script/npm/src/contract_support/runtime.d.ts +11 -0
  494. package/script/npm/src/contract_support/runtime.d.ts.map +1 -1
  495. package/script/npm/src/contract_support/schema_pointers.d.ts.map +1 -1
  496. package/script/npm/src/contract_support/schema_pointers.js +32 -14
  497. package/script/npm/src/device/deno.d.ts.map +1 -1
  498. package/script/npm/src/device/deno.js +6 -0
  499. package/script/npm/src/device.d.ts +2 -0
  500. package/script/npm/src/device.d.ts.map +1 -1
  501. package/script/npm/src/device.js +3 -0
  502. package/script/npm/src/errors/AuthError.d.ts +2 -1
  503. package/script/npm/src/errors/AuthError.d.ts.map +1 -1
  504. package/script/npm/src/errors/AuthError.js +8 -3
  505. package/script/npm/src/errors/index.d.ts +4 -4
  506. package/script/npm/src/errors/index.d.ts.map +1 -1
  507. package/script/npm/src/errors/index.js +1 -0
  508. package/script/npm/src/generate.js +54 -57
  509. package/script/npm/src/helpers.d.ts.map +1 -1
  510. package/script/npm/src/index.d.ts +4 -3
  511. package/script/npm/src/index.d.ts.map +1 -1
  512. package/script/npm/src/index.js +5 -2
  513. package/script/npm/src/jobs.d.ts +10 -1
  514. package/script/npm/src/jobs.d.ts.map +1 -1
  515. package/script/npm/src/jobs.js +17 -2
  516. package/script/npm/src/kv.d.ts.map +1 -1
  517. package/script/npm/src/kv.js +10 -4
  518. package/script/npm/src/models/auth/rpc/Logout.d.ts +4 -4
  519. package/script/npm/src/models/auth/rpc/Logout.d.ts.map +1 -1
  520. package/script/npm/src/models/auth/rpc/Logout.js +3 -3
  521. package/script/npm/src/models/trellis/Page.d.ts +2 -0
  522. package/script/npm/src/models/trellis/Page.d.ts.map +1 -0
  523. package/script/npm/src/models/trellis/Page.js +6 -0
  524. package/script/npm/src/models/trellis/State.d.ts +1 -0
  525. package/script/npm/src/models/trellis/State.d.ts.map +1 -1
  526. package/script/npm/src/models/trellis/State.js +1 -0
  527. package/script/npm/src/models/trellis/rpc/StateList.d.ts +9 -12
  528. package/script/npm/src/models/trellis/rpc/StateList.d.ts.map +1 -1
  529. package/script/npm/src/models/trellis/rpc/StateList.js +16 -18
  530. package/script/npm/src/operations.d.ts +16 -7
  531. package/script/npm/src/operations.d.ts.map +1 -1
  532. package/script/npm/src/operations.js +84 -19
  533. package/script/npm/src/runtime_transport.d.ts +2 -0
  534. package/script/npm/src/runtime_transport.d.ts.map +1 -1
  535. package/script/npm/src/runtime_transport.js +2 -1
  536. package/script/npm/src/server/internal_jobs/active-job.d.ts +2 -1
  537. package/script/npm/src/server/internal_jobs/active-job.d.ts.map +1 -1
  538. package/script/npm/src/server/internal_jobs/active-job.js +3 -0
  539. package/script/npm/src/server/internal_jobs/job-manager.d.ts +4 -1
  540. package/script/npm/src/server/internal_jobs/job-manager.d.ts.map +1 -1
  541. package/script/npm/src/server/internal_jobs/job-manager.js +61 -1
  542. package/script/npm/src/server/internal_jobs/projection.js +1 -0
  543. package/script/npm/src/server/internal_jobs/runtime-worker.d.ts +13 -1
  544. package/script/npm/src/server/internal_jobs/runtime-worker.d.ts.map +1 -1
  545. package/script/npm/src/server/internal_jobs/runtime-worker.js +74 -13
  546. package/script/npm/src/server/internal_jobs/types.d.ts +19 -0
  547. package/script/npm/src/server/internal_jobs/types.d.ts.map +1 -1
  548. package/script/npm/src/server/internal_jobs/types.js +11 -1
  549. package/script/npm/src/server/runtime.d.ts +1 -0
  550. package/script/npm/src/server/runtime.d.ts.map +1 -1
  551. package/script/npm/src/server/service.d.ts +10 -1
  552. package/script/npm/src/server/service.d.ts.map +1 -1
  553. package/script/npm/src/server/service.js +208 -62
  554. package/script/npm/src/server/transfer.d.ts.map +1 -1
  555. package/script/npm/src/server/transfer.js +4 -0
  556. package/script/npm/src/server.d.ts.map +1 -1
  557. package/script/npm/src/server.js +336 -33
  558. package/script/npm/src/store.d.ts +8 -1
  559. package/script/npm/src/store.d.ts.map +1 -1
  560. package/script/npm/src/store.js +46 -8
  561. package/script/npm/src/transfer.d.ts +3 -0
  562. package/script/npm/src/transfer.d.ts.map +1 -1
  563. package/script/npm/src/transfer.js +19 -29
  564. package/script/npm/src/trellis.d.ts +85 -22
  565. package/script/npm/src/trellis.d.ts.map +1 -1
  566. package/script/npm/src/trellis.js +525 -61
  567. package/script/operations.d.ts +16 -7
  568. package/script/operations.d.ts.map +1 -1
  569. package/script/operations.js +84 -19
  570. package/script/runtime_transport.d.ts +2 -0
  571. package/script/runtime_transport.d.ts.map +1 -1
  572. package/script/runtime_transport.js +2 -1
  573. package/script/store.d.ts +8 -1
  574. package/script/store.d.ts.map +1 -1
  575. package/script/store.js +46 -8
  576. package/script/transfer.d.ts +3 -0
  577. package/script/transfer.d.ts.map +1 -1
  578. package/script/transfer.js +19 -29
  579. package/script/trellis.d.ts +85 -22
  580. package/script/trellis.d.ts.map +1 -1
  581. package/script/trellis.js +525 -61
  582. package/src/_dnt.polyfills.ts +274 -0
  583. package/src/_dnt.shims.ts +64 -0
  584. package/src/auth/browser/login.ts +295 -0
  585. package/src/auth/browser/portal.ts +75 -0
  586. package/src/auth/browser/session.ts +197 -0
  587. package/src/auth/browser/storage.ts +105 -0
  588. package/src/auth/browser.ts +82 -0
  589. package/src/auth/device_activation.ts +715 -0
  590. package/src/auth/keys.ts +116 -0
  591. package/src/auth/mod.ts +298 -0
  592. package/src/auth/proof.ts +111 -0
  593. package/src/auth/protocol.ts +1629 -0
  594. package/src/auth/schemas.ts +145 -0
  595. package/src/auth/session_auth.ts +167 -0
  596. package/src/auth/time.ts +15 -0
  597. package/src/auth/trellis_id.ts +9 -0
  598. package/src/auth/types.ts +4 -0
  599. package/src/auth/utils.ts +87 -0
  600. package/src/auth.ts +2 -0
  601. package/src/browser.ts +8 -0
  602. package/src/client.ts +164 -0
  603. package/src/client_connect.ts +1328 -0
  604. package/src/codec.ts +107 -0
  605. package/src/connection.ts +466 -0
  606. package/src/contract.ts +84 -0
  607. package/src/contract_support/canonical.ts +217 -0
  608. package/src/contract_support/mod.ts +5079 -0
  609. package/src/contract_support/protocol.ts +213 -0
  610. package/src/contract_support/runtime.ts +129 -0
  611. package/src/contract_support/schema_pointers.ts +161 -0
  612. package/src/contracts.ts +9 -0
  613. package/src/device/deno.ts +941 -0
  614. package/src/device.ts +989 -0
  615. package/src/env.ts +1 -0
  616. package/src/errors/AuthError.ts +82 -0
  617. package/src/errors/KVError.ts +47 -0
  618. package/src/errors/RemoteError.ts +111 -0
  619. package/src/errors/StoreError.ts +43 -0
  620. package/src/errors/TransferError.ts +43 -0
  621. package/src/errors/TransportError.ts +48 -0
  622. package/src/errors/TrellisError.ts +20 -0
  623. package/src/errors/ValidationError.ts +80 -0
  624. package/src/errors/index.ts +195 -0
  625. package/src/generate.ts +329 -0
  626. package/src/globals.ts +26 -0
  627. package/src/health.ts +28 -0
  628. package/src/helpers.ts +63 -0
  629. package/src/host/mod.ts +9 -0
  630. package/src/host/node.ts +9 -0
  631. package/src/index.ts +233 -0
  632. package/src/jobs.ts +344 -0
  633. package/src/kv.ts +564 -0
  634. package/src/models/auth/rpc/Logout.ts +15 -0
  635. package/src/models/trellis/Page.ts +6 -0
  636. package/src/models/trellis/State.ts +55 -0
  637. package/src/models/trellis/TrellisError.ts +21 -0
  638. package/src/models/trellis/rpc/StateDelete.ts +13 -0
  639. package/src/models/trellis/rpc/StateGet.ts +25 -0
  640. package/src/models/trellis/rpc/StateList.ts +26 -0
  641. package/src/models/trellis/rpc/StatePut.ts +42 -0
  642. package/src/operations.ts +1508 -0
  643. package/src/runtime_transport.ts +132 -0
  644. package/src/sdk/auth.ts +2 -0
  645. package/src/sdk/core.ts +2 -0
  646. package/src/sdk/health.ts +2 -0
  647. package/src/sdk/jobs.ts +2 -0
  648. package/src/sdk/state.ts +2 -0
  649. package/src/server/health.ts +379 -0
  650. package/src/server/health_rpc.ts +51 -0
  651. package/src/server/health_schemas.ts +61 -0
  652. package/src/server/internal_jobs/active-job.ts +115 -0
  653. package/src/server/internal_jobs/bindings.ts +26 -0
  654. package/src/server/internal_jobs/cancellation-registry.ts +71 -0
  655. package/src/server/internal_jobs/heartbeat.ts +120 -0
  656. package/src/server/internal_jobs/job-manager.ts +456 -0
  657. package/src/server/internal_jobs/projection.ts +48 -0
  658. package/src/server/internal_jobs/runtime-worker.ts +741 -0
  659. package/src/server/internal_jobs/types.ts +124 -0
  660. package/src/server/runtime.ts +27 -0
  661. package/src/server/service.ts +2377 -0
  662. package/src/server/subscription.ts +143 -0
  663. package/src/server/transfer.ts +962 -0
  664. package/src/server.ts +1725 -0
  665. package/src/server_logger.ts +10 -0
  666. package/src/service/deno.ts +18 -0
  667. package/src/service/mod.ts +68 -0
  668. package/src/service/node.ts +18 -0
  669. package/src/store.ts +658 -0
  670. package/src/tasks.ts +34 -0
  671. package/src/telemetry/carrier.ts +35 -0
  672. package/src/telemetry/core.ts +31 -0
  673. package/src/telemetry/env.ts +23 -0
  674. package/src/telemetry/mod.ts +26 -0
  675. package/src/telemetry/nats.ts +15 -0
  676. package/src/telemetry/result.ts +20 -0
  677. package/src/telemetry/trace.ts +39 -0
  678. package/src/telemetry/trellis.ts +1 -0
  679. package/src/tracing.ts +28 -0
  680. package/src/transfer.ts +602 -0
  681. package/src/trellis.ts +3650 -0
  682. package/esm/models/trellis/Paginate.d.ts +0 -7
  683. package/esm/models/trellis/Paginate.d.ts.map +0 -1
  684. package/esm/models/trellis/Paginate.js +0 -5
  685. package/esm/npm/src/models/trellis/Paginate.d.ts +0 -7
  686. package/esm/npm/src/models/trellis/Paginate.d.ts.map +0 -1
  687. package/esm/npm/src/models/trellis/Paginate.js +0 -5
  688. package/script/models/trellis/Paginate.d.ts +0 -7
  689. package/script/models/trellis/Paginate.d.ts.map +0 -1
  690. package/script/models/trellis/Paginate.js +0 -11
  691. package/script/npm/src/models/trellis/Paginate.d.ts +0 -7
  692. package/script/npm/src/models/trellis/Paginate.d.ts.map +0 -1
  693. package/script/npm/src/models/trellis/Paginate.js +0 -11
package/src/kv.ts ADDED
@@ -0,0 +1,564 @@
1
+ import { type KV, type KvEntry, Kvm } from "@nats-io/kv";
2
+ import { jetstreamManager } from "@nats-io/jetstream";
3
+ import type { NatsConnection } from "@nats-io/nats-core/internal";
4
+ import { AsyncResult, Result } from "@qlever-llc/result";
5
+ import type { StaticDecode, TSchema } from "typebox";
6
+ import Value, { ParseError } from "typebox/value";
7
+ import { KVError, ValidationError } from "./errors/index.js";
8
+ import { decodeSubject, escapeKvKey } from "./helpers.js";
9
+
10
+ function externalizeValue(value: unknown): unknown {
11
+ if (value instanceof Date) {
12
+ return value.toISOString();
13
+ }
14
+ if (Array.isArray(value)) {
15
+ return value.map(externalizeValue);
16
+ }
17
+ if (value !== null && typeof value === "object") {
18
+ const out: Record<string, unknown> = {};
19
+ for (const [key, entry] of Object.entries(value)) {
20
+ if (entry !== undefined) {
21
+ out[key] = externalizeValue(entry);
22
+ }
23
+ }
24
+ return out;
25
+ }
26
+ return value;
27
+ }
28
+
29
+ function parseExternalValue(schema: TSchema, value: unknown): unknown {
30
+ if (Value.HasCodec(schema)) {
31
+ return Value.Decode(schema, value);
32
+ }
33
+ return Value.Parse(schema, value);
34
+ }
35
+
36
+ function serializeValue(schema: TSchema, value: unknown): string {
37
+ return JSON.stringify(Value.Parse(schema, externalizeValue(value)));
38
+ }
39
+
40
+ function serializeExternalValue(schema: TSchema, value: unknown): string {
41
+ return serializeValue(schema, value);
42
+ }
43
+
44
+ async function ensureExistingBucketOptions(
45
+ nats: NatsConnection,
46
+ name: string,
47
+ options: { ttl?: number },
48
+ ): Promise<void> {
49
+ const desiredTtlMs = options.ttl ?? 0;
50
+ if (desiredTtlMs <= 0) return;
51
+
52
+ const jsm = await jetstreamManager(nats);
53
+ const streamName = `KV_${name}`;
54
+ const info = await jsm.streams.info(streamName);
55
+ const desiredMaxAge = desiredTtlMs * 1_000_000;
56
+ if (info.config.max_age >= desiredMaxAge) return;
57
+
58
+ await jsm.streams.update(info.config.name, {
59
+ ...info.config,
60
+ max_age: desiredMaxAge,
61
+ });
62
+ }
63
+
64
+ function isPlainObject(value: unknown): value is Record<string, unknown> {
65
+ return value !== null && typeof value === "object" && !Array.isArray(value);
66
+ }
67
+
68
+ function mergeUnknown(target: unknown, source: unknown): unknown {
69
+ if (!isPlainObject(target) || !isPlainObject(source)) {
70
+ return source;
71
+ }
72
+
73
+ const out: Record<string, unknown> = { ...target };
74
+ for (const [key, entry] of Object.entries(source)) {
75
+ if (entry === undefined) continue;
76
+ out[key] = mergeUnknown(target[key], entry);
77
+ }
78
+ return out;
79
+ }
80
+
81
+ type KvFailureReason = "exists" | "revision mismatch";
82
+
83
+ function asRecord(value: unknown): Record<string, unknown> | undefined {
84
+ return value !== null && typeof value === "object" && !Array.isArray(value)
85
+ ? value as Record<string, unknown>
86
+ : undefined;
87
+ }
88
+
89
+ function collectFailureText(value: unknown, depth = 0): string {
90
+ if (depth > 2) return "";
91
+ const parts: string[] = [];
92
+
93
+ if (value instanceof Error) {
94
+ parts.push(value.name, value.message);
95
+ if (value.cause !== undefined) {
96
+ parts.push(collectFailureText(value.cause, depth + 1));
97
+ }
98
+ }
99
+
100
+ if (typeof value === "string" || typeof value === "number") {
101
+ parts.push(String(value));
102
+ }
103
+
104
+ const record = asRecord(value);
105
+ if (record) {
106
+ for (const key of ["name", "message", "description", "code", "err_code"]) {
107
+ const field = record[key];
108
+ if (typeof field === "string" || typeof field === "number") {
109
+ parts.push(String(field));
110
+ }
111
+ }
112
+ if (record.api_error !== undefined) {
113
+ parts.push(collectFailureText(record.api_error, depth + 1));
114
+ }
115
+ if (record.cause !== undefined) {
116
+ parts.push(collectFailureText(record.cause, depth + 1));
117
+ }
118
+ }
119
+
120
+ return parts.join(" ").toLowerCase();
121
+ }
122
+
123
+ function inferKvFailureReason(
124
+ operation: "create" | "put" | "delete",
125
+ cause: unknown,
126
+ ): KvFailureReason | undefined {
127
+ const text = collectFailureText(cause);
128
+ if (
129
+ text.includes("wrong last sequence") ||
130
+ text.includes("revision mismatch") ||
131
+ text.includes("sequence mismatch")
132
+ ) {
133
+ return operation === "create" ? "exists" : "revision mismatch";
134
+ }
135
+ if (
136
+ operation === "create" &&
137
+ (text.includes("already exists") || text.includes("key exists"))
138
+ ) {
139
+ return "exists";
140
+ }
141
+ return undefined;
142
+ }
143
+
144
+ function kvError(
145
+ operation: "create" | "put" | "delete",
146
+ key: string,
147
+ cause: unknown,
148
+ ): KVError {
149
+ const reason = inferKvFailureReason(operation, cause);
150
+ return new KVError({
151
+ operation,
152
+ cause,
153
+ context: reason === undefined ? { key } : { key, reason },
154
+ });
155
+ }
156
+
157
+ function kvNotFound(operation: "get", key: string): KVError {
158
+ return new KVError({
159
+ operation,
160
+ context: { key, reason: "not found" },
161
+ });
162
+ }
163
+
164
+ /**
165
+ * Represents a watch event emitted when a KV entry changes.
166
+ */
167
+ export type WatchEvent<S extends TSchema> =
168
+ & {
169
+ /** The key that changed */
170
+ key: string;
171
+ /** The revision number of this change */
172
+ revision: number;
173
+ /** The timestamp when this change occurred */
174
+ timestamp: Date;
175
+ }
176
+ & (
177
+ | {
178
+ /** The type of change: "update" for new/modified values */
179
+ type: "update";
180
+ value: StaticDecode<S>;
181
+ }
182
+ | {
183
+ /** The type of change: "delete" for deletions */
184
+ type: "delete";
185
+ value?: undefined;
186
+ }
187
+ | {
188
+ /** The type of change: "error" for invalid stored values */
189
+ type: "error";
190
+ error: ValidationError;
191
+ value?: undefined;
192
+ }
193
+ );
194
+
195
+ /**
196
+ * Options for the watch() method.
197
+ */
198
+ export type WatchOptions = {
199
+ /** If true, include delete events in the watch stream. Defaults to false. */
200
+ includeDeletes?: boolean;
201
+ };
202
+
203
+ export class TypedKV<S extends TSchema> {
204
+ private constructor(
205
+ readonly schema: S,
206
+ readonly kv: KV,
207
+ ) {}
208
+
209
+ private static fromParts<S extends TSchema>(schema: S, kv: KV): TypedKV<S> {
210
+ return new TypedKV<S>(schema, kv);
211
+ }
212
+
213
+ static open<S extends TSchema>(
214
+ nats: NatsConnection,
215
+ name: string,
216
+ schema: S,
217
+ options: {
218
+ history?: number;
219
+ ttl?: number;
220
+ bindOnly?: boolean;
221
+ maxValueBytes?: number;
222
+ replicas?: number;
223
+ },
224
+ ): AsyncResult<TypedKV<S>, KVError> {
225
+ return AsyncResult.from((async () => {
226
+ try {
227
+ const kvm = new Kvm(nats);
228
+ const kv = options.bindOnly
229
+ ? await kvm.open(name)
230
+ : await kvm.create(name, {
231
+ history: options.history ?? 1,
232
+ ttl: options.ttl ?? 0,
233
+ ...(options.replicas !== undefined
234
+ ? { replicas: options.replicas }
235
+ : {}),
236
+ ...(options.maxValueBytes
237
+ ? { maxValueSize: options.maxValueBytes }
238
+ : {}),
239
+ });
240
+
241
+ if (!options.bindOnly) {
242
+ await ensureExistingBucketOptions(nats, name, options);
243
+ }
244
+
245
+ const typedKv = TypedKV.fromParts(schema, kv);
246
+ return Result.ok<TypedKV<S>, KVError>(typedKv);
247
+ } catch (cause) {
248
+ return Result.err(new KVError({ operation: "open", cause }));
249
+ }
250
+ })());
251
+ }
252
+
253
+ get(
254
+ key: string,
255
+ ): AsyncResult<TypedKVEntry<S>, KVError | ValidationError> {
256
+ return AsyncResult.from((async () => {
257
+ let s: KvEntry | null;
258
+ try {
259
+ s = await this.kv.get(escapeKvKey(key));
260
+ } catch (cause) {
261
+ return Result.err(
262
+ new KVError({ operation: "get", cause, context: { key } }),
263
+ );
264
+ }
265
+ if (!s) {
266
+ return Result.err(kvNotFound("get", key));
267
+ }
268
+ if (s.operation === "DEL" || s.operation === "PURGE") {
269
+ return Result.err(kvNotFound("get", key));
270
+ }
271
+ const result = await createTypedKvEntry(this.schema, this.kv, s);
272
+ return result as Result<TypedKVEntry<S>, KVError | ValidationError>;
273
+ })());
274
+ }
275
+
276
+ private serialize(value: unknown): string {
277
+ return serializeExternalValue(this.schema, value);
278
+ }
279
+
280
+ create(
281
+ key: string,
282
+ value: unknown,
283
+ ): AsyncResult<void, KVError> {
284
+ return AsyncResult.from((async () => {
285
+ try {
286
+ await this.kv.create(escapeKvKey(key), this.serialize(value));
287
+ return Result.ok(undefined);
288
+ } catch (cause) {
289
+ return Result.err(kvError("create", key, cause));
290
+ }
291
+ })());
292
+ }
293
+
294
+ put(
295
+ key: string,
296
+ value: unknown,
297
+ ): AsyncResult<void, KVError> {
298
+ return AsyncResult.from((async () => {
299
+ try {
300
+ await this.kv.put(escapeKvKey(key), this.serialize(value));
301
+ return Result.ok(undefined);
302
+ } catch (cause) {
303
+ return Result.err(kvError("put", key, cause));
304
+ }
305
+ })());
306
+ }
307
+
308
+ delete(key: string): AsyncResult<void, KVError> {
309
+ return AsyncResult.from((async () => {
310
+ try {
311
+ await this.kv.delete(escapeKvKey(key));
312
+ return Result.ok(undefined);
313
+ } catch (cause) {
314
+ return Result.err(kvError("delete", key, cause));
315
+ }
316
+ })());
317
+ }
318
+
319
+ keys(
320
+ filter: string | string[] = ">",
321
+ ): AsyncResult<AsyncIterable<string>, KVError> {
322
+ return AsyncResult.from((async () => {
323
+ try {
324
+ return Result.ok(await this.kv.keys(filter));
325
+ } catch (cause) {
326
+ return Result.err(
327
+ new KVError({ operation: "keys", cause, context: { filter } }),
328
+ );
329
+ }
330
+ })());
331
+ }
332
+
333
+ status(): AsyncResult<{ values: number }, KVError> {
334
+ return AsyncResult.from((async () => {
335
+ try {
336
+ const status = await this.kv.status();
337
+ return Result.ok({ values: status.values });
338
+ } catch (cause) {
339
+ return Result.err(new KVError({ operation: "status", cause }));
340
+ }
341
+ })());
342
+ }
343
+ }
344
+
345
+ export class TypedKVEntry<S extends TSchema> {
346
+ readonly #value: unknown;
347
+
348
+ constructor(
349
+ private schema: S,
350
+ private kv: KV,
351
+ private entry: KvEntry,
352
+ value: unknown,
353
+ ) {
354
+ this.#value = value;
355
+ }
356
+
357
+ get value(): StaticDecode<S> {
358
+ return this.#value as StaticDecode<S>;
359
+ }
360
+
361
+ static create<S extends TSchema>(
362
+ schema: S,
363
+ kv: KV,
364
+ entry: KvEntry,
365
+ ): AsyncResult<TypedKVEntry<S>, ValidationError> {
366
+ return AsyncResult.from((async () => {
367
+ const result = await createTypedKvEntry(schema, kv, entry);
368
+ return result as Result<TypedKVEntry<S>, ValidationError>;
369
+ })());
370
+ }
371
+
372
+ get key() {
373
+ return decodeSubject(this.entry.key);
374
+ }
375
+
376
+ get revision() {
377
+ return this.entry.revision;
378
+ }
379
+
380
+ get createdAt() {
381
+ return this.entry.created;
382
+ }
383
+
384
+ /**
385
+ * Watch this KV entry for changes.
386
+ *
387
+ * @param callback - Function called when the entry changes
388
+ * @param opts - Watch options (e.g., includeDeletes)
389
+ * @returns A function to stop watching
390
+ */
391
+ async watch(
392
+ callback: (event: WatchEvent<S>) => void,
393
+ opts?: WatchOptions,
394
+ ): Promise<() => void> {
395
+ const watcher = await this.kv.watch({
396
+ key: this.entry.key,
397
+ include: opts?.includeDeletes ? "history" : "updates",
398
+ });
399
+
400
+ const abortController = new AbortController();
401
+
402
+ // Start the async iteration in the background
403
+ (async () => {
404
+ for await (const entry of watcher) {
405
+ if (abortController.signal.aborted) break;
406
+
407
+ if (entry.operation === "DEL" || entry.operation === "PURGE") {
408
+ if (opts?.includeDeletes) {
409
+ callback({
410
+ type: "delete",
411
+ key: decodeSubject(entry.key),
412
+ revision: entry.revision,
413
+ timestamp: entry.created,
414
+ });
415
+ }
416
+ } else {
417
+ try {
418
+ const json = entry.json();
419
+ const validated = parseExternalValue(this.schema, json);
420
+ callback({
421
+ type: "update",
422
+ key: decodeSubject(entry.key),
423
+ value: validated as StaticDecode<S>,
424
+ revision: entry.revision,
425
+ timestamp: entry.created,
426
+ });
427
+ } catch (cause) {
428
+ callback({
429
+ type: "error",
430
+ key: decodeSubject(entry.key),
431
+ error: createValidationError(this.schema, entry, cause),
432
+ revision: entry.revision,
433
+ timestamp: entry.created,
434
+ });
435
+ }
436
+ }
437
+ }
438
+ })();
439
+
440
+ return () => {
441
+ abortController.abort();
442
+ watcher.stop();
443
+ };
444
+ }
445
+
446
+ merge(
447
+ value: unknown,
448
+ vcc?: boolean,
449
+ ): AsyncResult<void, KVError | ValidationError> {
450
+ const mergedData = mergeUnknown(this.#value, value);
451
+ const mergeResult = Result.try(() =>
452
+ serializeExternalValue(this.schema, mergedData)
453
+ );
454
+ if (mergeResult.isErr()) {
455
+ const cause = mergeResult.error.cause;
456
+ if (cause instanceof ParseError) {
457
+ const errors = Value.Errors(this.schema, externalizeValue(mergedData));
458
+ return AsyncResult.err(new ValidationError({ errors, cause }));
459
+ }
460
+ return AsyncResult.err(
461
+ new KVError({
462
+ operation: "merge",
463
+ cause: mergeResult.error,
464
+ context: { key: this.key },
465
+ }),
466
+ );
467
+ }
468
+ return this.put(mergedData, vcc);
469
+ }
470
+
471
+ put(
472
+ value: unknown,
473
+ vcc?: boolean,
474
+ ): AsyncResult<void, KVError> {
475
+ return AsyncResult.from((async () => {
476
+ const serialized = serializeValue(this.schema, value);
477
+ try {
478
+ await this.kv.put(this.entry.key, serialized, {
479
+ previousSeq: vcc ? this.entry.revision : undefined,
480
+ });
481
+ return Result.ok(undefined);
482
+ } catch (cause) {
483
+ return Result.err(kvError("put", this.key, cause));
484
+ }
485
+ })());
486
+ }
487
+
488
+ delete(vcc?: boolean): AsyncResult<void, KVError> {
489
+ return AsyncResult.from((async () => {
490
+ try {
491
+ await this.kv.delete(this.entry.key, {
492
+ previousSeq: vcc ? this.entry.revision : undefined,
493
+ });
494
+ return Result.ok(undefined);
495
+ } catch (cause) {
496
+ return Result.err(kvError("delete", this.key, cause));
497
+ }
498
+ })());
499
+ }
500
+ }
501
+
502
+ async function createTypedKvEntry<S extends TSchema>(
503
+ schema: S,
504
+ kv: KV,
505
+ entry: KvEntry,
506
+ ): Promise<Result<TypedKVEntry<S>, ValidationError>> {
507
+ const jsonResult = Result.try(() => entry.json());
508
+ if (jsonResult.isErr()) {
509
+ return Result.err(
510
+ createValidationError(schema, entry, jsonResult.error),
511
+ );
512
+ }
513
+ const json = jsonResult.take();
514
+ const parseResult = Result.try<unknown>(() => {
515
+ if (Value.HasCodec(schema)) {
516
+ return Value.Decode(schema, json);
517
+ }
518
+ return Value.Parse(schema, json);
519
+ });
520
+ if (parseResult.isErr()) {
521
+ return Result.err(
522
+ createValidationError(schema, entry, parseResult.error, json),
523
+ );
524
+ }
525
+
526
+ const typedEntry = new TypedKVEntry(
527
+ schema,
528
+ kv,
529
+ entry,
530
+ parseResult.take() as StaticDecode<S>,
531
+ );
532
+ return Result.ok<TypedKVEntry<S>, ValidationError>(typedEntry);
533
+ }
534
+
535
+ function createValidationError(
536
+ schema: TSchema,
537
+ entry: KvEntry,
538
+ cause: unknown,
539
+ json?: unknown,
540
+ ): ValidationError {
541
+ if (cause instanceof ParseError) {
542
+ return new ValidationError({
543
+ errors: Value.Errors(schema, json),
544
+ cause,
545
+ context: {
546
+ key: decodeSubject(entry.key),
547
+ revision: entry.revision,
548
+ },
549
+ });
550
+ }
551
+
552
+ const error = cause instanceof Error ? cause : new Error(String(cause));
553
+ return new ValidationError({
554
+ errors: [{
555
+ path: "",
556
+ message: `Failed to decode KV value: ${error.message}`,
557
+ }],
558
+ cause: error,
559
+ context: {
560
+ key: decodeSubject(entry.key),
561
+ revision: entry.revision,
562
+ },
563
+ });
564
+ }
@@ -0,0 +1,15 @@
1
+ import Type, { type Static } from "typebox";
2
+
3
+ export const AuthSessionsLogoutSchema = Type.Object(
4
+ {},
5
+ );
6
+ export type AuthSessionsLogoutInput = Static<typeof AuthSessionsLogoutSchema>;
7
+
8
+ export const AuthSessionsLogoutResponseSchema = Type.Object(
9
+ {
10
+ success: Type.Boolean(),
11
+ },
12
+ );
13
+ export type AuthSessionsLogoutResponse = Static<
14
+ typeof AuthSessionsLogoutResponseSchema
15
+ >;
@@ -0,0 +1,6 @@
1
+ export {
2
+ type PageRequest,
3
+ PageRequestSchema,
4
+ type PageResponse,
5
+ PageResponseSchema,
6
+ } from "../../contract_support/protocol.js";
@@ -0,0 +1,55 @@
1
+ import Type, { type StaticDecode } from "typebox";
2
+
3
+ import type { JsonValue as TrellisJsonValue } from "../../contracts.js";
4
+
5
+ export const StateStoreKindSchema = Type.Union([
6
+ Type.Literal("value"),
7
+ Type.Literal("map"),
8
+ ]);
9
+ export type StateStoreKind = "value" | "map";
10
+
11
+ export const StateScopeSchema = Type.Union([
12
+ Type.Literal("userApp"),
13
+ Type.Literal("deviceApp"),
14
+ ]);
15
+ export type StateScope = "userApp" | "deviceApp";
16
+
17
+ export const JsonValueSchema = Type.Unknown();
18
+ export type JsonValue = TrellisJsonValue;
19
+
20
+ export const StateEntrySchema = Type.Object({
21
+ key: Type.Optional(Type.String({ minLength: 1 })),
22
+ value: JsonValueSchema,
23
+ revision: Type.String({ minLength: 1 }),
24
+ updatedAt: Type.String({ format: "date-time" }),
25
+ expiresAt: Type.Optional(Type.String({ format: "date-time" })),
26
+ });
27
+ export type StateEntry = {
28
+ key?: string;
29
+ value: TrellisJsonValue;
30
+ revision: string;
31
+ updatedAt: string;
32
+ expiresAt?: string;
33
+ };
34
+
35
+ export const StateMigrationRequiredSchema = Type.Object({
36
+ migrationRequired: Type.Literal(true),
37
+ entry: StateEntrySchema,
38
+ stateVersion: Type.String({ minLength: 1 }),
39
+ currentStateVersion: Type.String({ minLength: 1 }),
40
+ writerContractDigest: Type.String({ minLength: 1 }),
41
+ });
42
+ export type StateMigrationRequired = {
43
+ migrationRequired: true;
44
+ entry: StateEntry;
45
+ stateVersion: string;
46
+ currentStateVersion: string;
47
+ writerContractDigest: string;
48
+ };
49
+
50
+ export const StateUserTargetSchema = Type.Object({
51
+ origin: Type.String({ minLength: 1 }),
52
+ id: Type.String({ minLength: 1 }),
53
+ userId: Type.Optional(Type.String({ minLength: 1 })),
54
+ });
55
+ export type StateUserTarget = StaticDecode<typeof StateUserTargetSchema>;
@@ -0,0 +1,21 @@
1
+ import Type, { type StaticDecode } from "typebox";
2
+
3
+ /**
4
+ * Open transport schema for Trellis RPC error payloads.
5
+ *
6
+ * Error payloads must always carry the base error fields, but service-local contract
7
+ * errors may add arbitrary additional properties. The client validates declared local
8
+ * errors against their contract schema before reconstructing runtime `Error` instances.
9
+ */
10
+ export const TrellisErrorDataSchema = Type.Object({
11
+ id: Type.String(),
12
+ type: Type.String(),
13
+ message: Type.String(),
14
+ context: Type.Optional(Type.Record(Type.String(), Type.Unknown())),
15
+ traceId: Type.Optional(Type.String()),
16
+ }, { additionalProperties: true });
17
+
18
+ /**
19
+ * Type for validated transport error data.
20
+ */
21
+ export type TrellisErrorData = StaticDecode<typeof TrellisErrorDataSchema>;
@@ -0,0 +1,13 @@
1
+ import Type, { type Static } from "typebox";
2
+
3
+ export const StateDeleteSchema = Type.Object({
4
+ store: Type.String({ minLength: 1 }),
5
+ key: Type.Optional(Type.String({ minLength: 1 })),
6
+ expectedRevision: Type.Optional(Type.String({ minLength: 1 })),
7
+ });
8
+ export type StateDeleteInput = Static<typeof StateDeleteSchema>;
9
+
10
+ export const StateDeleteResponseSchema = Type.Object({
11
+ deleted: Type.Boolean(),
12
+ });
13
+ export type StateDeleteResponse = Static<typeof StateDeleteResponseSchema>;
@@ -0,0 +1,25 @@
1
+ import Type, { type Static } from "typebox";
2
+
3
+ import type { StateEntry, StateMigrationRequired } from "../State.js";
4
+ import { StateEntrySchema, StateMigrationRequiredSchema } from "../State.js";
5
+
6
+ export const StateGetSchema = Type.Object({
7
+ store: Type.String({ minLength: 1 }),
8
+ key: Type.Optional(Type.String({ minLength: 1 })),
9
+ });
10
+ export type StateGetInput = Static<typeof StateGetSchema>;
11
+
12
+ export const StateGetResponseSchema = Type.Union([
13
+ Type.Object({
14
+ found: Type.Literal(false),
15
+ }),
16
+ Type.Object({
17
+ found: Type.Literal(true),
18
+ entry: StateEntrySchema,
19
+ }),
20
+ StateMigrationRequiredSchema,
21
+ ]);
22
+ export type StateGetResponse =
23
+ | { found: false }
24
+ | { found: true; entry: StateEntry }
25
+ | StateMigrationRequired;