@restatedev/restate-sdk 1.3.3 → 1.5.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 (505) hide show
  1. package/README.md +6 -4
  2. package/dist/cjs/src/common_api.d.ts +5 -5
  3. package/dist/cjs/src/common_api.d.ts.map +1 -1
  4. package/dist/cjs/src/common_api.js +2 -1
  5. package/dist/cjs/src/common_api.js.map +1 -1
  6. package/dist/cjs/src/context.d.ts +103 -12
  7. package/dist/cjs/src/context.d.ts.map +1 -1
  8. package/dist/cjs/src/context.js +25 -13
  9. package/dist/cjs/src/context.js.map +1 -1
  10. package/dist/cjs/src/context_impl.d.ts +38 -24
  11. package/dist/cjs/src/context_impl.d.ts.map +1 -1
  12. package/dist/cjs/src/context_impl.js +327 -342
  13. package/dist/cjs/src/context_impl.js.map +1 -1
  14. package/dist/cjs/src/endpoint/endpoint_builder.d.ts +6 -8
  15. package/dist/cjs/src/endpoint/endpoint_builder.d.ts.map +1 -1
  16. package/dist/cjs/src/endpoint/endpoint_builder.js +23 -23
  17. package/dist/cjs/src/endpoint/endpoint_builder.js.map +1 -1
  18. package/dist/cjs/src/endpoint/fetch_endpoint.d.ts +4 -6
  19. package/dist/cjs/src/endpoint/fetch_endpoint.d.ts.map +1 -1
  20. package/dist/cjs/src/endpoint/fetch_endpoint.js +0 -4
  21. package/dist/cjs/src/endpoint/fetch_endpoint.js.map +1 -1
  22. package/dist/cjs/src/endpoint/handlers/fetch.d.ts.map +1 -1
  23. package/dist/cjs/src/endpoint/handlers/fetch.js +1 -0
  24. package/dist/cjs/src/endpoint/handlers/fetch.js.map +1 -1
  25. package/dist/cjs/src/endpoint/handlers/generic.d.ts +9 -0
  26. package/dist/cjs/src/endpoint/handlers/generic.d.ts.map +1 -1
  27. package/dist/cjs/src/endpoint/handlers/generic.js +249 -88
  28. package/dist/cjs/src/endpoint/handlers/generic.js.map +1 -1
  29. package/dist/cjs/src/endpoint/handlers/lambda.d.ts.map +1 -1
  30. package/dist/cjs/src/endpoint/handlers/lambda.js +15 -3
  31. package/dist/cjs/src/endpoint/handlers/lambda.js.map +1 -1
  32. package/dist/cjs/src/endpoint/handlers/vm/sdk_shared_core_wasm_bindings.d.ts +283 -0
  33. package/dist/cjs/src/endpoint/handlers/vm/sdk_shared_core_wasm_bindings.d.ts.map +1 -0
  34. package/dist/cjs/src/endpoint/handlers/vm/sdk_shared_core_wasm_bindings.js +1333 -0
  35. package/dist/cjs/src/endpoint/handlers/vm/sdk_shared_core_wasm_bindings.js.map +1 -0
  36. package/dist/cjs/src/endpoint/lambda_endpoint.d.ts +4 -6
  37. package/dist/cjs/src/endpoint/lambda_endpoint.d.ts.map +1 -1
  38. package/dist/cjs/src/endpoint/lambda_endpoint.js +0 -4
  39. package/dist/cjs/src/endpoint/lambda_endpoint.js.map +1 -1
  40. package/dist/cjs/src/endpoint/node_endpoint.d.ts +4 -6
  41. package/dist/cjs/src/endpoint/node_endpoint.d.ts.map +1 -1
  42. package/dist/cjs/src/endpoint/node_endpoint.js +12 -4
  43. package/dist/cjs/src/endpoint/node_endpoint.js.map +1 -1
  44. package/dist/cjs/src/endpoint.d.ts +6 -37
  45. package/dist/cjs/src/endpoint.d.ts.map +1 -1
  46. package/dist/cjs/src/generated/version.d.ts +1 -1
  47. package/dist/cjs/src/generated/version.js +1 -1
  48. package/dist/cjs/src/io.d.ts +25 -0
  49. package/dist/cjs/src/io.d.ts.map +1 -0
  50. package/dist/cjs/src/io.js +78 -0
  51. package/dist/cjs/src/io.js.map +1 -0
  52. package/dist/cjs/src/logging/console_logger_transport.d.ts +5 -0
  53. package/dist/cjs/src/logging/console_logger_transport.d.ts.map +1 -0
  54. package/dist/cjs/src/logging/console_logger_transport.js +98 -0
  55. package/dist/cjs/src/logging/console_logger_transport.js.map +1 -0
  56. package/dist/cjs/src/logging/logger.d.ts +11 -0
  57. package/dist/cjs/src/logging/logger.d.ts.map +1 -0
  58. package/dist/cjs/src/logging/logger.js +61 -0
  59. package/dist/cjs/src/logging/logger.js.map +1 -0
  60. package/dist/cjs/src/logging/logger_transport.d.ts +52 -0
  61. package/dist/cjs/src/logging/logger_transport.d.ts.map +1 -0
  62. package/dist/cjs/src/logging/logger_transport.js +59 -0
  63. package/dist/cjs/src/logging/logger_transport.js.map +1 -0
  64. package/dist/cjs/src/promises.d.ts +110 -0
  65. package/dist/cjs/src/promises.d.ts.map +1 -0
  66. package/dist/cjs/src/promises.js +323 -0
  67. package/dist/cjs/src/promises.js.map +1 -0
  68. package/dist/cjs/src/types/components.d.ts +11 -3
  69. package/dist/cjs/src/types/components.d.ts.map +1 -1
  70. package/dist/cjs/src/types/components.js +38 -5
  71. package/dist/cjs/src/types/components.js.map +1 -1
  72. package/dist/cjs/src/types/discovery.d.ts +4 -0
  73. package/dist/cjs/src/types/discovery.d.ts.map +1 -1
  74. package/dist/cjs/src/types/errors.d.ts +8 -31
  75. package/dist/cjs/src/types/errors.d.ts.map +1 -1
  76. package/dist/cjs/src/types/errors.js +18 -74
  77. package/dist/cjs/src/types/errors.js.map +1 -1
  78. package/dist/cjs/src/types/rpc.d.ts +66 -41
  79. package/dist/cjs/src/types/rpc.d.ts.map +1 -1
  80. package/dist/cjs/src/types/rpc.js +32 -83
  81. package/dist/cjs/src/types/rpc.js.map +1 -1
  82. package/dist/cjs/src/user_agent.d.ts +1 -1
  83. package/dist/cjs/src/utils/buffer.d.ts +1 -0
  84. package/dist/cjs/src/utils/buffer.d.ts.map +1 -1
  85. package/dist/cjs/src/utils/completable_promise.d.ts +9 -0
  86. package/dist/cjs/src/utils/completable_promise.d.ts.map +1 -0
  87. package/dist/cjs/src/utils/completable_promise.js +34 -0
  88. package/dist/cjs/src/utils/completable_promise.js.map +1 -0
  89. package/dist/cjs/src/utils/rand.d.ts +1 -1
  90. package/dist/cjs/src/utils/rand.d.ts.map +1 -1
  91. package/dist/cjs/src/utils/rand.js +1 -1
  92. package/dist/cjs/src/utils/rand.js.map +1 -1
  93. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  94. package/dist/esm/src/common_api.d.ts +5 -5
  95. package/dist/esm/src/common_api.d.ts.map +1 -1
  96. package/dist/esm/src/common_api.js +1 -1
  97. package/dist/esm/src/common_api.js.map +1 -1
  98. package/dist/esm/src/context.d.ts +103 -12
  99. package/dist/esm/src/context.d.ts.map +1 -1
  100. package/dist/esm/src/context.js +24 -12
  101. package/dist/esm/src/context.js.map +1 -1
  102. package/dist/esm/src/context_impl.d.ts +38 -24
  103. package/dist/esm/src/context_impl.d.ts.map +1 -1
  104. package/dist/esm/src/context_impl.js +325 -341
  105. package/dist/esm/src/context_impl.js.map +1 -1
  106. package/dist/esm/src/endpoint/endpoint_builder.d.ts +6 -8
  107. package/dist/esm/src/endpoint/endpoint_builder.d.ts.map +1 -1
  108. package/dist/esm/src/endpoint/endpoint_builder.js +23 -23
  109. package/dist/esm/src/endpoint/endpoint_builder.js.map +1 -1
  110. package/dist/esm/src/endpoint/fetch_endpoint.d.ts +4 -6
  111. package/dist/esm/src/endpoint/fetch_endpoint.d.ts.map +1 -1
  112. package/dist/esm/src/endpoint/fetch_endpoint.js +0 -4
  113. package/dist/esm/src/endpoint/fetch_endpoint.js.map +1 -1
  114. package/dist/esm/src/endpoint/handlers/fetch.d.ts.map +1 -1
  115. package/dist/esm/src/endpoint/handlers/fetch.js +1 -0
  116. package/dist/esm/src/endpoint/handlers/fetch.js.map +1 -1
  117. package/dist/esm/src/endpoint/handlers/generic.d.ts +9 -0
  118. package/dist/esm/src/endpoint/handlers/generic.d.ts.map +1 -1
  119. package/dist/esm/src/endpoint/handlers/generic.js +226 -89
  120. package/dist/esm/src/endpoint/handlers/generic.js.map +1 -1
  121. package/dist/esm/src/endpoint/handlers/lambda.d.ts.map +1 -1
  122. package/dist/esm/src/endpoint/handlers/lambda.js +15 -3
  123. package/dist/esm/src/endpoint/handlers/lambda.js.map +1 -1
  124. package/dist/esm/src/endpoint/handlers/vm/sdk_shared_core_wasm_bindings.d.ts +283 -0
  125. package/dist/esm/src/endpoint/handlers/vm/sdk_shared_core_wasm_bindings.d.ts.map +1 -0
  126. package/dist/esm/src/endpoint/handlers/vm/sdk_shared_core_wasm_bindings.js +1322 -0
  127. package/dist/esm/src/endpoint/handlers/vm/sdk_shared_core_wasm_bindings.js.map +1 -0
  128. package/dist/esm/src/endpoint/lambda_endpoint.d.ts +4 -6
  129. package/dist/esm/src/endpoint/lambda_endpoint.d.ts.map +1 -1
  130. package/dist/esm/src/endpoint/lambda_endpoint.js +0 -4
  131. package/dist/esm/src/endpoint/lambda_endpoint.js.map +1 -1
  132. package/dist/esm/src/endpoint/node_endpoint.d.ts +4 -6
  133. package/dist/esm/src/endpoint/node_endpoint.d.ts.map +1 -1
  134. package/dist/esm/src/endpoint/node_endpoint.js +12 -4
  135. package/dist/esm/src/endpoint/node_endpoint.js.map +1 -1
  136. package/dist/esm/src/endpoint.d.ts +6 -37
  137. package/dist/esm/src/endpoint.d.ts.map +1 -1
  138. package/dist/esm/src/generated/version.d.ts +1 -1
  139. package/dist/esm/src/generated/version.js +1 -1
  140. package/dist/esm/src/io.d.ts +25 -0
  141. package/dist/esm/src/io.d.ts.map +1 -0
  142. package/dist/esm/src/io.js +73 -0
  143. package/dist/esm/src/io.js.map +1 -0
  144. package/dist/esm/src/logging/console_logger_transport.d.ts +5 -0
  145. package/dist/esm/src/logging/console_logger_transport.d.ts.map +1 -0
  146. package/dist/esm/src/{logger.js → logging/console_logger_transport.js} +40 -90
  147. package/dist/esm/src/logging/console_logger_transport.js.map +1 -0
  148. package/dist/esm/src/logging/logger.d.ts +11 -0
  149. package/dist/esm/src/logging/logger.d.ts.map +1 -0
  150. package/dist/esm/src/logging/logger.js +57 -0
  151. package/dist/esm/src/logging/logger.js.map +1 -0
  152. package/dist/esm/src/logging/logger_transport.d.ts +52 -0
  153. package/dist/esm/src/logging/logger_transport.d.ts.map +1 -0
  154. package/dist/esm/src/logging/logger_transport.js +55 -0
  155. package/dist/esm/src/logging/logger_transport.js.map +1 -0
  156. package/dist/esm/src/promises.d.ts +110 -0
  157. package/dist/esm/src/promises.d.ts.map +1 -0
  158. package/dist/esm/src/promises.js +311 -0
  159. package/dist/esm/src/promises.js.map +1 -0
  160. package/dist/esm/src/types/components.d.ts +11 -3
  161. package/dist/esm/src/types/components.d.ts.map +1 -1
  162. package/dist/esm/src/types/components.js +38 -5
  163. package/dist/esm/src/types/components.js.map +1 -1
  164. package/dist/esm/src/types/discovery.d.ts +4 -0
  165. package/dist/esm/src/types/discovery.d.ts.map +1 -1
  166. package/dist/esm/src/types/errors.d.ts +8 -31
  167. package/dist/esm/src/types/errors.d.ts.map +1 -1
  168. package/dist/esm/src/types/errors.js +16 -68
  169. package/dist/esm/src/types/errors.js.map +1 -1
  170. package/dist/esm/src/types/rpc.d.ts +66 -41
  171. package/dist/esm/src/types/rpc.d.ts.map +1 -1
  172. package/dist/esm/src/types/rpc.js +32 -83
  173. package/dist/esm/src/types/rpc.js.map +1 -1
  174. package/dist/esm/src/user_agent.d.ts +1 -1
  175. package/dist/esm/src/utils/buffer.d.ts +1 -0
  176. package/dist/esm/src/utils/buffer.d.ts.map +1 -1
  177. package/dist/esm/src/utils/completable_promise.d.ts +9 -0
  178. package/dist/esm/src/utils/completable_promise.d.ts.map +1 -0
  179. package/dist/esm/src/utils/completable_promise.js +30 -0
  180. package/dist/esm/src/utils/completable_promise.js.map +1 -0
  181. package/dist/esm/src/utils/rand.d.ts +1 -1
  182. package/dist/esm/src/utils/rand.d.ts.map +1 -1
  183. package/dist/esm/src/utils/rand.js +1 -1
  184. package/dist/esm/src/utils/rand.js.map +1 -1
  185. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  186. package/package.json +2 -6
  187. package/dist/cjs/src/connection/connection.d.ts +0 -84
  188. package/dist/cjs/src/connection/connection.d.ts.map +0 -1
  189. package/dist/cjs/src/connection/connection.js +0 -181
  190. package/dist/cjs/src/connection/connection.js.map +0 -1
  191. package/dist/cjs/src/endpoint/request_signing/basex.d.ts +0 -10
  192. package/dist/cjs/src/endpoint/request_signing/basex.d.ts.map +0 -1
  193. package/dist/cjs/src/endpoint/request_signing/basex.js +0 -138
  194. package/dist/cjs/src/endpoint/request_signing/basex.js.map +0 -1
  195. package/dist/cjs/src/endpoint/request_signing/ed25519.d.ts +0 -17
  196. package/dist/cjs/src/endpoint/request_signing/ed25519.d.ts.map +0 -1
  197. package/dist/cjs/src/endpoint/request_signing/ed25519.js +0 -80
  198. package/dist/cjs/src/endpoint/request_signing/ed25519.js.map +0 -1
  199. package/dist/cjs/src/endpoint/request_signing/v1.d.ts +0 -10
  200. package/dist/cjs/src/endpoint/request_signing/v1.d.ts.map +0 -1
  201. package/dist/cjs/src/endpoint/request_signing/v1.js +0 -151
  202. package/dist/cjs/src/endpoint/request_signing/v1.js.map +0 -1
  203. package/dist/cjs/src/endpoint/request_signing/validate.d.ts +0 -19
  204. package/dist/cjs/src/endpoint/request_signing/validate.d.ts.map +0 -1
  205. package/dist/cjs/src/endpoint/request_signing/validate.js +0 -45
  206. package/dist/cjs/src/endpoint/request_signing/validate.js.map +0 -1
  207. package/dist/cjs/src/generated/proto/discovery_pb.d.ts +0 -18
  208. package/dist/cjs/src/generated/proto/discovery_pb.d.ts.map +0 -1
  209. package/dist/cjs/src/generated/proto/discovery_pb.js +0 -40
  210. package/dist/cjs/src/generated/proto/discovery_pb.js.map +0 -1
  211. package/dist/cjs/src/generated/proto/javascript_pb.d.ts +0 -26
  212. package/dist/cjs/src/generated/proto/javascript_pb.d.ts.map +0 -1
  213. package/dist/cjs/src/generated/proto/javascript_pb.js +0 -52
  214. package/dist/cjs/src/generated/proto/javascript_pb.js.map +0 -1
  215. package/dist/cjs/src/generated/proto/protocol_pb.d.ts +0 -1051
  216. package/dist/cjs/src/generated/proto/protocol_pb.d.ts.map +0 -1
  217. package/dist/cjs/src/generated/proto/protocol_pb.js +0 -1288
  218. package/dist/cjs/src/generated/proto/protocol_pb.js.map +0 -1
  219. package/dist/cjs/src/invocation.d.ts +0 -48
  220. package/dist/cjs/src/invocation.d.ts.map +0 -1
  221. package/dist/cjs/src/invocation.js +0 -158
  222. package/dist/cjs/src/invocation.js.map +0 -1
  223. package/dist/cjs/src/io/decoder.d.ts +0 -9
  224. package/dist/cjs/src/io/decoder.d.ts.map +0 -1
  225. package/dist/cjs/src/io/decoder.js +0 -137
  226. package/dist/cjs/src/io/decoder.js.map +0 -1
  227. package/dist/cjs/src/io/encoder.d.ts +0 -4
  228. package/dist/cjs/src/io/encoder.d.ts.map +0 -1
  229. package/dist/cjs/src/io/encoder.js +0 -41
  230. package/dist/cjs/src/io/encoder.js.map +0 -1
  231. package/dist/cjs/src/journal.d.ts +0 -52
  232. package/dist/cjs/src/journal.d.ts.map +0 -1
  233. package/dist/cjs/src/journal.js +0 -438
  234. package/dist/cjs/src/journal.js.map +0 -1
  235. package/dist/cjs/src/local_state_store.d.ts +0 -14
  236. package/dist/cjs/src/local_state_store.d.ts.map +0 -1
  237. package/dist/cjs/src/local_state_store.js +0 -83
  238. package/dist/cjs/src/local_state_store.js.map +0 -1
  239. package/dist/cjs/src/logger.d.ts +0 -35
  240. package/dist/cjs/src/logger.d.ts.map +0 -1
  241. package/dist/cjs/src/logger.js +0 -151
  242. package/dist/cjs/src/logger.js.map +0 -1
  243. package/dist/cjs/src/promise_combinator_tracker.d.ts +0 -29
  244. package/dist/cjs/src/promise_combinator_tracker.d.ts.map +0 -1
  245. package/dist/cjs/src/promise_combinator_tracker.js +0 -130
  246. package/dist/cjs/src/promise_combinator_tracker.js.map +0 -1
  247. package/dist/cjs/src/state_machine.d.ts +0 -85
  248. package/dist/cjs/src/state_machine.d.ts.map +0 -1
  249. package/dist/cjs/src/state_machine.js +0 -426
  250. package/dist/cjs/src/state_machine.js.map +0 -1
  251. package/dist/cjs/src/types/protocol.d.ts +0 -40
  252. package/dist/cjs/src/types/protocol.d.ts.map +0 -1
  253. package/dist/cjs/src/types/protocol.js +0 -237
  254. package/dist/cjs/src/types/protocol.js.map +0 -1
  255. package/dist/cjs/src/types/types.d.ts +0 -20
  256. package/dist/cjs/src/types/types.d.ts.map +0 -1
  257. package/dist/cjs/src/types/types.js +0 -110
  258. package/dist/cjs/src/types/types.js.map +0 -1
  259. package/dist/cjs/src/utils/message_logger.d.ts +0 -7
  260. package/dist/cjs/src/utils/message_logger.d.ts.map +0 -1
  261. package/dist/cjs/src/utils/message_logger.js +0 -79
  262. package/dist/cjs/src/utils/message_logger.js.map +0 -1
  263. package/dist/cjs/src/utils/promises.d.ts +0 -15
  264. package/dist/cjs/src/utils/promises.d.ts.map +0 -1
  265. package/dist/cjs/src/utils/promises.js +0 -68
  266. package/dist/cjs/src/utils/promises.js.map +0 -1
  267. package/dist/cjs/src/utils/utils.d.ts +0 -3
  268. package/dist/cjs/src/utils/utils.d.ts.map +0 -1
  269. package/dist/cjs/src/utils/utils.js +0 -105
  270. package/dist/cjs/src/utils/utils.js.map +0 -1
  271. package/dist/cjs/test/awakeable.test.d.ts +0 -2
  272. package/dist/cjs/test/awakeable.test.d.ts.map +0 -1
  273. package/dist/cjs/test/awakeable.test.js +0 -141
  274. package/dist/cjs/test/awakeable.test.js.map +0 -1
  275. package/dist/cjs/test/complete_awakeable.test.d.ts +0 -2
  276. package/dist/cjs/test/complete_awakeable.test.d.ts.map +0 -1
  277. package/dist/cjs/test/complete_awakeable.test.js +0 -123
  278. package/dist/cjs/test/complete_awakeable.test.js.map +0 -1
  279. package/dist/cjs/test/eager_state.test.d.ts +0 -2
  280. package/dist/cjs/test/eager_state.test.d.ts.map +0 -1
  281. package/dist/cjs/test/eager_state.test.js +0 -280
  282. package/dist/cjs/test/eager_state.test.js.map +0 -1
  283. package/dist/cjs/test/get_and_set_state.test.d.ts +0 -2
  284. package/dist/cjs/test/get_and_set_state.test.d.ts.map +0 -1
  285. package/dist/cjs/test/get_and_set_state.test.js +0 -233
  286. package/dist/cjs/test/get_and_set_state.test.js.map +0 -1
  287. package/dist/cjs/test/get_state.test.d.ts +0 -2
  288. package/dist/cjs/test/get_state.test.d.ts.map +0 -1
  289. package/dist/cjs/test/get_state.test.js +0 -328
  290. package/dist/cjs/test/get_state.test.js.map +0 -1
  291. package/dist/cjs/test/lambda.test.d.ts +0 -2
  292. package/dist/cjs/test/lambda.test.d.ts.map +0 -1
  293. package/dist/cjs/test/lambda.test.js +0 -258
  294. package/dist/cjs/test/lambda.test.js.map +0 -1
  295. package/dist/cjs/test/message_coders.test.d.ts +0 -2
  296. package/dist/cjs/test/message_coders.test.d.ts.map +0 -1
  297. package/dist/cjs/test/message_coders.test.js +0 -37
  298. package/dist/cjs/test/message_coders.test.js.map +0 -1
  299. package/dist/cjs/test/promise_combinator_tracker.test.d.ts +0 -2
  300. package/dist/cjs/test/promise_combinator_tracker.test.d.ts.map +0 -1
  301. package/dist/cjs/test/promise_combinator_tracker.test.js +0 -156
  302. package/dist/cjs/test/promise_combinator_tracker.test.js.map +0 -1
  303. package/dist/cjs/test/promise_combinators.test.d.ts +0 -2
  304. package/dist/cjs/test/promise_combinators.test.d.ts.map +0 -1
  305. package/dist/cjs/test/promise_combinators.test.js +0 -433
  306. package/dist/cjs/test/promise_combinators.test.js.map +0 -1
  307. package/dist/cjs/test/promises.test.d.ts +0 -2
  308. package/dist/cjs/test/promises.test.d.ts.map +0 -1
  309. package/dist/cjs/test/promises.test.js +0 -32
  310. package/dist/cjs/test/promises.test.js.map +0 -1
  311. package/dist/cjs/test/protocol_stream.test.d.ts +0 -2
  312. package/dist/cjs/test/protocol_stream.test.d.ts.map +0 -1
  313. package/dist/cjs/test/protocol_stream.test.js +0 -243
  314. package/dist/cjs/test/protocol_stream.test.js.map +0 -1
  315. package/dist/cjs/test/protoutils.d.ts +0 -44
  316. package/dist/cjs/test/protoutils.d.ts.map +0 -1
  317. package/dist/cjs/test/protoutils.js +0 -368
  318. package/dist/cjs/test/protoutils.js.map +0 -1
  319. package/dist/cjs/test/service_bind.test.d.ts +0 -2
  320. package/dist/cjs/test/service_bind.test.d.ts.map +0 -1
  321. package/dist/cjs/test/service_bind.test.js +0 -118
  322. package/dist/cjs/test/service_bind.test.js.map +0 -1
  323. package/dist/cjs/test/side_effect.test.d.ts +0 -2
  324. package/dist/cjs/test/side_effect.test.d.ts.map +0 -1
  325. package/dist/cjs/test/side_effect.test.js +0 -133
  326. package/dist/cjs/test/side_effect.test.js.map +0 -1
  327. package/dist/cjs/test/sleep.test.d.ts +0 -2
  328. package/dist/cjs/test/sleep.test.d.ts.map +0 -1
  329. package/dist/cjs/test/sleep.test.js +0 -224
  330. package/dist/cjs/test/sleep.test.js.map +0 -1
  331. package/dist/cjs/test/state_keys.test.d.ts +0 -2
  332. package/dist/cjs/test/state_keys.test.d.ts.map +0 -1
  333. package/dist/cjs/test/state_keys.test.js +0 -92
  334. package/dist/cjs/test/state_keys.test.js.map +0 -1
  335. package/dist/cjs/test/state_machine.test.d.ts +0 -2
  336. package/dist/cjs/test/state_machine.test.d.ts.map +0 -1
  337. package/dist/cjs/test/state_machine.test.js +0 -42
  338. package/dist/cjs/test/state_machine.test.js.map +0 -1
  339. package/dist/cjs/test/testdriver.d.ts +0 -39
  340. package/dist/cjs/test/testdriver.d.ts.map +0 -1
  341. package/dist/cjs/test/testdriver.js +0 -188
  342. package/dist/cjs/test/testdriver.js.map +0 -1
  343. package/dist/cjs/test/utils.test.d.ts +0 -2
  344. package/dist/cjs/test/utils.test.d.ts.map +0 -1
  345. package/dist/cjs/test/utils.test.js +0 -93
  346. package/dist/cjs/test/utils.test.js.map +0 -1
  347. package/dist/esm/src/connection/connection.d.ts +0 -84
  348. package/dist/esm/src/connection/connection.d.ts.map +0 -1
  349. package/dist/esm/src/connection/connection.js +0 -177
  350. package/dist/esm/src/connection/connection.js.map +0 -1
  351. package/dist/esm/src/endpoint/request_signing/basex.d.ts +0 -10
  352. package/dist/esm/src/endpoint/request_signing/basex.d.ts.map +0 -1
  353. package/dist/esm/src/endpoint/request_signing/basex.js +0 -136
  354. package/dist/esm/src/endpoint/request_signing/basex.js.map +0 -1
  355. package/dist/esm/src/endpoint/request_signing/ed25519.d.ts +0 -17
  356. package/dist/esm/src/endpoint/request_signing/ed25519.d.ts.map +0 -1
  357. package/dist/esm/src/endpoint/request_signing/ed25519.js +0 -52
  358. package/dist/esm/src/endpoint/request_signing/ed25519.js.map +0 -1
  359. package/dist/esm/src/endpoint/request_signing/v1.d.ts +0 -10
  360. package/dist/esm/src/endpoint/request_signing/v1.d.ts.map +0 -1
  361. package/dist/esm/src/endpoint/request_signing/v1.js +0 -143
  362. package/dist/esm/src/endpoint/request_signing/v1.js.map +0 -1
  363. package/dist/esm/src/endpoint/request_signing/validate.d.ts +0 -19
  364. package/dist/esm/src/endpoint/request_signing/validate.d.ts.map +0 -1
  365. package/dist/esm/src/endpoint/request_signing/validate.js +0 -40
  366. package/dist/esm/src/endpoint/request_signing/validate.js.map +0 -1
  367. package/dist/esm/src/generated/proto/discovery_pb.d.ts +0 -18
  368. package/dist/esm/src/generated/proto/discovery_pb.d.ts.map +0 -1
  369. package/dist/esm/src/generated/proto/discovery_pb.js +0 -37
  370. package/dist/esm/src/generated/proto/discovery_pb.js.map +0 -1
  371. package/dist/esm/src/generated/proto/javascript_pb.d.ts +0 -26
  372. package/dist/esm/src/generated/proto/javascript_pb.d.ts.map +0 -1
  373. package/dist/esm/src/generated/proto/javascript_pb.js +0 -48
  374. package/dist/esm/src/generated/proto/javascript_pb.js.map +0 -1
  375. package/dist/esm/src/generated/proto/protocol_pb.d.ts +0 -1051
  376. package/dist/esm/src/generated/proto/protocol_pb.d.ts.map +0 -1
  377. package/dist/esm/src/generated/proto/protocol_pb.js +0 -1258
  378. package/dist/esm/src/generated/proto/protocol_pb.js.map +0 -1
  379. package/dist/esm/src/invocation.d.ts +0 -48
  380. package/dist/esm/src/invocation.d.ts.map +0 -1
  381. package/dist/esm/src/invocation.js +0 -153
  382. package/dist/esm/src/invocation.js.map +0 -1
  383. package/dist/esm/src/io/decoder.d.ts +0 -9
  384. package/dist/esm/src/io/decoder.d.ts.map +0 -1
  385. package/dist/esm/src/io/decoder.js +0 -128
  386. package/dist/esm/src/io/decoder.js.map +0 -1
  387. package/dist/esm/src/io/encoder.d.ts +0 -4
  388. package/dist/esm/src/io/encoder.d.ts.map +0 -1
  389. package/dist/esm/src/io/encoder.js +0 -36
  390. package/dist/esm/src/io/encoder.js.map +0 -1
  391. package/dist/esm/src/journal.d.ts +0 -52
  392. package/dist/esm/src/journal.d.ts.map +0 -1
  393. package/dist/esm/src/journal.js +0 -410
  394. package/dist/esm/src/journal.js.map +0 -1
  395. package/dist/esm/src/local_state_store.d.ts +0 -14
  396. package/dist/esm/src/local_state_store.d.ts.map +0 -1
  397. package/dist/esm/src/local_state_store.js +0 -79
  398. package/dist/esm/src/local_state_store.js.map +0 -1
  399. package/dist/esm/src/logger.d.ts +0 -35
  400. package/dist/esm/src/logger.d.ts.map +0 -1
  401. package/dist/esm/src/logger.js.map +0 -1
  402. package/dist/esm/src/promise_combinator_tracker.d.ts +0 -29
  403. package/dist/esm/src/promise_combinator_tracker.d.ts.map +0 -1
  404. package/dist/esm/src/promise_combinator_tracker.js +0 -125
  405. package/dist/esm/src/promise_combinator_tracker.js.map +0 -1
  406. package/dist/esm/src/state_machine.d.ts +0 -85
  407. package/dist/esm/src/state_machine.d.ts.map +0 -1
  408. package/dist/esm/src/state_machine.js +0 -399
  409. package/dist/esm/src/state_machine.js.map +0 -1
  410. package/dist/esm/src/types/protocol.d.ts +0 -40
  411. package/dist/esm/src/types/protocol.d.ts.map +0 -1
  412. package/dist/esm/src/types/protocol.js +0 -206
  413. package/dist/esm/src/types/protocol.js.map +0 -1
  414. package/dist/esm/src/types/types.d.ts +0 -20
  415. package/dist/esm/src/types/types.d.ts.map +0 -1
  416. package/dist/esm/src/types/types.js +0 -105
  417. package/dist/esm/src/types/types.js.map +0 -1
  418. package/dist/esm/src/utils/message_logger.d.ts +0 -7
  419. package/dist/esm/src/utils/message_logger.d.ts.map +0 -1
  420. package/dist/esm/src/utils/message_logger.js +0 -75
  421. package/dist/esm/src/utils/message_logger.js.map +0 -1
  422. package/dist/esm/src/utils/promises.d.ts +0 -15
  423. package/dist/esm/src/utils/promises.d.ts.map +0 -1
  424. package/dist/esm/src/utils/promises.js +0 -63
  425. package/dist/esm/src/utils/promises.js.map +0 -1
  426. package/dist/esm/src/utils/utils.d.ts +0 -3
  427. package/dist/esm/src/utils/utils.d.ts.map +0 -1
  428. package/dist/esm/src/utils/utils.js +0 -101
  429. package/dist/esm/src/utils/utils.js.map +0 -1
  430. package/dist/esm/test/awakeable.test.d.ts +0 -2
  431. package/dist/esm/test/awakeable.test.d.ts.map +0 -1
  432. package/dist/esm/test/awakeable.test.js +0 -139
  433. package/dist/esm/test/awakeable.test.js.map +0 -1
  434. package/dist/esm/test/complete_awakeable.test.d.ts +0 -2
  435. package/dist/esm/test/complete_awakeable.test.d.ts.map +0 -1
  436. package/dist/esm/test/complete_awakeable.test.js +0 -121
  437. package/dist/esm/test/complete_awakeable.test.js.map +0 -1
  438. package/dist/esm/test/eager_state.test.d.ts +0 -2
  439. package/dist/esm/test/eager_state.test.d.ts.map +0 -1
  440. package/dist/esm/test/eager_state.test.js +0 -278
  441. package/dist/esm/test/eager_state.test.js.map +0 -1
  442. package/dist/esm/test/get_and_set_state.test.d.ts +0 -2
  443. package/dist/esm/test/get_and_set_state.test.d.ts.map +0 -1
  444. package/dist/esm/test/get_and_set_state.test.js +0 -231
  445. package/dist/esm/test/get_and_set_state.test.js.map +0 -1
  446. package/dist/esm/test/get_state.test.d.ts +0 -2
  447. package/dist/esm/test/get_state.test.d.ts.map +0 -1
  448. package/dist/esm/test/get_state.test.js +0 -326
  449. package/dist/esm/test/get_state.test.js.map +0 -1
  450. package/dist/esm/test/lambda.test.d.ts +0 -2
  451. package/dist/esm/test/lambda.test.d.ts.map +0 -1
  452. package/dist/esm/test/lambda.test.js +0 -233
  453. package/dist/esm/test/lambda.test.js.map +0 -1
  454. package/dist/esm/test/message_coders.test.d.ts +0 -2
  455. package/dist/esm/test/message_coders.test.d.ts.map +0 -1
  456. package/dist/esm/test/message_coders.test.js +0 -35
  457. package/dist/esm/test/message_coders.test.js.map +0 -1
  458. package/dist/esm/test/promise_combinator_tracker.test.d.ts +0 -2
  459. package/dist/esm/test/promise_combinator_tracker.test.d.ts.map +0 -1
  460. package/dist/esm/test/promise_combinator_tracker.test.js +0 -154
  461. package/dist/esm/test/promise_combinator_tracker.test.js.map +0 -1
  462. package/dist/esm/test/promise_combinators.test.d.ts +0 -2
  463. package/dist/esm/test/promise_combinators.test.d.ts.map +0 -1
  464. package/dist/esm/test/promise_combinators.test.js +0 -431
  465. package/dist/esm/test/promise_combinators.test.js.map +0 -1
  466. package/dist/esm/test/promises.test.d.ts +0 -2
  467. package/dist/esm/test/promises.test.d.ts.map +0 -1
  468. package/dist/esm/test/promises.test.js +0 -30
  469. package/dist/esm/test/promises.test.js.map +0 -1
  470. package/dist/esm/test/protocol_stream.test.d.ts +0 -2
  471. package/dist/esm/test/protocol_stream.test.d.ts.map +0 -1
  472. package/dist/esm/test/protocol_stream.test.js +0 -218
  473. package/dist/esm/test/protocol_stream.test.js.map +0 -1
  474. package/dist/esm/test/protoutils.d.ts +0 -44
  475. package/dist/esm/test/protoutils.d.ts.map +0 -1
  476. package/dist/esm/test/protoutils.js +0 -335
  477. package/dist/esm/test/protoutils.js.map +0 -1
  478. package/dist/esm/test/service_bind.test.d.ts +0 -2
  479. package/dist/esm/test/service_bind.test.d.ts.map +0 -1
  480. package/dist/esm/test/service_bind.test.js +0 -93
  481. package/dist/esm/test/service_bind.test.js.map +0 -1
  482. package/dist/esm/test/side_effect.test.d.ts +0 -2
  483. package/dist/esm/test/side_effect.test.d.ts.map +0 -1
  484. package/dist/esm/test/side_effect.test.js +0 -131
  485. package/dist/esm/test/side_effect.test.js.map +0 -1
  486. package/dist/esm/test/sleep.test.d.ts +0 -2
  487. package/dist/esm/test/sleep.test.d.ts.map +0 -1
  488. package/dist/esm/test/sleep.test.js +0 -222
  489. package/dist/esm/test/sleep.test.js.map +0 -1
  490. package/dist/esm/test/state_keys.test.d.ts +0 -2
  491. package/dist/esm/test/state_keys.test.d.ts.map +0 -1
  492. package/dist/esm/test/state_keys.test.js +0 -90
  493. package/dist/esm/test/state_keys.test.js.map +0 -1
  494. package/dist/esm/test/state_machine.test.d.ts +0 -2
  495. package/dist/esm/test/state_machine.test.d.ts.map +0 -1
  496. package/dist/esm/test/state_machine.test.js +0 -40
  497. package/dist/esm/test/state_machine.test.js.map +0 -1
  498. package/dist/esm/test/testdriver.d.ts +0 -39
  499. package/dist/esm/test/testdriver.d.ts.map +0 -1
  500. package/dist/esm/test/testdriver.js +0 -182
  501. package/dist/esm/test/testdriver.js.map +0 -1
  502. package/dist/esm/test/utils.test.d.ts +0 -2
  503. package/dist/esm/test/utils.test.d.ts.map +0 -1
  504. package/dist/esm/test/utils.test.js +0 -91
  505. package/dist/esm/test/utils.test.js.map +0 -1
@@ -10,25 +10,23 @@
10
10
  * https://github.com/restatedev/sdk-typescript/blob/main/LICENSE
11
11
  */
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.ContextImpl = void 0;
14
- const protocol_pb_js_1 = require("./generated/proto/protocol_pb.js");
15
- const protocol_js_1 = require("./types/protocol.js");
13
+ exports.RunClosuresTracker = exports.ContextImpl = void 0;
14
+ const sdk_shared_core_wasm_bindings_js_1 = require("./endpoint/handlers/vm/sdk_shared_core_wasm_bindings.js");
16
15
  const errors_js_1 = require("./types/errors.js");
17
- const protobuf_1 = require("@bufbuild/protobuf");
18
16
  const rpc_js_1 = require("./types/rpc.js");
19
17
  const restate_sdk_core_1 = require("@restatedev/restate-sdk-core");
20
18
  const rand_js_1 = require("./utils/rand.js");
21
- const promise_combinator_tracker_js_1 = require("./promise_combinator_tracker.js");
22
- const node_buffer_1 = require("node:buffer");
19
+ const completable_promise_js_1 = require("./utils/completable_promise.js");
20
+ const promises_js_1 = require("./promises.js");
21
+ const io_js_1 = require("./io.js");
23
22
  class ContextImpl {
23
+ coreVm;
24
+ input;
24
25
  console;
25
26
  handlerKind;
26
- keyedContextKey;
27
- stateMachine;
28
- // This is used to guard users against calling ctx.sideEffect without awaiting it.
29
- // See https://github.com/restatedev/sdk-typescript/issues/197 for more details.
30
- executingRun = false;
27
+ vmLogger;
31
28
  invocationRequest;
29
+ invocationEndPromise;
32
30
  rand;
33
31
  date = {
34
32
  now: () => {
@@ -38,138 +36,113 @@ class ContextImpl {
38
36
  return this.run(() => new Date().toJSON());
39
37
  },
40
38
  };
41
- constructor(id, console, handlerKind, keyedContextKey, invocationValue, invocationHeaders, attemptHeaders, extraArgs,
42
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
43
- stateMachine) {
39
+ outputPump;
40
+ runClosuresTracker;
41
+ promisesExecutor;
42
+ constructor(coreVm, input, console, handlerKind, vmLogger, invocationRequest, invocationEndPromise, inputReader, outputWriter) {
43
+ this.coreVm = coreVm;
44
+ this.input = input;
44
45
  this.console = console;
45
46
  this.handlerKind = handlerKind;
46
- this.keyedContextKey = keyedContextKey;
47
- this.stateMachine = stateMachine;
48
- this.invocationRequest = {
49
- id,
50
- headers: invocationHeaders,
51
- attemptHeaders,
52
- body: invocationValue,
53
- extraArgs,
54
- };
55
- this.rand = new rand_js_1.RandImpl(id, this.checkState.bind(this));
47
+ this.vmLogger = vmLogger;
48
+ this.invocationRequest = invocationRequest;
49
+ this.invocationEndPromise = invocationEndPromise;
50
+ this.rand = new rand_js_1.RandImpl(input.invocation_id, () => {
51
+ // TODO reimplement this check with async context
52
+ // if (coreVm.is_inside_run()) {
53
+ // throw new Error(
54
+ // "Cannot generate random numbers within a run closure. Use the random object outside the run closure."
55
+ // );
56
+ // }
57
+ });
58
+ this.outputPump = new io_js_1.OutputPump(coreVm, outputWriter);
59
+ this.runClosuresTracker = new RunClosuresTracker();
60
+ this.promisesExecutor = new promises_js_1.PromisesExecutor(coreVm, new io_js_1.InputPump(coreVm, inputReader, this.handleInvocationEndError.bind(this)), this.outputPump, this.runClosuresTracker, this.handleInvocationEndError.bind(this));
56
61
  }
57
- promise(name, serde) {
58
- return new DurablePromiseImpl(this, name, serde);
62
+ cancel(invocationId) {
63
+ this.processNonCompletableEntry((vm) => vm.sys_cancel_invocation(invocationId));
64
+ }
65
+ attach(invocationId, serde) {
66
+ return this.processCompletableEntry((vm) => vm.sys_attach_invocation(invocationId), completeUsing(SuccessWithSerde(serde ?? (0, rpc_js_1.defaultSerde)()), Failure));
59
67
  }
60
68
  get key() {
61
69
  switch (this.handlerKind) {
62
70
  case rpc_js_1.HandlerKind.EXCLUSIVE:
63
71
  case rpc_js_1.HandlerKind.SHARED:
64
72
  case rpc_js_1.HandlerKind.WORKFLOW: {
65
- if (this.keyedContextKey === undefined) {
66
- throw new errors_js_1.TerminalError("unexpected missing key");
67
- }
68
- return this.keyedContextKey;
73
+ return this.input.key;
69
74
  }
70
- case rpc_js_1.HandlerKind.SERVICE:
71
- throw new errors_js_1.TerminalError("unexpected missing key");
72
75
  default:
73
- throw new errors_js_1.TerminalError("unknown handler type");
76
+ throw new errors_js_1.TerminalError("this handler type doesn't support key()");
74
77
  }
75
78
  }
76
79
  request() {
77
80
  return this.invocationRequest;
78
81
  }
79
- // DON'T make this function async!!! see sideEffect comment for details.
80
82
  get(name, serde) {
81
- // Check if this is a valid action
82
- this.checkState("get state");
83
- // Create the message and let the state machine process it
84
- const msg = new protocol_pb_js_1.GetStateEntryMessage({
85
- key: new TextEncoder().encode(name),
86
- });
87
- const completed = this.stateMachine.localStateStore.tryCompleteGet(name, msg);
88
- const getState = async () => {
89
- const result = await this.stateMachine.handleUserCodeMessage(protocol_js_1.GET_STATE_ENTRY_MESSAGE_TYPE, msg, completed);
90
- // If the GetState message did not have a value or empty,
91
- // then we went to the runtime to get the value.
92
- // When we get the response, we set it in the localStateStore,
93
- // to answer subsequent requests
94
- if (!completed) {
95
- this.stateMachine.localStateStore.add(name, result);
96
- }
97
- if (!(result instanceof Uint8Array)) {
98
- return null;
99
- }
100
- return (serde ?? (0, rpc_js_1.defaultSerde)()).deserialize(result);
101
- };
102
- return getState();
83
+ return this.processCompletableEntry((vm) => vm.sys_get_state(name), completeUsing(VoidAsNull, SuccessWithSerde(serde ?? (0, rpc_js_1.defaultSerde)())));
103
84
  }
104
- // DON'T make this function async!!! see sideEffect comment for details.
105
85
  stateKeys() {
106
- // Check if this is a valid action
107
- this.checkState("state keys");
108
- // Create the message and let the state machine process it
109
- const msg = new protocol_pb_js_1.GetStateKeysEntryMessage({});
110
- const completed = this.stateMachine.localStateStore.tryCompletedGetStateKeys(msg);
111
- const getStateKeys = async () => {
112
- const result = await this.stateMachine.handleUserCodeMessage(protocol_js_1.GET_STATE_KEYS_ENTRY_MESSAGE_TYPE, msg, completed);
113
- return result.keys.map((b) => new TextDecoder().decode(b));
114
- };
115
- return getStateKeys();
86
+ return this.processCompletableEntry((vm) => vm.sys_get_state_keys(), completeUsing(StateKeys));
116
87
  }
117
88
  set(name, value, serde) {
118
- this.checkState("set state");
119
- const bytes = (serde ?? (0, rpc_js_1.defaultSerde)()).serialize(value);
120
- const msg = this.stateMachine.localStateStore.set(name, bytes);
121
- this.stateMachine
122
- .handleUserCodeMessage(protocol_js_1.SET_STATE_ENTRY_MESSAGE_TYPE, msg)
123
- .catch((e) => this.stateMachine.handleDanglingPromiseError(e));
89
+ this.processNonCompletableEntry((vm) => vm.sys_set_state(name, (serde ?? (0, rpc_js_1.defaultSerde)()).serialize(value)));
124
90
  }
125
91
  clear(name) {
126
- this.checkState("clear state");
127
- const msg = this.stateMachine.localStateStore.clear(name);
128
- this.stateMachine
129
- .handleUserCodeMessage(protocol_js_1.CLEAR_STATE_ENTRY_MESSAGE_TYPE, msg)
130
- .catch((e) => this.stateMachine.handleDanglingPromiseError(e));
92
+ this.processNonCompletableEntry((vm) => vm.sys_clear_state(name));
131
93
  }
132
94
  clearAll() {
133
- this.checkState("clear all state");
134
- const msg = this.stateMachine.localStateStore.clearAll();
135
- this.stateMachine
136
- .handleUserCodeMessage(protocol_js_1.CLEAR_ALL_STATE_ENTRY_MESSAGE_TYPE, msg)
137
- .catch((e) => this.stateMachine.handleDanglingPromiseError(e));
95
+ this.processNonCompletableEntry((vm) => vm.sys_clear_all_state());
138
96
  }
139
97
  // --- Calls, background calls, etc
140
98
  //
141
99
  genericCall(call) {
142
100
  const requestSerde = call.inputSerde ?? restate_sdk_core_1.serde.binary;
143
101
  const responseSerde = call.outputSerde ?? restate_sdk_core_1.serde.binary;
144
- const parameter = requestSerde.serialize(call.parameter);
145
- const msg = new protocol_pb_js_1.CallEntryMessage({
146
- serviceName: call.service,
147
- handlerName: call.method,
148
- parameter,
149
- key: call.key,
150
- });
151
- const rawRequest = this.stateMachine.handleUserCodeMessage(protocol_js_1.INVOKE_ENTRY_MESSAGE_TYPE, msg);
152
- const decoded = rawRequest.transform((res) => responseSerde.deserialize(res));
153
- return this.markCombineablePromise(decoded);
102
+ try {
103
+ const vm = this.coreVm;
104
+ const parameter = requestSerde.serialize(call.parameter);
105
+ const call_handles = vm.sys_call(call.service, call.method, parameter, call.key, call.headers
106
+ ? Object.entries(call.headers).map(([key, value]) => new sdk_shared_core_wasm_bindings_js_1.WasmHeader(key, value))
107
+ : [], call.idempotencyKey);
108
+ const invocationIdHandle = call_handles.invocation_id_completion_id;
109
+ const invocationIdPromise = this.createInvocationIdPromise(invocationIdHandle);
110
+ const callHandle = call_handles.call_completion_id;
111
+ return new promises_js_1.RestateInvocationPromise(this, callHandle, completeUsing(SuccessWithSerde(responseSerde), Failure), invocationIdPromise);
112
+ }
113
+ catch (e) {
114
+ this.handleInvocationEndError(e);
115
+ // We return a pending promise to avoid the caller to see the error.
116
+ return new promises_js_1.InvocationPendingPromise(this);
117
+ }
154
118
  }
155
119
  genericSend(send) {
156
- const requestSerde = send.inputSerde ?? restate_sdk_core_1.serde.binary;
157
- const parameter = requestSerde.serialize(send.parameter);
158
- const actualDelay = send.delay || 0;
159
- const jsInvokeTime = actualDelay > 0 ? Date.now() + actualDelay : protobuf_1.protoInt64.zero;
160
- const invokeTime = protobuf_1.protoInt64.parse(jsInvokeTime);
161
- const msg = new protocol_pb_js_1.OneWayCallEntryMessage({
162
- serviceName: send.service,
163
- handlerName: send.method,
164
- parameter,
165
- invokeTime,
166
- key: send.key,
167
- });
168
- this.stateMachine
169
- .handleUserCodeMessage(protocol_js_1.BACKGROUND_INVOKE_ENTRY_MESSAGE_TYPE, msg)
170
- .catch((e) => {
171
- this.stateMachine.handleDanglingPromiseError(e);
172
- });
120
+ try {
121
+ const vm = this.coreVm;
122
+ const requestSerde = send.inputSerde ?? restate_sdk_core_1.serde.binary;
123
+ const parameter = requestSerde.serialize(send.parameter);
124
+ let delay;
125
+ if (send.delay !== undefined) {
126
+ delay = BigInt(send.delay);
127
+ }
128
+ const handles = vm.sys_send(send.service, send.method, parameter, send.key, send.headers
129
+ ? Object.entries(send.headers).map(([key, value]) => new sdk_shared_core_wasm_bindings_js_1.WasmHeader(key, value))
130
+ : [], delay, send.idempotencyKey);
131
+ const handle = handles.invocation_id_completion_id;
132
+ const invocationId = this.createInvocationIdPromise(handle);
133
+ return {
134
+ invocationId,
135
+ };
136
+ }
137
+ catch (e) {
138
+ this.handleInvocationEndError(e);
139
+ return {
140
+ invocationId: (0, promises_js_1.pendingPromise)(),
141
+ };
142
+ }
143
+ }
144
+ createInvocationIdPromise(handle) {
145
+ return new promises_js_1.RestateSinglePromise(this, handle, completeUsing(InvocationIdCompleter));
173
146
  }
174
147
  serviceClient({ name }) {
175
148
  return (0, rpc_js_1.makeRpcCallProxy)((call) => this.genericCall(call), name);
@@ -194,225 +167,181 @@ class ContextImpl {
194
167
  // and not in the promise context. To understand the semantic difference, make this function async and run the
195
168
  // UnawaitedSideEffectShouldFailSubsequentContextCall test.
196
169
  run(nameOrAction, actionSecondParameter, options) {
197
- this.checkState("run");
198
- const { name, action } = unpack(nameOrAction, actionSecondParameter);
199
- this.executingRun = true;
170
+ const { name, action } = unpackRunParameters(nameOrAction, actionSecondParameter);
200
171
  const serde = options?.serde ?? (0, rpc_js_1.defaultSerde)();
201
- const executeRun = async () => {
202
- // in replay mode, we directly return the value from the log
203
- if (this.stateMachine.nextEntryWillBeReplayed()) {
204
- const emptyMsg = new protocol_pb_js_1.RunEntryMessage({});
205
- return this.stateMachine
206
- .handleUserCodeMessage(protocol_js_1.SIDE_EFFECT_ENTRY_MESSAGE_TYPE, emptyMsg)
207
- .transform((result) => {
208
- if (!result || result instanceof protocol_pb_js_1.Empty) {
209
- return undefined;
210
- }
211
- return serde.deserialize(result);
212
- });
213
- }
214
- let sideEffectResult;
172
+ // Prepare the handle
173
+ let handle;
174
+ try {
175
+ handle = this.coreVm.sys_run(name || "");
176
+ }
177
+ catch (e) {
178
+ this.handleInvocationEndError(e);
179
+ return new promises_js_1.RestatePendingPromise(this);
180
+ }
181
+ // Now prepare the run task
182
+ const doRun = async () => {
183
+ // Execute the user code
184
+ const startTime = Date.now();
185
+ let res;
186
+ let err;
215
187
  try {
216
- sideEffectResult = await action();
188
+ res = await action();
217
189
  }
218
190
  catch (e) {
219
- if (!(e instanceof errors_js_1.TerminalError)) {
220
- ///non terminal errors are retirable.
221
- // we do not commit the error itself into the journal, but rather let restate know about this
222
- // so that restate can retry this invocation later.
223
- // Before we can propagate this error to the user, we must let the state machine know that this attempt
224
- // is finished with an error, and it should not append anything else to the journal from now on.
225
- const error = (0, errors_js_1.ensureError)(e);
226
- const additionalContext = {
227
- relatedEntryName: name,
228
- relatedEntryType: protocol_js_1.SIDE_EFFECT_ENTRY_MESSAGE_TYPE,
229
- };
230
- await this.stateMachine.sendErrorAndFinish(error, additionalContext);
231
- throw e;
191
+ err = (0, errors_js_1.ensureError)(e);
192
+ }
193
+ const attemptDuration = Date.now() - startTime;
194
+ // Propose the completion to the VM
195
+ try {
196
+ if (err !== undefined) {
197
+ if (err instanceof errors_js_1.TerminalError) {
198
+ // Record failure, go ahead
199
+ this.coreVm.propose_run_completion_failure(handle, {
200
+ code: err.code,
201
+ message: err.message,
202
+ });
203
+ }
204
+ else {
205
+ this.vmLogger.warn(`Error when processing ctx.run '${name}'.\n`, err);
206
+ if (options?.retryIntervalFactor === undefined &&
207
+ options?.initialRetryIntervalMillis === undefined &&
208
+ options?.maxRetryAttempts === undefined &&
209
+ options?.maxRetryDurationMillis === undefined &&
210
+ options?.maxRetryIntervalMillis === undefined) {
211
+ // If no retry option was set, simply notify the error.
212
+ this.coreVm.notify_error(err.message, err.stack);
213
+ // From now on, no progress will be made.
214
+ this.invocationEndPromise.resolve();
215
+ return (0, promises_js_1.pendingPromise)();
216
+ }
217
+ this.coreVm.propose_run_completion_failure_transient(handle, err.message, err.cause?.toString(), BigInt(attemptDuration), {
218
+ factor: options?.retryIntervalFactor || 2.0,
219
+ initial_interval: options?.initialRetryIntervalMillis || 50,
220
+ max_attempts: options?.maxRetryAttempts,
221
+ max_duration: options?.maxRetryDurationMillis,
222
+ max_interval: options?.maxRetryIntervalMillis || 10 * 1000,
223
+ });
224
+ }
232
225
  }
233
- // we commit a terminal error from the side effect to the journal, and re-throw it into
234
- // the function. that way, any catching by the user and reacting to it will be
235
- // deterministic on replay
236
- const error = (0, errors_js_1.ensureError)(e);
237
- const failure = (0, errors_js_1.errorToFailure)(error);
238
- const sideEffectMsg = new protocol_pb_js_1.RunEntryMessage({
239
- name,
240
- result: { case: "failure", value: failure },
241
- });
242
- // this may throw an error from the SDK/runtime/connection side, in case the
243
- // failure message cannot be committed to the journal. That error would then
244
- // be returned from this function (replace the original error)
245
- // that is acceptable, because in such a situation (failure to append to journal),
246
- // the state machine closes anyways and no further operations will succeed and the
247
- // the execution aborts
248
- await this.stateMachine.handleUserCodeMessage(protocol_js_1.SIDE_EFFECT_ENTRY_MESSAGE_TYPE, sideEffectMsg, false, true);
249
- throw e;
226
+ else {
227
+ this.coreVm.propose_run_completion_success(handle,
228
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
229
+ // @ts-expect-error
230
+ serde.serialize(res));
231
+ }
232
+ }
233
+ catch (e) {
234
+ this.handleInvocationEndError(e);
235
+ return (0, promises_js_1.pendingPromise)();
250
236
  }
251
- // we have this code outside the above try/catch block, to ensure that any error arising
252
- // from here is not incorrectly attributed to the side-effect
253
- const sideEffectMsg = sideEffectResult !== undefined
254
- ? new protocol_pb_js_1.RunEntryMessage({
255
- name,
256
- result: {
257
- case: "value",
258
- value: serde.serialize(sideEffectResult),
259
- },
260
- })
261
- : new protocol_pb_js_1.RunEntryMessage({
262
- name,
263
- });
264
- // if an error arises from committing the side effect result, then this error will
265
- // be thrown here (reject the returned promise) and the function will see that error,
266
- // even if the side-effect function completed correctly
267
- // that is acceptable, because in such a situation (failure to append to journal),
268
- // the state machine closes anyways and reports an execution failure, meaning no further
269
- // operations will succeed and the the execution will be retried.
270
- // If the side-effect result did in fact not make it to the journal, then the side-effect
271
- // re-executes, and if it made it to the journal after all (error happend inly during
272
- // ack-back), then retries will use the journaled result.
273
- // So all good in any case, due to the beauty of "the runtime log is the ground thruth" approach.
274
- await this.stateMachine.handleUserCodeMessage(protocol_js_1.SIDE_EFFECT_ENTRY_MESSAGE_TYPE, sideEffectMsg, false, true);
275
- return sideEffectResult;
237
+ await this.outputPump.awaitNextProgress();
276
238
  };
277
- return executeRun().finally(() => {
278
- this.executingRun = false;
279
- });
239
+ // Register the run to execute
240
+ this.runClosuresTracker.registerRunClosure(handle, doRun);
241
+ // Return the promise
242
+ return new promises_js_1.RestateSinglePromise(this, handle, completeUsing(SuccessWithSerde(serde), Failure));
280
243
  }
281
244
  sleep(millis) {
282
- this.checkState("sleep");
283
- return this.markCombineablePromise(this.sleepInternal(millis));
284
- }
285
- sleepInternal(millis) {
286
- return this.stateMachine.handleUserCodeMessage(protocol_js_1.SLEEP_ENTRY_MESSAGE_TYPE, new protocol_pb_js_1.SleepEntryMessage({
287
- wakeUpTime: protobuf_1.protoInt64.parse(Date.now() + millis),
288
- }));
245
+ return this.processCompletableEntry((vm) => vm.sys_sleep(BigInt(millis)), completeUsing(VoidAsUndefined));
289
246
  }
290
247
  // -- Awakeables
291
248
  awakeable(serde) {
292
- this.checkState("awakeable");
293
- const msg = new protocol_pb_js_1.AwakeableEntryMessage();
294
- const promise = this.stateMachine
295
- .handleUserCodeMessage(protocol_js_1.AWAKEABLE_ENTRY_MESSAGE_TYPE, msg)
296
- .transform((result) => {
297
- if (!(result instanceof Uint8Array)) {
298
- // This should either be a filled buffer or an empty buffer but never anything else.
299
- throw errors_js_1.RetryableError.internal("Awakeable was not resolved with a buffer payload");
300
- }
301
- if (!serde) {
302
- return (0, rpc_js_1.defaultSerde)().deserialize(result);
303
- }
304
- if (result.length == 0) {
305
- return undefined;
306
- }
307
- return serde.deserialize(result);
308
- });
309
- // This needs to be done after handling the message in the state machine
310
- // otherwise the index is not yet incremented.
311
- const encodedEntryIndex = node_buffer_1.Buffer.alloc(4 /* Size of u32 */);
312
- encodedEntryIndex.writeUInt32BE(this.stateMachine.getUserCodeJournalIndex());
249
+ let awakeable;
250
+ try {
251
+ awakeable = this.coreVm.sys_awakeable();
252
+ }
253
+ catch (e) {
254
+ this.handleInvocationEndError(e);
255
+ return {
256
+ id: "invalid",
257
+ promise: new promises_js_1.RestatePendingPromise(this),
258
+ };
259
+ }
313
260
  return {
314
- id: protocol_js_1.AWAKEABLE_IDENTIFIER_PREFIX +
315
- node_buffer_1.Buffer.concat([this.request().id, encodedEntryIndex]).toString("base64url"),
316
- promise: this.markCombineablePromise(promise),
261
+ id: awakeable.id,
262
+ promise: new promises_js_1.RestateSinglePromise(this, awakeable.handle, completeUsing(VoidAsUndefined, SuccessWithSerde(serde), Failure)),
317
263
  };
318
264
  }
319
265
  resolveAwakeable(id, payload, serde) {
320
- // We coerce undefined to null as null can be stringified by JSON.stringify
321
- let value;
322
- if (serde) {
323
- value =
324
- payload == undefined ? new Uint8Array() : serde.serialize(payload);
325
- }
326
- else {
327
- value =
328
- payload != undefined
329
- ? (0, rpc_js_1.defaultSerde)().serialize(payload)
330
- : (0, rpc_js_1.defaultSerde)().serialize(null);
331
- }
332
- this.checkState("resolveAwakeable");
333
- this.completeAwakeable(id, {
334
- result: {
335
- case: "value",
336
- value,
337
- },
266
+ this.processNonCompletableEntry((vm) => {
267
+ // We coerce undefined to null as null can be stringified by JSON.stringify
268
+ let value;
269
+ if (serde) {
270
+ value =
271
+ payload === undefined ? new Uint8Array() : serde.serialize(payload);
272
+ }
273
+ else {
274
+ value =
275
+ payload !== undefined
276
+ ? (0, rpc_js_1.defaultSerde)().serialize(payload)
277
+ : (0, rpc_js_1.defaultSerde)().serialize(null);
278
+ }
279
+ vm.sys_complete_awakeable_success(id, value);
338
280
  });
339
281
  }
340
282
  rejectAwakeable(id, reason) {
341
- this.checkState("rejectAwakeable");
342
- this.completeAwakeable(id, {
343
- result: {
344
- case: "failure",
345
- value: { code: errors_js_1.UNKNOWN_ERROR_CODE, message: reason },
346
- },
283
+ this.processNonCompletableEntry((vm) => {
284
+ vm.sys_complete_awakeable_failure(id, {
285
+ code: errors_js_1.UNKNOWN_ERROR_CODE,
286
+ message: reason,
287
+ });
347
288
  });
348
289
  }
349
- completeAwakeable(id, base) {
350
- base.id = id;
351
- this.stateMachine
352
- .handleUserCodeMessage(protocol_js_1.COMPLETE_AWAKEABLE_ENTRY_MESSAGE_TYPE, new protocol_pb_js_1.CompleteAwakeableEntryMessage(base))
353
- .catch((e) => this.stateMachine.handleDanglingPromiseError(e));
290
+ promise(name, serde) {
291
+ return new DurablePromiseImpl(this, name, serde);
354
292
  }
355
293
  // Used by static methods of CombineablePromise
356
294
  static createCombinator(combinatorConstructor, promises) {
357
- const self = extractContext(promises[0]);
295
+ // Extract context from first promise
296
+ const self = (0, promises_js_1.extractContext)(promises[0]);
358
297
  if (!self) {
359
- throw errors_js_1.RetryableError.internal("Not a combinable promise");
298
+ throw new Error("Not a combinable promise");
360
299
  }
361
- const outPromises = [];
300
+ // Collect first the promises downcasted to the internal promise type
301
+ const castedPromises = [];
362
302
  for (const promise of promises) {
363
- if (extractContext(promise) !== self) {
364
- throw errors_js_1.RetryableError.internal("You're mixing up CombineablePromises from different RestateContext. This is not supported.");
303
+ if ((0, promises_js_1.extractContext)(promise) !== self) {
304
+ self.handleInvocationEndError(new Error("You're mixing up CombineablePromises from different RestateContext. This is not supported."));
305
+ return new promises_js_1.RestatePendingPromise(self);
365
306
  }
366
- const index = promise
367
- .journalIndex;
368
- outPromises.push({
369
- id: (0, promise_combinator_tracker_js_1.newJournalEntryPromiseId)(index),
370
- promise: promise,
371
- });
307
+ castedPromises.push(promise);
372
308
  }
373
- return self.stateMachine.createCombinator(combinatorConstructor, outPromises);
309
+ return new promises_js_1.RestateCombinatorPromise(self, combinatorConstructor, castedPromises);
374
310
  }
375
311
  // -- Various private methods
376
- checkNotExecutingRun(callType) {
377
- if (this.executingRun) {
378
- throw new errors_js_1.TerminalError(`Invoked a RestateContext method (${callType}) while a run() is still executing.
379
- Make sure you await the ctx.run() call before using any other RestateContext method.`, { errorCode: errors_js_1.INTERNAL_ERROR_CODE });
312
+ processNonCompletableEntry(vmCall) {
313
+ try {
314
+ vmCall(this.coreVm);
315
+ }
316
+ catch (e) {
317
+ this.handleInvocationEndError(e);
380
318
  }
381
319
  }
382
- checkState(callType) {
383
- this.checkNotExecutingRun(callType);
320
+ processCompletableEntry(vmCall, completer) {
321
+ let handle;
322
+ try {
323
+ handle = vmCall(this.coreVm);
324
+ }
325
+ catch (e) {
326
+ this.handleInvocationEndError(e);
327
+ return new promises_js_1.RestatePendingPromise(this);
328
+ }
329
+ return new promises_js_1.RestateSinglePromise(this, handle, completer);
384
330
  }
385
- markCombineablePromise(p) {
386
- const journalIndex = this.stateMachine.getUserCodeJournalIndex();
387
- const orTimeout = (millis) => {
388
- const sleepPromise = this.sleepInternal(millis).transform(() => {
389
- throw new errors_js_1.TimeoutError();
390
- });
391
- const sleepPromiseIndex = this.stateMachine.getUserCodeJournalIndex();
392
- return this.stateMachine.createCombinator(Promise.race.bind(Promise), [
393
- {
394
- id: (0, promise_combinator_tracker_js_1.newJournalEntryPromiseId)(journalIndex),
395
- promise: p,
396
- },
397
- {
398
- id: (0, promise_combinator_tracker_js_1.newJournalEntryPromiseId)(sleepPromiseIndex),
399
- promise: sleepPromise,
400
- },
401
- ]);
402
- };
403
- defineProperty(p, RESTATE_CTX_SYMBOL, this);
404
- defineProperty(p, "journalIndex", journalIndex);
405
- defineProperty(p, "orTimeout", orTimeout.bind(this));
406
- return p;
331
+ handleInvocationEndError(e) {
332
+ const error = (0, errors_js_1.ensureError)(e);
333
+ if (!(error instanceof errors_js_1.RestateError) ||
334
+ error.code !== errors_js_1.SUSPENDED_ERROR_CODE) {
335
+ this.vmLogger.warn("Error when processing a Restate context operation.\n", error);
336
+ }
337
+ this.coreVm.notify_error(error.message, error.stack);
338
+ // From now on, no progress will be made.
339
+ this.invocationEndPromise.resolve();
407
340
  }
408
341
  }
409
342
  exports.ContextImpl = ContextImpl;
410
- // wraps defineProperty such that it informs tsc of the correct type of its output
411
- function defineProperty(obj, prop, value) {
412
- Object.defineProperty(obj, prop, { value });
413
- }
414
- function unpack(a, b) {
415
- if (typeof a == "string") {
343
+ function unpackRunParameters(a, b) {
344
+ if (typeof a === "string") {
416
345
  if (typeof b !== "function") {
417
346
  throw new TypeError("");
418
347
  }
@@ -426,12 +355,6 @@ function unpack(a, b) {
426
355
  }
427
356
  return { action: a };
428
357
  }
429
- const RESTATE_CTX_SYMBOL = Symbol("restateContext");
430
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
431
- function extractContext(n) {
432
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
433
- return n[RESTATE_CTX_SYMBOL];
434
- }
435
358
  class DurablePromiseImpl {
436
359
  ctx;
437
360
  name;
@@ -452,56 +375,118 @@ class DurablePromiseImpl {
452
375
  }
453
376
  [Symbol.toStringTag] = "DurablePromise";
454
377
  get() {
455
- const msg = new protocol_pb_js_1.GetPromiseEntryMessage({
456
- key: this.name,
457
- });
458
- return this.ctx.markCombineablePromise(this.ctx.stateMachine
459
- .handleUserCodeMessage(protocol_js_1.GET_PROMISE_MESSAGE_TYPE, msg)
460
- .transform((v) => {
461
- if (!v) {
462
- return undefined;
463
- }
464
- if (v instanceof protocol_pb_js_1.Empty) {
465
- return undefined;
466
- }
467
- return this.serde.deserialize(v);
468
- }));
378
+ return this.ctx.processCompletableEntry((vm) => vm.sys_get_promise(this.name), completeUsing(SuccessWithSerde(this.serde), Failure));
469
379
  }
470
380
  peek() {
471
- const msg = new protocol_pb_js_1.PeekPromiseEntryMessage({
472
- key: this.name,
473
- });
474
- return this.ctx.stateMachine
475
- .handleUserCodeMessage(protocol_js_1.PEEK_PROMISE_MESSAGE_TYPE, msg)
476
- .transform((v) => {
477
- if (!v || v instanceof protocol_pb_js_1.Empty) {
478
- return undefined;
479
- }
480
- return this.serde.deserialize(v);
481
- });
381
+ return this.ctx.processCompletableEntry((vm) => vm.sys_peek_promise(this.name), completeUsing(VoidAsUndefined, SuccessWithSerde(this.serde), Failure));
482
382
  }
483
383
  resolve(value) {
484
- const buffer = value != undefined ? this.serde.serialize(value) : new Uint8Array();
485
- const msg = new protocol_pb_js_1.CompletePromiseEntryMessage({
486
- key: this.name,
487
- completion: {
488
- case: "completionValue",
489
- value: buffer,
490
- },
491
- });
492
- return this.ctx.stateMachine.handleUserCodeMessage(protocol_js_1.COMPLETE_PROMISE_MESSAGE_TYPE, msg);
384
+ return this.ctx.processCompletableEntry((vm) => vm.sys_complete_promise_success(this.name, this.serde.serialize(value)), completeUsing(VoidAsUndefined, Failure));
493
385
  }
494
386
  reject(errorMsg) {
495
- const msg = new protocol_pb_js_1.CompletePromiseEntryMessage({
496
- key: this.name,
497
- completion: {
498
- case: "completionFailure",
499
- value: {
500
- message: errorMsg,
501
- },
502
- },
503
- });
504
- return this.ctx.stateMachine.handleUserCodeMessage(protocol_js_1.COMPLETE_PROMISE_MESSAGE_TYPE, msg);
387
+ return this.ctx.processCompletableEntry((vm) => vm.sys_complete_promise_failure(this.name, {
388
+ code: errors_js_1.INTERNAL_ERROR_CODE,
389
+ message: errorMsg,
390
+ }), completeUsing(VoidAsUndefined, Failure));
505
391
  }
506
392
  }
393
+ /// Tracker of run closures to run
394
+ class RunClosuresTracker {
395
+ currentRunWaitPoint;
396
+ runsToExecute = new Map();
397
+ executeRun(handle) {
398
+ const runClosure = this.runsToExecute.get(handle);
399
+ if (runClosure === undefined) {
400
+ throw new Error(`Handle ${handle} doesn't exist`);
401
+ }
402
+ runClosure()
403
+ .finally(() => {
404
+ this.unblockCurrentRunWaitPoint();
405
+ })
406
+ .catch(() => { });
407
+ }
408
+ registerRunClosure(handle, runClosure) {
409
+ this.runsToExecute.set(handle, runClosure);
410
+ }
411
+ awaitNextCompletedRun() {
412
+ if (this.currentRunWaitPoint === undefined) {
413
+ this.currentRunWaitPoint = new completable_promise_js_1.CompletablePromise();
414
+ }
415
+ return this.currentRunWaitPoint.promise;
416
+ }
417
+ unblockCurrentRunWaitPoint() {
418
+ if (this.currentRunWaitPoint !== undefined) {
419
+ const p = this.currentRunWaitPoint;
420
+ this.currentRunWaitPoint = undefined;
421
+ p.resolve();
422
+ }
423
+ }
424
+ }
425
+ exports.RunClosuresTracker = RunClosuresTracker;
426
+ function completeUsing(...completers) {
427
+ return (value, prom) => {
428
+ for (const completer of completers) {
429
+ if (completer(value, prom)) {
430
+ return;
431
+ }
432
+ }
433
+ throw new Error(`Unexpected variant in async result: ${JSON.stringify(value)}`);
434
+ };
435
+ }
436
+ const VoidAsNull = (value, prom) => {
437
+ if (value === "Empty") {
438
+ prom.resolve(null);
439
+ return true;
440
+ }
441
+ return false;
442
+ };
443
+ const VoidAsUndefined = (value, prom) => {
444
+ if (value === "Empty") {
445
+ prom.resolve(undefined);
446
+ return true;
447
+ }
448
+ return false;
449
+ };
450
+ function SuccessWithSerde(serde, transform) {
451
+ return (value, prom) => {
452
+ if (typeof value !== "object" || !("Success" in value)) {
453
+ return false;
454
+ }
455
+ let val;
456
+ if (serde) {
457
+ val = serde.deserialize(value.Success);
458
+ }
459
+ else {
460
+ val = (0, rpc_js_1.defaultSerde)().deserialize(value.Success);
461
+ }
462
+ if (transform) {
463
+ val = transform(val);
464
+ }
465
+ prom.resolve(val);
466
+ return true;
467
+ };
468
+ }
469
+ const Failure = (value, prom) => {
470
+ if (typeof value === "object" && "Failure" in value) {
471
+ prom.reject(new errors_js_1.TerminalError(value.Failure.message, {
472
+ errorCode: value.Failure.code,
473
+ }));
474
+ return true;
475
+ }
476
+ return false;
477
+ };
478
+ const StateKeys = (value, prom) => {
479
+ if (typeof value === "object" && "StateKeys" in value) {
480
+ prom.resolve(value.StateKeys);
481
+ return true;
482
+ }
483
+ return false;
484
+ };
485
+ const InvocationIdCompleter = (value, prom) => {
486
+ if (typeof value === "object" && "InvocationId" in value) {
487
+ prom.resolve(value.InvocationId);
488
+ return true;
489
+ }
490
+ return false;
491
+ };
507
492
  //# sourceMappingURL=context_impl.js.map