@restatedev/restate-sdk 1.0.1 → 1.1.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 (347) hide show
  1. package/README.md +3 -3
  2. package/dist/cjs/src/common_api.d.ts +4 -2
  3. package/dist/cjs/src/common_api.d.ts.map +1 -1
  4. package/dist/cjs/src/common_api.js.map +1 -1
  5. package/dist/cjs/src/connection/connection.d.ts +64 -0
  6. package/dist/cjs/src/connection/connection.d.ts.map +1 -1
  7. package/dist/cjs/src/connection/connection.js +168 -0
  8. package/dist/cjs/src/connection/connection.js.map +1 -1
  9. package/dist/cjs/src/context.d.ts +13 -9
  10. package/dist/cjs/src/context.d.ts.map +1 -1
  11. package/dist/cjs/src/context.js.map +1 -1
  12. package/dist/cjs/src/context_impl.d.ts.map +1 -1
  13. package/dist/cjs/src/context_impl.js +15 -20
  14. package/dist/cjs/src/context_impl.js.map +1 -1
  15. package/dist/cjs/src/endpoint/endpoint_builder.d.ts +10 -0
  16. package/dist/cjs/src/endpoint/endpoint_builder.d.ts.map +1 -1
  17. package/dist/cjs/src/endpoint/endpoint_builder.js +13 -0
  18. package/dist/cjs/src/endpoint/endpoint_builder.js.map +1 -1
  19. package/dist/cjs/src/endpoint/fetch_endpoint.d.ts +18 -1
  20. package/dist/cjs/src/endpoint/fetch_endpoint.d.ts.map +1 -1
  21. package/dist/cjs/src/endpoint/fetch_endpoint.js +16 -1
  22. package/dist/cjs/src/endpoint/fetch_endpoint.js.map +1 -1
  23. package/dist/cjs/src/endpoint/handlers/fetch.d.ts.map +1 -1
  24. package/dist/cjs/src/endpoint/handlers/fetch.js +1 -2
  25. package/dist/cjs/src/endpoint/handlers/fetch.js.map +1 -1
  26. package/dist/cjs/src/endpoint/handlers/generic.d.ts +10 -7
  27. package/dist/cjs/src/endpoint/handlers/generic.d.ts.map +1 -1
  28. package/dist/cjs/src/endpoint/handlers/generic.js +76 -54
  29. package/dist/cjs/src/endpoint/handlers/generic.js.map +1 -1
  30. package/dist/cjs/src/endpoint/handlers/lambda.d.ts.map +1 -1
  31. package/dist/cjs/src/endpoint/handlers/lambda.js +33 -16
  32. package/dist/cjs/src/endpoint/handlers/lambda.js.map +1 -1
  33. package/dist/cjs/src/endpoint/lambda_endpoint.d.ts +2 -0
  34. package/dist/cjs/src/endpoint/lambda_endpoint.d.ts.map +1 -1
  35. package/dist/cjs/src/endpoint/lambda_endpoint.js +6 -8
  36. package/dist/cjs/src/endpoint/lambda_endpoint.js.map +1 -1
  37. package/dist/cjs/src/endpoint/node_endpoint.d.ts +2 -0
  38. package/dist/cjs/src/endpoint/node_endpoint.d.ts.map +1 -1
  39. package/dist/cjs/src/endpoint/node_endpoint.js +31 -20
  40. package/dist/cjs/src/endpoint/node_endpoint.js.map +1 -1
  41. package/dist/cjs/src/endpoint.d.ts +25 -2
  42. package/dist/cjs/src/endpoint.d.ts.map +1 -1
  43. package/dist/cjs/src/fetch.d.ts +2 -1
  44. package/dist/cjs/src/fetch.d.ts.map +1 -1
  45. package/dist/cjs/src/fetch.js +4 -2
  46. package/dist/cjs/src/fetch.js.map +1 -1
  47. package/dist/cjs/src/generated/version.d.ts +1 -1
  48. package/dist/cjs/src/generated/version.js +1 -1
  49. package/dist/cjs/src/invocation.d.ts +1 -1
  50. package/dist/cjs/src/invocation.d.ts.map +1 -1
  51. package/dist/cjs/src/invocation.js.map +1 -1
  52. package/dist/cjs/src/io/decoder.d.ts +2 -2
  53. package/dist/cjs/src/io/decoder.d.ts.map +1 -1
  54. package/dist/cjs/src/io/decoder.js +7 -8
  55. package/dist/cjs/src/io/decoder.js.map +1 -1
  56. package/dist/cjs/src/io/encoder.d.ts +0 -3
  57. package/dist/cjs/src/io/encoder.d.ts.map +1 -1
  58. package/dist/cjs/src/io/encoder.js +1 -18
  59. package/dist/cjs/src/io/encoder.js.map +1 -1
  60. package/dist/cjs/src/logger.d.ts +21 -13
  61. package/dist/cjs/src/logger.d.ts.map +1 -1
  62. package/dist/cjs/src/logger.js +56 -56
  63. package/dist/cjs/src/logger.js.map +1 -1
  64. package/dist/cjs/src/state_machine.d.ts +3 -5
  65. package/dist/cjs/src/state_machine.d.ts.map +1 -1
  66. package/dist/cjs/src/state_machine.js +7 -15
  67. package/dist/cjs/src/state_machine.js.map +1 -1
  68. package/dist/cjs/src/types/rpc.d.ts +11 -11
  69. package/dist/cjs/src/types/rpc.d.ts.map +1 -1
  70. package/dist/cjs/src/types/rpc.js +3 -3
  71. package/dist/cjs/src/types/rpc.js.map +1 -1
  72. package/dist/cjs/src/user_agent.d.ts +1 -1
  73. package/dist/cjs/src/utils/message_logger.d.ts +2 -2
  74. package/dist/cjs/src/utils/message_logger.d.ts.map +1 -1
  75. package/dist/cjs/src/utils/message_logger.js +3 -3
  76. package/dist/cjs/src/utils/message_logger.js.map +1 -1
  77. package/dist/cjs/src/utils/streams.d.ts +4 -0
  78. package/dist/cjs/src/utils/streams.d.ts.map +1 -0
  79. package/dist/cjs/src/utils/streams.js +24 -0
  80. package/dist/cjs/src/utils/streams.js.map +1 -0
  81. package/dist/cjs/test/awakeable.test.d.ts +2 -0
  82. package/dist/cjs/test/awakeable.test.d.ts.map +1 -0
  83. package/dist/cjs/test/awakeable.test.js +141 -0
  84. package/dist/cjs/test/awakeable.test.js.map +1 -0
  85. package/dist/cjs/test/complete_awakeable.test.d.ts +2 -0
  86. package/dist/cjs/test/complete_awakeable.test.d.ts.map +1 -0
  87. package/dist/cjs/test/complete_awakeable.test.js +123 -0
  88. package/dist/cjs/test/complete_awakeable.test.js.map +1 -0
  89. package/dist/cjs/test/eager_state.test.d.ts +2 -0
  90. package/dist/cjs/test/eager_state.test.d.ts.map +1 -0
  91. package/dist/cjs/test/eager_state.test.js +280 -0
  92. package/dist/cjs/test/eager_state.test.js.map +1 -0
  93. package/dist/cjs/test/get_and_set_state.test.d.ts +2 -0
  94. package/dist/cjs/test/get_and_set_state.test.d.ts.map +1 -0
  95. package/dist/cjs/test/get_and_set_state.test.js +233 -0
  96. package/dist/cjs/test/get_and_set_state.test.js.map +1 -0
  97. package/dist/cjs/test/get_state.test.d.ts +2 -0
  98. package/dist/cjs/test/get_state.test.d.ts.map +1 -0
  99. package/dist/cjs/test/get_state.test.js +333 -0
  100. package/dist/cjs/test/get_state.test.js.map +1 -0
  101. package/dist/cjs/test/lambda.test.d.ts +2 -0
  102. package/dist/cjs/test/lambda.test.d.ts.map +1 -0
  103. package/dist/cjs/test/lambda.test.js +246 -0
  104. package/dist/cjs/test/lambda.test.js.map +1 -0
  105. package/dist/cjs/test/message_coders.test.d.ts +2 -0
  106. package/dist/cjs/test/message_coders.test.d.ts.map +1 -0
  107. package/dist/cjs/test/message_coders.test.js +37 -0
  108. package/dist/cjs/test/message_coders.test.js.map +1 -0
  109. package/dist/cjs/test/promise_combinator_tracker.test.d.ts +2 -0
  110. package/dist/cjs/test/promise_combinator_tracker.test.d.ts.map +1 -0
  111. package/dist/cjs/test/promise_combinator_tracker.test.js +156 -0
  112. package/dist/cjs/test/promise_combinator_tracker.test.js.map +1 -0
  113. package/dist/cjs/test/promise_combinators.test.d.ts +2 -0
  114. package/dist/cjs/test/promise_combinators.test.d.ts.map +1 -0
  115. package/dist/cjs/test/promise_combinators.test.js +433 -0
  116. package/dist/cjs/test/promise_combinators.test.js.map +1 -0
  117. package/dist/cjs/test/promises.test.d.ts +2 -0
  118. package/dist/cjs/test/promises.test.d.ts.map +1 -0
  119. package/dist/cjs/test/promises.test.js +32 -0
  120. package/dist/cjs/test/promises.test.js.map +1 -0
  121. package/dist/cjs/test/protocol_stream.test.d.ts +2 -0
  122. package/dist/cjs/test/protocol_stream.test.d.ts.map +1 -0
  123. package/dist/cjs/test/protocol_stream.test.js +243 -0
  124. package/dist/cjs/test/protocol_stream.test.js.map +1 -0
  125. package/dist/cjs/test/protoutils.d.ts +44 -0
  126. package/dist/cjs/test/protoutils.d.ts.map +1 -0
  127. package/dist/cjs/test/protoutils.js +359 -0
  128. package/dist/cjs/test/protoutils.js.map +1 -0
  129. package/dist/cjs/test/service_bind.test.d.ts +2 -0
  130. package/dist/cjs/test/service_bind.test.d.ts.map +1 -0
  131. package/dist/cjs/test/service_bind.test.js +98 -0
  132. package/dist/cjs/test/service_bind.test.js.map +1 -0
  133. package/dist/cjs/test/side_effect.test.d.ts +2 -0
  134. package/dist/cjs/test/side_effect.test.d.ts.map +1 -0
  135. package/dist/cjs/test/side_effect.test.js +133 -0
  136. package/dist/cjs/test/side_effect.test.js.map +1 -0
  137. package/dist/cjs/test/sleep.test.d.ts +2 -0
  138. package/dist/cjs/test/sleep.test.d.ts.map +1 -0
  139. package/dist/cjs/test/sleep.test.js +224 -0
  140. package/dist/cjs/test/sleep.test.js.map +1 -0
  141. package/dist/cjs/test/state_keys.test.d.ts +2 -0
  142. package/dist/cjs/test/state_keys.test.d.ts.map +1 -0
  143. package/dist/cjs/test/state_keys.test.js +92 -0
  144. package/dist/cjs/test/state_keys.test.js.map +1 -0
  145. package/dist/cjs/test/state_machine.test.d.ts +2 -0
  146. package/dist/cjs/test/state_machine.test.d.ts.map +1 -0
  147. package/dist/cjs/test/state_machine.test.js +42 -0
  148. package/dist/cjs/test/state_machine.test.js.map +1 -0
  149. package/dist/cjs/test/testdriver.d.ts +37 -0
  150. package/dist/cjs/test/testdriver.d.ts.map +1 -0
  151. package/dist/cjs/test/testdriver.js +176 -0
  152. package/dist/cjs/test/testdriver.js.map +1 -0
  153. package/dist/cjs/test/utils.test.d.ts +2 -0
  154. package/dist/cjs/test/utils.test.d.ts.map +1 -0
  155. package/dist/cjs/test/utils.test.js +104 -0
  156. package/dist/cjs/test/utils.test.js.map +1 -0
  157. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  158. package/dist/esm/src/common_api.d.ts +4 -2
  159. package/dist/esm/src/common_api.d.ts.map +1 -1
  160. package/dist/esm/src/common_api.js +1 -1
  161. package/dist/esm/src/common_api.js.map +1 -1
  162. package/dist/esm/src/connection/connection.d.ts +64 -0
  163. package/dist/esm/src/connection/connection.d.ts.map +1 -1
  164. package/dist/esm/src/connection/connection.js +166 -1
  165. package/dist/esm/src/connection/connection.js.map +1 -1
  166. package/dist/esm/src/context.d.ts +13 -9
  167. package/dist/esm/src/context.d.ts.map +1 -1
  168. package/dist/esm/src/context.js.map +1 -1
  169. package/dist/esm/src/context_impl.d.ts.map +1 -1
  170. package/dist/esm/src/context_impl.js +15 -20
  171. package/dist/esm/src/context_impl.js.map +1 -1
  172. package/dist/esm/src/endpoint/endpoint_builder.d.ts +10 -0
  173. package/dist/esm/src/endpoint/endpoint_builder.d.ts.map +1 -1
  174. package/dist/esm/src/endpoint/endpoint_builder.js +13 -0
  175. package/dist/esm/src/endpoint/endpoint_builder.js.map +1 -1
  176. package/dist/esm/src/endpoint/fetch_endpoint.d.ts +18 -1
  177. package/dist/esm/src/endpoint/fetch_endpoint.d.ts.map +1 -1
  178. package/dist/esm/src/endpoint/fetch_endpoint.js +16 -1
  179. package/dist/esm/src/endpoint/fetch_endpoint.js.map +1 -1
  180. package/dist/esm/src/endpoint/handlers/fetch.d.ts.map +1 -1
  181. package/dist/esm/src/endpoint/handlers/fetch.js +1 -2
  182. package/dist/esm/src/endpoint/handlers/fetch.js.map +1 -1
  183. package/dist/esm/src/endpoint/handlers/generic.d.ts +10 -7
  184. package/dist/esm/src/endpoint/handlers/generic.d.ts.map +1 -1
  185. package/dist/esm/src/endpoint/handlers/generic.js +77 -55
  186. package/dist/esm/src/endpoint/handlers/generic.js.map +1 -1
  187. package/dist/esm/src/endpoint/handlers/lambda.d.ts.map +1 -1
  188. package/dist/esm/src/endpoint/handlers/lambda.js +33 -16
  189. package/dist/esm/src/endpoint/handlers/lambda.js.map +1 -1
  190. package/dist/esm/src/endpoint/lambda_endpoint.d.ts +2 -0
  191. package/dist/esm/src/endpoint/lambda_endpoint.d.ts.map +1 -1
  192. package/dist/esm/src/endpoint/lambda_endpoint.js +6 -8
  193. package/dist/esm/src/endpoint/lambda_endpoint.js.map +1 -1
  194. package/dist/esm/src/endpoint/node_endpoint.d.ts +2 -0
  195. package/dist/esm/src/endpoint/node_endpoint.d.ts.map +1 -1
  196. package/dist/esm/src/endpoint/node_endpoint.js +31 -20
  197. package/dist/esm/src/endpoint/node_endpoint.js.map +1 -1
  198. package/dist/esm/src/endpoint.d.ts +25 -2
  199. package/dist/esm/src/endpoint.d.ts.map +1 -1
  200. package/dist/esm/src/fetch.d.ts +2 -1
  201. package/dist/esm/src/fetch.d.ts.map +1 -1
  202. package/dist/esm/src/fetch.js +4 -2
  203. package/dist/esm/src/fetch.js.map +1 -1
  204. package/dist/esm/src/generated/version.d.ts +1 -1
  205. package/dist/esm/src/generated/version.js +1 -1
  206. package/dist/esm/src/invocation.d.ts +1 -1
  207. package/dist/esm/src/invocation.d.ts.map +1 -1
  208. package/dist/esm/src/invocation.js.map +1 -1
  209. package/dist/esm/src/io/decoder.d.ts +2 -2
  210. package/dist/esm/src/io/decoder.d.ts.map +1 -1
  211. package/dist/esm/src/io/decoder.js +7 -8
  212. package/dist/esm/src/io/decoder.js.map +1 -1
  213. package/dist/esm/src/io/encoder.d.ts +0 -3
  214. package/dist/esm/src/io/encoder.d.ts.map +1 -1
  215. package/dist/esm/src/io/encoder.js +0 -13
  216. package/dist/esm/src/io/encoder.js.map +1 -1
  217. package/dist/esm/src/logger.d.ts +21 -13
  218. package/dist/esm/src/logger.d.ts.map +1 -1
  219. package/dist/esm/src/logger.js +53 -55
  220. package/dist/esm/src/logger.js.map +1 -1
  221. package/dist/esm/src/state_machine.d.ts +3 -5
  222. package/dist/esm/src/state_machine.d.ts.map +1 -1
  223. package/dist/esm/src/state_machine.js +8 -16
  224. package/dist/esm/src/state_machine.js.map +1 -1
  225. package/dist/esm/src/types/rpc.d.ts +11 -11
  226. package/dist/esm/src/types/rpc.d.ts.map +1 -1
  227. package/dist/esm/src/types/rpc.js +3 -3
  228. package/dist/esm/src/types/rpc.js.map +1 -1
  229. package/dist/esm/src/user_agent.d.ts +1 -1
  230. package/dist/esm/src/utils/message_logger.d.ts +2 -2
  231. package/dist/esm/src/utils/message_logger.d.ts.map +1 -1
  232. package/dist/esm/src/utils/message_logger.js +4 -4
  233. package/dist/esm/src/utils/message_logger.js.map +1 -1
  234. package/dist/esm/src/utils/streams.d.ts +4 -0
  235. package/dist/esm/src/utils/streams.d.ts.map +1 -0
  236. package/dist/esm/src/utils/streams.js +20 -0
  237. package/dist/esm/src/utils/streams.js.map +1 -0
  238. package/dist/esm/test/awakeable.test.d.ts +2 -0
  239. package/dist/esm/test/awakeable.test.d.ts.map +1 -0
  240. package/dist/esm/test/awakeable.test.js +139 -0
  241. package/dist/esm/test/awakeable.test.js.map +1 -0
  242. package/dist/esm/test/complete_awakeable.test.d.ts +2 -0
  243. package/dist/esm/test/complete_awakeable.test.d.ts.map +1 -0
  244. package/dist/esm/test/complete_awakeable.test.js +121 -0
  245. package/dist/esm/test/complete_awakeable.test.js.map +1 -0
  246. package/dist/esm/test/eager_state.test.d.ts +2 -0
  247. package/dist/esm/test/eager_state.test.d.ts.map +1 -0
  248. package/dist/esm/test/eager_state.test.js +278 -0
  249. package/dist/esm/test/eager_state.test.js.map +1 -0
  250. package/dist/esm/test/get_and_set_state.test.d.ts +2 -0
  251. package/dist/esm/test/get_and_set_state.test.d.ts.map +1 -0
  252. package/dist/esm/test/get_and_set_state.test.js +231 -0
  253. package/dist/esm/test/get_and_set_state.test.js.map +1 -0
  254. package/dist/esm/test/get_state.test.d.ts +2 -0
  255. package/dist/esm/test/get_state.test.d.ts.map +1 -0
  256. package/dist/esm/test/get_state.test.js +331 -0
  257. package/dist/esm/test/get_state.test.js.map +1 -0
  258. package/dist/esm/test/lambda.test.d.ts +2 -0
  259. package/dist/esm/test/lambda.test.d.ts.map +1 -0
  260. package/dist/esm/test/lambda.test.js +221 -0
  261. package/dist/esm/test/lambda.test.js.map +1 -0
  262. package/dist/esm/test/message_coders.test.d.ts +2 -0
  263. package/dist/esm/test/message_coders.test.d.ts.map +1 -0
  264. package/dist/esm/test/message_coders.test.js +35 -0
  265. package/dist/esm/test/message_coders.test.js.map +1 -0
  266. package/dist/esm/test/promise_combinator_tracker.test.d.ts +2 -0
  267. package/dist/esm/test/promise_combinator_tracker.test.d.ts.map +1 -0
  268. package/dist/esm/test/promise_combinator_tracker.test.js +154 -0
  269. package/dist/esm/test/promise_combinator_tracker.test.js.map +1 -0
  270. package/dist/esm/test/promise_combinators.test.d.ts +2 -0
  271. package/dist/esm/test/promise_combinators.test.d.ts.map +1 -0
  272. package/dist/esm/test/promise_combinators.test.js +431 -0
  273. package/dist/esm/test/promise_combinators.test.js.map +1 -0
  274. package/dist/esm/test/promises.test.d.ts +2 -0
  275. package/dist/esm/test/promises.test.d.ts.map +1 -0
  276. package/dist/esm/test/promises.test.js +30 -0
  277. package/dist/esm/test/promises.test.js.map +1 -0
  278. package/dist/esm/test/protocol_stream.test.d.ts +2 -0
  279. package/dist/esm/test/protocol_stream.test.d.ts.map +1 -0
  280. package/dist/esm/test/protocol_stream.test.js +218 -0
  281. package/dist/esm/test/protocol_stream.test.js.map +1 -0
  282. package/dist/esm/test/protoutils.d.ts +44 -0
  283. package/dist/esm/test/protoutils.d.ts.map +1 -0
  284. package/dist/esm/test/protoutils.js +326 -0
  285. package/dist/esm/test/protoutils.js.map +1 -0
  286. package/dist/esm/test/service_bind.test.d.ts +2 -0
  287. package/dist/esm/test/service_bind.test.d.ts.map +1 -0
  288. package/dist/esm/test/service_bind.test.js +73 -0
  289. package/dist/esm/test/service_bind.test.js.map +1 -0
  290. package/dist/esm/test/side_effect.test.d.ts +2 -0
  291. package/dist/esm/test/side_effect.test.d.ts.map +1 -0
  292. package/dist/esm/test/side_effect.test.js +131 -0
  293. package/dist/esm/test/side_effect.test.js.map +1 -0
  294. package/dist/esm/test/sleep.test.d.ts +2 -0
  295. package/dist/esm/test/sleep.test.d.ts.map +1 -0
  296. package/dist/esm/test/sleep.test.js +222 -0
  297. package/dist/esm/test/sleep.test.js.map +1 -0
  298. package/dist/esm/test/state_keys.test.d.ts +2 -0
  299. package/dist/esm/test/state_keys.test.d.ts.map +1 -0
  300. package/dist/esm/test/state_keys.test.js +90 -0
  301. package/dist/esm/test/state_keys.test.js.map +1 -0
  302. package/dist/esm/test/state_machine.test.d.ts +2 -0
  303. package/dist/esm/test/state_machine.test.d.ts.map +1 -0
  304. package/dist/esm/test/state_machine.test.js +40 -0
  305. package/dist/esm/test/state_machine.test.js.map +1 -0
  306. package/dist/esm/test/testdriver.d.ts +37 -0
  307. package/dist/esm/test/testdriver.d.ts.map +1 -0
  308. package/dist/esm/test/testdriver.js +170 -0
  309. package/dist/esm/test/testdriver.js.map +1 -0
  310. package/dist/esm/test/utils.test.d.ts +2 -0
  311. package/dist/esm/test/utils.test.d.ts.map +1 -0
  312. package/dist/esm/test/utils.test.js +102 -0
  313. package/dist/esm/test/utils.test.js.map +1 -0
  314. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  315. package/package.json +2 -2
  316. package/dist/cjs/src/connection/buffered_connection.d.ts +0 -14
  317. package/dist/cjs/src/connection/buffered_connection.d.ts.map +0 -1
  318. package/dist/cjs/src/connection/buffered_connection.js +0 -44
  319. package/dist/cjs/src/connection/buffered_connection.js.map +0 -1
  320. package/dist/cjs/src/connection/http_connection.d.ts +0 -77
  321. package/dist/cjs/src/connection/http_connection.d.ts.map +0 -1
  322. package/dist/cjs/src/connection/http_connection.js +0 -208
  323. package/dist/cjs/src/connection/http_connection.js.map +0 -1
  324. package/dist/cjs/src/connection/lambda_connection.d.ts +0 -17
  325. package/dist/cjs/src/connection/lambda_connection.d.ts.map +0 -1
  326. package/dist/cjs/src/connection/lambda_connection.js +0 -64
  327. package/dist/cjs/src/connection/lambda_connection.js.map +0 -1
  328. package/dist/cjs/src/endpoint/handlers/node.d.ts +0 -11
  329. package/dist/cjs/src/endpoint/handlers/node.d.ts.map +0 -1
  330. package/dist/cjs/src/endpoint/handlers/node.js +0 -188
  331. package/dist/cjs/src/endpoint/handlers/node.js.map +0 -1
  332. package/dist/esm/src/connection/buffered_connection.d.ts +0 -14
  333. package/dist/esm/src/connection/buffered_connection.d.ts.map +0 -1
  334. package/dist/esm/src/connection/buffered_connection.js +0 -40
  335. package/dist/esm/src/connection/buffered_connection.js.map +0 -1
  336. package/dist/esm/src/connection/http_connection.d.ts +0 -77
  337. package/dist/esm/src/connection/http_connection.d.ts.map +0 -1
  338. package/dist/esm/src/connection/http_connection.js +0 -204
  339. package/dist/esm/src/connection/http_connection.js.map +0 -1
  340. package/dist/esm/src/connection/lambda_connection.d.ts +0 -17
  341. package/dist/esm/src/connection/lambda_connection.d.ts.map +0 -1
  342. package/dist/esm/src/connection/lambda_connection.js +0 -60
  343. package/dist/esm/src/connection/lambda_connection.js.map +0 -1
  344. package/dist/esm/src/endpoint/handlers/node.d.ts +0 -11
  345. package/dist/esm/src/endpoint/handlers/node.d.ts.map +0 -1
  346. package/dist/esm/src/endpoint/handlers/node.js +0 -181
  347. package/dist/esm/src/endpoint/handlers/node.js.map +0 -1
@@ -0,0 +1,243 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2023-2024 - Restate Software, Inc., Restate GmbH
4
+ *
5
+ * This file is part of the Restate SDK for Node.js/TypeScript,
6
+ * which is released under the MIT license.
7
+ *
8
+ * You can find a copy of the license in file LICENSE in the root
9
+ * directory of this repository or package, or at
10
+ * https://github.com/restatedev/sdk-typescript/blob/main/LICENSE
11
+ */
12
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ var desc = Object.getOwnPropertyDescriptor(m, k);
15
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
16
+ desc = { enumerable: true, get: function() { return m[k]; } };
17
+ }
18
+ Object.defineProperty(o, k2, desc);
19
+ }) : (function(o, m, k, k2) {
20
+ if (k2 === undefined) k2 = k;
21
+ o[k2] = m[k];
22
+ }));
23
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
24
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
25
+ }) : function(o, v) {
26
+ o["default"] = v;
27
+ });
28
+ var __importStar = (this && this.__importStar) || function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const protocol_js_1 = require("../src/types/protocol.js");
37
+ const connection_js_1 = require("../src/connection/connection.js");
38
+ const types_js_1 = require("../src/types/types.js");
39
+ const stream = __importStar(require("node:stream/web"));
40
+ const promises_1 = require("timers/promises");
41
+ const promises_js_1 = require("../src/utils/promises.js");
42
+ const vitest_1 = require("vitest");
43
+ const logger_js_1 = require("../src/logger.js");
44
+ // The following test suite is taken from headers.rs
45
+ (0, vitest_1.describe)("Header", () => {
46
+ (0, vitest_1.it)("Should round trip a custom message", () => {
47
+ const a = new types_js_1.Header(0xfc00n, 10);
48
+ const b = types_js_1.Header.fromU64be(a.toU64be());
49
+ (0, vitest_1.expect)(b).toStrictEqual(a);
50
+ });
51
+ (0, vitest_1.it)("invoke_test", () => roundtripTest(newStart(25)));
52
+ (0, vitest_1.it)("completion_test", () => roundtripTest(newHeader(protocol_js_1.COMPLETION_MESSAGE_TYPE, 22)));
53
+ (0, vitest_1.it)("completed_get_state", () => roundtripTest(newCompletableEntry(protocol_js_1.GET_STATE_ENTRY_MESSAGE_TYPE, true, 0)));
54
+ (0, vitest_1.it)("not_completed_get_state", () => roundtripTest(newCompletableEntry(protocol_js_1.GET_STATE_ENTRY_MESSAGE_TYPE, false, 0)));
55
+ (0, vitest_1.it)("completed_get_state_with_len", () => roundtripTest(newCompletableEntry(protocol_js_1.GET_STATE_ENTRY_MESSAGE_TYPE, true, 10341)));
56
+ (0, vitest_1.it)("custom_entry", () => roundtripTest(newHeader(0xfc00n, 10341)));
57
+ (0, vitest_1.it)("custom_entry_with_requires_ack", () => roundtripTest(new types_js_1.Header(0xfc00n, 10341, undefined, true)));
58
+ });
59
+ const rlog = (0, logger_js_1.createRestateConsole)(logger_js_1.defaultLogger, logger_js_1.LogSource.SYSTEM);
60
+ (0, vitest_1.describe)("Restate Streaming Connection", () => {
61
+ (0, vitest_1.it)("should demonstrate how to write messages and read messages.", async () => {
62
+ // imagine that the HTTP2 request handler hands to you a bidirectional (duplex in node's lingo)
63
+ // binary stream, that you can read from and write to.
64
+ const http2stream = mockHttp2DuplexStream();
65
+ // the following demonstrates how to use a stream_encoder/decoder to convert
66
+ // a raw duplex stream to a high-level stream of Restate's protocol messages and headers.
67
+ const restateStream = new connection_js_1.RestateConnection(rlog, {}, http2stream);
68
+ // here we need to create a promise for the sake of this test.
69
+ // this future will be resolved once something is emitted on the stream.
70
+ const result = new promises_js_1.CompletablePromise();
71
+ restateStream.pipeToConsumer({
72
+ handleMessage: (m) => {
73
+ result.resolve(m);
74
+ return false;
75
+ },
76
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
77
+ handleInputClosed: () => { },
78
+ handleStreamError: (error) => result.reject(error),
79
+ });
80
+ // now, let's simulate sending a message
81
+ void restateStream.send(new types_js_1.Message(protocol_js_1.START_MESSAGE_TYPE, new protocol_js_1.StartMessage({
82
+ id: Buffer.from("abcd"),
83
+ debugId: "abcd",
84
+ knownEntries: 1337,
85
+ }), undefined));
86
+ // and collect what was written
87
+ await restateStream.end();
88
+ const msg = await result.promise;
89
+ (0, vitest_1.expect)(msg.messageType).toStrictEqual(protocol_js_1.START_MESSAGE_TYPE);
90
+ (0, vitest_1.expect)(msg.message.knownEntries).toStrictEqual(1337);
91
+ });
92
+ (0, vitest_1.it)("should await sending of small data when closing", async () => {
93
+ const { duplex, processBytes } = mockBackpressuredDuplex(128);
94
+ const connection = new connection_js_1.RestateConnection(rlog, {}, duplex);
95
+ // enqueue small data, below watermark, so that 'end' can immediately be written
96
+ void connection.send(newMessage(10));
97
+ const done = connection.end();
98
+ await verifyPromisePending(done);
99
+ // now let the stream flow
100
+ processBytes(10 * 1024);
101
+ // we should be able to finish cleanly
102
+ await done;
103
+ });
104
+ (0, vitest_1.it)("should await sending of larger data when closing", async () => {
105
+ const { duplex, processBytes } = mockBackpressuredDuplex(128);
106
+ const connection = new connection_js_1.RestateConnection(rlog, {}, duplex);
107
+ // enqueue quite some data, before allowing any bytes to flow any
108
+ void connection.send(newMessage(1024));
109
+ void connection.send(newMessage(1024));
110
+ void connection.send(newMessage(1024));
111
+ const done = connection.end();
112
+ await verifyPromisePending(done);
113
+ // now let the stream flow
114
+ processBytes(10 * 1024);
115
+ // we should be able to finish cleanly
116
+ await done;
117
+ });
118
+ (0, vitest_1.it)("should not trigger backpressure for small messages", async () => {
119
+ const { duplex } = mockBackpressuredDuplex(1024);
120
+ const connection = new connection_js_1.RestateConnection(rlog, {}, duplex);
121
+ // enqueue a message that is not too large
122
+ const promise1 = connection.send(newMessage(80));
123
+ const promise2 = connection.send(newMessage(80));
124
+ await verifyPromiseResolved(promise1);
125
+ await verifyPromiseResolved(promise2);
126
+ });
127
+ (0, vitest_1.it)("should trigger backpressure for large messages", async () => {
128
+ const { duplex } = mockBackpressuredDuplex(1024);
129
+ const connection = new connection_js_1.RestateConnection(rlog, {}, duplex);
130
+ // this message should get sent immediately because its smaller than 1024
131
+ const promise1 = connection.send(newMessage(800));
132
+ await verifyPromiseResolved(promise1);
133
+ // this one should hang because it takes us over 1024
134
+ const promise2 = connection.send(newMessage(800));
135
+ await verifyPromisePending(promise2);
136
+ });
137
+ (0, vitest_1.it)("should resolve backpressure promises when the stream flows", async () => {
138
+ const { duplex, processBytes } = mockBackpressuredDuplex(1024);
139
+ const connection = new connection_js_1.RestateConnection(rlog, {}, duplex);
140
+ // this message should get sent immediately because its smaller than 1024
141
+ const promise1 = connection.send(newMessage(800));
142
+ await verifyPromiseResolved(promise1);
143
+ // this one should hang until we let it flow because it takes us over 1024
144
+ const promise2 = connection.send(newMessage(800));
145
+ await verifyPromisePending(promise2);
146
+ // now let the stream flow
147
+ processBytes(10 * 1024);
148
+ // this should now complete
149
+ await promise2;
150
+ });
151
+ });
152
+ // The following is taken from headers.rs tests
153
+ function newHeader(messageTypeId, length) {
154
+ return new types_js_1.Header(messageTypeId, length);
155
+ }
156
+ function newStart(length) {
157
+ return new types_js_1.Header(protocol_js_1.START_MESSAGE_TYPE, length, undefined, undefined);
158
+ }
159
+ function newCompletableEntry(ty, completed, length) {
160
+ return new types_js_1.Header(ty, length, completed);
161
+ }
162
+ function newMessage(size) {
163
+ return new types_js_1.Message(protocol_js_1.SET_STATE_ENTRY_MESSAGE_TYPE, new protocol_js_1.SetStateEntryMessage({
164
+ key: Buffer.from("abcd"),
165
+ value: Buffer.alloc(size),
166
+ }));
167
+ }
168
+ function sameTruthness(a, b) {
169
+ if (a) {
170
+ (0, vitest_1.expect)(b).toBeTruthy();
171
+ }
172
+ else {
173
+ (0, vitest_1.expect)(b).toBeFalsy();
174
+ }
175
+ }
176
+ async function verifyPromisePending(promise) {
177
+ let complete = false;
178
+ void promise.then(() => {
179
+ complete = true;
180
+ });
181
+ await (0, promises_1.setTimeout)(0); // let the callbacks and tasks proceed first
182
+ (0, vitest_1.expect)(complete).toBeFalsy();
183
+ }
184
+ async function verifyPromiseResolved(promise) {
185
+ let complete = false;
186
+ void promise.then(() => {
187
+ complete = true;
188
+ });
189
+ await (0, promises_1.setTimeout)(0); // let the callbacks and tasks proceed first
190
+ (0, vitest_1.expect)(complete).toBeTruthy();
191
+ }
192
+ function roundtripTest(a) {
193
+ const b = types_js_1.Header.fromU64be(a.toU64be());
194
+ (0, vitest_1.expect)(b.messageType).toStrictEqual(a.messageType);
195
+ (0, vitest_1.expect)(b.frameLength).toStrictEqual(a.frameLength);
196
+ sameTruthness(a.completedFlag, b.completedFlag);
197
+ sameTruthness(a.requiresAckFlag, b.requiresAckFlag);
198
+ sameTruthness(a.partialStateFlag, b.partialStateFlag);
199
+ }
200
+ function mockHttp2DuplexStream() {
201
+ // pipe output into input
202
+ return new stream.TransformStream();
203
+ }
204
+ function mockBackpressuredDuplex(highWaterMark) {
205
+ let permittedBytes = 0;
206
+ const queue = [];
207
+ const writable = new stream.WritableStream({
208
+ write: async (chunk) => {
209
+ if (permittedBytes >= chunk.length) {
210
+ permittedBytes -= chunk.length;
211
+ }
212
+ else {
213
+ permittedBytes = 0;
214
+ await new Promise((resolve) => {
215
+ queue.push({ bytes: chunk.length - permittedBytes, cb: resolve });
216
+ });
217
+ }
218
+ },
219
+ }, new stream.ByteLengthQueuingStrategy({ highWaterMark }));
220
+ function processBytes(numBytes) {
221
+ while (queue.length > 0 && numBytes > 0) {
222
+ const next = queue[0];
223
+ if (next.bytes > numBytes) {
224
+ next.bytes -= numBytes;
225
+ numBytes = 0;
226
+ }
227
+ else {
228
+ numBytes -= next.bytes;
229
+ queue.pop();
230
+ process.nextTick(next.cb);
231
+ }
232
+ }
233
+ permittedBytes += numBytes;
234
+ }
235
+ return {
236
+ duplex: {
237
+ readable: new stream.ReadableStream(),
238
+ writable,
239
+ },
240
+ processBytes,
241
+ };
242
+ }
243
+ //# sourceMappingURL=protocol_stream.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol_stream.test.js","sourceRoot":"","sources":["../../../test/protocol_stream.test.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,0DAOkC;AAClC,mEAAoE;AACpE,oDAAwD;AACxD,wDAA0C;AAC1C,8CAA6C;AAC7C,0DAA8D;AAC9D,mCAA8C;AAC9C,gDAI0B;AAE1B,oDAAoD;AACpD,IAAA,iBAAQ,EAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,IAAA,WAAE,EAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,CAAC,GAAG,IAAI,iBAAM,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAClC,MAAM,CAAC,GAAG,iBAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAExC,IAAA,eAAM,EAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,aAAa,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAErD,IAAA,WAAE,EAAC,iBAAiB,EAAE,GAAG,EAAE,CACzB,aAAa,CAAC,SAAS,CAAC,qCAAuB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAEzD,IAAA,WAAE,EAAC,qBAAqB,EAAE,GAAG,EAAE,CAC7B,aAAa,CAAC,mBAAmB,CAAC,0CAA4B,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAE7E,IAAA,WAAE,EAAC,yBAAyB,EAAE,GAAG,EAAE,CACjC,aAAa,CAAC,mBAAmB,CAAC,0CAA4B,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9E,IAAA,WAAE,EAAC,8BAA8B,EAAE,GAAG,EAAE,CACtC,aAAa,CACX,mBAAmB,CAAC,0CAA4B,EAAE,IAAI,EAAE,KAAK,CAAC,CAC/D,CAAC,CAAC;IAEL,IAAA,WAAE,EAAC,cAAc,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAEnE,IAAA,WAAE,EAAC,gCAAgC,EAAE,GAAG,EAAE,CACxC,aAAa,CAAC,IAAI,iBAAM,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC,CAAC,CAAC;AAEH,MAAM,IAAI,GAAG,IAAA,gCAAoB,EAAC,yBAAa,EAAE,qBAAS,CAAC,MAAM,CAAC,CAAC;AAEnE,IAAA,iBAAQ,EAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,IAAA,WAAE,EAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;QAC3E,+FAA+F;QAC/F,sDAAsD;QACtD,MAAM,WAAW,GAAG,qBAAqB,EAAE,CAAC;QAE5C,4EAA4E;QAC5E,yFAAyF;QACzF,MAAM,aAAa,GAAG,IAAI,iCAAiB,CAAC,IAAI,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;QAEnE,8DAA8D;QAC9D,wEAAwE;QACxE,MAAM,MAAM,GAAG,IAAI,gCAAkB,EAAW,CAAC;QAEjD,aAAa,CAAC,cAAc,CAAC;YAC3B,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE;gBACnB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAClB,OAAO,KAAK,CAAC;YACf,CAAC;YAED,gEAAgE;YAChE,iBAAiB,EAAE,GAAG,EAAE,GAAE,CAAC;YAE3B,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;SACnD,CAAC,CAAC;QAEH,wCAAwC;QACxC,KAAK,aAAa,CAAC,IAAI,CACrB,IAAI,kBAAO,CACT,gCAAkB,EAClB,IAAI,0BAAY,CAAC;YACf,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;YACvB,OAAO,EAAE,MAAM;YACf,YAAY,EAAE,IAAI;SACnB,CAAC,EACF,SAAS,CACV,CACF,CAAC;QAEF,+BAA+B;QAC/B,MAAM,aAAa,CAAC,GAAG,EAAE,CAAC;QAC1B,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;QAEjC,IAAA,eAAM,EAAC,GAAG,CAAC,WAAW,CAAC,CAAC,aAAa,CAAC,gCAAkB,CAAC,CAAC;QAC1D,IAAA,eAAM,EAAE,GAAG,CAAC,OAAwB,CAAC,YAAY,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC;QAC9D,MAAM,UAAU,GAAG,IAAI,iCAAiB,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;QAE3D,gFAAgF;QAChF,KAAK,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC;QAE9B,MAAM,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAEjC,0BAA0B;QAC1B,YAAY,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;QAExB,sCAAsC;QACtC,MAAM,IAAI,CAAC;IACb,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;QAChE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC;QAC9D,MAAM,UAAU,GAAG,IAAI,iCAAiB,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;QAE3D,iEAAiE;QACjE,KAAK,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QACvC,KAAK,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QACvC,KAAK,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QACvC,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC;QAE9B,MAAM,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAEjC,0BAA0B;QAC1B,YAAY,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;QAExB,sCAAsC;QACtC,MAAM,IAAI,CAAC;IACb,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QAClE,MAAM,EAAE,MAAM,EAAE,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,UAAU,GAAG,IAAI,iCAAiB,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;QAE3D,0CAA0C;QAC1C,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;QAEjD,MAAM,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QACtC,MAAM,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAC9D,MAAM,EAAE,MAAM,EAAE,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,UAAU,GAAG,IAAI,iCAAiB,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;QAE3D,yEAAyE;QACzE,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QAClD,MAAM,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QAEtC,qDAAqD;QACrD,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QAClD,MAAM,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;QAC1E,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAC/D,MAAM,UAAU,GAAG,IAAI,iCAAiB,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;QAE3D,yEAAyE;QACzE,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QAClD,MAAM,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QACtC,0EAA0E;QAC1E,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QAClD,MAAM,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAErC,0BAA0B;QAC1B,YAAY,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;QAExB,2BAA2B;QAC3B,MAAM,QAAQ,CAAC;IACjB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,+CAA+C;AAC/C,SAAS,SAAS,CAAC,aAAqB,EAAE,MAAc;IACtD,OAAO,IAAI,iBAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,QAAQ,CAAC,MAAc;IAC9B,OAAO,IAAI,iBAAM,CAAC,gCAAkB,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,mBAAmB,CAC1B,EAAU,EACV,SAAkB,EAClB,MAAc;IAEd,OAAO,IAAI,iBAAM,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,IAAI,kBAAO,CAChB,0CAA4B,EAC5B,IAAI,kCAAoB,CAAC;QACvB,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QACxB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;KAC1B,CAAC,CACH,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAO,CAAI,EAAE,CAAI;IACrC,IAAI,CAAC,EAAE,CAAC;QACN,IAAA,eAAM,EAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;IACzB,CAAC;SAAM,CAAC;QACN,IAAA,eAAM,EAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;IACxB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,OAAyB;IAC3D,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE;QACrB,QAAQ,GAAG,IAAI,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,MAAM,IAAA,qBAAU,EAAC,CAAC,CAAC,CAAC,CAAC,4CAA4C;IAEjE,IAAA,eAAM,EAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,CAAC;AAC/B,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,OAAyB;IAC5D,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE;QACrB,QAAQ,GAAG,IAAI,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,MAAM,IAAA,qBAAU,EAAC,CAAC,CAAC,CAAC,CAAC,4CAA4C;IAEjE,IAAA,eAAM,EAAC,QAAQ,CAAC,CAAC,UAAU,EAAE,CAAC;AAChC,CAAC;AAED,SAAS,aAAa,CAAC,CAAS;IAC9B,MAAM,CAAC,GAAG,iBAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IACxC,IAAA,eAAM,EAAC,CAAC,CAAC,WAAW,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IACnD,IAAA,eAAM,EAAC,CAAC,CAAC,WAAW,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IACnD,aAAa,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC;IAChD,aAAa,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC;IACpD,aAAa,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,gBAAgB,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,qBAAqB;IAI5B,yBAAyB;IACzB,OAAO,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;AACtC,CAAC;AAED,SAAS,uBAAuB,CAAC,aAAqB;IAIpD,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,MAAM,KAAK,GAAsD,EAAE,CAAC;IAEpE,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,cAAc,CACxC;QACE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACrB,IAAI,cAAc,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACnC,cAAc,IAAI,KAAK,CAAC,MAAM,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACN,cAAc,GAAG,CAAC,CAAC;gBACnB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;oBAC5B,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,cAAc,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;gBACpE,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;KACF,EACD,IAAI,MAAM,CAAC,yBAAyB,CAAC,EAAE,aAAa,EAAE,CAAC,CACxD,CAAC;IAEF,SAAS,YAAY,CAAC,QAAgB;QACpC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAEtB,IAAI,IAAI,CAAC,KAAK,GAAG,QAAQ,EAAE,CAAC;gBAC1B,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC;gBACvB,QAAQ,GAAG,CAAC,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC;gBACvB,KAAK,CAAC,GAAG,EAAE,CAAC;gBACZ,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;QACD,cAAc,IAAI,QAAQ,CAAC;IAC7B,CAAC;IAED,OAAO;QACL,MAAM,EAAE;YACN,QAAQ,EAAE,IAAI,MAAM,CAAC,cAAc,EAAE;YACrC,QAAQ;SACT;QACD,YAAY;KACb,CAAC;AACJ,CAAC"}
@@ -0,0 +1,44 @@
1
+ /// <reference types="node" />
2
+ import { Empty } from "@bufbuild/protobuf";
3
+ import { Message } from "../src/types/types.js";
4
+ import { Failure, StartMessage_StateEntry } from "../src/generated/proto/protocol_pb.js";
5
+ import type { JournalErrorContext } from "../src/types/errors.js";
6
+ export type StartMessageOpts = {
7
+ knownEntries?: number;
8
+ partialState?: boolean;
9
+ state?: Buffer[][];
10
+ key?: string;
11
+ };
12
+ export declare function startMessage({ knownEntries, partialState, state, key, }?: StartMessageOpts): Message;
13
+ export declare function toStateEntries(entries: Buffer[][]): StartMessage_StateEntry[];
14
+ export declare function inputMessage(value: Uint8Array): Message;
15
+ export declare function outputMessage(value?: Uint8Array, failure?: Failure): Message;
16
+ export declare function getStateMessage<T>(key: string, value?: T, empty?: boolean, failure?: Failure): Message;
17
+ export declare function getStateMessageWithEmptyResult(key: string): Message;
18
+ export declare function getStateKeysMessage(value?: Array<string>): Message;
19
+ export declare function setStateMessage<T>(key: string, value: T): Message;
20
+ export declare function clearStateMessage(key: string): Message;
21
+ export declare function sleepMessage(wakeupTime: number, empty?: Empty, failure?: Failure): Message;
22
+ export declare function completionMessage(index: number, value?: any, empty?: boolean, failure?: Failure): Message;
23
+ export declare function completionMessageWithEmpty(index: number): Message;
24
+ export declare function ackMessage(index: number): Message;
25
+ export declare function invokeMessage(serviceName: string, handlerName: string, parameter: Uint8Array, value?: Uint8Array, failure?: Failure, key?: string): Message;
26
+ export declare function backgroundInvokeMessage(serviceName: string, handlerName: string, parameter: Uint8Array, invokeTime?: number, key?: string): Message;
27
+ export declare function sideEffectMessage<T>(value?: T, failure?: Failure, name?: string): Message;
28
+ export declare function awakeableMessage<T>(payload?: T, failure?: Failure): Message;
29
+ export declare function resolveAwakeableMessage<T>(id: string, payload: T): Message;
30
+ export declare function rejectAwakeableMessage(id: string, reason: string): Message;
31
+ export declare function suspensionMessage(entryIndices: number[]): Message;
32
+ export declare function combinatorEntryMessage(combinatorId: number, journalEntriesOrder: number[]): Message;
33
+ export declare function failure(msg: string, code?: number): Failure;
34
+ export declare function greetRequest(myName: string): Uint8Array;
35
+ export declare function greetResponse(myGreeting: string): Uint8Array;
36
+ export declare function errorMessage(failure: Failure, ctx?: JournalErrorContext): Message;
37
+ export declare function checkError(outputMsg: Message, errorMessage: string, code?: number): void;
38
+ export declare function checkJournalMismatchError(outputMsg: Message): void;
39
+ export declare function checkTerminalError(outputMsg: Message, errorMessage: string): void;
40
+ export declare function getAwakeableId(entryIndex: number): string;
41
+ export declare function keyVal(key: string, value: any): Buffer[];
42
+ export declare const END_MESSAGE: Message;
43
+ export declare const CLEAR_ALL_STATE_ENTRY_MESSAGE: Message;
44
+ //# sourceMappingURL=protoutils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protoutils.d.ts","sourceRoot":"","sources":["../../../test/protoutils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,359 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2023-2024 - Restate Software, Inc., Restate GmbH
4
+ *
5
+ * This file is part of the Restate SDK for Node.js/TypeScript,
6
+ * which is released under the MIT license.
7
+ *
8
+ * You can find a copy of the license in file LICENSE in the root
9
+ * directory of this repository or package, or at
10
+ * https://github.com/restatedev/sdk-typescript/blob/main/LICENSE
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.CLEAR_ALL_STATE_ENTRY_MESSAGE = exports.END_MESSAGE = exports.keyVal = exports.getAwakeableId = exports.checkTerminalError = exports.checkJournalMismatchError = exports.checkError = exports.errorMessage = exports.greetResponse = exports.greetRequest = exports.failure = exports.combinatorEntryMessage = exports.suspensionMessage = exports.rejectAwakeableMessage = exports.resolveAwakeableMessage = exports.awakeableMessage = exports.sideEffectMessage = exports.backgroundInvokeMessage = exports.invokeMessage = exports.ackMessage = exports.completionMessageWithEmpty = exports.completionMessage = exports.sleepMessage = exports.clearStateMessage = exports.setStateMessage = exports.getStateKeysMessage = exports.getStateMessageWithEmptyResult = exports.getStateMessage = exports.outputMessage = exports.inputMessage = exports.toStateEntries = exports.startMessage = void 0;
14
+ /* istanbul ignore file */
15
+ const protobuf_1 = require("@bufbuild/protobuf");
16
+ const protocol_js_1 = require("../src/types/protocol.js");
17
+ const types_js_1 = require("../src/types/types.js");
18
+ const javascript_pb_js_1 = require("../src/generated/proto/javascript_pb.js");
19
+ const protocol_pb_js_1 = require("../src/generated/proto/protocol_pb.js");
20
+ const utils_js_1 = require("../src/utils/utils.js");
21
+ const errors_js_1 = require("../src/types/errors.js");
22
+ const vitest_1 = require("vitest");
23
+ function startMessage({ knownEntries, partialState, state, key, } = {}) {
24
+ return new types_js_1.Message(protocol_js_1.START_MESSAGE_TYPE, new protocol_js_1.StartMessage({
25
+ id: Buffer.from("f311f1fdcb9863f0018bd3400ecd7d69b547204e776218b2", "hex"),
26
+ debugId: "8xHx_cuYY_AAYvTQA7NfWm1RyBOd2IYsg",
27
+ knownEntries: knownEntries, // only used for the Lambda case. For bidi streaming, this will be imputed by the testdriver
28
+ stateMap: toStateEntries(state || []),
29
+ partialState: partialState !== false,
30
+ key: key ?? "Till",
31
+ }), undefined, undefined);
32
+ }
33
+ exports.startMessage = startMessage;
34
+ function toStateEntries(entries) {
35
+ return (entries.map((el) => new protocol_pb_js_1.StartMessage_StateEntry({ key: el[0], value: el[1] })) || []);
36
+ }
37
+ exports.toStateEntries = toStateEntries;
38
+ function inputMessage(value) {
39
+ if (value !== undefined) {
40
+ return new types_js_1.Message(protocol_js_1.INPUT_ENTRY_MESSAGE_TYPE, new protocol_js_1.InputEntryMessage({
41
+ value,
42
+ }));
43
+ }
44
+ else {
45
+ throw new Error("Input message needs either a value or a failure set.");
46
+ }
47
+ }
48
+ exports.inputMessage = inputMessage;
49
+ function outputMessage(value, failure) {
50
+ if (value !== undefined) {
51
+ return new types_js_1.Message(protocol_js_1.OUTPUT_ENTRY_MESSAGE_TYPE, new protocol_js_1.OutputEntryMessage({
52
+ result: { case: "value", value: Buffer.from(value) },
53
+ }));
54
+ }
55
+ else if (failure !== undefined) {
56
+ return new types_js_1.Message(protocol_js_1.OUTPUT_ENTRY_MESSAGE_TYPE, new protocol_js_1.OutputEntryMessage({
57
+ result: { case: "failure", value: failure },
58
+ }));
59
+ }
60
+ else {
61
+ return new types_js_1.Message(protocol_js_1.OUTPUT_ENTRY_MESSAGE_TYPE, new protocol_js_1.OutputEntryMessage({
62
+ result: {
63
+ case: "failure",
64
+ value: new protocol_pb_js_1.Failure({
65
+ code: 13,
66
+ message: `Uncaught exception for invocation id abcd`,
67
+ }),
68
+ },
69
+ }));
70
+ }
71
+ }
72
+ exports.outputMessage = outputMessage;
73
+ function getStateMessage(key, value, empty, failure) {
74
+ if (empty === true) {
75
+ return new types_js_1.Message(protocol_js_1.GET_STATE_ENTRY_MESSAGE_TYPE, new protocol_js_1.GetStateEntryMessage({
76
+ key: Buffer.from(key),
77
+ result: { case: "empty", value: new protobuf_1.Empty() },
78
+ }), true);
79
+ }
80
+ else if (value !== undefined) {
81
+ return new types_js_1.Message(protocol_js_1.GET_STATE_ENTRY_MESSAGE_TYPE, new protocol_js_1.GetStateEntryMessage({
82
+ key: Buffer.from(key),
83
+ result: { case: "value", value: Buffer.from((0, utils_js_1.jsonSerialize)(value)) },
84
+ }), true);
85
+ }
86
+ else if (failure !== undefined) {
87
+ return new types_js_1.Message(protocol_js_1.GET_STATE_ENTRY_MESSAGE_TYPE, new protocol_js_1.GetStateEntryMessage({
88
+ key: Buffer.from(key),
89
+ result: { case: "failure", value: failure },
90
+ }), true);
91
+ }
92
+ else {
93
+ return new types_js_1.Message(protocol_js_1.GET_STATE_ENTRY_MESSAGE_TYPE, new protocol_js_1.GetStateEntryMessage({
94
+ key: Buffer.from(key),
95
+ }), false);
96
+ }
97
+ }
98
+ exports.getStateMessage = getStateMessage;
99
+ function getStateMessageWithEmptyResult(key) {
100
+ return getStateMessage(key, undefined, true);
101
+ }
102
+ exports.getStateMessageWithEmptyResult = getStateMessageWithEmptyResult;
103
+ function getStateKeysMessage(value) {
104
+ if (value === undefined) {
105
+ return new types_js_1.Message(protocol_js_1.GET_STATE_KEYS_ENTRY_MESSAGE_TYPE, new protocol_js_1.GetStateKeysEntryMessage({}), false);
106
+ }
107
+ else {
108
+ return new types_js_1.Message(protocol_js_1.GET_STATE_KEYS_ENTRY_MESSAGE_TYPE, new protocol_js_1.GetStateKeysEntryMessage({
109
+ result: {
110
+ case: "value",
111
+ value: { keys: value.map((b) => Buffer.from(b)) },
112
+ },
113
+ }), true);
114
+ }
115
+ }
116
+ exports.getStateKeysMessage = getStateKeysMessage;
117
+ function setStateMessage(key, value) {
118
+ return new types_js_1.Message(protocol_js_1.SET_STATE_ENTRY_MESSAGE_TYPE, new protocol_js_1.SetStateEntryMessage({
119
+ key: Buffer.from(key),
120
+ value: Buffer.from((0, utils_js_1.jsonSerialize)(value)),
121
+ }));
122
+ }
123
+ exports.setStateMessage = setStateMessage;
124
+ function clearStateMessage(key) {
125
+ return new types_js_1.Message(protocol_js_1.CLEAR_STATE_ENTRY_MESSAGE_TYPE, new protocol_js_1.ClearStateEntryMessage({
126
+ key: Buffer.from(key),
127
+ }));
128
+ }
129
+ exports.clearStateMessage = clearStateMessage;
130
+ function sleepMessage(wakeupTime, empty, failure) {
131
+ if (empty !== undefined) {
132
+ return new types_js_1.Message(protocol_js_1.SLEEP_ENTRY_MESSAGE_TYPE, new protocol_js_1.SleepEntryMessage({
133
+ wakeUpTime: protobuf_1.protoInt64.parse(wakeupTime),
134
+ result: { case: "empty", value: empty },
135
+ }));
136
+ }
137
+ else if (failure !== undefined) {
138
+ return new types_js_1.Message(protocol_js_1.SLEEP_ENTRY_MESSAGE_TYPE, new protocol_js_1.SleepEntryMessage({
139
+ wakeUpTime: protobuf_1.protoInt64.parse(wakeupTime),
140
+ result: { case: "failure", value: failure },
141
+ }));
142
+ }
143
+ else {
144
+ return new types_js_1.Message(protocol_js_1.SLEEP_ENTRY_MESSAGE_TYPE, new protocol_js_1.SleepEntryMessage({
145
+ wakeUpTime: protobuf_1.protoInt64.parse(wakeupTime),
146
+ }));
147
+ }
148
+ }
149
+ exports.sleepMessage = sleepMessage;
150
+ function completionMessage(index,
151
+ /* eslint-disable @typescript-eslint/no-explicit-any */
152
+ value, empty, failure) {
153
+ if (value !== undefined) {
154
+ return new types_js_1.Message(protocol_js_1.COMPLETION_MESSAGE_TYPE, new protocol_js_1.CompletionMessage({
155
+ entryIndex: index,
156
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
157
+ result: { case: "value", value: Buffer.from(value) },
158
+ }));
159
+ }
160
+ else if (empty) {
161
+ return new types_js_1.Message(protocol_js_1.COMPLETION_MESSAGE_TYPE, new protocol_js_1.CompletionMessage({
162
+ entryIndex: index,
163
+ result: { case: "empty", value: new protobuf_1.Empty() },
164
+ }));
165
+ }
166
+ else if (failure != undefined) {
167
+ return new types_js_1.Message(protocol_js_1.COMPLETION_MESSAGE_TYPE, new protocol_js_1.CompletionMessage({
168
+ entryIndex: index,
169
+ result: { case: "failure", value: failure },
170
+ }));
171
+ }
172
+ else {
173
+ return new types_js_1.Message(protocol_js_1.COMPLETION_MESSAGE_TYPE, new protocol_js_1.CompletionMessage({
174
+ entryIndex: index,
175
+ }));
176
+ }
177
+ }
178
+ exports.completionMessage = completionMessage;
179
+ function completionMessageWithEmpty(index) {
180
+ return new types_js_1.Message(protocol_js_1.COMPLETION_MESSAGE_TYPE, new protocol_js_1.CompletionMessage({
181
+ entryIndex: index,
182
+ result: { case: "empty", value: new protobuf_1.Empty() },
183
+ }));
184
+ }
185
+ exports.completionMessageWithEmpty = completionMessageWithEmpty;
186
+ function ackMessage(index) {
187
+ return new types_js_1.Message(protocol_js_1.ENTRY_ACK_MESSAGE_TYPE, new protocol_js_1.EntryAckMessage({
188
+ entryIndex: index,
189
+ }));
190
+ }
191
+ exports.ackMessage = ackMessage;
192
+ function invokeMessage(serviceName, handlerName, parameter, value, failure, key) {
193
+ if (value != undefined) {
194
+ return new types_js_1.Message(protocol_js_1.INVOKE_ENTRY_MESSAGE_TYPE, new protocol_js_1.CallEntryMessage({
195
+ serviceName: serviceName,
196
+ handlerName: handlerName,
197
+ parameter: Buffer.from(parameter),
198
+ result: { case: "value", value: value },
199
+ key,
200
+ }));
201
+ }
202
+ else if (failure != undefined) {
203
+ return new types_js_1.Message(protocol_js_1.INVOKE_ENTRY_MESSAGE_TYPE, new protocol_js_1.CallEntryMessage({
204
+ serviceName: serviceName,
205
+ handlerName: handlerName,
206
+ parameter: Buffer.from(parameter),
207
+ result: { case: "failure", value: failure },
208
+ key,
209
+ }));
210
+ }
211
+ else {
212
+ return new types_js_1.Message(protocol_js_1.INVOKE_ENTRY_MESSAGE_TYPE, new protocol_js_1.CallEntryMessage({
213
+ serviceName: serviceName,
214
+ handlerName: handlerName,
215
+ parameter: Buffer.from(parameter),
216
+ key,
217
+ }));
218
+ }
219
+ }
220
+ exports.invokeMessage = invokeMessage;
221
+ function backgroundInvokeMessage(serviceName, handlerName, parameter, invokeTime, key) {
222
+ return invokeTime
223
+ ? new types_js_1.Message(protocol_js_1.BACKGROUND_INVOKE_ENTRY_MESSAGE_TYPE, new protocol_js_1.OneWayCallEntryMessage({
224
+ serviceName: serviceName,
225
+ handlerName: handlerName,
226
+ parameter: Buffer.from(parameter),
227
+ invokeTime: protobuf_1.protoInt64.parse(invokeTime),
228
+ key,
229
+ }))
230
+ : new types_js_1.Message(protocol_js_1.BACKGROUND_INVOKE_ENTRY_MESSAGE_TYPE, new protocol_js_1.OneWayCallEntryMessage({
231
+ serviceName: serviceName,
232
+ handlerName: handlerName,
233
+ parameter: Buffer.from(parameter),
234
+ }));
235
+ }
236
+ exports.backgroundInvokeMessage = backgroundInvokeMessage;
237
+ function sideEffectMessage(value, failure, name) {
238
+ if (value !== undefined) {
239
+ return new types_js_1.Message(protocol_js_1.SIDE_EFFECT_ENTRY_MESSAGE_TYPE, new protocol_pb_js_1.RunEntryMessage({
240
+ name,
241
+ result: { case: "value", value: Buffer.from(JSON.stringify(value)) },
242
+ }), false, true);
243
+ }
244
+ else if (failure !== undefined) {
245
+ return new types_js_1.Message(protocol_js_1.SIDE_EFFECT_ENTRY_MESSAGE_TYPE, new protocol_pb_js_1.RunEntryMessage({
246
+ name,
247
+ result: { case: "failure", value: failure },
248
+ }), false, true);
249
+ }
250
+ else {
251
+ return new types_js_1.Message(protocol_js_1.SIDE_EFFECT_ENTRY_MESSAGE_TYPE, new protocol_pb_js_1.RunEntryMessage({ name }), false, true);
252
+ }
253
+ }
254
+ exports.sideEffectMessage = sideEffectMessage;
255
+ function awakeableMessage(payload, failure) {
256
+ if (payload) {
257
+ return new types_js_1.Message(protocol_js_1.AWAKEABLE_ENTRY_MESSAGE_TYPE, new protocol_js_1.AwakeableEntryMessage({
258
+ result: { case: "value", value: Buffer.from(JSON.stringify(payload)) },
259
+ }));
260
+ }
261
+ else if (failure) {
262
+ return new types_js_1.Message(protocol_js_1.AWAKEABLE_ENTRY_MESSAGE_TYPE, new protocol_js_1.AwakeableEntryMessage({
263
+ result: { case: "failure", value: failure },
264
+ }));
265
+ }
266
+ else {
267
+ return new types_js_1.Message(protocol_js_1.AWAKEABLE_ENTRY_MESSAGE_TYPE, new protocol_js_1.AwakeableEntryMessage());
268
+ }
269
+ }
270
+ exports.awakeableMessage = awakeableMessage;
271
+ function resolveAwakeableMessage(id, payload) {
272
+ return new types_js_1.Message(protocol_js_1.COMPLETE_AWAKEABLE_ENTRY_MESSAGE_TYPE, new protocol_js_1.CompleteAwakeableEntryMessage({
273
+ id: id,
274
+ result: { case: "value", value: Buffer.from(JSON.stringify(payload)) },
275
+ }));
276
+ }
277
+ exports.resolveAwakeableMessage = resolveAwakeableMessage;
278
+ function rejectAwakeableMessage(id, reason) {
279
+ return new types_js_1.Message(protocol_js_1.COMPLETE_AWAKEABLE_ENTRY_MESSAGE_TYPE, new protocol_js_1.CompleteAwakeableEntryMessage({
280
+ id: id,
281
+ result: {
282
+ case: "failure",
283
+ value: { code: errors_js_1.UNKNOWN_ERROR_CODE, message: reason },
284
+ },
285
+ }));
286
+ }
287
+ exports.rejectAwakeableMessage = rejectAwakeableMessage;
288
+ function suspensionMessage(entryIndices) {
289
+ return new types_js_1.Message(protocol_js_1.SUSPENSION_MESSAGE_TYPE, new protocol_js_1.SuspensionMessage({
290
+ entryIndexes: entryIndices,
291
+ }));
292
+ }
293
+ exports.suspensionMessage = suspensionMessage;
294
+ function combinatorEntryMessage(combinatorId, journalEntriesOrder) {
295
+ return new types_js_1.Message(protocol_js_1.COMBINATOR_ENTRY_MESSAGE, new javascript_pb_js_1.CombinatorEntryMessage({
296
+ combinatorId,
297
+ journalEntriesOrder,
298
+ }), undefined, true);
299
+ }
300
+ exports.combinatorEntryMessage = combinatorEntryMessage;
301
+ function failure(msg, code = errors_js_1.INTERNAL_ERROR_CODE) {
302
+ return new protocol_pb_js_1.Failure({ code: code, message: msg });
303
+ }
304
+ exports.failure = failure;
305
+ function greetRequest(myName) {
306
+ const str = JSON.stringify({ name: myName });
307
+ return Buffer.from(str);
308
+ }
309
+ exports.greetRequest = greetRequest;
310
+ function greetResponse(myGreeting) {
311
+ const str = JSON.stringify({ greeting: myGreeting });
312
+ return Buffer.from(str);
313
+ }
314
+ exports.greetResponse = greetResponse;
315
+ function errorMessage(failure, ctx) {
316
+ return new types_js_1.Message(protocol_js_1.ERROR_MESSAGE_TYPE, new protocol_js_1.ErrorMessage({
317
+ message: failure.message,
318
+ code: failure.code,
319
+ relatedEntryIndex: ctx?.relatedEntryIndex,
320
+ relatedEntryType: ctx?.relatedEntryType
321
+ ? Number(ctx.relatedEntryType)
322
+ : undefined,
323
+ relatedEntryName: ctx?.relatedEntryName,
324
+ }));
325
+ }
326
+ exports.errorMessage = errorMessage;
327
+ function checkError(outputMsg, errorMessage, code = errors_js_1.INTERNAL_ERROR_CODE) {
328
+ (0, vitest_1.expect)(outputMsg.messageType).toEqual(protocol_js_1.ERROR_MESSAGE_TYPE);
329
+ (0, vitest_1.expect)(outputMsg.message.code).toStrictEqual(code);
330
+ (0, vitest_1.expect)(outputMsg.message.message).toContain(errorMessage);
331
+ }
332
+ exports.checkError = checkError;
333
+ function checkJournalMismatchError(outputMsg) {
334
+ checkError(outputMsg, "Journal mismatch: Replayed journal entries did not correspond to the user code. The user code has to be deterministic!", errors_js_1.RestateErrorCodes.JOURNAL_MISMATCH);
335
+ }
336
+ exports.checkJournalMismatchError = checkJournalMismatchError;
337
+ function checkTerminalError(outputMsg, errorMessage) {
338
+ (0, vitest_1.expect)(outputMsg.messageType).toEqual(protocol_js_1.OUTPUT_ENTRY_MESSAGE_TYPE);
339
+ const res = outputMsg.message.result;
340
+ (0, vitest_1.expect)(res.case === "failure" && res.value.message).toContain(errorMessage);
341
+ }
342
+ exports.checkTerminalError = checkTerminalError;
343
+ function getAwakeableId(entryIndex) {
344
+ const encodedEntryIndex = Buffer.alloc(4 /* Size of u32 */);
345
+ encodedEntryIndex.writeUInt32BE(entryIndex);
346
+ return (protocol_js_1.AWAKEABLE_IDENTIFIER_PREFIX +
347
+ Buffer.concat([
348
+ Buffer.from("f311f1fdcb9863f0018bd3400ecd7d69b547204e776218b2", "hex"),
349
+ encodedEntryIndex,
350
+ ]).toString("base64url"));
351
+ }
352
+ exports.getAwakeableId = getAwakeableId;
353
+ function keyVal(key, value) {
354
+ return [Buffer.from(key), Buffer.from(JSON.stringify(value))];
355
+ }
356
+ exports.keyVal = keyVal;
357
+ exports.END_MESSAGE = new types_js_1.Message(protocol_js_1.END_MESSAGE_TYPE, new protocol_js_1.EndMessage());
358
+ exports.CLEAR_ALL_STATE_ENTRY_MESSAGE = new types_js_1.Message(protocol_js_1.CLEAR_ALL_STATE_ENTRY_MESSAGE_TYPE, new protocol_js_1.ClearAllStateEntryMessage());
359
+ //# sourceMappingURL=protoutils.js.map