@restatedev/restate-sdk 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (615) hide show
  1. package/README.md +3 -3
  2. package/dist/cjs/package.json +1 -0
  3. package/dist/cjs/src/common_api.d.ts +9 -0
  4. package/dist/cjs/src/common_api.d.ts.map +1 -0
  5. package/dist/{src/public_api.js → cjs/src/common_api.js} +13 -15
  6. package/dist/cjs/src/common_api.js.map +1 -0
  7. package/dist/{src/connection/http_connection.d.ts → cjs/src/connection/connection.d.ts} +32 -25
  8. package/dist/cjs/src/connection/connection.d.ts.map +1 -0
  9. package/dist/cjs/src/connection/connection.js +181 -0
  10. package/dist/cjs/src/connection/connection.js.map +1 -0
  11. package/dist/{src → cjs/src}/context.d.ts +14 -10
  12. package/dist/cjs/src/context.d.ts.map +1 -0
  13. package/dist/{src → cjs/src}/context.js +5 -5
  14. package/dist/cjs/src/context.js.map +1 -0
  15. package/dist/{src → cjs/src}/context_impl.d.ts +7 -18
  16. package/dist/cjs/src/context_impl.d.ts.map +1 -0
  17. package/dist/{src → cjs/src}/context_impl.js +90 -123
  18. package/dist/cjs/src/context_impl.js.map +1 -0
  19. package/dist/cjs/src/endpoint/endpoint_builder.d.ts +28 -0
  20. package/dist/cjs/src/endpoint/endpoint_builder.d.ts.map +1 -0
  21. package/dist/{src/endpoint/endpoint_impl.js → cjs/src/endpoint/endpoint_builder.js} +30 -77
  22. package/dist/cjs/src/endpoint/endpoint_builder.js.map +1 -0
  23. package/dist/cjs/src/endpoint/fetch_endpoint.d.ts +54 -0
  24. package/dist/cjs/src/endpoint/fetch_endpoint.d.ts.map +1 -0
  25. package/dist/cjs/src/endpoint/fetch_endpoint.js +61 -0
  26. package/dist/cjs/src/endpoint/fetch_endpoint.js.map +1 -0
  27. package/dist/cjs/src/endpoint/handlers/fetch.d.ts +6 -0
  28. package/dist/cjs/src/endpoint/handlers/fetch.d.ts.map +1 -0
  29. package/dist/cjs/src/endpoint/handlers/fetch.js +33 -0
  30. package/dist/cjs/src/endpoint/handlers/fetch.js.map +1 -0
  31. package/dist/cjs/src/endpoint/handlers/generic.d.ts +47 -0
  32. package/dist/cjs/src/endpoint/handlers/generic.d.ts.map +1 -0
  33. package/dist/cjs/src/endpoint/handlers/generic.js +215 -0
  34. package/dist/cjs/src/endpoint/handlers/generic.js.map +1 -0
  35. package/dist/cjs/src/endpoint/handlers/lambda.d.ts +8 -0
  36. package/dist/cjs/src/endpoint/handlers/lambda.d.ts.map +1 -0
  37. package/dist/cjs/src/endpoint/handlers/lambda.js +83 -0
  38. package/dist/cjs/src/endpoint/handlers/lambda.js.map +1 -0
  39. package/dist/cjs/src/endpoint/lambda_endpoint.d.ts +34 -0
  40. package/dist/cjs/src/endpoint/lambda_endpoint.d.ts.map +1 -0
  41. package/dist/cjs/src/endpoint/lambda_endpoint.js +53 -0
  42. package/dist/cjs/src/endpoint/lambda_endpoint.js.map +1 -0
  43. package/dist/cjs/src/endpoint/node_endpoint.d.ts +21 -0
  44. package/dist/cjs/src/endpoint/node_endpoint.d.ts.map +1 -0
  45. package/dist/cjs/src/endpoint/node_endpoint.js +127 -0
  46. package/dist/cjs/src/endpoint/node_endpoint.js.map +1 -0
  47. package/dist/cjs/src/endpoint/request_signing/basex.d.ts.map +1 -0
  48. package/dist/cjs/src/endpoint/request_signing/basex.js.map +1 -0
  49. package/dist/{src → cjs/src}/endpoint/request_signing/ed25519.d.ts +1 -1
  50. package/dist/cjs/src/endpoint/request_signing/ed25519.d.ts.map +1 -0
  51. package/dist/{src → cjs/src}/endpoint/request_signing/ed25519.js +3 -1
  52. package/dist/cjs/src/endpoint/request_signing/ed25519.js.map +1 -0
  53. package/dist/{src → cjs/src}/endpoint/request_signing/v1.d.ts +2 -2
  54. package/dist/cjs/src/endpoint/request_signing/v1.d.ts.map +1 -0
  55. package/dist/{src → cjs/src}/endpoint/request_signing/v1.js +9 -16
  56. package/dist/cjs/src/endpoint/request_signing/v1.js.map +1 -0
  57. package/dist/{src → cjs/src}/endpoint/request_signing/validate.d.ts +1 -1
  58. package/dist/cjs/src/endpoint/request_signing/validate.d.ts.map +1 -0
  59. package/dist/{src → cjs/src}/endpoint/request_signing/validate.js +3 -3
  60. package/dist/cjs/src/endpoint/request_signing/validate.js.map +1 -0
  61. package/dist/{src → cjs/src}/endpoint.d.ts +51 -29
  62. package/dist/cjs/src/endpoint.d.ts.map +1 -0
  63. package/dist/{src/connection/connection.js → cjs/src/endpoint.js} +1 -1
  64. package/dist/cjs/src/endpoint.js.map +1 -0
  65. package/dist/cjs/src/fetch.d.ts +8 -0
  66. package/dist/cjs/src/fetch.d.ts.map +1 -0
  67. package/dist/cjs/src/fetch.js +39 -0
  68. package/dist/cjs/src/fetch.js.map +1 -0
  69. package/dist/cjs/src/generated/proto/discovery_pb.d.ts.map +1 -0
  70. package/dist/{src → cjs/src}/generated/proto/discovery_pb.js +1 -1
  71. package/dist/cjs/src/generated/proto/discovery_pb.js.map +1 -0
  72. package/dist/cjs/src/generated/proto/javascript_pb.d.ts.map +1 -0
  73. package/dist/cjs/src/generated/proto/javascript_pb.js.map +1 -0
  74. package/dist/cjs/src/generated/proto/protocol_pb.d.ts.map +1 -0
  75. package/dist/{src → cjs/src}/generated/proto/protocol_pb.js +1 -1
  76. package/dist/cjs/src/generated/proto/protocol_pb.js.map +1 -0
  77. package/dist/cjs/src/generated/version.d.ts +2 -0
  78. package/dist/cjs/src/generated/version.d.ts.map +1 -0
  79. package/dist/{src → cjs/src}/generated/version.js +1 -1
  80. package/dist/cjs/src/generated/version.js.map +1 -0
  81. package/dist/{src → cjs/src}/invocation.d.ts +5 -5
  82. package/dist/cjs/src/invocation.d.ts.map +1 -0
  83. package/dist/{src → cjs/src}/invocation.js +14 -14
  84. package/dist/cjs/src/invocation.js.map +1 -0
  85. package/dist/{src → cjs/src}/io/decoder.d.ts +3 -3
  86. package/dist/cjs/src/io/decoder.d.ts.map +1 -0
  87. package/dist/{src → cjs/src}/io/decoder.js +25 -24
  88. package/dist/cjs/src/io/decoder.js.map +1 -0
  89. package/dist/cjs/src/io/encoder.d.ts +4 -0
  90. package/dist/cjs/src/io/encoder.d.ts.map +1 -0
  91. package/dist/{src → cjs/src}/io/encoder.js +7 -23
  92. package/dist/cjs/src/io/encoder.js.map +1 -0
  93. package/dist/{src → cjs/src}/journal.d.ts +7 -7
  94. package/dist/cjs/src/journal.d.ts.map +1 -0
  95. package/dist/{src → cjs/src}/journal.js +38 -38
  96. package/dist/cjs/src/journal.js.map +1 -0
  97. package/dist/cjs/src/lambda.d.ts +7 -0
  98. package/dist/cjs/src/lambda.d.ts.map +1 -0
  99. package/dist/cjs/src/lambda.js +37 -0
  100. package/dist/cjs/src/lambda.js.map +1 -0
  101. package/dist/{src → cjs/src}/local_state_store.d.ts +2 -1
  102. package/dist/cjs/src/local_state_store.d.ts.map +1 -0
  103. package/dist/{src → cjs/src}/local_state_store.js +10 -10
  104. package/dist/cjs/src/local_state_store.js.map +1 -0
  105. package/dist/cjs/src/logger.d.ts +35 -0
  106. package/dist/cjs/src/logger.d.ts.map +1 -0
  107. package/dist/cjs/src/logger.js +151 -0
  108. package/dist/cjs/src/logger.js.map +1 -0
  109. package/dist/{src → cjs/src}/promise_combinator_tracker.d.ts +1 -1
  110. package/dist/cjs/src/promise_combinator_tracker.d.ts.map +1 -0
  111. package/dist/{src → cjs/src}/promise_combinator_tracker.js +7 -5
  112. package/dist/cjs/src/promise_combinator_tracker.js.map +1 -0
  113. package/dist/cjs/src/public_api.d.ts +7 -0
  114. package/dist/cjs/src/public_api.d.ts.map +1 -0
  115. package/dist/cjs/src/public_api.js +37 -0
  116. package/dist/cjs/src/public_api.js.map +1 -0
  117. package/dist/{src → cjs/src}/state_machine.d.ts +13 -15
  118. package/dist/cjs/src/state_machine.d.ts.map +1 -0
  119. package/dist/{src → cjs/src}/state_machine.js +55 -63
  120. package/dist/cjs/src/state_machine.js.map +1 -0
  121. package/dist/{src → cjs/src}/types/components.d.ts +4 -3
  122. package/dist/cjs/src/types/components.d.ts.map +1 -0
  123. package/dist/{src → cjs/src}/types/components.js +4 -4
  124. package/dist/cjs/src/types/components.js.map +1 -0
  125. package/dist/cjs/src/types/discovery.d.ts.map +1 -0
  126. package/dist/{src → cjs/src}/types/discovery.js +3 -3
  127. package/dist/cjs/src/types/discovery.js.map +1 -0
  128. package/dist/{src → cjs/src}/types/errors.d.ts +2 -2
  129. package/dist/cjs/src/types/errors.d.ts.map +1 -0
  130. package/dist/{src → cjs/src}/types/errors.js +8 -8
  131. package/dist/cjs/src/types/errors.js.map +1 -0
  132. package/dist/{src → cjs/src}/types/protocol.d.ts +6 -8
  133. package/dist/cjs/src/types/protocol.d.ts.map +1 -0
  134. package/dist/{src → cjs/src}/types/protocol.js +61 -61
  135. package/dist/cjs/src/types/protocol.js.map +1 -0
  136. package/dist/{src → cjs/src}/types/rpc.d.ts +13 -13
  137. package/dist/cjs/src/types/rpc.d.ts.map +1 -0
  138. package/dist/{src → cjs/src}/types/rpc.js +8 -7
  139. package/dist/cjs/src/types/rpc.js.map +1 -0
  140. package/dist/{src → cjs/src}/types/types.d.ts +1 -1
  141. package/dist/cjs/src/types/types.d.ts.map +1 -0
  142. package/dist/{src → cjs/src}/types/types.js +14 -14
  143. package/dist/cjs/src/types/types.js.map +1 -0
  144. package/dist/cjs/src/user_agent.d.ts +2 -0
  145. package/dist/cjs/src/user_agent.d.ts.map +1 -0
  146. package/dist/{src → cjs/src}/user_agent.js +2 -2
  147. package/dist/cjs/src/user_agent.js.map +1 -0
  148. package/dist/cjs/src/utils/buffer.d.ts +5 -0
  149. package/dist/cjs/src/utils/buffer.d.ts.map +1 -0
  150. package/dist/cjs/src/utils/buffer.js +59 -0
  151. package/dist/cjs/src/utils/buffer.js.map +1 -0
  152. package/dist/cjs/src/utils/message_logger.d.ts +7 -0
  153. package/dist/cjs/src/utils/message_logger.d.ts.map +1 -0
  154. package/dist/{src → cjs/src}/utils/message_logger.js +8 -8
  155. package/dist/cjs/src/utils/message_logger.js.map +1 -0
  156. package/dist/cjs/src/utils/promises.d.ts.map +1 -0
  157. package/dist/{src → cjs/src}/utils/promises.js +2 -1
  158. package/dist/cjs/src/utils/promises.js.map +1 -0
  159. package/dist/{src → cjs/src}/utils/rand.d.ts +3 -3
  160. package/dist/cjs/src/utils/rand.d.ts.map +1 -0
  161. package/dist/{src → cjs/src}/utils/rand.js +10 -15
  162. package/dist/cjs/src/utils/rand.js.map +1 -0
  163. package/dist/cjs/src/utils/serde.d.ts +5 -0
  164. package/dist/cjs/src/utils/serde.d.ts.map +1 -0
  165. package/dist/{src → cjs/src}/utils/serde.js +6 -4
  166. package/dist/cjs/src/utils/serde.js.map +1 -0
  167. package/dist/cjs/src/utils/streams.d.ts +4 -0
  168. package/dist/cjs/src/utils/streams.d.ts.map +1 -0
  169. package/dist/cjs/src/utils/streams.js +24 -0
  170. package/dist/cjs/src/utils/streams.js.map +1 -0
  171. package/dist/cjs/src/utils/utils.d.ts.map +1 -0
  172. package/dist/{src → cjs/src}/utils/utils.js +11 -11
  173. package/dist/cjs/src/utils/utils.js.map +1 -0
  174. package/dist/cjs/test/awakeable.test.d.ts +2 -0
  175. package/dist/cjs/test/awakeable.test.d.ts.map +1 -0
  176. package/dist/cjs/test/awakeable.test.js +141 -0
  177. package/dist/cjs/test/awakeable.test.js.map +1 -0
  178. package/dist/cjs/test/complete_awakeable.test.d.ts +2 -0
  179. package/dist/cjs/test/complete_awakeable.test.d.ts.map +1 -0
  180. package/dist/cjs/test/complete_awakeable.test.js +123 -0
  181. package/dist/cjs/test/complete_awakeable.test.js.map +1 -0
  182. package/dist/cjs/test/eager_state.test.d.ts +2 -0
  183. package/dist/cjs/test/eager_state.test.d.ts.map +1 -0
  184. package/dist/cjs/test/eager_state.test.js +280 -0
  185. package/dist/cjs/test/eager_state.test.js.map +1 -0
  186. package/dist/cjs/test/get_and_set_state.test.d.ts +2 -0
  187. package/dist/cjs/test/get_and_set_state.test.d.ts.map +1 -0
  188. package/dist/cjs/test/get_and_set_state.test.js +233 -0
  189. package/dist/cjs/test/get_and_set_state.test.js.map +1 -0
  190. package/dist/cjs/test/get_state.test.d.ts +2 -0
  191. package/dist/cjs/test/get_state.test.d.ts.map +1 -0
  192. package/dist/cjs/test/get_state.test.js +333 -0
  193. package/dist/cjs/test/get_state.test.js.map +1 -0
  194. package/dist/cjs/test/lambda.test.d.ts +2 -0
  195. package/dist/cjs/test/lambda.test.d.ts.map +1 -0
  196. package/dist/cjs/test/lambda.test.js +246 -0
  197. package/dist/cjs/test/lambda.test.js.map +1 -0
  198. package/dist/cjs/test/message_coders.test.d.ts +2 -0
  199. package/dist/cjs/test/message_coders.test.d.ts.map +1 -0
  200. package/dist/cjs/test/message_coders.test.js +37 -0
  201. package/dist/cjs/test/message_coders.test.js.map +1 -0
  202. package/dist/cjs/test/promise_combinator_tracker.test.d.ts +2 -0
  203. package/dist/cjs/test/promise_combinator_tracker.test.d.ts.map +1 -0
  204. package/dist/cjs/test/promise_combinator_tracker.test.js +156 -0
  205. package/dist/cjs/test/promise_combinator_tracker.test.js.map +1 -0
  206. package/dist/cjs/test/promise_combinators.test.d.ts +2 -0
  207. package/dist/cjs/test/promise_combinators.test.d.ts.map +1 -0
  208. package/dist/cjs/test/promise_combinators.test.js +433 -0
  209. package/dist/cjs/test/promise_combinators.test.js.map +1 -0
  210. package/dist/cjs/test/promises.test.d.ts +2 -0
  211. package/dist/cjs/test/promises.test.d.ts.map +1 -0
  212. package/dist/cjs/test/promises.test.js +32 -0
  213. package/dist/cjs/test/promises.test.js.map +1 -0
  214. package/dist/cjs/test/protocol_stream.test.d.ts +2 -0
  215. package/dist/cjs/test/protocol_stream.test.d.ts.map +1 -0
  216. package/dist/cjs/test/protocol_stream.test.js +243 -0
  217. package/dist/cjs/test/protocol_stream.test.js.map +1 -0
  218. package/dist/cjs/test/protoutils.d.ts +44 -0
  219. package/dist/cjs/test/protoutils.d.ts.map +1 -0
  220. package/dist/cjs/test/protoutils.js +359 -0
  221. package/dist/cjs/test/protoutils.js.map +1 -0
  222. package/dist/cjs/test/service_bind.test.d.ts +2 -0
  223. package/dist/cjs/test/service_bind.test.d.ts.map +1 -0
  224. package/dist/cjs/test/service_bind.test.js +50 -0
  225. package/dist/cjs/test/service_bind.test.js.map +1 -0
  226. package/dist/cjs/test/side_effect.test.d.ts +2 -0
  227. package/dist/cjs/test/side_effect.test.d.ts.map +1 -0
  228. package/dist/cjs/test/side_effect.test.js +133 -0
  229. package/dist/cjs/test/side_effect.test.js.map +1 -0
  230. package/dist/cjs/test/sleep.test.d.ts +2 -0
  231. package/dist/cjs/test/sleep.test.d.ts.map +1 -0
  232. package/dist/cjs/test/sleep.test.js +224 -0
  233. package/dist/cjs/test/sleep.test.js.map +1 -0
  234. package/dist/cjs/test/state_keys.test.d.ts +2 -0
  235. package/dist/cjs/test/state_keys.test.d.ts.map +1 -0
  236. package/dist/cjs/test/state_keys.test.js +92 -0
  237. package/dist/cjs/test/state_keys.test.js.map +1 -0
  238. package/dist/cjs/test/state_machine.test.d.ts +2 -0
  239. package/dist/cjs/test/state_machine.test.d.ts.map +1 -0
  240. package/dist/cjs/test/state_machine.test.js +42 -0
  241. package/dist/cjs/test/state_machine.test.js.map +1 -0
  242. package/dist/cjs/test/testdriver.d.ts +31 -0
  243. package/dist/cjs/test/testdriver.d.ts.map +1 -0
  244. package/dist/cjs/test/testdriver.js +137 -0
  245. package/dist/cjs/test/testdriver.js.map +1 -0
  246. package/dist/cjs/test/utils.test.d.ts +2 -0
  247. package/dist/cjs/test/utils.test.d.ts.map +1 -0
  248. package/dist/cjs/test/utils.test.js +104 -0
  249. package/dist/cjs/test/utils.test.js.map +1 -0
  250. package/dist/cjs/tsconfig.tsbuildinfo +1 -0
  251. package/dist/esm/src/common_api.d.ts +9 -0
  252. package/dist/esm/src/common_api.d.ts.map +1 -0
  253. package/dist/esm/src/common_api.js +14 -0
  254. package/dist/esm/src/common_api.js.map +1 -0
  255. package/dist/esm/src/connection/connection.d.ts +84 -0
  256. package/dist/esm/src/connection/connection.d.ts.map +1 -0
  257. package/dist/esm/src/connection/connection.js +177 -0
  258. package/dist/esm/src/connection/connection.js.map +1 -0
  259. package/dist/esm/src/context.d.ts +545 -0
  260. package/dist/esm/src/context.d.ts.map +1 -0
  261. package/dist/esm/src/context.js +75 -0
  262. package/dist/esm/src/context.js.map +1 -0
  263. package/dist/esm/src/context_impl.d.ts +54 -0
  264. package/dist/esm/src/context_impl.d.ts.map +1 -0
  265. package/dist/esm/src/context_impl.js +510 -0
  266. package/dist/esm/src/context_impl.js.map +1 -0
  267. package/dist/esm/src/endpoint/endpoint_builder.d.ts +28 -0
  268. package/dist/esm/src/endpoint/endpoint_builder.d.ts.map +1 -0
  269. package/dist/esm/src/endpoint/endpoint_builder.js +139 -0
  270. package/dist/esm/src/endpoint/endpoint_builder.js.map +1 -0
  271. package/dist/esm/src/endpoint/fetch_endpoint.d.ts +54 -0
  272. package/dist/esm/src/endpoint/fetch_endpoint.d.ts.map +1 -0
  273. package/dist/esm/src/endpoint/fetch_endpoint.js +57 -0
  274. package/dist/esm/src/endpoint/fetch_endpoint.js.map +1 -0
  275. package/dist/esm/src/endpoint/handlers/fetch.d.ts +6 -0
  276. package/dist/esm/src/endpoint/handlers/fetch.d.ts.map +1 -0
  277. package/dist/esm/src/endpoint/handlers/fetch.js +29 -0
  278. package/dist/esm/src/endpoint/handlers/fetch.js.map +1 -0
  279. package/dist/esm/src/endpoint/handlers/generic.d.ts +47 -0
  280. package/dist/esm/src/endpoint/handlers/generic.d.ts.map +1 -0
  281. package/dist/esm/src/endpoint/handlers/generic.js +211 -0
  282. package/dist/esm/src/endpoint/handlers/generic.js.map +1 -0
  283. package/dist/esm/src/endpoint/handlers/lambda.d.ts +8 -0
  284. package/dist/esm/src/endpoint/handlers/lambda.d.ts.map +1 -0
  285. package/dist/esm/src/endpoint/handlers/lambda.js +79 -0
  286. package/dist/esm/src/endpoint/handlers/lambda.js.map +1 -0
  287. package/dist/esm/src/endpoint/lambda_endpoint.d.ts +34 -0
  288. package/dist/esm/src/endpoint/lambda_endpoint.d.ts.map +1 -0
  289. package/dist/esm/src/endpoint/lambda_endpoint.js +49 -0
  290. package/dist/esm/src/endpoint/lambda_endpoint.js.map +1 -0
  291. package/dist/esm/src/endpoint/node_endpoint.d.ts +21 -0
  292. package/dist/esm/src/endpoint/node_endpoint.d.ts.map +1 -0
  293. package/dist/esm/src/endpoint/node_endpoint.js +100 -0
  294. package/dist/esm/src/endpoint/node_endpoint.js.map +1 -0
  295. package/dist/esm/src/endpoint/request_signing/basex.d.ts +10 -0
  296. package/dist/esm/src/endpoint/request_signing/basex.d.ts.map +1 -0
  297. package/dist/esm/src/endpoint/request_signing/basex.js +136 -0
  298. package/dist/esm/src/endpoint/request_signing/basex.js.map +1 -0
  299. package/dist/esm/src/endpoint/request_signing/ed25519.d.ts +17 -0
  300. package/dist/esm/src/endpoint/request_signing/ed25519.d.ts.map +1 -0
  301. package/dist/esm/src/endpoint/request_signing/ed25519.js +52 -0
  302. package/dist/esm/src/endpoint/request_signing/ed25519.js.map +1 -0
  303. package/dist/esm/src/endpoint/request_signing/v1.d.ts +9 -0
  304. package/dist/esm/src/endpoint/request_signing/v1.d.ts.map +1 -0
  305. package/dist/esm/src/endpoint/request_signing/v1.js +133 -0
  306. package/dist/esm/src/endpoint/request_signing/v1.js.map +1 -0
  307. package/dist/esm/src/endpoint/request_signing/validate.d.ts +18 -0
  308. package/dist/esm/src/endpoint/request_signing/validate.d.ts.map +1 -0
  309. package/dist/esm/src/endpoint/request_signing/validate.js +40 -0
  310. package/dist/esm/src/endpoint/request_signing/validate.js.map +1 -0
  311. package/dist/esm/src/endpoint.d.ts +126 -0
  312. package/dist/esm/src/endpoint.d.ts.map +1 -0
  313. package/dist/esm/src/endpoint.js +12 -0
  314. package/dist/esm/src/endpoint.js.map +1 -0
  315. package/dist/esm/src/fetch.d.ts +8 -0
  316. package/dist/esm/src/fetch.d.ts.map +1 -0
  317. package/dist/esm/src/fetch.js +21 -0
  318. package/dist/esm/src/fetch.js.map +1 -0
  319. package/dist/esm/src/generated/proto/discovery_pb.d.ts +18 -0
  320. package/dist/esm/src/generated/proto/discovery_pb.d.ts.map +1 -0
  321. package/dist/esm/src/generated/proto/discovery_pb.js +37 -0
  322. package/dist/esm/src/generated/proto/discovery_pb.js.map +1 -0
  323. package/dist/esm/src/generated/proto/javascript_pb.d.ts +26 -0
  324. package/dist/esm/src/generated/proto/javascript_pb.d.ts.map +1 -0
  325. package/dist/esm/src/generated/proto/javascript_pb.js +48 -0
  326. package/dist/esm/src/generated/proto/javascript_pb.js.map +1 -0
  327. package/dist/esm/src/generated/proto/protocol_pb.d.ts +1051 -0
  328. package/dist/esm/src/generated/proto/protocol_pb.d.ts.map +1 -0
  329. package/dist/esm/src/generated/proto/protocol_pb.js +1258 -0
  330. package/dist/esm/src/generated/proto/protocol_pb.js.map +1 -0
  331. package/dist/esm/src/generated/version.d.ts +2 -0
  332. package/dist/esm/src/generated/version.d.ts.map +1 -0
  333. package/dist/esm/src/generated/version.js +2 -0
  334. package/dist/esm/src/generated/version.js.map +1 -0
  335. package/dist/esm/src/invocation.d.ts +48 -0
  336. package/dist/esm/src/invocation.d.ts.map +1 -0
  337. package/dist/esm/src/invocation.js +153 -0
  338. package/dist/esm/src/invocation.js.map +1 -0
  339. package/dist/esm/src/io/decoder.d.ts +9 -0
  340. package/dist/esm/src/io/decoder.d.ts.map +1 -0
  341. package/dist/esm/src/io/decoder.js +128 -0
  342. package/dist/esm/src/io/decoder.js.map +1 -0
  343. package/dist/esm/src/io/encoder.d.ts +4 -0
  344. package/dist/esm/src/io/encoder.d.ts.map +1 -0
  345. package/dist/esm/src/io/encoder.js +36 -0
  346. package/dist/esm/src/io/encoder.js.map +1 -0
  347. package/dist/esm/src/journal.d.ts +52 -0
  348. package/dist/esm/src/journal.d.ts.map +1 -0
  349. package/dist/esm/src/journal.js +412 -0
  350. package/dist/esm/src/journal.js.map +1 -0
  351. package/dist/esm/src/lambda.d.ts +7 -0
  352. package/dist/esm/src/lambda.d.ts.map +1 -0
  353. package/dist/{src/endpoint.js → esm/src/lambda.js} +5 -8
  354. package/dist/esm/src/lambda.js.map +1 -0
  355. package/dist/esm/src/local_state_store.d.ts +16 -0
  356. package/dist/esm/src/local_state_store.d.ts.map +1 -0
  357. package/dist/esm/src/local_state_store.js +80 -0
  358. package/dist/esm/src/local_state_store.js.map +1 -0
  359. package/dist/esm/src/logger.d.ts +35 -0
  360. package/dist/esm/src/logger.d.ts.map +1 -0
  361. package/dist/esm/src/logger.js +144 -0
  362. package/dist/esm/src/logger.js.map +1 -0
  363. package/dist/esm/src/promise_combinator_tracker.d.ts +29 -0
  364. package/dist/esm/src/promise_combinator_tracker.d.ts.map +1 -0
  365. package/dist/esm/src/promise_combinator_tracker.js +125 -0
  366. package/dist/esm/src/promise_combinator_tracker.js.map +1 -0
  367. package/dist/esm/src/public_api.d.ts +7 -0
  368. package/dist/esm/src/public_api.d.ts.map +1 -0
  369. package/dist/esm/src/public_api.js +19 -0
  370. package/dist/esm/src/public_api.js.map +1 -0
  371. package/dist/esm/src/state_machine.d.ts +84 -0
  372. package/dist/esm/src/state_machine.d.ts.map +1 -0
  373. package/dist/esm/src/state_machine.js +399 -0
  374. package/dist/esm/src/state_machine.js.map +1 -0
  375. package/dist/esm/src/types/components.d.ts +78 -0
  376. package/dist/esm/src/types/components.d.ts.map +1 -0
  377. package/dist/esm/src/types/components.js +227 -0
  378. package/dist/esm/src/types/components.js.map +1 -0
  379. package/dist/esm/src/types/discovery.d.ts +43 -0
  380. package/dist/esm/src/types/discovery.d.ts.map +1 -0
  381. package/dist/esm/src/types/discovery.js +28 -0
  382. package/dist/esm/src/types/discovery.js.map +1 -0
  383. package/dist/esm/src/types/errors.d.ts +53 -0
  384. package/dist/esm/src/types/errors.d.ts.map +1 -0
  385. package/dist/esm/src/types/errors.js +117 -0
  386. package/dist/esm/src/types/errors.js.map +1 -0
  387. package/dist/esm/src/types/protocol.d.ts +40 -0
  388. package/dist/esm/src/types/protocol.d.ts.map +1 -0
  389. package/dist/esm/src/types/protocol.js +206 -0
  390. package/dist/esm/src/types/protocol.js.map +1 -0
  391. package/dist/esm/src/types/rpc.d.ts +300 -0
  392. package/dist/esm/src/types/rpc.d.ts.map +1 -0
  393. package/dist/esm/src/types/rpc.js +412 -0
  394. package/dist/esm/src/types/rpc.js.map +1 -0
  395. package/dist/esm/src/types/types.d.ts +20 -0
  396. package/dist/esm/src/types/types.d.ts.map +1 -0
  397. package/dist/esm/src/types/types.js +105 -0
  398. package/dist/esm/src/types/types.js.map +1 -0
  399. package/dist/esm/src/user_agent.d.ts +2 -0
  400. package/dist/esm/src/user_agent.d.ts.map +1 -0
  401. package/dist/esm/src/user_agent.js +13 -0
  402. package/dist/esm/src/user_agent.js.map +1 -0
  403. package/dist/esm/src/utils/buffer.d.ts +5 -0
  404. package/dist/esm/src/utils/buffer.d.ts.map +1 -0
  405. package/dist/esm/src/utils/buffer.js +53 -0
  406. package/dist/esm/src/utils/buffer.js.map +1 -0
  407. package/dist/esm/src/utils/message_logger.d.ts +7 -0
  408. package/dist/esm/src/utils/message_logger.d.ts.map +1 -0
  409. package/dist/esm/src/utils/message_logger.js +75 -0
  410. package/dist/esm/src/utils/message_logger.js.map +1 -0
  411. package/dist/esm/src/utils/promises.d.ts +15 -0
  412. package/dist/esm/src/utils/promises.d.ts.map +1 -0
  413. package/dist/esm/src/utils/promises.js +63 -0
  414. package/dist/esm/src/utils/promises.js.map +1 -0
  415. package/dist/esm/src/utils/rand.d.ts +15 -0
  416. package/dist/esm/src/utils/rand.d.ts.map +1 -0
  417. package/dist/esm/src/utils/rand.js +106 -0
  418. package/dist/esm/src/utils/rand.js.map +1 -0
  419. package/dist/esm/src/utils/serde.d.ts +5 -0
  420. package/dist/esm/src/utils/serde.d.ts.map +1 -0
  421. package/dist/esm/src/utils/serde.js +43 -0
  422. package/dist/esm/src/utils/serde.js.map +1 -0
  423. package/dist/esm/src/utils/streams.d.ts +4 -0
  424. package/dist/esm/src/utils/streams.d.ts.map +1 -0
  425. package/dist/esm/src/utils/streams.js +20 -0
  426. package/dist/esm/src/utils/streams.js.map +1 -0
  427. package/dist/esm/src/utils/utils.d.ts +5 -0
  428. package/dist/esm/src/utils/utils.d.ts.map +1 -0
  429. package/dist/esm/src/utils/utils.js +109 -0
  430. package/dist/esm/src/utils/utils.js.map +1 -0
  431. package/dist/esm/test/awakeable.test.d.ts +2 -0
  432. package/dist/esm/test/awakeable.test.d.ts.map +1 -0
  433. package/dist/esm/test/awakeable.test.js +139 -0
  434. package/dist/esm/test/awakeable.test.js.map +1 -0
  435. package/dist/esm/test/complete_awakeable.test.d.ts +2 -0
  436. package/dist/esm/test/complete_awakeable.test.d.ts.map +1 -0
  437. package/dist/esm/test/complete_awakeable.test.js +121 -0
  438. package/dist/esm/test/complete_awakeable.test.js.map +1 -0
  439. package/dist/esm/test/eager_state.test.d.ts +2 -0
  440. package/dist/esm/test/eager_state.test.d.ts.map +1 -0
  441. package/dist/esm/test/eager_state.test.js +278 -0
  442. package/dist/esm/test/eager_state.test.js.map +1 -0
  443. package/dist/esm/test/get_and_set_state.test.d.ts +2 -0
  444. package/dist/esm/test/get_and_set_state.test.d.ts.map +1 -0
  445. package/dist/esm/test/get_and_set_state.test.js +231 -0
  446. package/dist/esm/test/get_and_set_state.test.js.map +1 -0
  447. package/dist/esm/test/get_state.test.d.ts +2 -0
  448. package/dist/esm/test/get_state.test.d.ts.map +1 -0
  449. package/dist/esm/test/get_state.test.js +331 -0
  450. package/dist/esm/test/get_state.test.js.map +1 -0
  451. package/dist/esm/test/lambda.test.d.ts +2 -0
  452. package/dist/esm/test/lambda.test.d.ts.map +1 -0
  453. package/dist/esm/test/lambda.test.js +221 -0
  454. package/dist/esm/test/lambda.test.js.map +1 -0
  455. package/dist/esm/test/message_coders.test.d.ts +2 -0
  456. package/dist/esm/test/message_coders.test.d.ts.map +1 -0
  457. package/dist/esm/test/message_coders.test.js +35 -0
  458. package/dist/esm/test/message_coders.test.js.map +1 -0
  459. package/dist/esm/test/promise_combinator_tracker.test.d.ts +2 -0
  460. package/dist/esm/test/promise_combinator_tracker.test.d.ts.map +1 -0
  461. package/dist/esm/test/promise_combinator_tracker.test.js +154 -0
  462. package/dist/esm/test/promise_combinator_tracker.test.js.map +1 -0
  463. package/dist/esm/test/promise_combinators.test.d.ts +2 -0
  464. package/dist/esm/test/promise_combinators.test.d.ts.map +1 -0
  465. package/dist/esm/test/promise_combinators.test.js +431 -0
  466. package/dist/esm/test/promise_combinators.test.js.map +1 -0
  467. package/dist/esm/test/promises.test.d.ts +2 -0
  468. package/dist/esm/test/promises.test.d.ts.map +1 -0
  469. package/dist/esm/test/promises.test.js +30 -0
  470. package/dist/esm/test/promises.test.js.map +1 -0
  471. package/dist/esm/test/protocol_stream.test.d.ts +2 -0
  472. package/dist/esm/test/protocol_stream.test.d.ts.map +1 -0
  473. package/dist/esm/test/protocol_stream.test.js +218 -0
  474. package/dist/esm/test/protocol_stream.test.js.map +1 -0
  475. package/dist/esm/test/protoutils.d.ts +44 -0
  476. package/dist/esm/test/protoutils.d.ts.map +1 -0
  477. package/dist/esm/test/protoutils.js +326 -0
  478. package/dist/esm/test/protoutils.js.map +1 -0
  479. package/dist/esm/test/service_bind.test.d.ts +2 -0
  480. package/dist/esm/test/service_bind.test.d.ts.map +1 -0
  481. package/dist/esm/test/service_bind.test.js +48 -0
  482. package/dist/esm/test/service_bind.test.js.map +1 -0
  483. package/dist/esm/test/side_effect.test.d.ts +2 -0
  484. package/dist/esm/test/side_effect.test.d.ts.map +1 -0
  485. package/dist/esm/test/side_effect.test.js +131 -0
  486. package/dist/esm/test/side_effect.test.js.map +1 -0
  487. package/dist/esm/test/sleep.test.d.ts +2 -0
  488. package/dist/esm/test/sleep.test.d.ts.map +1 -0
  489. package/dist/esm/test/sleep.test.js +222 -0
  490. package/dist/esm/test/sleep.test.js.map +1 -0
  491. package/dist/esm/test/state_keys.test.d.ts +2 -0
  492. package/dist/esm/test/state_keys.test.d.ts.map +1 -0
  493. package/dist/esm/test/state_keys.test.js +90 -0
  494. package/dist/esm/test/state_keys.test.js.map +1 -0
  495. package/dist/esm/test/state_machine.test.d.ts +2 -0
  496. package/dist/esm/test/state_machine.test.d.ts.map +1 -0
  497. package/dist/esm/test/state_machine.test.js +40 -0
  498. package/dist/esm/test/state_machine.test.js.map +1 -0
  499. package/dist/esm/test/testdriver.d.ts +31 -0
  500. package/dist/esm/test/testdriver.d.ts.map +1 -0
  501. package/dist/esm/test/testdriver.js +133 -0
  502. package/dist/esm/test/testdriver.js.map +1 -0
  503. package/dist/esm/test/utils.test.d.ts +2 -0
  504. package/dist/esm/test/utils.test.d.ts.map +1 -0
  505. package/dist/esm/test/utils.test.js +102 -0
  506. package/dist/esm/test/utils.test.js.map +1 -0
  507. package/dist/esm/tsconfig.tsbuildinfo +1 -0
  508. package/package.json +57 -19
  509. package/dist/src/connection/buffered_connection.d.ts +0 -14
  510. package/dist/src/connection/buffered_connection.d.ts.map +0 -1
  511. package/dist/src/connection/buffered_connection.js +0 -44
  512. package/dist/src/connection/buffered_connection.js.map +0 -1
  513. package/dist/src/connection/connection.d.ts +0 -20
  514. package/dist/src/connection/connection.d.ts.map +0 -1
  515. package/dist/src/connection/connection.js.map +0 -1
  516. package/dist/src/connection/http_connection.d.ts.map +0 -1
  517. package/dist/src/connection/http_connection.js +0 -208
  518. package/dist/src/connection/http_connection.js.map +0 -1
  519. package/dist/src/connection/lambda_connection.d.ts +0 -17
  520. package/dist/src/connection/lambda_connection.d.ts.map +0 -1
  521. package/dist/src/connection/lambda_connection.js +0 -64
  522. package/dist/src/connection/lambda_connection.js.map +0 -1
  523. package/dist/src/context.d.ts.map +0 -1
  524. package/dist/src/context.js.map +0 -1
  525. package/dist/src/context_impl.d.ts.map +0 -1
  526. package/dist/src/context_impl.js.map +0 -1
  527. package/dist/src/endpoint/endpoint_impl.d.ts +0 -27
  528. package/dist/src/endpoint/endpoint_impl.d.ts.map +0 -1
  529. package/dist/src/endpoint/endpoint_impl.js.map +0 -1
  530. package/dist/src/endpoint/http2_handler.d.ts +0 -11
  531. package/dist/src/endpoint/http2_handler.d.ts.map +0 -1
  532. package/dist/src/endpoint/http2_handler.js +0 -186
  533. package/dist/src/endpoint/http2_handler.js.map +0 -1
  534. package/dist/src/endpoint/lambda_handler.d.ts +0 -15
  535. package/dist/src/endpoint/lambda_handler.d.ts.map +0 -1
  536. package/dist/src/endpoint/lambda_handler.js +0 -176
  537. package/dist/src/endpoint/lambda_handler.js.map +0 -1
  538. package/dist/src/endpoint/request_signing/basex.d.ts.map +0 -1
  539. package/dist/src/endpoint/request_signing/basex.js.map +0 -1
  540. package/dist/src/endpoint/request_signing/ed25519.d.ts.map +0 -1
  541. package/dist/src/endpoint/request_signing/ed25519.js.map +0 -1
  542. package/dist/src/endpoint/request_signing/v1.d.ts.map +0 -1
  543. package/dist/src/endpoint/request_signing/v1.js.map +0 -1
  544. package/dist/src/endpoint/request_signing/validate.d.ts.map +0 -1
  545. package/dist/src/endpoint/request_signing/validate.js.map +0 -1
  546. package/dist/src/endpoint.d.ts.map +0 -1
  547. package/dist/src/endpoint.js.map +0 -1
  548. package/dist/src/generated/proto/discovery_pb.d.ts.map +0 -1
  549. package/dist/src/generated/proto/discovery_pb.js.map +0 -1
  550. package/dist/src/generated/proto/javascript_pb.d.ts.map +0 -1
  551. package/dist/src/generated/proto/javascript_pb.js.map +0 -1
  552. package/dist/src/generated/proto/protocol_pb.d.ts.map +0 -1
  553. package/dist/src/generated/proto/protocol_pb.js.map +0 -1
  554. package/dist/src/generated/version.d.ts +0 -2
  555. package/dist/src/generated/version.d.ts.map +0 -1
  556. package/dist/src/generated/version.js.map +0 -1
  557. package/dist/src/invocation.d.ts.map +0 -1
  558. package/dist/src/invocation.js.map +0 -1
  559. package/dist/src/io/decoder.d.ts.map +0 -1
  560. package/dist/src/io/decoder.js.map +0 -1
  561. package/dist/src/io/encoder.d.ts +0 -7
  562. package/dist/src/io/encoder.d.ts.map +0 -1
  563. package/dist/src/io/encoder.js.map +0 -1
  564. package/dist/src/journal.d.ts.map +0 -1
  565. package/dist/src/journal.js.map +0 -1
  566. package/dist/src/local_state_store.d.ts.map +0 -1
  567. package/dist/src/local_state_store.js.map +0 -1
  568. package/dist/src/logger.d.ts +0 -27
  569. package/dist/src/logger.d.ts.map +0 -1
  570. package/dist/src/logger.js +0 -151
  571. package/dist/src/logger.js.map +0 -1
  572. package/dist/src/promise_combinator_tracker.d.ts.map +0 -1
  573. package/dist/src/promise_combinator_tracker.js.map +0 -1
  574. package/dist/src/public_api.d.ts +0 -7
  575. package/dist/src/public_api.d.ts.map +0 -1
  576. package/dist/src/public_api.js.map +0 -1
  577. package/dist/src/state_machine.d.ts.map +0 -1
  578. package/dist/src/state_machine.js.map +0 -1
  579. package/dist/src/types/components.d.ts.map +0 -1
  580. package/dist/src/types/components.js.map +0 -1
  581. package/dist/src/types/discovery.d.ts.map +0 -1
  582. package/dist/src/types/discovery.js.map +0 -1
  583. package/dist/src/types/errors.d.ts.map +0 -1
  584. package/dist/src/types/errors.js.map +0 -1
  585. package/dist/src/types/protocol.d.ts.map +0 -1
  586. package/dist/src/types/protocol.js.map +0 -1
  587. package/dist/src/types/rpc.d.ts.map +0 -1
  588. package/dist/src/types/rpc.js.map +0 -1
  589. package/dist/src/types/types.d.ts.map +0 -1
  590. package/dist/src/types/types.js.map +0 -1
  591. package/dist/src/user_agent.d.ts +0 -2
  592. package/dist/src/user_agent.d.ts.map +0 -1
  593. package/dist/src/user_agent.js.map +0 -1
  594. package/dist/src/utils/message_logger.d.ts +0 -7
  595. package/dist/src/utils/message_logger.d.ts.map +0 -1
  596. package/dist/src/utils/message_logger.js.map +0 -1
  597. package/dist/src/utils/promises.d.ts.map +0 -1
  598. package/dist/src/utils/promises.js.map +0 -1
  599. package/dist/src/utils/rand.d.ts.map +0 -1
  600. package/dist/src/utils/rand.js.map +0 -1
  601. package/dist/src/utils/serde.d.ts +0 -5
  602. package/dist/src/utils/serde.d.ts.map +0 -1
  603. package/dist/src/utils/serde.js.map +0 -1
  604. package/dist/src/utils/utils.d.ts.map +0 -1
  605. package/dist/src/utils/utils.js.map +0 -1
  606. package/dist/tsconfig.tsbuildinfo +0 -1
  607. /package/dist/{src → cjs/src}/endpoint/request_signing/basex.d.ts +0 -0
  608. /package/dist/{src → cjs/src}/endpoint/request_signing/basex.js +0 -0
  609. /package/dist/{src → cjs/src}/generated/proto/discovery_pb.d.ts +0 -0
  610. /package/dist/{src → cjs/src}/generated/proto/javascript_pb.d.ts +0 -0
  611. /package/dist/{src → cjs/src}/generated/proto/javascript_pb.js +0 -0
  612. /package/dist/{src → cjs/src}/generated/proto/protocol_pb.d.ts +0 -0
  613. /package/dist/{src → cjs/src}/types/discovery.d.ts +0 -0
  614. /package/dist/{src → cjs/src}/utils/promises.d.ts +0 -0
  615. /package/dist/{src → cjs/src}/utils/utils.d.ts +0 -0
@@ -0,0 +1,399 @@
1
+ /*
2
+ * Copyright (c) 2023-2024 - Restate Software, Inc., Restate GmbH
3
+ *
4
+ * This file is part of the Restate SDK for Node.js/TypeScript,
5
+ * which is released under the MIT license.
6
+ *
7
+ * You can find a copy of the license in file LICENSE in the root
8
+ * directory of this repository or package, or at
9
+ * https://github.com/restatedev/sdk-typescript/blob/main/LICENSE
10
+ */
11
+ import * as p from "./types/protocol.js";
12
+ import { ContextImpl } from "./context_impl.js";
13
+ import { Message } from "./types/types.js";
14
+ import { createStateMachineConsole } from "./utils/message_logger.js";
15
+ import { COMBINATOR_ENTRY_MESSAGE, COMPLETION_MESSAGE_TYPE, END_MESSAGE_TYPE, EndMessage, ENTRY_ACK_MESSAGE_TYPE, ERROR_MESSAGE_TYPE, OUTPUT_ENTRY_MESSAGE_TYPE, OutputEntryMessage, SUSPENSION_MESSAGE_TYPE, SuspensionMessage, } from "./types/protocol.js";
16
+ import { Journal } from "./journal.js";
17
+ import { ensureError, TerminalError, RetryableError, errorToErrorMessage, } from "./types/errors.js";
18
+ import { LogSource, createRestateConsole } from "./logger.js";
19
+ import { CompletablePromise, wrapDeeply, WRAPPED_PROMISE_PENDING, } from "./utils/promises.js";
20
+ import { PromiseCombinatorTracker, PromiseType, } from "./promise_combinator_tracker.js";
21
+ import { CombinatorEntryMessage } from "./generated/proto/javascript_pb.js";
22
+ import { Buffer } from "node:buffer";
23
+ export class StateMachine {
24
+ connection;
25
+ invocation;
26
+ suspensionMillis;
27
+ journal;
28
+ restateContext;
29
+ invocationComplete = new CompletablePromise();
30
+ // when this flag is true, no more work will (and may) happen
31
+ // this is set to true in case of
32
+ // - a completed invocation
33
+ // - a suspension
34
+ // - an error in the state machine
35
+ stateMachineClosed = false;
36
+ localStateStore;
37
+ // Whether the input channel (runtime -> service) is closed
38
+ // If it is closed, then we suspend immediately upon the next suspension point
39
+ // If it is open, then we suspend later because we might still get completions
40
+ inputChannelClosed = false;
41
+ // Suspension timeout that gets set and cleared based on completion messages;
42
+ suspensionTimeout;
43
+ promiseCombinatorTracker;
44
+ console;
45
+ constructor(connection, invocation, handlerKind, logger, loggerContext, suspensionMillis = 30_000) {
46
+ this.connection = connection;
47
+ this.invocation = invocation;
48
+ this.suspensionMillis = suspensionMillis;
49
+ this.localStateStore = invocation.localStateStore;
50
+ this.console = createStateMachineConsole(logger, loggerContext);
51
+ this.journal = new Journal(this.invocation);
52
+ this.restateContext = new ContextImpl(this.invocation.id,
53
+ // The console exposed by RestateContext filters logs in replay, while the internal one is based on the ENV variables.
54
+ createRestateConsole(logger, LogSource.USER, loggerContext, this.journal.isReplaying.bind(this.journal)), handlerKind, invocation.userKey, invocation.invocationValue, invocation.invocationHeaders, connection.headers(), this);
55
+ this.promiseCombinatorTracker = new PromiseCombinatorTracker(this.readCombinatorOrderEntry.bind(this), this.writeCombinatorOrderEntry.bind(this));
56
+ }
57
+ handleMessage(m) {
58
+ if (this.stateMachineClosed) {
59
+ // ignore this message
60
+ return false;
61
+ }
62
+ if (m.messageType === COMPLETION_MESSAGE_TYPE) {
63
+ this.console.debugJournalMessage("Received completion message from Restate, adding to journal.", m.messageType, m.message);
64
+ this.journal.handleRuntimeCompletionMessage(m.message);
65
+ }
66
+ else if (m.messageType === ENTRY_ACK_MESSAGE_TYPE) {
67
+ this.console.debugJournalMessage("Received entry ack message from Restate, adding to journal.", m.messageType, m.message);
68
+ this.journal.handleEntryAckMessage(m.message);
69
+ }
70
+ else {
71
+ throw RetryableError.protocolViolation(`Received message of type ${m.messageType}. Can only accept completion or acks messages after replay has finished.`);
72
+ }
73
+ // Remove lingering suspension timeouts, if we are not waiting for completions anymore
74
+ if (this.suspensionTimeout !== undefined &&
75
+ this.journal.getCompletableIndices().length === 0) {
76
+ clearTimeout(this.suspensionTimeout);
77
+ this.suspensionTimeout = undefined;
78
+ }
79
+ return false; // we are never complete
80
+ }
81
+ handleUserCodeMessage(messageType, message, completedFlag, requiresAckFlag) {
82
+ // if the state machine is already closed, return a promise that never
83
+ // completes, so that the user code does not resume
84
+ if (this.stateMachineClosed) {
85
+ return WRAPPED_PROMISE_PENDING;
86
+ }
87
+ const promise = this.journal.handleUserSideMessage(messageType, message);
88
+ const journalIndex = this.journal.getUserCodeJournalIndex();
89
+ // Only send the message to restate if we are not in replaying mode
90
+ if (this.journal.isProcessing()) {
91
+ this.console.debugJournalMessage("Adding message to journal and sending to Restate", messageType, message);
92
+ this.send(new Message(messageType, message, completedFlag, requiresAckFlag));
93
+ }
94
+ else {
95
+ this.console.debugJournalMessage("Matched and replayed message from journal", messageType, message);
96
+ }
97
+ return wrapDeeply(promise, () => {
98
+ if (!p.SUSPENSION_TRIGGERS.includes(messageType)) {
99
+ return;
100
+ }
101
+ if (this.journal.isUnResolved(journalIndex)) {
102
+ this.hitSuspensionPoint();
103
+ }
104
+ });
105
+ }
106
+ // -- Methods related to combinators to wire up promise combinator API with PromiseCombinatorTracker
107
+ createCombinator(combinatorConstructor, promises) {
108
+ if (this.stateMachineClosed) {
109
+ return WRAPPED_PROMISE_PENDING;
110
+ }
111
+ // We don't need the promise wrapping here to schedule a suspension,
112
+ // because the combined promises will already have that, so once we call then() on them,
113
+ // if we have to suspend we will suspend.
114
+ return this.promiseCombinatorTracker.createCombinator(combinatorConstructor, promises);
115
+ }
116
+ readCombinatorOrderEntry(combinatorId) {
117
+ const wannabeCombinatorEntry = this.journal.readNextReplayEntry();
118
+ if (wannabeCombinatorEntry === undefined) {
119
+ // We're in processing mode
120
+ return undefined;
121
+ }
122
+ if (wannabeCombinatorEntry.messageType !== COMBINATOR_ENTRY_MESSAGE) {
123
+ throw RetryableError.journalMismatch(this.journal.getUserCodeJournalIndex(), wannabeCombinatorEntry, {
124
+ messageType: COMBINATOR_ENTRY_MESSAGE,
125
+ message: {
126
+ combinatorId,
127
+ },
128
+ });
129
+ }
130
+ const combinatorMessage = wannabeCombinatorEntry.message;
131
+ if (combinatorMessage.combinatorId != combinatorId) {
132
+ throw RetryableError.journalMismatch(this.journal.getUserCodeJournalIndex(), wannabeCombinatorEntry, {
133
+ messageType: COMBINATOR_ENTRY_MESSAGE,
134
+ message: {
135
+ combinatorId,
136
+ },
137
+ });
138
+ }
139
+ this.console.debugJournalMessage("Matched and replayed message from journal", COMBINATOR_ENTRY_MESSAGE, combinatorMessage);
140
+ return combinatorMessage.journalEntriesOrder.map((id) => ({
141
+ id,
142
+ type: PromiseType.JournalEntry,
143
+ }));
144
+ }
145
+ async writeCombinatorOrderEntry(combinatorId, order) {
146
+ if (this.journal.isProcessing()) {
147
+ const combinatorMessage = new CombinatorEntryMessage({
148
+ combinatorId,
149
+ journalEntriesOrder: order.map((pid) => pid.id),
150
+ });
151
+ this.console.debugJournalMessage("Adding message to journal and sending to Restate", COMBINATOR_ENTRY_MESSAGE, combinatorMessage);
152
+ const ackPromise = this.journal.appendJournalEntry(COMBINATOR_ENTRY_MESSAGE, combinatorMessage);
153
+ this.send(new Message(COMBINATOR_ENTRY_MESSAGE, combinatorMessage, undefined, true));
154
+ this.hitSuspensionPoint();
155
+ await ackPromise;
156
+ }
157
+ }
158
+ /**
159
+ * Invokes the RPC function and returns a promise that completes when the state machine
160
+ * stops processing the invocation, meaning when:
161
+ * - The function completes with a result or an exception
162
+ * - The execution suspends
163
+ * - An error is raised in the state machine (network, API violation, ...)
164
+ *
165
+ * The returned promise resolves successfully for all the cases above, because the are (from
166
+ * the perspective of the state machine) expected outcomes in which it send out corresponding
167
+ * result messages and cleanly closed the connection.
168
+ *
169
+ * The returned promise is rejected when an unhandled error arises and the caller would be
170
+ * expected to ensure that resources are properly cleaned up.
171
+ */
172
+ invoke() {
173
+ // --------------------------------------------------------------------------------------------
174
+ // Implementation note:
175
+ //
176
+ // This method is not async, because we don't want to actually await anything
177
+ // in there. We cannot await the completion of the actual invocation, because for long-running
178
+ // code (that suspends), the function invocation never completes. Instead, the state machine
179
+ // triggers a suspension.
180
+ // We need to do a bit of promise chaining for the rpc function promise, and return a different
181
+ // promise that completes in also in suspension and error cases.
182
+ // --------------------------------------------------------------------------------------------
183
+ // it is unexpected for the state machine to be closed here, so we raise an error in
184
+ // that case, unlike in other places, where we simply ignore things
185
+ if (this.stateMachineClosed) {
186
+ return Promise.reject(new Error("state machine is already closed"));
187
+ }
188
+ if (this.journal.nextEntryWillBeReplayed()) {
189
+ this.console.info("Resuming (replaying) function.");
190
+ }
191
+ else {
192
+ this.console.info("Invoking function.");
193
+ }
194
+ this.invocation.handler
195
+ .invoke(this.restateContext, this.invocation.invocationValue)
196
+ .then((bytes) => {
197
+ // invocation successfully returned with a result value
198
+ try {
199
+ // the state machine might be closed here in some cases like when there was an error (like
200
+ // API violation) or a suspension, but the function code still completed
201
+ if (this.stateMachineClosed) {
202
+ this.console.warn("Unexpected successful completion of the function after the state machine closed. " +
203
+ "This may indicate that: \n" +
204
+ "- the function code does not properly await some Restate calls " +
205
+ "and did not notice an error \n" +
206
+ "- the function code was delayed for longer than the suspension timeout \n" +
207
+ "- the function code contained a try-catch block around a side effect which throws retryable errors. " +
208
+ "This try-catch block should be placed inside the side effect.");
209
+ return;
210
+ }
211
+ const value = Buffer.from(bytes);
212
+ // handle the result value
213
+ const msg = new Message(OUTPUT_ENTRY_MESSAGE_TYPE, new OutputEntryMessage({
214
+ result: { case: "value", value },
215
+ }));
216
+ void this.journal.handleUserSideMessage(msg.messageType, msg.message);
217
+ if (!this.journal.outputMsgWasReplayed()) {
218
+ this.send(msg);
219
+ this.console.debugJournalMessage("Journaled and sent output message", msg.messageType, msg.message);
220
+ }
221
+ else {
222
+ this.console.debugJournalMessage("Replayed and matched output message from journal", msg.messageType, msg.message);
223
+ }
224
+ this.console.info("Function completed successfully.");
225
+ // Mark the end of the invocation
226
+ this.send(new Message(END_MESSAGE_TYPE, new EndMessage()));
227
+ void this.finish(value);
228
+ }
229
+ catch (e) {
230
+ this.unhandledError(ensureError(e));
231
+ }
232
+ })
233
+ .catch((e) => {
234
+ // because of how we try/catch in the promise handler above, this here exclusively handles
235
+ // errors coming from the rpc function
236
+ try {
237
+ // Sometimes the function code fails as a consequence of the state machine encountering
238
+ // an error before (possibly Restate closed the connection).
239
+ if (this.stateMachineClosed) {
240
+ return;
241
+ }
242
+ void this.sendErrorAndFinish(ensureError(e));
243
+ }
244
+ catch (ee) {
245
+ this.unhandledError(ensureError(ee));
246
+ }
247
+ });
248
+ // this promise here completes under any completion, including the cases where the
249
+ // rpc function does not end (error, suspension, ...)
250
+ return this.invocationComplete.promise;
251
+ }
252
+ async sendErrorAndFinish(e, ctx) {
253
+ this.console.warn("Function completed with an error.\n", e);
254
+ if (e instanceof TerminalError) {
255
+ this.sendTerminalError(e);
256
+ }
257
+ else {
258
+ this.sendRetryableError(e, ctx);
259
+ }
260
+ await this.finish();
261
+ }
262
+ sendRetryableError(e, ctx) {
263
+ const msg = new Message(ERROR_MESSAGE_TYPE, errorToErrorMessage(e, ctx));
264
+ this.console.debugJournalMessage("Invocation ended with retryable error.", msg.messageType, msg.message);
265
+ this.send(msg);
266
+ }
267
+ sendTerminalError(e) {
268
+ const msg = new Message(OUTPUT_ENTRY_MESSAGE_TYPE, new OutputEntryMessage({
269
+ result: { case: "failure", value: e.toFailure() },
270
+ }));
271
+ this.console.debugJournalMessage("Invocation ended with failure message.", msg.messageType, msg.message);
272
+ void this.journal.handleUserSideMessage(msg.messageType, msg.message);
273
+ if (!this.journal.outputMsgWasReplayed()) {
274
+ this.send(msg);
275
+ }
276
+ // Mark the end of the invocation
277
+ this.send(new Message(END_MESSAGE_TYPE, new EndMessage()));
278
+ }
279
+ send(message) {
280
+ this.connection.send(message).catch((err) => {
281
+ this.handleStreamError(err);
282
+ });
283
+ }
284
+ /**
285
+ * Closes the state machine, flushes all output, and resolves the invocation promise.
286
+ */
287
+ async finish(value) {
288
+ try {
289
+ this.stateMachineClosed = true;
290
+ this.journal.close();
291
+ this.clearSuspensionTimeout();
292
+ await this.connection.end();
293
+ this.invocationComplete.resolve(value);
294
+ }
295
+ catch (e) {
296
+ this.invocationComplete.reject(ensureError(e));
297
+ }
298
+ }
299
+ /**
300
+ * This function propagates errors up to the completion promise, to be handled
301
+ * on the connection layer.
302
+ */
303
+ unhandledError(e) {
304
+ this.invocationComplete.reject(e);
305
+ this.stateMachineClosed = true;
306
+ this.journal.close();
307
+ this.clearSuspensionTimeout();
308
+ }
309
+ /**
310
+ * This method is invoked when we hit a suspension point. A suspension point is everytime the user "await"s a Promise returned by RestateContext that might be completed at a later point in time by a CompletionMessage/AckMessage.
311
+ *
312
+ * Depending on the state of the read channel, it might either immediately suspend, or schedule a suspension to happen at a later point in time.
313
+ */
314
+ hitSuspensionPoint() {
315
+ // If there was already a timeout set, we want to reset the time to postpone suspension as long as we make progress.
316
+ // So we first clear the old timeout, and then we set a new one.
317
+ this.clearSuspensionTimeout();
318
+ const delay = this.getSuspensionMillis();
319
+ this.console.debugJournalMessage("Scheduling suspension in " + delay + " ms");
320
+ if (delay >= 0) {
321
+ // Set a new suspension with a new timeout
322
+ // The suspension will only be sent if the timeout is not canceled due to a completion.
323
+ // In case the delay is 0 we still schedule a timeout in order to process the suspension on the next process tick,
324
+ // without interrupting the current work.
325
+ this.suspensionTimeout = setTimeout(() => {
326
+ void this.suspend();
327
+ }, delay);
328
+ }
329
+ }
330
+ // Suspension timeouts:
331
+ // - suspend after 30 seconds if input channel is still open (can still get completions)
332
+ // - suspend immediately if input channel is closed (cannot get completions)
333
+ getSuspensionMillis() {
334
+ return this.inputChannelClosed ? 0 : this.suspensionMillis;
335
+ }
336
+ async suspend() {
337
+ const indices = this.journal.getCompletableIndices();
338
+ // If the state is closed then we either already send a suspension
339
+ // or something else bad happened...
340
+ if (this.journal.isClosed() || indices.length === 0) {
341
+ return;
342
+ }
343
+ // There need to be journal entries to complete, otherwise this timeout should have been removed.
344
+ // A suspension message is the end of the invocation.
345
+ // Resolve the root call with the suspension message
346
+ // This will lead to a onCallSuccess call where this msg will be sent.
347
+ const msg = new Message(SUSPENSION_MESSAGE_TYPE, new SuspensionMessage({
348
+ entryIndexes: indices,
349
+ }));
350
+ this.console.debugJournalMessage("Writing suspension message to journal.", msg.messageType, msg.message);
351
+ void this.journal.handleUserSideMessage(msg.messageType, msg.message);
352
+ if (!this.journal.outputMsgWasReplayed()) {
353
+ this.send(msg);
354
+ }
355
+ this.console.info("Suspending function.");
356
+ await this.finish();
357
+ }
358
+ /**
359
+ * WARNING: make sure you use this at the right point in the code
360
+ * After the index has been incremented...
361
+ * This is error-prone... Would be good to have a better solution for this.
362
+ */
363
+ getUserCodeJournalIndex() {
364
+ return this.journal.getUserCodeJournalIndex();
365
+ }
366
+ handleInputClosed() {
367
+ if (this.journal.isClosed() ||
368
+ this.stateMachineClosed ||
369
+ this.inputChannelClosed) {
370
+ return;
371
+ }
372
+ this.inputChannelClosed = true;
373
+ this.console.debug("Restate closed connection to trigger suspension.");
374
+ // If there is a timeout planned, reset the timout to execute immediately when the work is done.
375
+ if (this.suspensionTimeout !== undefined) {
376
+ this.hitSuspensionPoint();
377
+ }
378
+ }
379
+ handleStreamError(e) {
380
+ this.console.info("Aborting function execution and closing state machine due to connection error: " +
381
+ e.message);
382
+ this.unhandledError(e);
383
+ }
384
+ handleDanglingPromiseError(e) {
385
+ this.console.info("Aborting function execution and closing state machine due to an error: " +
386
+ e.message);
387
+ this.unhandledError(e);
388
+ }
389
+ nextEntryWillBeReplayed() {
390
+ return this.journal.nextEntryWillBeReplayed();
391
+ }
392
+ clearSuspensionTimeout() {
393
+ if (this.suspensionTimeout !== undefined) {
394
+ clearTimeout(this.suspensionTimeout);
395
+ this.suspensionTimeout = undefined;
396
+ }
397
+ }
398
+ }
399
+ //# sourceMappingURL=state_machine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state_machine.js","sourceRoot":"","sources":["../../../src/state_machine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ import * as d from "./discovery.js";
2
+ import type { ContextImpl } from "../context_impl.js";
3
+ import type { HandlerWrapper } from "./rpc.js";
4
+ import { HandlerKind } from "./rpc.js";
5
+ export interface Component {
6
+ name(): string;
7
+ handlerMatching(url: UrlPathComponents): ComponentHandler | undefined;
8
+ discovery(): d.Service;
9
+ }
10
+ export interface ComponentHandler {
11
+ name(): string;
12
+ component(): Component;
13
+ invoke(context: ContextImpl, input: Uint8Array): Promise<Uint8Array>;
14
+ kind(): HandlerKind;
15
+ }
16
+ export declare class ServiceComponent implements Component {
17
+ private readonly componentName;
18
+ private readonly handlers;
19
+ constructor(componentName: string);
20
+ name(): string;
21
+ add(name: string, handlerWrapper: HandlerWrapper): void;
22
+ discovery(): d.Service;
23
+ handlerMatching(url: UrlPathComponents): ComponentHandler | undefined;
24
+ }
25
+ export declare class ServiceHandler implements ComponentHandler {
26
+ private readonly handlerName;
27
+ private readonly parent;
28
+ readonly handlerWrapper: HandlerWrapper;
29
+ constructor(name: string, handlerWrapper: HandlerWrapper, parent: ServiceComponent);
30
+ kind(): HandlerKind;
31
+ invoke(context: ContextImpl, input: Uint8Array): Promise<Uint8Array>;
32
+ name(): string;
33
+ component(): Component;
34
+ }
35
+ export declare class VirtualObjectComponent implements Component {
36
+ readonly componentName: string;
37
+ private readonly handlers;
38
+ constructor(componentName: string);
39
+ name(): string;
40
+ add(name: string, wrapper: HandlerWrapper): void;
41
+ discovery(): d.Service;
42
+ handlerMatching(url: UrlPathComponents): ComponentHandler | undefined;
43
+ }
44
+ export declare class VirtualObjectHandler implements ComponentHandler {
45
+ private readonly componentName;
46
+ private readonly parent;
47
+ private readonly handlerWrapper;
48
+ constructor(componentName: string, parent: VirtualObjectComponent, handlerWrapper: HandlerWrapper);
49
+ name(): string;
50
+ component(): Component;
51
+ kind(): HandlerKind;
52
+ invoke(context: ContextImpl, input: Uint8Array): Promise<Uint8Array>;
53
+ }
54
+ export declare class WorkflowComponent implements Component {
55
+ readonly componentName: string;
56
+ private readonly handlers;
57
+ constructor(componentName: string);
58
+ name(): string;
59
+ add(name: string, wrapper: HandlerWrapper): void;
60
+ discovery(): d.Service;
61
+ handlerMatching(url: UrlPathComponents): ComponentHandler | undefined;
62
+ }
63
+ export declare class WorkflowHandler implements ComponentHandler {
64
+ private readonly componentName;
65
+ private readonly parent;
66
+ private readonly handlerWrapper;
67
+ constructor(componentName: string, parent: WorkflowComponent, handlerWrapper: HandlerWrapper);
68
+ name(): string;
69
+ component(): Component;
70
+ kind(): HandlerKind;
71
+ invoke(context: ContextImpl, input: Uint8Array): Promise<Uint8Array>;
72
+ }
73
+ export type UrlPathComponents = {
74
+ componentName: string;
75
+ handlerName: string;
76
+ };
77
+ export declare function parseUrlComponents(urlPath?: string): UrlPathComponents | "discovery" | undefined;
78
+ //# sourceMappingURL=components.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../../../src/types/components.ts"],"names":[],"mappings":"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"}