rivetkit 2.0.42 → 2.1.0-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 (322) hide show
  1. package/dist/{tsup/config-CLnylLYY.d.ts → browser/client.d.ts} +2127 -1910
  2. package/dist/browser/client.js +5182 -0
  3. package/dist/browser/client.js.map +1 -0
  4. package/dist/browser/inspector/client.d.ts +130 -0
  5. package/dist/browser/inspector/client.js +2854 -0
  6. package/dist/browser/inspector/client.js.map +1 -0
  7. package/dist/browser/v3-DnYObHH3.d.ts +279 -0
  8. package/dist/schemas/actor-inspector/v2.ts +796 -0
  9. package/dist/schemas/actor-inspector/v3.ts +899 -0
  10. package/dist/schemas/actor-persist/v4.ts +406 -0
  11. package/dist/schemas/client-protocol/v3.ts +554 -0
  12. package/dist/schemas/persist/v1.ts +781 -0
  13. package/dist/schemas/transport/v1.ts +697 -0
  14. package/dist/tsup/actor/errors.cjs +27 -3
  15. package/dist/tsup/actor/errors.cjs.map +1 -1
  16. package/dist/tsup/actor/errors.d.cts +37 -1
  17. package/dist/tsup/actor/errors.d.ts +37 -1
  18. package/dist/tsup/actor/errors.js +26 -1
  19. package/dist/tsup/{actor-router-consts-DzI2szci.d.cts → actor-router-consts-D29T1Z-K.d.cts} +1 -1
  20. package/dist/tsup/{actor-router-consts-DzI2szci.d.ts → actor-router-consts-D29T1Z-K.d.ts} +1 -1
  21. package/dist/tsup/chunk-424PT5DM.js +23 -0
  22. package/dist/tsup/chunk-424PT5DM.js.map +1 -0
  23. package/dist/tsup/{chunk-JDAD2YFA.js → chunk-5ESWDTHJ.js} +148 -273
  24. package/dist/tsup/chunk-5ESWDTHJ.js.map +1 -0
  25. package/dist/tsup/{chunk-FJ3KTN4V.js → chunk-6LIBPELE.js} +119 -11
  26. package/dist/tsup/chunk-6LIBPELE.js.map +1 -0
  27. package/dist/tsup/chunk-6LJAZ5R4.cjs +96 -0
  28. package/dist/tsup/chunk-6LJAZ5R4.cjs.map +1 -0
  29. package/dist/tsup/{chunk-LFVF5SCU.js → chunk-7HTNH26M.js} +126 -1
  30. package/dist/tsup/chunk-7HTNH26M.js.map +1 -0
  31. package/dist/tsup/chunk-7K4CYDGD.js +630 -0
  32. package/dist/tsup/chunk-7K4CYDGD.js.map +1 -0
  33. package/dist/tsup/{chunk-XXGJCOL6.js → chunk-A6YIZWTK.js} +2 -2
  34. package/dist/tsup/chunk-AIYEYMX5.cjs +630 -0
  35. package/dist/tsup/chunk-AIYEYMX5.cjs.map +1 -0
  36. package/dist/tsup/{chunk-Q6W7RJJP.js → chunk-DIGBC2VI.js} +211 -2316
  37. package/dist/tsup/chunk-DIGBC2VI.js.map +1 -0
  38. package/dist/tsup/{chunk-RZW2DNND.cjs → chunk-F6JYU5IK.cjs} +1957 -1039
  39. package/dist/tsup/chunk-F6JYU5IK.cjs.map +1 -0
  40. package/dist/tsup/chunk-HAZL2EPK.cjs +534 -0
  41. package/dist/tsup/chunk-HAZL2EPK.cjs.map +1 -0
  42. package/dist/tsup/chunk-HDQ2JUQT.cjs +23 -0
  43. package/dist/tsup/chunk-HDQ2JUQT.cjs.map +1 -0
  44. package/dist/tsup/chunk-HIDX4C5Y.cjs +1036 -0
  45. package/dist/tsup/chunk-HIDX4C5Y.cjs.map +1 -0
  46. package/dist/tsup/chunk-IVG73YCW.js +534 -0
  47. package/dist/tsup/chunk-IVG73YCW.js.map +1 -0
  48. package/dist/tsup/chunk-KJSYAUOM.js +96 -0
  49. package/dist/tsup/chunk-KJSYAUOM.js.map +1 -0
  50. package/dist/tsup/{chunk-2XQS746M.cjs → chunk-L47L3ZWJ.cjs} +127 -2
  51. package/dist/tsup/chunk-L47L3ZWJ.cjs.map +1 -0
  52. package/dist/tsup/{chunk-H4TB4X25.cjs → chunk-LW6KLR7A.cjs} +126 -18
  53. package/dist/tsup/chunk-LW6KLR7A.cjs.map +1 -0
  54. package/dist/tsup/chunk-LXUQ667X.js +2006 -0
  55. package/dist/tsup/chunk-LXUQ667X.js.map +1 -0
  56. package/dist/tsup/{chunk-GMAVRZSF.js → chunk-M2T62AZQ.js} +1790 -872
  57. package/dist/tsup/chunk-M2T62AZQ.js.map +1 -0
  58. package/dist/tsup/chunk-MZ37VV3P.js +5974 -0
  59. package/dist/tsup/chunk-MZ37VV3P.js.map +1 -0
  60. package/dist/tsup/chunk-N4KRDJ56.js +72 -0
  61. package/dist/tsup/chunk-N4KRDJ56.js.map +1 -0
  62. package/dist/tsup/chunk-NIYZDWMW.cjs +2006 -0
  63. package/dist/tsup/chunk-NIYZDWMW.cjs.map +1 -0
  64. package/dist/tsup/chunk-OMEPCQK2.js +649 -0
  65. package/dist/tsup/chunk-OMEPCQK2.js.map +1 -0
  66. package/dist/tsup/chunk-SR3KQE7Q.cjs +72 -0
  67. package/dist/tsup/chunk-SR3KQE7Q.cjs.map +1 -0
  68. package/dist/tsup/chunk-SSEP6DHP.cjs +2657 -0
  69. package/dist/tsup/chunk-SSEP6DHP.cjs.map +1 -0
  70. package/dist/tsup/chunk-T5YCUGVS.js +1036 -0
  71. package/dist/tsup/chunk-T5YCUGVS.js.map +1 -0
  72. package/dist/tsup/{chunk-EJVBH5VF.cjs → chunk-TPGXWFQT.cjs} +3 -3
  73. package/dist/tsup/{chunk-EJVBH5VF.cjs.map → chunk-TPGXWFQT.cjs.map} +1 -1
  74. package/dist/tsup/{chunk-X35U3YNX.cjs → chunk-TYLXNCA5.cjs} +214 -339
  75. package/dist/tsup/chunk-TYLXNCA5.cjs.map +1 -0
  76. package/dist/tsup/chunk-VKVNIQRQ.js +257 -0
  77. package/dist/tsup/chunk-VKVNIQRQ.js.map +1 -0
  78. package/dist/tsup/chunk-XWBAQO5H.cjs +649 -0
  79. package/dist/tsup/chunk-XWBAQO5H.cjs.map +1 -0
  80. package/dist/tsup/chunk-YQ4LDVD6.cjs +5974 -0
  81. package/dist/tsup/chunk-YQ4LDVD6.cjs.map +1 -0
  82. package/dist/tsup/chunk-ZFY5J2EP.cjs +257 -0
  83. package/dist/tsup/chunk-ZFY5J2EP.cjs.map +1 -0
  84. package/dist/tsup/client/mod.cjs +9 -10
  85. package/dist/tsup/client/mod.cjs.map +1 -1
  86. package/dist/tsup/client/mod.d.cts +11 -5
  87. package/dist/tsup/client/mod.d.ts +11 -5
  88. package/dist/tsup/client/mod.js +8 -8
  89. package/dist/tsup/common/log.cjs +4 -4
  90. package/dist/tsup/common/log.d.cts +2 -2
  91. package/dist/tsup/common/log.d.ts +2 -2
  92. package/dist/tsup/common/log.js +3 -2
  93. package/dist/tsup/common/websocket.cjs +5 -5
  94. package/dist/tsup/common/websocket.js +4 -3
  95. package/dist/tsup/config-BFqid9Gr.d.ts +2574 -0
  96. package/dist/tsup/config-BiNoIHRs.d.cts +80 -0
  97. package/dist/tsup/config-BiNoIHRs.d.ts +80 -0
  98. package/dist/tsup/{config-CZB2-W8x.d.cts → config-CAZphOS1.d.cts} +681 -355
  99. package/dist/tsup/db/drizzle/mod.cjs +49 -0
  100. package/dist/tsup/db/drizzle/mod.cjs.map +1 -0
  101. package/dist/tsup/db/drizzle/mod.d.cts +17 -0
  102. package/dist/tsup/db/drizzle/mod.d.ts +17 -0
  103. package/dist/tsup/db/drizzle/mod.js +49 -0
  104. package/dist/tsup/db/drizzle/mod.js.map +1 -0
  105. package/dist/tsup/db/mod.cjs +9 -0
  106. package/dist/tsup/db/mod.cjs.map +1 -0
  107. package/dist/tsup/db/mod.d.cts +9 -0
  108. package/dist/tsup/db/mod.d.ts +9 -0
  109. package/dist/tsup/db/mod.js +9 -0
  110. package/dist/tsup/db/mod.js.map +1 -0
  111. package/dist/tsup/{driver-D0QX9M11.d.ts → driver-Bxv62E2p.d.ts} +2 -2
  112. package/dist/tsup/{driver-q-zqG7fc.d.cts → driver-DYXwJR5D.d.cts} +2 -2
  113. package/dist/tsup/driver-helpers/mod.cjs +12 -6
  114. package/dist/tsup/driver-helpers/mod.cjs.map +1 -1
  115. package/dist/tsup/driver-helpers/mod.d.cts +12 -5
  116. package/dist/tsup/driver-helpers/mod.d.ts +12 -5
  117. package/dist/tsup/driver-helpers/mod.js +12 -5
  118. package/dist/tsup/driver-test-suite/mod.cjs +1370 -116
  119. package/dist/tsup/driver-test-suite/mod.cjs.map +1 -1
  120. package/dist/tsup/driver-test-suite/mod.d.cts +10 -4
  121. package/dist/tsup/driver-test-suite/mod.d.ts +10 -4
  122. package/dist/tsup/driver-test-suite/mod.js +2093 -838
  123. package/dist/tsup/driver-test-suite/mod.js.map +1 -1
  124. package/dist/tsup/inspector/mod.cjs +29 -3
  125. package/dist/tsup/inspector/mod.cjs.map +1 -1
  126. package/dist/tsup/inspector/mod.d.cts +124 -3
  127. package/dist/tsup/inspector/mod.d.ts +124 -3
  128. package/dist/tsup/inspector/mod.js +72 -45
  129. package/dist/tsup/keys-CydblqMh.d.cts +13 -0
  130. package/dist/tsup/keys-CydblqMh.d.ts +13 -0
  131. package/dist/tsup/mod.cjs +16 -10
  132. package/dist/tsup/mod.cjs.map +1 -1
  133. package/dist/tsup/mod.d.cts +26 -14
  134. package/dist/tsup/mod.d.ts +26 -14
  135. package/dist/tsup/mod.js +20 -13
  136. package/dist/tsup/serve-test-suite/mod.cjs +1165 -83
  137. package/dist/tsup/serve-test-suite/mod.cjs.map +1 -1
  138. package/dist/tsup/serve-test-suite/mod.js +1114 -29
  139. package/dist/tsup/serve-test-suite/mod.js.map +1 -1
  140. package/dist/tsup/test/mod.cjs +84 -11
  141. package/dist/tsup/test/mod.cjs.map +1 -1
  142. package/dist/tsup/test/mod.d.cts +10 -5
  143. package/dist/tsup/test/mod.d.ts +10 -5
  144. package/dist/tsup/test/mod.js +85 -11
  145. package/dist/tsup/test/mod.js.map +1 -1
  146. package/dist/tsup/utils.cjs +10 -4
  147. package/dist/tsup/utils.cjs.map +1 -1
  148. package/dist/tsup/utils.d.cts +72 -2
  149. package/dist/tsup/utils.d.ts +72 -2
  150. package/dist/tsup/utils.js +9 -2
  151. package/dist/tsup/v3-DnYObHH3.d.cts +279 -0
  152. package/dist/tsup/v3-DnYObHH3.d.ts +279 -0
  153. package/dist/tsup/workflow/mod.cjs +16 -0
  154. package/dist/tsup/workflow/mod.cjs.map +1 -0
  155. package/dist/tsup/workflow/mod.d.cts +83 -0
  156. package/dist/tsup/workflow/mod.d.ts +83 -0
  157. package/dist/tsup/workflow/mod.js +16 -0
  158. package/dist/tsup/workflow/mod.js.map +1 -0
  159. package/package.json +62 -5
  160. package/src/actor/config.ts +478 -68
  161. package/src/actor/conn/mod.ts +68 -16
  162. package/src/actor/conn/state-manager.ts +2 -2
  163. package/src/actor/contexts/action.ts +20 -12
  164. package/src/actor/contexts/base/actor.ts +137 -7
  165. package/src/actor/contexts/base/conn-init.ts +27 -7
  166. package/src/actor/contexts/base/conn.ts +27 -18
  167. package/src/actor/contexts/before-action-response.ts +9 -2
  168. package/src/actor/contexts/before-connect.ts +7 -2
  169. package/src/actor/contexts/connect.ts +9 -2
  170. package/src/actor/contexts/create-conn-state.ts +7 -2
  171. package/src/actor/contexts/create-vars.ts +16 -3
  172. package/src/actor/contexts/create.ts +16 -3
  173. package/src/actor/contexts/destroy.ts +9 -3
  174. package/src/actor/contexts/disconnect.ts +10 -4
  175. package/src/actor/contexts/index.ts +4 -3
  176. package/src/actor/contexts/request.ts +23 -6
  177. package/src/actor/contexts/run.ts +47 -0
  178. package/src/actor/contexts/sleep.ts +9 -3
  179. package/src/actor/contexts/state-change.ts +9 -3
  180. package/src/actor/contexts/wake.ts +9 -3
  181. package/src/actor/contexts/websocket.ts +23 -6
  182. package/src/actor/database.ts +8 -18
  183. package/src/actor/definition.ts +20 -6
  184. package/src/actor/driver.ts +32 -3
  185. package/src/actor/errors.ts +127 -0
  186. package/src/actor/instance/connection-manager.ts +183 -80
  187. package/src/actor/instance/event-manager.ts +26 -15
  188. package/src/actor/instance/keys.ts +117 -0
  189. package/src/actor/instance/mod.ts +784 -174
  190. package/src/actor/instance/queue-manager.ts +603 -0
  191. package/src/actor/instance/queue.ts +287 -0
  192. package/src/actor/instance/schedule-manager.ts +49 -7
  193. package/src/actor/instance/state-manager.ts +35 -11
  194. package/src/actor/instance/traces-driver.ts +128 -0
  195. package/src/actor/mod.ts +26 -2
  196. package/src/actor/protocol/old.ts +28 -13
  197. package/src/actor/protocol/serde.ts +1 -1
  198. package/src/actor/router-endpoints.ts +177 -21
  199. package/src/actor/router-websocket-endpoints.ts +18 -29
  200. package/src/actor/router.ts +177 -0
  201. package/src/actor/schema.ts +291 -0
  202. package/src/actor/utils.ts +40 -0
  203. package/src/client/actor-common.ts +1 -1
  204. package/src/client/actor-conn.ts +100 -33
  205. package/src/client/actor-handle.ts +61 -33
  206. package/src/client/client.ts +2 -4
  207. package/src/client/config.ts +1 -1
  208. package/src/client/mod.browser.ts +2 -0
  209. package/src/client/mod.ts +1 -4
  210. package/src/client/queue.ts +146 -0
  211. package/src/client/utils.ts +1 -1
  212. package/src/common/log.ts +1 -1
  213. package/src/common/utils.ts +3 -3
  214. package/src/db/config.ts +100 -0
  215. package/src/db/drizzle/mod.ts +226 -0
  216. package/src/db/drizzle/sqlite-core.ts +22 -0
  217. package/src/db/mod.ts +125 -0
  218. package/src/db/shared.ts +92 -0
  219. package/src/db/sqlite-vfs.ts +12 -0
  220. package/src/driver-helpers/mod.ts +1 -0
  221. package/src/driver-test-suite/mod.ts +69 -43
  222. package/src/driver-test-suite/tests/access-control.ts +218 -0
  223. package/src/driver-test-suite/tests/actor-db-raw.ts +73 -0
  224. package/src/driver-test-suite/tests/actor-db.ts +394 -0
  225. package/src/driver-test-suite/tests/actor-inspector.ts +259 -358
  226. package/src/driver-test-suite/tests/actor-kv.ts +41 -20
  227. package/src/driver-test-suite/tests/actor-queue.ts +324 -0
  228. package/src/driver-test-suite/tests/actor-run.ts +181 -0
  229. package/src/driver-test-suite/tests/actor-schedule.ts +5 -2
  230. package/src/driver-test-suite/tests/actor-sleep.ts +3 -3
  231. package/src/driver-test-suite/tests/actor-stateless.ts +70 -0
  232. package/src/driver-test-suite/tests/actor-workflow.ts +108 -0
  233. package/src/driver-test-suite/tests/manager-driver.ts +11 -0
  234. package/src/driver-test-suite/tests/raw-http-request-properties.ts +1 -1
  235. package/src/driver-test-suite/tests/raw-websocket.ts +12 -12
  236. package/src/drivers/default.ts +7 -2
  237. package/src/drivers/engine/actor-driver.ts +45 -37
  238. package/src/drivers/engine/config.ts +1 -1
  239. package/src/drivers/file-system/actor.ts +20 -2
  240. package/src/drivers/file-system/global-state.ts +569 -258
  241. package/src/drivers/file-system/kv-limits.ts +70 -0
  242. package/src/drivers/file-system/manager.ts +22 -6
  243. package/src/drivers/file-system/mod.ts +39 -16
  244. package/src/drivers/file-system/sqlite-runtime.ts +210 -0
  245. package/src/inspector/actor-inspector.ts +224 -102
  246. package/src/inspector/config.ts +1 -1
  247. package/src/inspector/handler.ts +102 -20
  248. package/src/inspector/mod.browser.ts +8 -0
  249. package/src/inspector/mod.ts +2 -0
  250. package/src/inspector/serve-ui.ts +40 -0
  251. package/src/inspector/transport.ts +18 -0
  252. package/src/inspector/utils.ts +5 -39
  253. package/src/manager/gateway.ts +1 -1
  254. package/src/manager/protocol/mod.ts +1 -1
  255. package/src/manager/protocol/query.ts +1 -1
  256. package/src/manager/router-schema.ts +1 -1
  257. package/src/manager/router.ts +38 -12
  258. package/src/manager-api/actors.ts +1 -1
  259. package/src/manager-api/common.ts +1 -1
  260. package/src/registry/config/driver.ts +1 -1
  261. package/src/registry/config/index.ts +212 -43
  262. package/src/registry/config/legacy-runner.ts +1 -1
  263. package/src/registry/config/runner.ts +1 -1
  264. package/src/registry/config/serverless.ts +1 -1
  265. package/src/registry/index.ts +7 -5
  266. package/src/remote-manager-driver/api-utils.ts +1 -1
  267. package/src/schemas/actor-inspector/mod.ts +1 -1
  268. package/src/schemas/actor-inspector/versioned.ts +195 -8
  269. package/src/schemas/actor-persist/versioned.ts +87 -7
  270. package/src/schemas/client-protocol/mod.ts +1 -1
  271. package/src/schemas/client-protocol/versioned.ts +127 -11
  272. package/src/schemas/client-protocol-zod/mod.ts +16 -1
  273. package/src/schemas/persist/mod.ts +1 -0
  274. package/src/schemas/transport/mod.ts +1 -0
  275. package/src/serde.ts +1 -1
  276. package/src/serve-test-suite/mod.ts +10 -9
  277. package/src/test/mod.ts +15 -56
  278. package/src/utils/endpoint-parser.test.ts +1 -1
  279. package/src/utils/endpoint-parser.ts +1 -1
  280. package/src/utils/env-vars.ts +12 -1
  281. package/src/utils/node.ts +15 -2
  282. package/src/utils.test.ts +34 -0
  283. package/src/utils.ts +140 -6
  284. package/src/workflow/constants.ts +2 -0
  285. package/src/workflow/context.ts +532 -0
  286. package/src/workflow/driver.ts +191 -0
  287. package/src/workflow/inspector.ts +268 -0
  288. package/src/workflow/mod.ts +122 -0
  289. package/dist/tsup/chunk-2IJTYN6K.cjs +0 -278
  290. package/dist/tsup/chunk-2IJTYN6K.cjs.map +0 -1
  291. package/dist/tsup/chunk-2XQS746M.cjs.map +0 -1
  292. package/dist/tsup/chunk-3VP5CSHV.cjs +0 -114
  293. package/dist/tsup/chunk-3VP5CSHV.cjs.map +0 -1
  294. package/dist/tsup/chunk-AQFSQMBG.js +0 -114
  295. package/dist/tsup/chunk-AQFSQMBG.js.map +0 -1
  296. package/dist/tsup/chunk-E6ZE2YEA.js +0 -664
  297. package/dist/tsup/chunk-E6ZE2YEA.js.map +0 -1
  298. package/dist/tsup/chunk-FJ3KTN4V.js.map +0 -1
  299. package/dist/tsup/chunk-GBENOENJ.cjs +0 -8
  300. package/dist/tsup/chunk-GBENOENJ.cjs.map +0 -1
  301. package/dist/tsup/chunk-GD7UXGOE.cjs +0 -4762
  302. package/dist/tsup/chunk-GD7UXGOE.cjs.map +0 -1
  303. package/dist/tsup/chunk-GMAVRZSF.js.map +0 -1
  304. package/dist/tsup/chunk-H4TB4X25.cjs.map +0 -1
  305. package/dist/tsup/chunk-JDAD2YFA.js.map +0 -1
  306. package/dist/tsup/chunk-KCOVZOPS.js +0 -1946
  307. package/dist/tsup/chunk-KCOVZOPS.js.map +0 -1
  308. package/dist/tsup/chunk-KDFWJKMJ.cjs +0 -664
  309. package/dist/tsup/chunk-KDFWJKMJ.cjs.map +0 -1
  310. package/dist/tsup/chunk-LFVF5SCU.js.map +0 -1
  311. package/dist/tsup/chunk-Q6W7RJJP.js.map +0 -1
  312. package/dist/tsup/chunk-RUW5CZ5Z.cjs +0 -1949
  313. package/dist/tsup/chunk-RUW5CZ5Z.cjs.map +0 -1
  314. package/dist/tsup/chunk-RZW2DNND.cjs.map +0 -1
  315. package/dist/tsup/chunk-TCOEBUUE.js +0 -278
  316. package/dist/tsup/chunk-TCOEBUUE.js.map +0 -1
  317. package/dist/tsup/chunk-X35U3YNX.cjs.map +0 -1
  318. package/dist/tsup/keys-Chhy4ylv.d.cts +0 -8
  319. package/dist/tsup/keys-Chhy4ylv.d.ts +0 -8
  320. package/dist/tsup/v1-Gq4avTK3.d.cts +0 -240
  321. package/dist/tsup/v1-Gq4avTK3.d.ts +0 -240
  322. /package/dist/tsup/{chunk-XXGJCOL6.js.map → chunk-A6YIZWTK.js.map} +0 -0
@@ -0,0 +1,649 @@
1
+ import {
2
+ WORKFLOW_GUARD_KV_KEY,
3
+ workflow
4
+ } from "./chunk-7K4CYDGD.js";
5
+ import {
6
+ actor,
7
+ queue
8
+ } from "./chunk-5ESWDTHJ.js";
9
+ import {
10
+ db
11
+ } from "./chunk-KJSYAUOM.js";
12
+ import {
13
+ getLogger,
14
+ promiseWithResolvers
15
+ } from "./chunk-6LIBPELE.js";
16
+
17
+ // src/driver-test-suite/log.ts
18
+ function logger() {
19
+ return getLogger("test-suite");
20
+ }
21
+
22
+ // fixtures/driver-test-suite/hibernation.ts
23
+ var HIBERNATION_SLEEP_TIMEOUT = 500;
24
+ var hibernationActor = actor({
25
+ state: {
26
+ sleepCount: 0,
27
+ wakeCount: 0
28
+ },
29
+ createConnState: (c) => {
30
+ return {
31
+ count: 0,
32
+ connectCount: 0,
33
+ disconnectCount: 0
34
+ };
35
+ },
36
+ onWake: (c) => {
37
+ c.state.wakeCount += 1;
38
+ },
39
+ onSleep: (c) => {
40
+ c.state.sleepCount += 1;
41
+ },
42
+ onConnect: (c, conn) => {
43
+ conn.state.connectCount += 1;
44
+ },
45
+ onDisconnect: (c, conn) => {
46
+ conn.state.disconnectCount += 1;
47
+ },
48
+ actions: {
49
+ // Basic RPC that returns a simple value
50
+ ping: (c) => {
51
+ return "pong";
52
+ },
53
+ // Increment the connection's count
54
+ connIncrement: (c) => {
55
+ c.conn.state.count += 1;
56
+ return c.conn.state.count;
57
+ },
58
+ // Get the connection's count
59
+ getConnCount: (c) => {
60
+ return c.conn.state.count;
61
+ },
62
+ // Get the connection's lifecycle counts
63
+ getConnLifecycleCounts: (c) => {
64
+ return {
65
+ connectCount: c.conn.state.connectCount,
66
+ disconnectCount: c.conn.state.disconnectCount
67
+ };
68
+ },
69
+ // Get all connection IDs
70
+ getConnectionIds: (c) => {
71
+ return c.conns.entries().map((x) => x[0]).toArray();
72
+ },
73
+ // Get actor sleep/wake counts
74
+ getActorCounts: (c) => {
75
+ return {
76
+ sleepCount: c.state.sleepCount,
77
+ wakeCount: c.state.wakeCount
78
+ };
79
+ },
80
+ // Trigger sleep
81
+ triggerSleep: (c) => {
82
+ c.sleep();
83
+ }
84
+ },
85
+ options: {
86
+ sleepTimeout: HIBERNATION_SLEEP_TIMEOUT
87
+ }
88
+ });
89
+
90
+ // fixtures/driver-test-suite/sleep.ts
91
+ var SLEEP_TIMEOUT = 1e3;
92
+ var sleep = actor({
93
+ state: { startCount: 0, sleepCount: 0 },
94
+ onWake: (c) => {
95
+ c.state.startCount += 1;
96
+ },
97
+ onSleep: (c) => {
98
+ c.state.sleepCount += 1;
99
+ },
100
+ actions: {
101
+ triggerSleep: (c) => {
102
+ c.sleep();
103
+ },
104
+ getCounts: (c) => {
105
+ return {
106
+ startCount: c.state.startCount,
107
+ sleepCount: c.state.sleepCount
108
+ };
109
+ },
110
+ setAlarm: async (c, duration) => {
111
+ await c.schedule.after(duration, "onAlarm");
112
+ },
113
+ onAlarm: (c) => {
114
+ c.log.info("alarm called");
115
+ }
116
+ },
117
+ options: {
118
+ sleepTimeout: SLEEP_TIMEOUT
119
+ }
120
+ });
121
+ var sleepWithLongRpc = actor({
122
+ state: { startCount: 0, sleepCount: 0 },
123
+ createVars: () => ({}),
124
+ onWake: (c) => {
125
+ c.state.startCount += 1;
126
+ },
127
+ onSleep: (c) => {
128
+ c.state.sleepCount += 1;
129
+ },
130
+ actions: {
131
+ getCounts: (c) => {
132
+ return {
133
+ startCount: c.state.startCount,
134
+ sleepCount: c.state.sleepCount
135
+ };
136
+ },
137
+ longRunningRpc: async (c) => {
138
+ c.log.info("starting long running rpc");
139
+ c.vars.longRunningResolve = promiseWithResolvers((reason) => c.log.warn({ msg: "unhandled long running rpc rejection", reason }));
140
+ c.broadcast("waiting");
141
+ await c.vars.longRunningResolve.promise;
142
+ c.log.info("finished long running rpc");
143
+ },
144
+ finishLongRunningRpc: (c) => {
145
+ var _a;
146
+ return (_a = c.vars.longRunningResolve) == null ? void 0 : _a.resolve();
147
+ }
148
+ },
149
+ options: {
150
+ sleepTimeout: SLEEP_TIMEOUT
151
+ }
152
+ });
153
+ var sleepWithRawHttp = actor({
154
+ state: { startCount: 0, sleepCount: 0, requestCount: 0 },
155
+ onWake: (c) => {
156
+ c.state.startCount += 1;
157
+ },
158
+ onSleep: (c) => {
159
+ c.state.sleepCount += 1;
160
+ },
161
+ onRequest: async (c, request) => {
162
+ c.state.requestCount += 1;
163
+ const url = new URL(request.url);
164
+ if (url.pathname === "/long-request") {
165
+ const duration = parseInt(
166
+ url.searchParams.get("duration") || "1000"
167
+ );
168
+ c.log.info({ msg: "starting long fetch request", duration });
169
+ await new Promise((resolve) => setTimeout(resolve, duration));
170
+ c.log.info("finished long fetch request");
171
+ return new Response(JSON.stringify({ completed: true }), {
172
+ headers: { "Content-Type": "application/json" }
173
+ });
174
+ }
175
+ return new Response("Not Found", { status: 404 });
176
+ },
177
+ actions: {
178
+ getCounts: (c) => {
179
+ return {
180
+ startCount: c.state.startCount,
181
+ sleepCount: c.state.sleepCount,
182
+ requestCount: c.state.requestCount
183
+ };
184
+ }
185
+ },
186
+ options: {
187
+ sleepTimeout: SLEEP_TIMEOUT
188
+ }
189
+ });
190
+ var sleepWithRawWebSocket = actor({
191
+ state: { startCount: 0, sleepCount: 0, connectionCount: 0 },
192
+ onWake: (c) => {
193
+ c.state.startCount += 1;
194
+ },
195
+ onSleep: (c) => {
196
+ c.state.sleepCount += 1;
197
+ },
198
+ onWebSocket: (c, websocket) => {
199
+ c.state.connectionCount += 1;
200
+ c.log.info({
201
+ msg: "websocket connected",
202
+ connectionCount: c.state.connectionCount
203
+ });
204
+ websocket.send(
205
+ JSON.stringify({
206
+ type: "connected",
207
+ connectionCount: c.state.connectionCount
208
+ })
209
+ );
210
+ websocket.addEventListener("message", (event) => {
211
+ const data = event.data;
212
+ if (typeof data === "string") {
213
+ try {
214
+ const parsed = JSON.parse(data);
215
+ if (parsed.type === "getCounts") {
216
+ websocket.send(
217
+ JSON.stringify({
218
+ type: "counts",
219
+ startCount: c.state.startCount,
220
+ sleepCount: c.state.sleepCount,
221
+ connectionCount: c.state.connectionCount
222
+ })
223
+ );
224
+ } else if (parsed.type === "keepAlive") {
225
+ websocket.send(JSON.stringify({ type: "ack" }));
226
+ }
227
+ } catch {
228
+ websocket.send(data);
229
+ }
230
+ }
231
+ });
232
+ websocket.addEventListener("close", () => {
233
+ c.state.connectionCount -= 1;
234
+ c.log.info({
235
+ msg: "websocket disconnected",
236
+ connectionCount: c.state.connectionCount
237
+ });
238
+ });
239
+ },
240
+ actions: {
241
+ getCounts: (c) => {
242
+ return {
243
+ startCount: c.state.startCount,
244
+ sleepCount: c.state.sleepCount,
245
+ connectionCount: c.state.connectionCount
246
+ };
247
+ }
248
+ },
249
+ options: {
250
+ sleepTimeout: SLEEP_TIMEOUT
251
+ }
252
+ });
253
+ var sleepWithNoSleepOption = actor({
254
+ state: { startCount: 0, sleepCount: 0 },
255
+ onWake: (c) => {
256
+ c.state.startCount += 1;
257
+ },
258
+ onSleep: (c) => {
259
+ c.state.sleepCount += 1;
260
+ },
261
+ actions: {
262
+ getCounts: (c) => {
263
+ return {
264
+ startCount: c.state.startCount,
265
+ sleepCount: c.state.sleepCount
266
+ };
267
+ }
268
+ },
269
+ options: {
270
+ sleepTimeout: SLEEP_TIMEOUT,
271
+ noSleep: true
272
+ }
273
+ });
274
+
275
+ // fixtures/driver-test-suite/run.ts
276
+ var RUN_SLEEP_TIMEOUT = 1e3;
277
+ var runWithTicks = actor({
278
+ state: {
279
+ tickCount: 0,
280
+ lastTickAt: 0,
281
+ runStarted: false,
282
+ runExited: false
283
+ },
284
+ run: async (c) => {
285
+ c.state.runStarted = true;
286
+ c.log.info("run handler started");
287
+ while (!c.aborted) {
288
+ c.state.tickCount += 1;
289
+ c.state.lastTickAt = Date.now();
290
+ c.log.info({ msg: "tick", tickCount: c.state.tickCount });
291
+ await new Promise((resolve) => {
292
+ const timeout = setTimeout(resolve, 50);
293
+ c.abortSignal.addEventListener(
294
+ "abort",
295
+ () => {
296
+ clearTimeout(timeout);
297
+ resolve();
298
+ },
299
+ { once: true }
300
+ );
301
+ });
302
+ }
303
+ c.state.runExited = true;
304
+ c.log.info("run handler exiting gracefully");
305
+ },
306
+ actions: {
307
+ getState: (c) => ({
308
+ tickCount: c.state.tickCount,
309
+ lastTickAt: c.state.lastTickAt,
310
+ runStarted: c.state.runStarted,
311
+ runExited: c.state.runExited
312
+ })
313
+ },
314
+ options: {
315
+ sleepTimeout: RUN_SLEEP_TIMEOUT,
316
+ runStopTimeout: 1e3
317
+ }
318
+ });
319
+ var runWithQueueConsumer = actor({
320
+ state: {
321
+ messagesReceived: [],
322
+ runStarted: false,
323
+ wakeCount: 0
324
+ },
325
+ onWake: (c) => {
326
+ c.state.wakeCount += 1;
327
+ },
328
+ run: async (c) => {
329
+ c.state.runStarted = true;
330
+ c.log.info("run handler started, waiting for messages");
331
+ while (!c.aborted) {
332
+ const messages = await c.queue.next({ names: ["messages"] });
333
+ const message = messages[0];
334
+ if (message) {
335
+ c.log.info({ msg: "received message", body: message.body });
336
+ c.state.messagesReceived.push({
337
+ name: message.name,
338
+ body: message.body
339
+ });
340
+ }
341
+ }
342
+ c.log.info("run handler exiting gracefully");
343
+ },
344
+ actions: {
345
+ getState: (c) => ({
346
+ messagesReceived: c.state.messagesReceived,
347
+ runStarted: c.state.runStarted,
348
+ wakeCount: c.state.wakeCount
349
+ }),
350
+ sendMessage: async (c, body) => {
351
+ const client = c.client();
352
+ const handle = client.runWithQueueConsumer.getForId(c.actorId);
353
+ await handle.send("messages", body);
354
+ return true;
355
+ }
356
+ },
357
+ options: {
358
+ sleepTimeout: RUN_SLEEP_TIMEOUT,
359
+ runStopTimeout: 1e3
360
+ }
361
+ });
362
+ var runWithEarlyExit = actor({
363
+ state: {
364
+ runStarted: false,
365
+ destroyCalled: false
366
+ },
367
+ run: async (c) => {
368
+ c.state.runStarted = true;
369
+ c.log.info("run handler started, will exit after delay");
370
+ await new Promise((resolve) => setTimeout(resolve, 200));
371
+ c.log.info("run handler exiting early");
372
+ },
373
+ onDestroy: (c) => {
374
+ c.state.destroyCalled = true;
375
+ },
376
+ actions: {
377
+ getState: (c) => ({
378
+ runStarted: c.state.runStarted,
379
+ destroyCalled: c.state.destroyCalled
380
+ })
381
+ },
382
+ options: {
383
+ sleepTimeout: RUN_SLEEP_TIMEOUT
384
+ }
385
+ });
386
+ var runWithError = actor({
387
+ state: {
388
+ runStarted: false,
389
+ destroyCalled: false
390
+ },
391
+ run: async (c) => {
392
+ c.state.runStarted = true;
393
+ c.log.info("run handler started, will throw error");
394
+ await new Promise((resolve) => setTimeout(resolve, 200));
395
+ throw new Error("intentional error in run handler");
396
+ },
397
+ onDestroy: (c) => {
398
+ c.state.destroyCalled = true;
399
+ },
400
+ actions: {
401
+ getState: (c) => ({
402
+ runStarted: c.state.runStarted,
403
+ destroyCalled: c.state.destroyCalled
404
+ })
405
+ },
406
+ options: {
407
+ sleepTimeout: RUN_SLEEP_TIMEOUT
408
+ }
409
+ });
410
+ var runWithoutHandler = actor({
411
+ state: {
412
+ wakeCount: 0
413
+ },
414
+ onWake: (c) => {
415
+ c.state.wakeCount += 1;
416
+ },
417
+ actions: {
418
+ getState: (c) => ({
419
+ wakeCount: c.state.wakeCount
420
+ })
421
+ },
422
+ options: {
423
+ sleepTimeout: RUN_SLEEP_TIMEOUT
424
+ }
425
+ });
426
+
427
+ // fixtures/driver-test-suite/workflow.ts
428
+ import { Loop } from "@rivetkit/workflow-engine";
429
+ var WORKFLOW_QUEUE_NAME = "workflow-default";
430
+ var workflowCounterActor = actor({
431
+ state: {
432
+ runCount: 0,
433
+ guardTriggered: false,
434
+ history: []
435
+ },
436
+ run: workflow(async (ctx) => {
437
+ await ctx.loop({
438
+ name: "counter",
439
+ run: async (loopCtx) => {
440
+ const actorLoopCtx = loopCtx;
441
+ try {
442
+ actorLoopCtx.state;
443
+ } catch {
444
+ }
445
+ await loopCtx.step("increment", async () => {
446
+ actorLoopCtx.state.runCount += 1;
447
+ actorLoopCtx.state.history.push(actorLoopCtx.state.runCount);
448
+ });
449
+ await loopCtx.sleep("idle", 25);
450
+ return Loop.continue(void 0);
451
+ }
452
+ });
453
+ }),
454
+ actions: {
455
+ getState: async (c) => {
456
+ const guardFlag = await c.kv.get(WORKFLOW_GUARD_KV_KEY);
457
+ if (guardFlag === "true") {
458
+ c.state.guardTriggered = true;
459
+ }
460
+ return c.state;
461
+ }
462
+ },
463
+ options: {
464
+ sleepTimeout: 50
465
+ }
466
+ });
467
+ var workflowQueueActor = actor({
468
+ state: {
469
+ received: []
470
+ },
471
+ queues: {
472
+ [WORKFLOW_QUEUE_NAME]: queue()
473
+ },
474
+ run: workflow(async (ctx) => {
475
+ await ctx.loop({
476
+ name: "queue",
477
+ run: async (loopCtx) => {
478
+ const actorLoopCtx = loopCtx;
479
+ const [message] = await loopCtx.queue.next("queue-wait", {
480
+ names: [WORKFLOW_QUEUE_NAME],
481
+ completable: true
482
+ });
483
+ if (!message || !message.complete) {
484
+ return Loop.continue(void 0);
485
+ }
486
+ const complete = message.complete;
487
+ await loopCtx.step("store-message", async () => {
488
+ actorLoopCtx.state.received.push(message.body);
489
+ await complete({ echo: message.body });
490
+ });
491
+ return Loop.continue(void 0);
492
+ }
493
+ });
494
+ }),
495
+ actions: {
496
+ getMessages: (c) => c.state.received,
497
+ sendAndWait: async (c, payload) => {
498
+ const client = c.client();
499
+ const handle = client.workflowQueueActor.getForId(c.actorId);
500
+ return await handle.send(
501
+ WORKFLOW_QUEUE_NAME,
502
+ payload,
503
+ { wait: true, timeout: 1e3 }
504
+ );
505
+ }
506
+ }
507
+ });
508
+ var workflowAccessActor = actor({
509
+ db: db({
510
+ onMigrate: async (rawDb) => {
511
+ await rawDb.execute(`
512
+ CREATE TABLE IF NOT EXISTS workflow_access_log (
513
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
514
+ created_at INTEGER NOT NULL
515
+ )
516
+ `);
517
+ }
518
+ }),
519
+ state: {
520
+ outsideDbError: null,
521
+ outsideClientError: null,
522
+ insideDbCount: 0,
523
+ insideClientAvailable: false
524
+ },
525
+ run: workflow(async (ctx) => {
526
+ await ctx.loop({
527
+ name: "access",
528
+ run: async (loopCtx) => {
529
+ const actorLoopCtx = loopCtx;
530
+ let outsideDbError = null;
531
+ let outsideClientError = null;
532
+ try {
533
+ actorLoopCtx.db;
534
+ } catch (error) {
535
+ outsideDbError = error instanceof Error ? error.message : String(error);
536
+ }
537
+ try {
538
+ actorLoopCtx.client();
539
+ } catch (error) {
540
+ outsideClientError = error instanceof Error ? error.message : String(error);
541
+ }
542
+ await loopCtx.step("access-step", async () => {
543
+ var _a;
544
+ await loopCtx.db.execute(
545
+ `INSERT INTO workflow_access_log (created_at) VALUES (${Date.now()})`
546
+ );
547
+ const counts = await loopCtx.db.execute(
548
+ `SELECT COUNT(*) as count FROM workflow_access_log`
549
+ );
550
+ const client = loopCtx.client();
551
+ loopCtx.state.outsideDbError = outsideDbError;
552
+ loopCtx.state.outsideClientError = outsideClientError;
553
+ loopCtx.state.insideDbCount = ((_a = counts[0]) == null ? void 0 : _a.count) ?? 0;
554
+ loopCtx.state.insideClientAvailable = typeof client.workflowQueueActor.getForId === "function";
555
+ });
556
+ await loopCtx.sleep("idle", 25);
557
+ return Loop.continue(void 0);
558
+ }
559
+ });
560
+ }),
561
+ actions: {
562
+ getState: (c) => c.state
563
+ }
564
+ });
565
+ var workflowSleepActor = actor({
566
+ state: {
567
+ ticks: 0
568
+ },
569
+ run: workflow(async (ctx) => {
570
+ await ctx.loop({
571
+ name: "sleep",
572
+ run: async (loopCtx) => {
573
+ const actorLoopCtx = loopCtx;
574
+ await loopCtx.step("tick", async () => {
575
+ actorLoopCtx.state.ticks += 1;
576
+ });
577
+ await loopCtx.sleep("delay", 40);
578
+ return Loop.continue(void 0);
579
+ }
580
+ });
581
+ }),
582
+ actions: {
583
+ getState: (c) => c.state
584
+ },
585
+ options: {
586
+ sleepTimeout: 50
587
+ }
588
+ });
589
+ var workflowStopTeardownActor = actor({
590
+ state: {
591
+ wakeAts: [],
592
+ sleepAts: []
593
+ },
594
+ queues: {
595
+ never: queue()
596
+ },
597
+ onWake: (c) => {
598
+ c.state.wakeAts.push(Date.now());
599
+ },
600
+ onSleep: (c) => {
601
+ c.state.sleepAts.push(Date.now());
602
+ },
603
+ run: workflow(async (ctx) => {
604
+ await ctx.loop({
605
+ name: "wait-forever",
606
+ run: async (loopCtx) => {
607
+ await loopCtx.queue.next("wait-for-never", {
608
+ names: ["never"]
609
+ });
610
+ return Loop.continue(void 0);
611
+ }
612
+ });
613
+ }),
614
+ actions: {
615
+ getTimeline: (c) => ({
616
+ wakeAts: [...c.state.wakeAts],
617
+ sleepAts: [...c.state.sleepAts]
618
+ })
619
+ },
620
+ options: {
621
+ sleepTimeout: 75,
622
+ runStopTimeout: 2e3
623
+ }
624
+ });
625
+
626
+ export {
627
+ logger,
628
+ HIBERNATION_SLEEP_TIMEOUT,
629
+ hibernationActor,
630
+ SLEEP_TIMEOUT,
631
+ sleep,
632
+ sleepWithLongRpc,
633
+ sleepWithRawHttp,
634
+ sleepWithRawWebSocket,
635
+ sleepWithNoSleepOption,
636
+ RUN_SLEEP_TIMEOUT,
637
+ runWithTicks,
638
+ runWithQueueConsumer,
639
+ runWithEarlyExit,
640
+ runWithError,
641
+ runWithoutHandler,
642
+ WORKFLOW_QUEUE_NAME,
643
+ workflowCounterActor,
644
+ workflowQueueActor,
645
+ workflowAccessActor,
646
+ workflowSleepActor,
647
+ workflowStopTeardownActor
648
+ };
649
+ //# sourceMappingURL=chunk-OMEPCQK2.js.map