rivetkit 2.0.2 → 2.0.4-rc.1

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 (403) hide show
  1. package/README.md +3 -5
  2. package/dist/browser/client.d.ts +2485 -0
  3. package/dist/browser/client.js +5182 -0
  4. package/dist/browser/client.js.map +1 -0
  5. package/dist/browser/inspector/client.d.ts +130 -0
  6. package/dist/browser/inspector/client.js +2854 -0
  7. package/dist/browser/inspector/client.js.map +1 -0
  8. package/dist/browser/v3-DnYObHH3.d.ts +279 -0
  9. package/dist/inspector.tar.gz +0 -0
  10. package/dist/schemas/actor-inspector/v1.ts +784 -0
  11. package/dist/schemas/actor-inspector/v2.ts +796 -0
  12. package/dist/schemas/actor-inspector/v3.ts +899 -0
  13. package/dist/schemas/actor-persist/v1.ts +225 -0
  14. package/dist/schemas/actor-persist/v2.ts +268 -0
  15. package/dist/schemas/actor-persist/v3.ts +280 -0
  16. package/dist/schemas/actor-persist/v4.ts +406 -0
  17. package/dist/schemas/client-protocol/v1.ts +441 -0
  18. package/dist/schemas/client-protocol/v2.ts +438 -0
  19. package/dist/schemas/client-protocol/v3.ts +554 -0
  20. package/dist/schemas/file-system-driver/v1.ts +108 -0
  21. package/dist/schemas/file-system-driver/v2.ts +142 -0
  22. package/dist/schemas/file-system-driver/v3.ts +167 -0
  23. package/dist/schemas/persist/v1.ts +781 -0
  24. package/dist/schemas/transport/v1.ts +697 -0
  25. package/dist/tsup/actor/errors.cjs +106 -0
  26. package/dist/tsup/actor/errors.cjs.map +1 -0
  27. package/dist/tsup/actor/errors.d.cts +188 -0
  28. package/dist/tsup/actor/errors.d.ts +188 -0
  29. package/dist/tsup/actor/errors.js +106 -0
  30. package/dist/tsup/actor/errors.js.map +1 -0
  31. package/dist/tsup/actor-router-consts-D29T1Z-K.d.cts +24 -0
  32. package/dist/tsup/actor-router-consts-D29T1Z-K.d.ts +24 -0
  33. package/dist/tsup/chunk-325TLXJT.js +1060 -0
  34. package/dist/tsup/chunk-325TLXJT.js.map +1 -0
  35. package/dist/tsup/chunk-424PT5DM.js +23 -0
  36. package/dist/tsup/chunk-424PT5DM.js.map +1 -0
  37. package/dist/tsup/chunk-4JVIG3SS.cjs +6289 -0
  38. package/dist/tsup/chunk-4JVIG3SS.cjs.map +1 -0
  39. package/dist/tsup/chunk-6LJAZ5R4.cjs +96 -0
  40. package/dist/tsup/chunk-6LJAZ5R4.cjs.map +1 -0
  41. package/dist/tsup/chunk-6XU3FMCB.cjs +534 -0
  42. package/dist/tsup/chunk-6XU3FMCB.cjs.map +1 -0
  43. package/dist/tsup/chunk-7HTNH26M.js +509 -0
  44. package/dist/tsup/chunk-7HTNH26M.js.map +1 -0
  45. package/dist/tsup/chunk-AUVH72RE.cjs +5977 -0
  46. package/dist/tsup/chunk-AUVH72RE.cjs.map +1 -0
  47. package/dist/tsup/chunk-D4BYUPNQ.js +645 -0
  48. package/dist/tsup/chunk-D4BYUPNQ.js.map +1 -0
  49. package/dist/tsup/chunk-HDQ2JUQT.cjs +23 -0
  50. package/dist/tsup/chunk-HDQ2JUQT.cjs.map +1 -0
  51. package/dist/tsup/chunk-HHXX2VRM.js +6289 -0
  52. package/dist/tsup/chunk-HHXX2VRM.js.map +1 -0
  53. package/dist/tsup/chunk-JEAEA2PB.js +49 -0
  54. package/dist/tsup/chunk-JEAEA2PB.js.map +1 -0
  55. package/dist/tsup/chunk-JYSEG3VF.cjs +642 -0
  56. package/dist/tsup/chunk-JYSEG3VF.cjs.map +1 -0
  57. package/dist/tsup/chunk-K6DGYILQ.js +2657 -0
  58. package/dist/tsup/chunk-K6DGYILQ.js.map +1 -0
  59. package/dist/tsup/chunk-KJSYAUOM.js +96 -0
  60. package/dist/tsup/chunk-KJSYAUOM.js.map +1 -0
  61. package/dist/tsup/chunk-L47L3ZWJ.cjs +509 -0
  62. package/dist/tsup/chunk-L47L3ZWJ.cjs.map +1 -0
  63. package/dist/tsup/chunk-LXUQ667X.js +2006 -0
  64. package/dist/tsup/chunk-LXUQ667X.js.map +1 -0
  65. package/dist/tsup/chunk-MXNPAB5W.js +5977 -0
  66. package/dist/tsup/chunk-MXNPAB5W.js.map +1 -0
  67. package/dist/tsup/chunk-N4KRDJ56.js +72 -0
  68. package/dist/tsup/chunk-N4KRDJ56.js.map +1 -0
  69. package/dist/tsup/chunk-NIYZDWMW.cjs +2006 -0
  70. package/dist/tsup/chunk-NIYZDWMW.cjs.map +1 -0
  71. package/dist/tsup/chunk-PQZHDKRW.cjs +1060 -0
  72. package/dist/tsup/chunk-PQZHDKRW.cjs.map +1 -0
  73. package/dist/tsup/chunk-PVOE6BU7.cjs +1050 -0
  74. package/dist/tsup/chunk-PVOE6BU7.cjs.map +1 -0
  75. package/dist/tsup/chunk-Q4UD2GA4.cjs +1810 -0
  76. package/dist/tsup/chunk-Q4UD2GA4.cjs.map +1 -0
  77. package/dist/tsup/chunk-QUD664YZ.js +1810 -0
  78. package/dist/tsup/chunk-QUD664YZ.js.map +1 -0
  79. package/dist/tsup/chunk-RTOCTWME.js +1050 -0
  80. package/dist/tsup/chunk-RTOCTWME.js.map +1 -0
  81. package/dist/tsup/chunk-SAZZ4SB2.cjs +2657 -0
  82. package/dist/tsup/chunk-SAZZ4SB2.cjs.map +1 -0
  83. package/dist/tsup/chunk-SR3KQE7Q.cjs +72 -0
  84. package/dist/tsup/chunk-SR3KQE7Q.cjs.map +1 -0
  85. package/dist/tsup/chunk-V2GHLYC6.cjs +49 -0
  86. package/dist/tsup/chunk-V2GHLYC6.cjs.map +1 -0
  87. package/dist/tsup/chunk-V3WG7XTW.cjs +645 -0
  88. package/dist/tsup/chunk-V3WG7XTW.cjs.map +1 -0
  89. package/dist/tsup/chunk-VKVNIQRQ.js +257 -0
  90. package/dist/tsup/chunk-VKVNIQRQ.js.map +1 -0
  91. package/dist/tsup/chunk-WMPW7JYC.js +642 -0
  92. package/dist/tsup/chunk-WMPW7JYC.js.map +1 -0
  93. package/dist/tsup/chunk-Z7HNQ2WF.js +534 -0
  94. package/dist/tsup/chunk-Z7HNQ2WF.js.map +1 -0
  95. package/dist/tsup/chunk-ZFY5J2EP.cjs +257 -0
  96. package/dist/tsup/chunk-ZFY5J2EP.cjs.map +1 -0
  97. package/dist/tsup/client/mod.cjs +33 -0
  98. package/dist/tsup/client/mod.cjs.map +1 -0
  99. package/dist/tsup/client/mod.d.cts +64 -0
  100. package/dist/tsup/client/mod.d.ts +64 -0
  101. package/dist/tsup/client/mod.js +33 -0
  102. package/dist/tsup/client/mod.js.map +1 -0
  103. package/dist/tsup/common/log.cjs +21 -0
  104. package/dist/tsup/common/log.cjs.map +1 -0
  105. package/dist/tsup/common/log.d.cts +34 -0
  106. package/dist/tsup/common/log.d.ts +34 -0
  107. package/dist/tsup/common/log.js +21 -0
  108. package/dist/tsup/common/log.js.map +1 -0
  109. package/dist/tsup/common/websocket.cjs +10 -0
  110. package/dist/tsup/common/websocket.cjs.map +1 -0
  111. package/dist/tsup/common/websocket.d.cts +3 -0
  112. package/dist/tsup/common/websocket.d.ts +3 -0
  113. package/dist/tsup/common/websocket.js +10 -0
  114. package/dist/tsup/common/websocket.js.map +1 -0
  115. package/dist/tsup/config-BiNoIHRs.d.cts +80 -0
  116. package/dist/tsup/config-BiNoIHRs.d.ts +80 -0
  117. package/dist/tsup/config-P3XujgRr.d.ts +2594 -0
  118. package/dist/tsup/config-_gfywqqI.d.cts +2594 -0
  119. package/dist/tsup/context-Bxd8Cx4H.d.cts +75 -0
  120. package/dist/tsup/context-uNA4TRn3.d.ts +75 -0
  121. package/dist/tsup/db/drizzle/mod.cjs +49 -0
  122. package/dist/tsup/db/drizzle/mod.cjs.map +1 -0
  123. package/dist/tsup/db/drizzle/mod.d.cts +17 -0
  124. package/dist/tsup/db/drizzle/mod.d.ts +17 -0
  125. package/dist/tsup/db/drizzle/mod.js +49 -0
  126. package/dist/tsup/db/drizzle/mod.js.map +1 -0
  127. package/dist/tsup/db/mod.cjs +9 -0
  128. package/dist/tsup/db/mod.cjs.map +1 -0
  129. package/dist/tsup/db/mod.d.cts +9 -0
  130. package/dist/tsup/db/mod.d.ts +9 -0
  131. package/dist/tsup/db/mod.js +9 -0
  132. package/dist/tsup/db/mod.js.map +1 -0
  133. package/dist/tsup/driver-BcLvZcKl.d.cts +13 -0
  134. package/dist/tsup/driver-CPGHKXyh.d.ts +13 -0
  135. package/dist/tsup/driver-helpers/mod.cjs +53 -0
  136. package/dist/tsup/driver-helpers/mod.cjs.map +1 -0
  137. package/dist/tsup/driver-helpers/mod.d.cts +47 -0
  138. package/dist/tsup/driver-helpers/mod.d.ts +47 -0
  139. package/dist/tsup/driver-helpers/mod.js +53 -0
  140. package/dist/tsup/driver-helpers/mod.js.map +1 -0
  141. package/dist/tsup/driver-test-suite/mod.cjs +4974 -0
  142. package/dist/tsup/driver-test-suite/mod.cjs.map +1 -0
  143. package/dist/tsup/driver-test-suite/mod.d.cts +73 -0
  144. package/dist/tsup/driver-test-suite/mod.d.ts +73 -0
  145. package/dist/tsup/driver-test-suite/mod.js +4974 -0
  146. package/dist/tsup/driver-test-suite/mod.js.map +1 -0
  147. package/dist/tsup/inspector/mod.cjs +164 -0
  148. package/dist/tsup/inspector/mod.cjs.map +1 -0
  149. package/dist/tsup/inspector/mod.d.cts +130 -0
  150. package/dist/tsup/inspector/mod.d.ts +130 -0
  151. package/dist/tsup/inspector/mod.js +164 -0
  152. package/dist/tsup/inspector/mod.js.map +1 -0
  153. package/dist/tsup/keys-CydblqMh.d.cts +13 -0
  154. package/dist/tsup/keys-CydblqMh.d.ts +13 -0
  155. package/dist/tsup/mod.cjs +82 -0
  156. package/dist/tsup/mod.cjs.map +1 -0
  157. package/dist/tsup/mod.d.cts +126 -0
  158. package/dist/tsup/mod.d.ts +126 -0
  159. package/dist/tsup/mod.js +82 -0
  160. package/dist/tsup/mod.js.map +1 -0
  161. package/dist/tsup/serve-test-suite/mod.cjs +2601 -0
  162. package/dist/tsup/serve-test-suite/mod.cjs.map +1 -0
  163. package/dist/tsup/serve-test-suite/mod.d.cts +9 -0
  164. package/dist/tsup/serve-test-suite/mod.d.ts +9 -0
  165. package/dist/tsup/serve-test-suite/mod.js +2601 -0
  166. package/dist/tsup/serve-test-suite/mod.js.map +1 -0
  167. package/dist/tsup/test/mod.cjs +90 -0
  168. package/dist/tsup/test/mod.cjs.map +1 -0
  169. package/dist/tsup/test/mod.d.cts +26 -0
  170. package/dist/tsup/test/mod.d.ts +26 -0
  171. package/dist/tsup/test/mod.js +90 -0
  172. package/dist/tsup/test/mod.js.map +1 -0
  173. package/dist/tsup/utils-fwx3o3K9.d.cts +18 -0
  174. package/dist/tsup/utils-fwx3o3K9.d.ts +18 -0
  175. package/dist/tsup/utils.cjs +43 -0
  176. package/dist/tsup/utils.cjs.map +1 -0
  177. package/dist/tsup/utils.d.cts +148 -0
  178. package/dist/tsup/utils.d.ts +148 -0
  179. package/dist/tsup/utils.js +43 -0
  180. package/dist/tsup/utils.js.map +1 -0
  181. package/dist/tsup/v3-DnYObHH3.d.cts +279 -0
  182. package/dist/tsup/v3-DnYObHH3.d.ts +279 -0
  183. package/dist/tsup/workflow/mod.cjs +16 -0
  184. package/dist/tsup/workflow/mod.cjs.map +1 -0
  185. package/dist/tsup/workflow/mod.d.cts +25 -0
  186. package/dist/tsup/workflow/mod.d.ts +25 -0
  187. package/dist/tsup/workflow/mod.js +16 -0
  188. package/dist/tsup/workflow/mod.js.map +1 -0
  189. package/package.json +293 -5
  190. package/src/actor/config.ts +1221 -0
  191. package/src/actor/conn/driver.ts +61 -0
  192. package/src/actor/conn/drivers/http.ts +17 -0
  193. package/src/actor/conn/drivers/raw-request.ts +24 -0
  194. package/src/actor/conn/drivers/raw-websocket.ts +65 -0
  195. package/src/actor/conn/drivers/websocket.ts +144 -0
  196. package/src/actor/conn/mod.ts +288 -0
  197. package/src/actor/conn/persisted.ts +81 -0
  198. package/src/actor/conn/state-manager.ts +196 -0
  199. package/src/actor/contexts/action.ts +47 -0
  200. package/src/actor/contexts/base/actor.ts +347 -0
  201. package/src/actor/contexts/base/conn-init.ts +68 -0
  202. package/src/actor/contexts/base/conn.ts +73 -0
  203. package/src/actor/contexts/before-action-response.ts +42 -0
  204. package/src/actor/contexts/before-connect.ts +31 -0
  205. package/src/actor/contexts/connect.ts +42 -0
  206. package/src/actor/contexts/create-conn-state.ts +32 -0
  207. package/src/actor/contexts/create-vars.ts +39 -0
  208. package/src/actor/contexts/create.ts +39 -0
  209. package/src/actor/contexts/destroy.ts +42 -0
  210. package/src/actor/contexts/disconnect.ts +43 -0
  211. package/src/actor/contexts/index.ts +33 -0
  212. package/src/actor/contexts/request.ts +80 -0
  213. package/src/actor/contexts/run.ts +47 -0
  214. package/src/actor/contexts/sleep.ts +42 -0
  215. package/src/actor/contexts/state-change.ts +42 -0
  216. package/src/actor/contexts/wake.ts +42 -0
  217. package/src/actor/contexts/websocket.ts +80 -0
  218. package/src/actor/database.ts +13 -0
  219. package/src/actor/definition.ts +64 -0
  220. package/src/actor/driver.ts +114 -0
  221. package/src/actor/errors.ts +556 -0
  222. package/src/actor/instance/connection-manager.ts +574 -0
  223. package/src/actor/instance/event-manager.ts +314 -0
  224. package/src/actor/instance/keys.ts +146 -0
  225. package/src/actor/instance/kv.ts +241 -0
  226. package/src/actor/instance/mod.ts +1658 -0
  227. package/src/actor/instance/persisted.ts +67 -0
  228. package/src/actor/instance/queue-manager.ts +603 -0
  229. package/src/actor/instance/queue.ts +345 -0
  230. package/src/actor/instance/schedule-manager.ts +392 -0
  231. package/src/actor/instance/state-manager.ts +542 -0
  232. package/src/actor/instance/traces-driver.ts +128 -0
  233. package/src/actor/keys.test.ts +275 -0
  234. package/src/actor/keys.ts +89 -0
  235. package/src/actor/log.ts +6 -0
  236. package/src/actor/mod.ts +110 -0
  237. package/src/actor/protocol/old.ts +416 -0
  238. package/src/actor/protocol/serde.ts +222 -0
  239. package/src/actor/router-endpoints.ts +400 -0
  240. package/src/actor/router-websocket-endpoints.test.ts +54 -0
  241. package/src/actor/router-websocket-endpoints.ts +405 -0
  242. package/src/actor/router.ts +380 -0
  243. package/src/actor/schedule.ts +17 -0
  244. package/src/actor/schema.ts +291 -0
  245. package/src/actor/utils.test.ts +48 -0
  246. package/src/actor/utils.ts +158 -0
  247. package/src/client/actor-common.ts +32 -0
  248. package/src/client/actor-conn.ts +1262 -0
  249. package/src/client/actor-handle.ts +344 -0
  250. package/src/client/actor-query.ts +112 -0
  251. package/src/client/client.ts +558 -0
  252. package/src/client/config.ts +151 -0
  253. package/src/client/errors.ts +76 -0
  254. package/src/client/log.ts +5 -0
  255. package/src/client/mod.browser.ts +2 -0
  256. package/src/client/mod.ts +70 -0
  257. package/src/client/queue.ts +146 -0
  258. package/src/client/raw-utils.ts +149 -0
  259. package/src/client/test.ts +44 -0
  260. package/src/client/utils.ts +252 -0
  261. package/src/common/actor-router-consts.ts +59 -0
  262. package/src/common/cors.ts +57 -0
  263. package/src/common/eventsource-interface.ts +47 -0
  264. package/src/common/eventsource.ts +44 -0
  265. package/src/common/inline-websocket-adapter.ts +154 -0
  266. package/src/common/log-levels.ts +27 -0
  267. package/src/common/log.ts +229 -0
  268. package/src/common/logfmt.ts +221 -0
  269. package/src/common/network.ts +2 -0
  270. package/src/common/router.ts +174 -0
  271. package/src/common/utils.ts +339 -0
  272. package/src/common/websocket-interface.ts +7 -0
  273. package/src/common/websocket.ts +43 -0
  274. package/src/db/config.ts +100 -0
  275. package/src/db/drizzle/mod.ts +226 -0
  276. package/src/db/drizzle/sqlite-core.ts +22 -0
  277. package/src/db/mod.ts +125 -0
  278. package/src/db/shared.ts +92 -0
  279. package/src/db/sqlite-vfs.ts +12 -0
  280. package/src/devtools-loader/index.ts +33 -0
  281. package/src/devtools-loader/log.ts +5 -0
  282. package/src/driver-helpers/mod.ts +33 -0
  283. package/src/driver-helpers/utils.ts +54 -0
  284. package/src/driver-test-suite/log.ts +5 -0
  285. package/src/driver-test-suite/mod.ts +293 -0
  286. package/src/driver-test-suite/test-inline-client-driver.ts +307 -0
  287. package/src/driver-test-suite/tests/access-control.ts +218 -0
  288. package/src/driver-test-suite/tests/action-features.ts +203 -0
  289. package/src/driver-test-suite/tests/actor-conn-hibernation.ts +152 -0
  290. package/src/driver-test-suite/tests/actor-conn-state.ts +300 -0
  291. package/src/driver-test-suite/tests/actor-conn.ts +596 -0
  292. package/src/driver-test-suite/tests/actor-db-raw.ts +73 -0
  293. package/src/driver-test-suite/tests/actor-db.ts +477 -0
  294. package/src/driver-test-suite/tests/actor-destroy.ts +294 -0
  295. package/src/driver-test-suite/tests/actor-driver.ts +18 -0
  296. package/src/driver-test-suite/tests/actor-error-handling.ts +150 -0
  297. package/src/driver-test-suite/tests/actor-handle.ts +312 -0
  298. package/src/driver-test-suite/tests/actor-inline-client.ts +163 -0
  299. package/src/driver-test-suite/tests/actor-inspector.ts +264 -0
  300. package/src/driver-test-suite/tests/actor-kv.ts +65 -0
  301. package/src/driver-test-suite/tests/actor-metadata.ts +116 -0
  302. package/src/driver-test-suite/tests/actor-onstatechange.ts +95 -0
  303. package/src/driver-test-suite/tests/actor-queue.ts +325 -0
  304. package/src/driver-test-suite/tests/actor-run.ts +181 -0
  305. package/src/driver-test-suite/tests/actor-schedule.ts +97 -0
  306. package/src/driver-test-suite/tests/actor-sleep.ts +415 -0
  307. package/src/driver-test-suite/tests/actor-state.ts +54 -0
  308. package/src/driver-test-suite/tests/actor-stateless.ts +70 -0
  309. package/src/driver-test-suite/tests/actor-vars.ts +97 -0
  310. package/src/driver-test-suite/tests/actor-workflow.ts +118 -0
  311. package/src/driver-test-suite/tests/manager-driver.ts +388 -0
  312. package/src/driver-test-suite/tests/raw-http-direct-registry.ts +227 -0
  313. package/src/driver-test-suite/tests/raw-http-request-properties.ts +454 -0
  314. package/src/driver-test-suite/tests/raw-http.ts +359 -0
  315. package/src/driver-test-suite/tests/raw-websocket-direct-registry.ts +393 -0
  316. package/src/driver-test-suite/tests/raw-websocket.ts +513 -0
  317. package/src/driver-test-suite/tests/request-access.ts +240 -0
  318. package/src/driver-test-suite/utils.ts +80 -0
  319. package/src/drivers/default.ts +38 -0
  320. package/src/drivers/engine/actor-driver.ts +1027 -0
  321. package/src/drivers/engine/config.ts +43 -0
  322. package/src/drivers/engine/log.ts +5 -0
  323. package/src/drivers/engine/mod.ts +36 -0
  324. package/src/drivers/file-system/actor.ts +102 -0
  325. package/src/drivers/file-system/global-state.ts +1445 -0
  326. package/src/drivers/file-system/kv-limits.ts +70 -0
  327. package/src/drivers/file-system/log.ts +5 -0
  328. package/src/drivers/file-system/manager.ts +300 -0
  329. package/src/drivers/file-system/mod.ts +78 -0
  330. package/src/drivers/file-system/sqlite-runtime.ts +210 -0
  331. package/src/drivers/file-system/utils.ts +125 -0
  332. package/src/engine-process/constants.ts +2 -0
  333. package/src/engine-process/log.ts +5 -0
  334. package/src/engine-process/mod.ts +464 -0
  335. package/src/globals.d.ts +35 -0
  336. package/src/inspector/actor-inspector.ts +352 -0
  337. package/src/inspector/config.ts +49 -0
  338. package/src/inspector/handler.ts +273 -0
  339. package/src/inspector/log.ts +5 -0
  340. package/src/inspector/mod.browser.ts +8 -0
  341. package/src/inspector/mod.ts +4 -0
  342. package/src/inspector/serve-ui.ts +40 -0
  343. package/src/inspector/transport.ts +18 -0
  344. package/src/inspector/utils.ts +32 -0
  345. package/src/manager/driver.ts +106 -0
  346. package/src/manager/gateway.ts +668 -0
  347. package/src/manager/log.ts +5 -0
  348. package/src/manager/mod.ts +2 -0
  349. package/src/manager/protocol/mod.ts +22 -0
  350. package/src/manager/protocol/query.ts +85 -0
  351. package/src/manager/router-schema.ts +22 -0
  352. package/src/manager/router.ts +660 -0
  353. package/src/manager-api/actors.ts +83 -0
  354. package/src/manager-api/common.ts +4 -0
  355. package/src/mod.ts +24 -0
  356. package/src/registry/config/driver.ts +21 -0
  357. package/src/registry/config/index.ts +510 -0
  358. package/src/registry/config/legacy-runner.ts +157 -0
  359. package/src/registry/config/runner.ts +21 -0
  360. package/src/registry/config/serverless.ts +94 -0
  361. package/src/registry/index.ts +194 -0
  362. package/src/registry/log.ts +5 -0
  363. package/src/remote-manager-driver/actor-http-client.ts +84 -0
  364. package/src/remote-manager-driver/actor-websocket-client.ts +81 -0
  365. package/src/remote-manager-driver/api-endpoints.ts +159 -0
  366. package/src/remote-manager-driver/api-utils.ts +69 -0
  367. package/src/remote-manager-driver/log.ts +5 -0
  368. package/src/remote-manager-driver/metadata.ts +64 -0
  369. package/src/remote-manager-driver/mod.ts +414 -0
  370. package/src/remote-manager-driver/ws-proxy.ts +189 -0
  371. package/src/schemas/actor-inspector/mod.ts +1 -0
  372. package/src/schemas/actor-inspector/versioned.ts +233 -0
  373. package/src/schemas/actor-persist/mod.ts +1 -0
  374. package/src/schemas/actor-persist/versioned.ts +217 -0
  375. package/src/schemas/client-protocol/mod.ts +1 -0
  376. package/src/schemas/client-protocol/versioned.ts +330 -0
  377. package/src/schemas/client-protocol-zod/mod.ts +118 -0
  378. package/src/schemas/file-system-driver/mod.ts +1 -0
  379. package/src/schemas/file-system-driver/versioned.ts +135 -0
  380. package/src/schemas/persist/mod.ts +1 -0
  381. package/src/schemas/transport/mod.ts +1 -0
  382. package/src/serde.ts +138 -0
  383. package/src/serve-test-suite/mod.ts +148 -0
  384. package/src/serverless/configure.ts +82 -0
  385. package/src/serverless/log.ts +5 -0
  386. package/src/serverless/router.test.ts +299 -0
  387. package/src/serverless/router.ts +215 -0
  388. package/src/test/log.ts +5 -0
  389. package/src/test/mod.ts +99 -0
  390. package/src/utils/crypto.ts +24 -0
  391. package/src/utils/endpoint-parser.test.ts +202 -0
  392. package/src/utils/endpoint-parser.ts +124 -0
  393. package/src/utils/env-vars.ts +78 -0
  394. package/src/utils/node.ts +178 -0
  395. package/src/utils/router.ts +83 -0
  396. package/src/utils/serve.ts +212 -0
  397. package/src/utils.test.ts +34 -0
  398. package/src/utils.ts +437 -0
  399. package/src/workflow/constants.ts +2 -0
  400. package/src/workflow/context.ts +597 -0
  401. package/src/workflow/driver.ts +194 -0
  402. package/src/workflow/inspector.ts +268 -0
  403. package/src/workflow/mod.ts +128 -0
@@ -0,0 +1,189 @@
1
+ import type { Context as HonoContext } from "hono";
2
+ import type { WSContext } from "hono/ws";
3
+ import type { UpgradeWebSocketArgs } from "@/actor/router-websocket-endpoints";
4
+ import { stringifyError } from "@/common/utils";
5
+ import { importWebSocket } from "@/common/websocket";
6
+ import { logger } from "./log";
7
+
8
+ /**
9
+ * Returns Hono `upgradeWebSocket` args that will proxy requests from the client to a destination address.
10
+ */
11
+ export async function createWebSocketProxy(
12
+ c: HonoContext,
13
+ targetUrl: string,
14
+ protocols: string[],
15
+ ): Promise<UpgradeWebSocketArgs> {
16
+ const WebSocket = await importWebSocket();
17
+
18
+ // WebSocket state
19
+ interface WsState {
20
+ targetWs?: WebSocket;
21
+ connectPromise?: Promise<void>;
22
+ }
23
+ const state: WsState = {};
24
+
25
+ return {
26
+ onOpen: async (event: any, clientWs: WSContext) => {
27
+ logger().debug({ msg: "client websocket connected", targetUrl });
28
+
29
+ if (clientWs.readyState !== 1) {
30
+ logger().warn({
31
+ msg: "client websocket not open on connection",
32
+ targetUrl,
33
+ readyState: clientWs.readyState,
34
+ });
35
+ return;
36
+ }
37
+
38
+ // Create WebSocket
39
+ const targetWs = new WebSocket(targetUrl, protocols);
40
+ state.targetWs = targetWs;
41
+
42
+ // Setup connection promise
43
+ state.connectPromise = new Promise<void>((resolve, reject) => {
44
+ targetWs.addEventListener("open", () => {
45
+ logger().debug({
46
+ msg: "target websocket connected",
47
+ targetUrl,
48
+ });
49
+
50
+ if (clientWs.readyState !== 1) {
51
+ logger().warn({
52
+ msg: "client websocket closed before target connected",
53
+ targetUrl,
54
+ clientReadyState: clientWs.readyState,
55
+ });
56
+ targetWs.close(1001, "Client disconnected");
57
+ reject(new Error("Client disconnected"));
58
+ return;
59
+ }
60
+ resolve();
61
+ });
62
+
63
+ targetWs.addEventListener("error", (error) => {
64
+ logger().warn({
65
+ msg: "target websocket error during connection",
66
+ targetUrl,
67
+ });
68
+ reject(error);
69
+ });
70
+ });
71
+
72
+ // Setup bidirectional forwarding
73
+ state.targetWs.addEventListener("message", (event) => {
74
+ if (
75
+ typeof event.data === "string" ||
76
+ event.data instanceof ArrayBuffer
77
+ ) {
78
+ clientWs.send(event.data);
79
+ } else if (event.data instanceof Blob) {
80
+ event.data.arrayBuffer().then((buffer) => {
81
+ clientWs.send(buffer);
82
+ });
83
+ }
84
+ });
85
+
86
+ state.targetWs.addEventListener("close", (event) => {
87
+ logger().debug({
88
+ msg: "target websocket closed",
89
+ targetUrl,
90
+ code: event.code,
91
+ reason: event.reason,
92
+ });
93
+ closeWebSocketIfOpen(clientWs, event.code, event.reason);
94
+ });
95
+
96
+ state.targetWs.addEventListener("error", (error) => {
97
+ logger().error({
98
+ msg: "target websocket error",
99
+ targetUrl,
100
+ error: stringifyError(error),
101
+ });
102
+ closeWebSocketIfOpen(clientWs, 1011, "Target WebSocket error");
103
+ });
104
+ },
105
+
106
+ onMessage: async (event: any, clientWs: WSContext) => {
107
+ if (!state.targetWs || !state.connectPromise) {
108
+ logger().error({
109
+ msg: "websocket state not initialized",
110
+ targetUrl,
111
+ });
112
+ return;
113
+ }
114
+
115
+ try {
116
+ await state.connectPromise;
117
+ if (state.targetWs.readyState === WebSocket.OPEN) {
118
+ state.targetWs.send(event.data);
119
+ } else {
120
+ logger().warn({
121
+ msg: "target websocket not open",
122
+ targetUrl,
123
+ readyState: state.targetWs.readyState,
124
+ });
125
+ }
126
+ } catch (error) {
127
+ logger().error({
128
+ msg: "failed to connect to target websocket",
129
+ targetUrl,
130
+ error,
131
+ });
132
+ closeWebSocketIfOpen(
133
+ clientWs,
134
+ 1011,
135
+ "Failed to connect to target",
136
+ );
137
+ }
138
+ },
139
+
140
+ onClose: (event: any, clientWs: WSContext) => {
141
+ logger().debug({
142
+ msg: "client websocket closed",
143
+ targetUrl,
144
+ code: event.code,
145
+ reason: event.reason,
146
+ wasClean: event.wasClean,
147
+ });
148
+
149
+ if (state.targetWs) {
150
+ if (
151
+ state.targetWs.readyState === WebSocket.OPEN ||
152
+ state.targetWs.readyState === WebSocket.CONNECTING
153
+ ) {
154
+ state.targetWs.close(
155
+ 1000,
156
+ event.reason || "Client disconnected",
157
+ );
158
+ }
159
+ }
160
+ },
161
+
162
+ onError: (event: any, clientWs: WSContext) => {
163
+ logger().error({ msg: "client websocket error", targetUrl, event });
164
+
165
+ if (state.targetWs) {
166
+ if (state.targetWs.readyState === WebSocket.OPEN) {
167
+ state.targetWs.close(1011, "Client WebSocket error");
168
+ } else if (state.targetWs.readyState === WebSocket.CONNECTING) {
169
+ state.targetWs.close();
170
+ }
171
+ }
172
+ },
173
+ };
174
+ }
175
+
176
+ function closeWebSocketIfOpen(
177
+ ws: WebSocket | WSContext,
178
+ code: number,
179
+ reason: string,
180
+ ): void {
181
+ if (ws.readyState === 1) {
182
+ ws.close(code, reason);
183
+ } else if (
184
+ "close" in ws &&
185
+ (ws as WebSocket).readyState === WebSocket.OPEN
186
+ ) {
187
+ ws.close(code, reason);
188
+ }
189
+ }
@@ -0,0 +1 @@
1
+ export * from "../../../dist/schemas/actor-inspector/v3";
@@ -0,0 +1,233 @@
1
+ import { createVersionedDataHandler } from "vbare";
2
+
3
+ import * as v1 from "../../../dist/schemas/actor-inspector/v1";
4
+ import * as v2 from "../../../dist/schemas/actor-inspector/v2";
5
+ import * as v3 from "../../../dist/schemas/actor-inspector/v3";
6
+
7
+ export const CURRENT_VERSION = 3;
8
+
9
+ const EVENTS_DROPPED_ERROR = "inspector.events_dropped";
10
+ const WORKFLOW_HISTORY_DROPPED_ERROR = "inspector.workflow_history_dropped";
11
+ const QUEUE_DROPPED_ERROR = "inspector.queue_dropped";
12
+ const TRACE_DROPPED_ERROR = "inspector.trace_dropped";
13
+ const DATABASE_DROPPED_ERROR = "inspector.database_dropped";
14
+
15
+ // Converter from v1 to v2: Drop events in Init and add new fields
16
+ const v1ToClientToV2 = (v1Data: v1.ToClient): v2.ToClient => {
17
+ if (v1Data.body.tag === "Init") {
18
+ const init = v1Data.body.val as v1.Init;
19
+ return {
20
+ body: {
21
+ tag: "Init",
22
+ val: {
23
+ connections: init.connections,
24
+ state: init.state,
25
+ isStateEnabled: init.isStateEnabled,
26
+ rpcs: init.rpcs,
27
+ isDatabaseEnabled: init.isDatabaseEnabled,
28
+ queueSize: 0n,
29
+ workflowHistory: null,
30
+ isWorkflowEnabled: false,
31
+ },
32
+ },
33
+ };
34
+ }
35
+ if (
36
+ v1Data.body.tag === "EventsUpdated" ||
37
+ v1Data.body.tag === "EventsResponse"
38
+ ) {
39
+ return {
40
+ body: {
41
+ tag: "Error",
42
+ val: {
43
+ message: EVENTS_DROPPED_ERROR,
44
+ },
45
+ },
46
+ };
47
+ }
48
+ return v1Data as unknown as v2.ToClient;
49
+ };
50
+
51
+ // Converter from v2 to v1: Add empty events to Init, drop newer updates
52
+ const v2ToClientToV1 = (v2Data: v2.ToClient): v1.ToClient => {
53
+ if (v2Data.body.tag === "Init") {
54
+ const init = v2Data.body.val;
55
+ return {
56
+ body: {
57
+ tag: "Init",
58
+ val: {
59
+ connections: init.connections,
60
+ events: [],
61
+ state: init.state,
62
+ isStateEnabled: init.isStateEnabled,
63
+ rpcs: init.rpcs,
64
+ isDatabaseEnabled: init.isDatabaseEnabled,
65
+ },
66
+ },
67
+ };
68
+ }
69
+ if (
70
+ v2Data.body.tag === "WorkflowHistoryUpdated" ||
71
+ v2Data.body.tag === "WorkflowHistoryResponse"
72
+ ) {
73
+ return {
74
+ body: {
75
+ tag: "Error",
76
+ val: {
77
+ message: WORKFLOW_HISTORY_DROPPED_ERROR,
78
+ },
79
+ },
80
+ };
81
+ }
82
+ if (v2Data.body.tag === "QueueUpdated") {
83
+ return {
84
+ body: {
85
+ tag: "Error",
86
+ val: {
87
+ message: QUEUE_DROPPED_ERROR,
88
+ },
89
+ },
90
+ };
91
+ }
92
+ if (v2Data.body.tag === "QueueResponse") {
93
+ return {
94
+ body: {
95
+ tag: "Error",
96
+ val: {
97
+ message: QUEUE_DROPPED_ERROR,
98
+ },
99
+ },
100
+ };
101
+ }
102
+ if (v2Data.body.tag === "TraceQueryResponse") {
103
+ return {
104
+ body: {
105
+ tag: "Error",
106
+ val: {
107
+ message: TRACE_DROPPED_ERROR,
108
+ },
109
+ },
110
+ };
111
+ }
112
+ return v2Data as unknown as v1.ToClient;
113
+ };
114
+
115
+ // Converter from v2 to v3: v2 messages are a subset of v3
116
+ const v2ToClientToV3 = (v2Data: v2.ToClient): v3.ToClient => {
117
+ return v2Data as unknown as v3.ToClient;
118
+ };
119
+
120
+ // Converter from v3 to v2: Drop database responses
121
+ const v3ToClientToV2 = (v3Data: v3.ToClient): v2.ToClient => {
122
+ if (
123
+ v3Data.body.tag === "DatabaseSchemaResponse" ||
124
+ v3Data.body.tag === "DatabaseTableRowsResponse"
125
+ ) {
126
+ return {
127
+ body: {
128
+ tag: "Error",
129
+ val: {
130
+ message: DATABASE_DROPPED_ERROR,
131
+ },
132
+ },
133
+ };
134
+ }
135
+ return v3Data as unknown as v2.ToClient;
136
+ };
137
+
138
+ // Converter from v1 to v2: Drop events requests
139
+ const v1ToServerToV2 = (v1Data: v1.ToServer): v2.ToServer => {
140
+ if (
141
+ v1Data.body.tag === "EventsRequest" ||
142
+ v1Data.body.tag === "ClearEventsRequest"
143
+ ) {
144
+ throw new Error("Cannot convert events requests to v2");
145
+ }
146
+ return v1Data as unknown as v2.ToServer;
147
+ };
148
+
149
+ // Converter from v2 to v1: Drop newer requests
150
+ const v2ToServerToV1 = (v2Data: v2.ToServer): v1.ToServer => {
151
+ if (
152
+ v2Data.body.tag === "TraceQueryRequest" ||
153
+ v2Data.body.tag === "QueueRequest" ||
154
+ v2Data.body.tag === "WorkflowHistoryRequest"
155
+ ) {
156
+ throw new Error("Cannot convert v2-only requests to v1");
157
+ }
158
+ return v2Data as unknown as v1.ToServer;
159
+ };
160
+
161
+ // Converter from v2 to v3: v2 messages are a subset of v3
162
+ const v2ToServerToV3 = (v2Data: v2.ToServer): v3.ToServer => {
163
+ return v2Data as unknown as v3.ToServer;
164
+ };
165
+
166
+ // Converter from v3 to v2: Drop database requests
167
+ const v3ToServerToV2 = (v3Data: v3.ToServer): v2.ToServer => {
168
+ if (
169
+ v3Data.body.tag === "DatabaseSchemaRequest" ||
170
+ v3Data.body.tag === "DatabaseTableRowsRequest"
171
+ ) {
172
+ throw new Error("Cannot convert v3-only database requests to v2");
173
+ }
174
+ return v3Data as unknown as v2.ToServer;
175
+ };
176
+
177
+ export const TO_SERVER_VERSIONED = createVersionedDataHandler<v3.ToServer>({
178
+ serializeVersion: (data, version) => {
179
+ switch (version) {
180
+ case 1:
181
+ return v1.encodeToServer(data as v1.ToServer);
182
+ case 2:
183
+ return v2.encodeToServer(data as v2.ToServer);
184
+ case 3:
185
+ return v3.encodeToServer(data as v3.ToServer);
186
+ default:
187
+ throw new Error(`Unknown version ${version}`);
188
+ }
189
+ },
190
+ deserializeVersion: (bytes, version) => {
191
+ switch (version) {
192
+ case 1:
193
+ return v1.decodeToServer(bytes);
194
+ case 2:
195
+ return v2.decodeToServer(bytes);
196
+ case 3:
197
+ return v3.decodeToServer(bytes);
198
+ default:
199
+ throw new Error(`Unknown version ${version}`);
200
+ }
201
+ },
202
+ deserializeConverters: () => [v1ToServerToV2, v2ToServerToV3],
203
+ serializeConverters: () => [v3ToServerToV2, v2ToServerToV1],
204
+ });
205
+
206
+ export const TO_CLIENT_VERSIONED = createVersionedDataHandler<v3.ToClient>({
207
+ serializeVersion: (data, version) => {
208
+ switch (version) {
209
+ case 1:
210
+ return v1.encodeToClient(data as v1.ToClient);
211
+ case 2:
212
+ return v2.encodeToClient(data as v2.ToClient);
213
+ case 3:
214
+ return v3.encodeToClient(data as v3.ToClient);
215
+ default:
216
+ throw new Error(`Unknown version ${version}`);
217
+ }
218
+ },
219
+ deserializeVersion: (bytes, version) => {
220
+ switch (version) {
221
+ case 1:
222
+ return v1.decodeToClient(bytes);
223
+ case 2:
224
+ return v2.decodeToClient(bytes);
225
+ case 3:
226
+ return v3.decodeToClient(bytes);
227
+ default:
228
+ throw new Error(`Unknown version ${version}`);
229
+ }
230
+ },
231
+ deserializeConverters: () => [v1ToClientToV2, v2ToClientToV3],
232
+ serializeConverters: () => [v3ToClientToV2, v2ToClientToV1],
233
+ });
@@ -0,0 +1 @@
1
+ export * from "../../../dist/schemas/actor-persist/v3";
@@ -0,0 +1,217 @@
1
+ import { createVersionedDataHandler } from "vbare";
2
+ import * as v1 from "../../../dist/schemas/actor-persist/v1";
3
+ import * as v2 from "../../../dist/schemas/actor-persist/v2";
4
+ import * as v3 from "../../../dist/schemas/actor-persist/v3";
5
+ import * as v4 from "../../../dist/schemas/actor-persist/v4";
6
+
7
+ export const CURRENT_VERSION = 4;
8
+
9
+ // Converter from v1 to v2
10
+ const v1ToV2 = (v1Data: v1.PersistedActor): v2.PersistedActor => ({
11
+ ...v1Data,
12
+ connections: v1Data.connections.map((conn) => ({
13
+ ...conn,
14
+ hibernatableRequestId: null,
15
+ })),
16
+ hibernatableWebSockets: [],
17
+ });
18
+
19
+ // Converter from v2 to v3
20
+ const v2ToV3 = (v2Data: v2.PersistedActor): v3.Actor => {
21
+ // Transform scheduled events from nested structure to flat structure
22
+ const scheduledEvents: v3.ScheduleEvent[] = v2Data.scheduledEvents.map(
23
+ (event) => {
24
+ // Extract action and args from the kind wrapper
25
+ if (event.kind.tag === "GenericPersistedScheduleEvent") {
26
+ return {
27
+ eventId: event.eventId,
28
+ timestamp: event.timestamp,
29
+ action: event.kind.val.action,
30
+ args: event.kind.val.args,
31
+ };
32
+ }
33
+ // Fallback for unknown kinds
34
+ throw new Error(`Unknown schedule event kind: ${event.kind.tag}`);
35
+ },
36
+ );
37
+
38
+ return {
39
+ input: v2Data.input,
40
+ hasInitialized: v2Data.hasInitialized,
41
+ state: v2Data.state,
42
+ scheduledEvents,
43
+ };
44
+ };
45
+
46
+ // Converter from v3 to v4: No changes to Actor structure
47
+ const v3ToV4 = (v3Data: v3.Actor): v4.Actor => {
48
+ return v3Data as unknown as v4.Actor;
49
+ };
50
+
51
+ // Converter from v4 to v3: No changes to Actor structure
52
+ const v4ToV3 = (v4Data: v4.Actor): v3.Actor => {
53
+ return v4Data as unknown as v3.Actor;
54
+ };
55
+
56
+ // Converter from v3 to v2
57
+ const v3ToV2 = (v3Data: v3.Actor): v2.PersistedActor => {
58
+ // Transform scheduled events from flat structure back to nested structure
59
+ const scheduledEvents: v2.PersistedScheduleEvent[] =
60
+ v3Data.scheduledEvents.map((event) => ({
61
+ eventId: event.eventId,
62
+ timestamp: event.timestamp,
63
+ kind: {
64
+ tag: "GenericPersistedScheduleEvent" as const,
65
+ val: {
66
+ action: event.action,
67
+ args: event.args,
68
+ },
69
+ },
70
+ }));
71
+
72
+ return {
73
+ input: v3Data.input,
74
+ hasInitialized: v3Data.hasInitialized,
75
+ state: v3Data.state,
76
+ scheduledEvents,
77
+ connections: [],
78
+ hibernatableWebSockets: [],
79
+ };
80
+ };
81
+
82
+ // Converter from v2 to v1
83
+ const v2ToV1 = (v2Data: v2.PersistedActor): v1.PersistedActor => {
84
+ return {
85
+ input: v2Data.input,
86
+ hasInitialized: v2Data.hasInitialized,
87
+ state: v2Data.state,
88
+ scheduledEvents: v2Data.scheduledEvents,
89
+ connections: v2Data.connections.map((conn) => {
90
+ const { hibernatableRequestId, ...rest } = conn;
91
+ return rest;
92
+ }),
93
+ };
94
+ };
95
+
96
+ export const ACTOR_VERSIONED = createVersionedDataHandler<v4.Actor>({
97
+ deserializeVersion: (bytes, version) => {
98
+ switch (version) {
99
+ case 1:
100
+ return v1.decodePersistedActor(bytes);
101
+ case 2:
102
+ return v2.decodePersistedActor(bytes);
103
+ case 3:
104
+ return v3.decodeActor(bytes);
105
+ case 4:
106
+ return v4.decodeActor(bytes);
107
+ default:
108
+ throw new Error(`Unknown version ${version}`);
109
+ }
110
+ },
111
+ serializeVersion: (data, version) => {
112
+ switch (version) {
113
+ case 1:
114
+ return v1.encodePersistedActor(data as v1.PersistedActor);
115
+ case 2:
116
+ return v2.encodePersistedActor(data as v2.PersistedActor);
117
+ case 3:
118
+ return v3.encodeActor(data as v3.Actor);
119
+ case 4:
120
+ return v4.encodeActor(data as v4.Actor);
121
+ default:
122
+ throw new Error(`Unknown version ${version}`);
123
+ }
124
+ },
125
+ deserializeConverters: () => [v1ToV2, v2ToV3, v3ToV4],
126
+ serializeConverters: () => [v4ToV3, v3ToV2, v2ToV1],
127
+ });
128
+
129
+ // Conn identity converters (Conn is identical between v3 and v4)
130
+ const v3ConnToV4 = (v3Data: v3.Conn): v4.Conn => {
131
+ return v3Data as unknown as v4.Conn;
132
+ };
133
+
134
+ const v4ConnToV3 = (v4Data: v4.Conn): v3.Conn => {
135
+ return v4Data as unknown as v3.Conn;
136
+ };
137
+
138
+ export const CONN_VERSIONED = createVersionedDataHandler<v4.Conn>({
139
+ deserializeVersion: (bytes, version) => {
140
+ switch (version) {
141
+ case 3:
142
+ return v3.decodeConn(bytes);
143
+ case 4:
144
+ return v4.decodeConn(bytes);
145
+ default:
146
+ throw new Error(
147
+ `Conn type only exists in version 3+, got version ${version}`,
148
+ );
149
+ }
150
+ },
151
+ serializeVersion: (data, version) => {
152
+ switch (version) {
153
+ case 3:
154
+ return v3.encodeConn(data as v3.Conn);
155
+ case 4:
156
+ return v4.encodeConn(data as v4.Conn);
157
+ default:
158
+ throw new Error(
159
+ `Conn type only exists in version 3+, got version ${version}`,
160
+ );
161
+ }
162
+ },
163
+ deserializeConverters: () => [v3ConnToV4],
164
+ serializeConverters: () => [v4ConnToV3],
165
+ });
166
+
167
+ export const QUEUE_METADATA_VERSIONED =
168
+ createVersionedDataHandler<v4.QueueMetadata>({
169
+ deserializeVersion: (bytes, version) => {
170
+ switch (version) {
171
+ case 4:
172
+ return v4.decodeQueueMetadata(bytes);
173
+ default:
174
+ throw new Error(
175
+ `QueueMetadata type only exists in version 4+, got version ${version}`,
176
+ );
177
+ }
178
+ },
179
+ serializeVersion: (data, version) => {
180
+ switch (version) {
181
+ case 4:
182
+ return v4.encodeQueueMetadata(data as v4.QueueMetadata);
183
+ default:
184
+ throw new Error(
185
+ `QueueMetadata type only exists in version 4+, got version ${version}`,
186
+ );
187
+ }
188
+ },
189
+ deserializeConverters: () => [],
190
+ serializeConverters: () => [],
191
+ });
192
+
193
+ export const QUEUE_MESSAGE_VERSIONED =
194
+ createVersionedDataHandler<v4.QueueMessage>({
195
+ deserializeVersion: (bytes, version) => {
196
+ switch (version) {
197
+ case 4:
198
+ return v4.decodeQueueMessage(bytes);
199
+ default:
200
+ throw new Error(
201
+ `QueueMessage type only exists in version 4+, got version ${version}`,
202
+ );
203
+ }
204
+ },
205
+ serializeVersion: (data, version) => {
206
+ switch (version) {
207
+ case 4:
208
+ return v4.encodeQueueMessage(data as v4.QueueMessage);
209
+ default:
210
+ throw new Error(
211
+ `QueueMessage type only exists in version 4+, got version ${version}`,
212
+ );
213
+ }
214
+ },
215
+ deserializeConverters: () => [],
216
+ serializeConverters: () => [],
217
+ });
@@ -0,0 +1 @@
1
+ export * from "../../../dist/schemas/client-protocol/v3";