@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.
- package/README.md +6 -4
- package/dist/cjs/src/common_api.d.ts +5 -5
- package/dist/cjs/src/common_api.d.ts.map +1 -1
- package/dist/cjs/src/common_api.js +2 -1
- package/dist/cjs/src/common_api.js.map +1 -1
- package/dist/cjs/src/context.d.ts +103 -12
- package/dist/cjs/src/context.d.ts.map +1 -1
- package/dist/cjs/src/context.js +25 -13
- package/dist/cjs/src/context.js.map +1 -1
- package/dist/cjs/src/context_impl.d.ts +38 -24
- package/dist/cjs/src/context_impl.d.ts.map +1 -1
- package/dist/cjs/src/context_impl.js +327 -342
- package/dist/cjs/src/context_impl.js.map +1 -1
- package/dist/cjs/src/endpoint/endpoint_builder.d.ts +6 -8
- package/dist/cjs/src/endpoint/endpoint_builder.d.ts.map +1 -1
- package/dist/cjs/src/endpoint/endpoint_builder.js +23 -23
- package/dist/cjs/src/endpoint/endpoint_builder.js.map +1 -1
- package/dist/cjs/src/endpoint/fetch_endpoint.d.ts +4 -6
- package/dist/cjs/src/endpoint/fetch_endpoint.d.ts.map +1 -1
- package/dist/cjs/src/endpoint/fetch_endpoint.js +0 -4
- package/dist/cjs/src/endpoint/fetch_endpoint.js.map +1 -1
- package/dist/cjs/src/endpoint/handlers/fetch.d.ts.map +1 -1
- package/dist/cjs/src/endpoint/handlers/fetch.js +1 -0
- package/dist/cjs/src/endpoint/handlers/fetch.js.map +1 -1
- package/dist/cjs/src/endpoint/handlers/generic.d.ts +9 -0
- package/dist/cjs/src/endpoint/handlers/generic.d.ts.map +1 -1
- package/dist/cjs/src/endpoint/handlers/generic.js +249 -88
- package/dist/cjs/src/endpoint/handlers/generic.js.map +1 -1
- package/dist/cjs/src/endpoint/handlers/lambda.d.ts.map +1 -1
- package/dist/cjs/src/endpoint/handlers/lambda.js +15 -3
- package/dist/cjs/src/endpoint/handlers/lambda.js.map +1 -1
- package/dist/cjs/src/endpoint/handlers/vm/sdk_shared_core_wasm_bindings.d.ts +283 -0
- package/dist/cjs/src/endpoint/handlers/vm/sdk_shared_core_wasm_bindings.d.ts.map +1 -0
- package/dist/cjs/src/endpoint/handlers/vm/sdk_shared_core_wasm_bindings.js +1333 -0
- package/dist/cjs/src/endpoint/handlers/vm/sdk_shared_core_wasm_bindings.js.map +1 -0
- package/dist/cjs/src/endpoint/lambda_endpoint.d.ts +4 -6
- package/dist/cjs/src/endpoint/lambda_endpoint.d.ts.map +1 -1
- package/dist/cjs/src/endpoint/lambda_endpoint.js +0 -4
- package/dist/cjs/src/endpoint/lambda_endpoint.js.map +1 -1
- package/dist/cjs/src/endpoint/node_endpoint.d.ts +4 -6
- package/dist/cjs/src/endpoint/node_endpoint.d.ts.map +1 -1
- package/dist/cjs/src/endpoint/node_endpoint.js +12 -4
- package/dist/cjs/src/endpoint/node_endpoint.js.map +1 -1
- package/dist/cjs/src/endpoint.d.ts +6 -37
- package/dist/cjs/src/endpoint.d.ts.map +1 -1
- package/dist/cjs/src/generated/version.d.ts +1 -1
- package/dist/cjs/src/generated/version.js +1 -1
- package/dist/cjs/src/io.d.ts +25 -0
- package/dist/cjs/src/io.d.ts.map +1 -0
- package/dist/cjs/src/io.js +78 -0
- package/dist/cjs/src/io.js.map +1 -0
- package/dist/cjs/src/logging/console_logger_transport.d.ts +5 -0
- package/dist/cjs/src/logging/console_logger_transport.d.ts.map +1 -0
- package/dist/cjs/src/logging/console_logger_transport.js +98 -0
- package/dist/cjs/src/logging/console_logger_transport.js.map +1 -0
- package/dist/cjs/src/logging/logger.d.ts +11 -0
- package/dist/cjs/src/logging/logger.d.ts.map +1 -0
- package/dist/cjs/src/logging/logger.js +61 -0
- package/dist/cjs/src/logging/logger.js.map +1 -0
- package/dist/cjs/src/logging/logger_transport.d.ts +52 -0
- package/dist/cjs/src/logging/logger_transport.d.ts.map +1 -0
- package/dist/cjs/src/logging/logger_transport.js +59 -0
- package/dist/cjs/src/logging/logger_transport.js.map +1 -0
- package/dist/cjs/src/promises.d.ts +110 -0
- package/dist/cjs/src/promises.d.ts.map +1 -0
- package/dist/cjs/src/promises.js +323 -0
- package/dist/cjs/src/promises.js.map +1 -0
- package/dist/cjs/src/types/components.d.ts +11 -3
- package/dist/cjs/src/types/components.d.ts.map +1 -1
- package/dist/cjs/src/types/components.js +38 -5
- package/dist/cjs/src/types/components.js.map +1 -1
- package/dist/cjs/src/types/discovery.d.ts +4 -0
- package/dist/cjs/src/types/discovery.d.ts.map +1 -1
- package/dist/cjs/src/types/errors.d.ts +8 -31
- package/dist/cjs/src/types/errors.d.ts.map +1 -1
- package/dist/cjs/src/types/errors.js +18 -74
- package/dist/cjs/src/types/errors.js.map +1 -1
- package/dist/cjs/src/types/rpc.d.ts +66 -41
- package/dist/cjs/src/types/rpc.d.ts.map +1 -1
- package/dist/cjs/src/types/rpc.js +32 -83
- package/dist/cjs/src/types/rpc.js.map +1 -1
- package/dist/cjs/src/user_agent.d.ts +1 -1
- package/dist/cjs/src/utils/buffer.d.ts +1 -0
- package/dist/cjs/src/utils/buffer.d.ts.map +1 -1
- package/dist/cjs/src/utils/completable_promise.d.ts +9 -0
- package/dist/cjs/src/utils/completable_promise.d.ts.map +1 -0
- package/dist/cjs/src/utils/completable_promise.js +34 -0
- package/dist/cjs/src/utils/completable_promise.js.map +1 -0
- package/dist/cjs/src/utils/rand.d.ts +1 -1
- package/dist/cjs/src/utils/rand.d.ts.map +1 -1
- package/dist/cjs/src/utils/rand.js +1 -1
- package/dist/cjs/src/utils/rand.js.map +1 -1
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/src/common_api.d.ts +5 -5
- package/dist/esm/src/common_api.d.ts.map +1 -1
- package/dist/esm/src/common_api.js +1 -1
- package/dist/esm/src/common_api.js.map +1 -1
- package/dist/esm/src/context.d.ts +103 -12
- package/dist/esm/src/context.d.ts.map +1 -1
- package/dist/esm/src/context.js +24 -12
- package/dist/esm/src/context.js.map +1 -1
- package/dist/esm/src/context_impl.d.ts +38 -24
- package/dist/esm/src/context_impl.d.ts.map +1 -1
- package/dist/esm/src/context_impl.js +325 -341
- package/dist/esm/src/context_impl.js.map +1 -1
- package/dist/esm/src/endpoint/endpoint_builder.d.ts +6 -8
- package/dist/esm/src/endpoint/endpoint_builder.d.ts.map +1 -1
- package/dist/esm/src/endpoint/endpoint_builder.js +23 -23
- package/dist/esm/src/endpoint/endpoint_builder.js.map +1 -1
- package/dist/esm/src/endpoint/fetch_endpoint.d.ts +4 -6
- package/dist/esm/src/endpoint/fetch_endpoint.d.ts.map +1 -1
- package/dist/esm/src/endpoint/fetch_endpoint.js +0 -4
- package/dist/esm/src/endpoint/fetch_endpoint.js.map +1 -1
- package/dist/esm/src/endpoint/handlers/fetch.d.ts.map +1 -1
- package/dist/esm/src/endpoint/handlers/fetch.js +1 -0
- package/dist/esm/src/endpoint/handlers/fetch.js.map +1 -1
- package/dist/esm/src/endpoint/handlers/generic.d.ts +9 -0
- package/dist/esm/src/endpoint/handlers/generic.d.ts.map +1 -1
- package/dist/esm/src/endpoint/handlers/generic.js +226 -89
- package/dist/esm/src/endpoint/handlers/generic.js.map +1 -1
- package/dist/esm/src/endpoint/handlers/lambda.d.ts.map +1 -1
- package/dist/esm/src/endpoint/handlers/lambda.js +15 -3
- package/dist/esm/src/endpoint/handlers/lambda.js.map +1 -1
- package/dist/esm/src/endpoint/handlers/vm/sdk_shared_core_wasm_bindings.d.ts +283 -0
- package/dist/esm/src/endpoint/handlers/vm/sdk_shared_core_wasm_bindings.d.ts.map +1 -0
- package/dist/esm/src/endpoint/handlers/vm/sdk_shared_core_wasm_bindings.js +1322 -0
- package/dist/esm/src/endpoint/handlers/vm/sdk_shared_core_wasm_bindings.js.map +1 -0
- package/dist/esm/src/endpoint/lambda_endpoint.d.ts +4 -6
- package/dist/esm/src/endpoint/lambda_endpoint.d.ts.map +1 -1
- package/dist/esm/src/endpoint/lambda_endpoint.js +0 -4
- package/dist/esm/src/endpoint/lambda_endpoint.js.map +1 -1
- package/dist/esm/src/endpoint/node_endpoint.d.ts +4 -6
- package/dist/esm/src/endpoint/node_endpoint.d.ts.map +1 -1
- package/dist/esm/src/endpoint/node_endpoint.js +12 -4
- package/dist/esm/src/endpoint/node_endpoint.js.map +1 -1
- package/dist/esm/src/endpoint.d.ts +6 -37
- package/dist/esm/src/endpoint.d.ts.map +1 -1
- package/dist/esm/src/generated/version.d.ts +1 -1
- package/dist/esm/src/generated/version.js +1 -1
- package/dist/esm/src/io.d.ts +25 -0
- package/dist/esm/src/io.d.ts.map +1 -0
- package/dist/esm/src/io.js +73 -0
- package/dist/esm/src/io.js.map +1 -0
- package/dist/esm/src/logging/console_logger_transport.d.ts +5 -0
- package/dist/esm/src/logging/console_logger_transport.d.ts.map +1 -0
- package/dist/esm/src/{logger.js → logging/console_logger_transport.js} +40 -90
- package/dist/esm/src/logging/console_logger_transport.js.map +1 -0
- package/dist/esm/src/logging/logger.d.ts +11 -0
- package/dist/esm/src/logging/logger.d.ts.map +1 -0
- package/dist/esm/src/logging/logger.js +57 -0
- package/dist/esm/src/logging/logger.js.map +1 -0
- package/dist/esm/src/logging/logger_transport.d.ts +52 -0
- package/dist/esm/src/logging/logger_transport.d.ts.map +1 -0
- package/dist/esm/src/logging/logger_transport.js +55 -0
- package/dist/esm/src/logging/logger_transport.js.map +1 -0
- package/dist/esm/src/promises.d.ts +110 -0
- package/dist/esm/src/promises.d.ts.map +1 -0
- package/dist/esm/src/promises.js +311 -0
- package/dist/esm/src/promises.js.map +1 -0
- package/dist/esm/src/types/components.d.ts +11 -3
- package/dist/esm/src/types/components.d.ts.map +1 -1
- package/dist/esm/src/types/components.js +38 -5
- package/dist/esm/src/types/components.js.map +1 -1
- package/dist/esm/src/types/discovery.d.ts +4 -0
- package/dist/esm/src/types/discovery.d.ts.map +1 -1
- package/dist/esm/src/types/errors.d.ts +8 -31
- package/dist/esm/src/types/errors.d.ts.map +1 -1
- package/dist/esm/src/types/errors.js +16 -68
- package/dist/esm/src/types/errors.js.map +1 -1
- package/dist/esm/src/types/rpc.d.ts +66 -41
- package/dist/esm/src/types/rpc.d.ts.map +1 -1
- package/dist/esm/src/types/rpc.js +32 -83
- package/dist/esm/src/types/rpc.js.map +1 -1
- package/dist/esm/src/user_agent.d.ts +1 -1
- package/dist/esm/src/utils/buffer.d.ts +1 -0
- package/dist/esm/src/utils/buffer.d.ts.map +1 -1
- package/dist/esm/src/utils/completable_promise.d.ts +9 -0
- package/dist/esm/src/utils/completable_promise.d.ts.map +1 -0
- package/dist/esm/src/utils/completable_promise.js +30 -0
- package/dist/esm/src/utils/completable_promise.js.map +1 -0
- package/dist/esm/src/utils/rand.d.ts +1 -1
- package/dist/esm/src/utils/rand.d.ts.map +1 -1
- package/dist/esm/src/utils/rand.js +1 -1
- package/dist/esm/src/utils/rand.js.map +1 -1
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -6
- package/dist/cjs/src/connection/connection.d.ts +0 -84
- package/dist/cjs/src/connection/connection.d.ts.map +0 -1
- package/dist/cjs/src/connection/connection.js +0 -181
- package/dist/cjs/src/connection/connection.js.map +0 -1
- package/dist/cjs/src/endpoint/request_signing/basex.d.ts +0 -10
- package/dist/cjs/src/endpoint/request_signing/basex.d.ts.map +0 -1
- package/dist/cjs/src/endpoint/request_signing/basex.js +0 -138
- package/dist/cjs/src/endpoint/request_signing/basex.js.map +0 -1
- package/dist/cjs/src/endpoint/request_signing/ed25519.d.ts +0 -17
- package/dist/cjs/src/endpoint/request_signing/ed25519.d.ts.map +0 -1
- package/dist/cjs/src/endpoint/request_signing/ed25519.js +0 -80
- package/dist/cjs/src/endpoint/request_signing/ed25519.js.map +0 -1
- package/dist/cjs/src/endpoint/request_signing/v1.d.ts +0 -10
- package/dist/cjs/src/endpoint/request_signing/v1.d.ts.map +0 -1
- package/dist/cjs/src/endpoint/request_signing/v1.js +0 -151
- package/dist/cjs/src/endpoint/request_signing/v1.js.map +0 -1
- package/dist/cjs/src/endpoint/request_signing/validate.d.ts +0 -19
- package/dist/cjs/src/endpoint/request_signing/validate.d.ts.map +0 -1
- package/dist/cjs/src/endpoint/request_signing/validate.js +0 -45
- package/dist/cjs/src/endpoint/request_signing/validate.js.map +0 -1
- package/dist/cjs/src/generated/proto/discovery_pb.d.ts +0 -18
- package/dist/cjs/src/generated/proto/discovery_pb.d.ts.map +0 -1
- package/dist/cjs/src/generated/proto/discovery_pb.js +0 -40
- package/dist/cjs/src/generated/proto/discovery_pb.js.map +0 -1
- package/dist/cjs/src/generated/proto/javascript_pb.d.ts +0 -26
- package/dist/cjs/src/generated/proto/javascript_pb.d.ts.map +0 -1
- package/dist/cjs/src/generated/proto/javascript_pb.js +0 -52
- package/dist/cjs/src/generated/proto/javascript_pb.js.map +0 -1
- package/dist/cjs/src/generated/proto/protocol_pb.d.ts +0 -1051
- package/dist/cjs/src/generated/proto/protocol_pb.d.ts.map +0 -1
- package/dist/cjs/src/generated/proto/protocol_pb.js +0 -1288
- package/dist/cjs/src/generated/proto/protocol_pb.js.map +0 -1
- package/dist/cjs/src/invocation.d.ts +0 -48
- package/dist/cjs/src/invocation.d.ts.map +0 -1
- package/dist/cjs/src/invocation.js +0 -158
- package/dist/cjs/src/invocation.js.map +0 -1
- package/dist/cjs/src/io/decoder.d.ts +0 -9
- package/dist/cjs/src/io/decoder.d.ts.map +0 -1
- package/dist/cjs/src/io/decoder.js +0 -137
- package/dist/cjs/src/io/decoder.js.map +0 -1
- package/dist/cjs/src/io/encoder.d.ts +0 -4
- package/dist/cjs/src/io/encoder.d.ts.map +0 -1
- package/dist/cjs/src/io/encoder.js +0 -41
- package/dist/cjs/src/io/encoder.js.map +0 -1
- package/dist/cjs/src/journal.d.ts +0 -52
- package/dist/cjs/src/journal.d.ts.map +0 -1
- package/dist/cjs/src/journal.js +0 -438
- package/dist/cjs/src/journal.js.map +0 -1
- package/dist/cjs/src/local_state_store.d.ts +0 -14
- package/dist/cjs/src/local_state_store.d.ts.map +0 -1
- package/dist/cjs/src/local_state_store.js +0 -83
- package/dist/cjs/src/local_state_store.js.map +0 -1
- package/dist/cjs/src/logger.d.ts +0 -35
- package/dist/cjs/src/logger.d.ts.map +0 -1
- package/dist/cjs/src/logger.js +0 -151
- package/dist/cjs/src/logger.js.map +0 -1
- package/dist/cjs/src/promise_combinator_tracker.d.ts +0 -29
- package/dist/cjs/src/promise_combinator_tracker.d.ts.map +0 -1
- package/dist/cjs/src/promise_combinator_tracker.js +0 -130
- package/dist/cjs/src/promise_combinator_tracker.js.map +0 -1
- package/dist/cjs/src/state_machine.d.ts +0 -85
- package/dist/cjs/src/state_machine.d.ts.map +0 -1
- package/dist/cjs/src/state_machine.js +0 -426
- package/dist/cjs/src/state_machine.js.map +0 -1
- package/dist/cjs/src/types/protocol.d.ts +0 -40
- package/dist/cjs/src/types/protocol.d.ts.map +0 -1
- package/dist/cjs/src/types/protocol.js +0 -237
- package/dist/cjs/src/types/protocol.js.map +0 -1
- package/dist/cjs/src/types/types.d.ts +0 -20
- package/dist/cjs/src/types/types.d.ts.map +0 -1
- package/dist/cjs/src/types/types.js +0 -110
- package/dist/cjs/src/types/types.js.map +0 -1
- package/dist/cjs/src/utils/message_logger.d.ts +0 -7
- package/dist/cjs/src/utils/message_logger.d.ts.map +0 -1
- package/dist/cjs/src/utils/message_logger.js +0 -79
- package/dist/cjs/src/utils/message_logger.js.map +0 -1
- package/dist/cjs/src/utils/promises.d.ts +0 -15
- package/dist/cjs/src/utils/promises.d.ts.map +0 -1
- package/dist/cjs/src/utils/promises.js +0 -68
- package/dist/cjs/src/utils/promises.js.map +0 -1
- package/dist/cjs/src/utils/utils.d.ts +0 -3
- package/dist/cjs/src/utils/utils.d.ts.map +0 -1
- package/dist/cjs/src/utils/utils.js +0 -105
- package/dist/cjs/src/utils/utils.js.map +0 -1
- package/dist/cjs/test/awakeable.test.d.ts +0 -2
- package/dist/cjs/test/awakeable.test.d.ts.map +0 -1
- package/dist/cjs/test/awakeable.test.js +0 -141
- package/dist/cjs/test/awakeable.test.js.map +0 -1
- package/dist/cjs/test/complete_awakeable.test.d.ts +0 -2
- package/dist/cjs/test/complete_awakeable.test.d.ts.map +0 -1
- package/dist/cjs/test/complete_awakeable.test.js +0 -123
- package/dist/cjs/test/complete_awakeable.test.js.map +0 -1
- package/dist/cjs/test/eager_state.test.d.ts +0 -2
- package/dist/cjs/test/eager_state.test.d.ts.map +0 -1
- package/dist/cjs/test/eager_state.test.js +0 -280
- package/dist/cjs/test/eager_state.test.js.map +0 -1
- package/dist/cjs/test/get_and_set_state.test.d.ts +0 -2
- package/dist/cjs/test/get_and_set_state.test.d.ts.map +0 -1
- package/dist/cjs/test/get_and_set_state.test.js +0 -233
- package/dist/cjs/test/get_and_set_state.test.js.map +0 -1
- package/dist/cjs/test/get_state.test.d.ts +0 -2
- package/dist/cjs/test/get_state.test.d.ts.map +0 -1
- package/dist/cjs/test/get_state.test.js +0 -328
- package/dist/cjs/test/get_state.test.js.map +0 -1
- package/dist/cjs/test/lambda.test.d.ts +0 -2
- package/dist/cjs/test/lambda.test.d.ts.map +0 -1
- package/dist/cjs/test/lambda.test.js +0 -258
- package/dist/cjs/test/lambda.test.js.map +0 -1
- package/dist/cjs/test/message_coders.test.d.ts +0 -2
- package/dist/cjs/test/message_coders.test.d.ts.map +0 -1
- package/dist/cjs/test/message_coders.test.js +0 -37
- package/dist/cjs/test/message_coders.test.js.map +0 -1
- package/dist/cjs/test/promise_combinator_tracker.test.d.ts +0 -2
- package/dist/cjs/test/promise_combinator_tracker.test.d.ts.map +0 -1
- package/dist/cjs/test/promise_combinator_tracker.test.js +0 -156
- package/dist/cjs/test/promise_combinator_tracker.test.js.map +0 -1
- package/dist/cjs/test/promise_combinators.test.d.ts +0 -2
- package/dist/cjs/test/promise_combinators.test.d.ts.map +0 -1
- package/dist/cjs/test/promise_combinators.test.js +0 -433
- package/dist/cjs/test/promise_combinators.test.js.map +0 -1
- package/dist/cjs/test/promises.test.d.ts +0 -2
- package/dist/cjs/test/promises.test.d.ts.map +0 -1
- package/dist/cjs/test/promises.test.js +0 -32
- package/dist/cjs/test/promises.test.js.map +0 -1
- package/dist/cjs/test/protocol_stream.test.d.ts +0 -2
- package/dist/cjs/test/protocol_stream.test.d.ts.map +0 -1
- package/dist/cjs/test/protocol_stream.test.js +0 -243
- package/dist/cjs/test/protocol_stream.test.js.map +0 -1
- package/dist/cjs/test/protoutils.d.ts +0 -44
- package/dist/cjs/test/protoutils.d.ts.map +0 -1
- package/dist/cjs/test/protoutils.js +0 -368
- package/dist/cjs/test/protoutils.js.map +0 -1
- package/dist/cjs/test/service_bind.test.d.ts +0 -2
- package/dist/cjs/test/service_bind.test.d.ts.map +0 -1
- package/dist/cjs/test/service_bind.test.js +0 -118
- package/dist/cjs/test/service_bind.test.js.map +0 -1
- package/dist/cjs/test/side_effect.test.d.ts +0 -2
- package/dist/cjs/test/side_effect.test.d.ts.map +0 -1
- package/dist/cjs/test/side_effect.test.js +0 -133
- package/dist/cjs/test/side_effect.test.js.map +0 -1
- package/dist/cjs/test/sleep.test.d.ts +0 -2
- package/dist/cjs/test/sleep.test.d.ts.map +0 -1
- package/dist/cjs/test/sleep.test.js +0 -224
- package/dist/cjs/test/sleep.test.js.map +0 -1
- package/dist/cjs/test/state_keys.test.d.ts +0 -2
- package/dist/cjs/test/state_keys.test.d.ts.map +0 -1
- package/dist/cjs/test/state_keys.test.js +0 -92
- package/dist/cjs/test/state_keys.test.js.map +0 -1
- package/dist/cjs/test/state_machine.test.d.ts +0 -2
- package/dist/cjs/test/state_machine.test.d.ts.map +0 -1
- package/dist/cjs/test/state_machine.test.js +0 -42
- package/dist/cjs/test/state_machine.test.js.map +0 -1
- package/dist/cjs/test/testdriver.d.ts +0 -39
- package/dist/cjs/test/testdriver.d.ts.map +0 -1
- package/dist/cjs/test/testdriver.js +0 -188
- package/dist/cjs/test/testdriver.js.map +0 -1
- package/dist/cjs/test/utils.test.d.ts +0 -2
- package/dist/cjs/test/utils.test.d.ts.map +0 -1
- package/dist/cjs/test/utils.test.js +0 -93
- package/dist/cjs/test/utils.test.js.map +0 -1
- package/dist/esm/src/connection/connection.d.ts +0 -84
- package/dist/esm/src/connection/connection.d.ts.map +0 -1
- package/dist/esm/src/connection/connection.js +0 -177
- package/dist/esm/src/connection/connection.js.map +0 -1
- package/dist/esm/src/endpoint/request_signing/basex.d.ts +0 -10
- package/dist/esm/src/endpoint/request_signing/basex.d.ts.map +0 -1
- package/dist/esm/src/endpoint/request_signing/basex.js +0 -136
- package/dist/esm/src/endpoint/request_signing/basex.js.map +0 -1
- package/dist/esm/src/endpoint/request_signing/ed25519.d.ts +0 -17
- package/dist/esm/src/endpoint/request_signing/ed25519.d.ts.map +0 -1
- package/dist/esm/src/endpoint/request_signing/ed25519.js +0 -52
- package/dist/esm/src/endpoint/request_signing/ed25519.js.map +0 -1
- package/dist/esm/src/endpoint/request_signing/v1.d.ts +0 -10
- package/dist/esm/src/endpoint/request_signing/v1.d.ts.map +0 -1
- package/dist/esm/src/endpoint/request_signing/v1.js +0 -143
- package/dist/esm/src/endpoint/request_signing/v1.js.map +0 -1
- package/dist/esm/src/endpoint/request_signing/validate.d.ts +0 -19
- package/dist/esm/src/endpoint/request_signing/validate.d.ts.map +0 -1
- package/dist/esm/src/endpoint/request_signing/validate.js +0 -40
- package/dist/esm/src/endpoint/request_signing/validate.js.map +0 -1
- package/dist/esm/src/generated/proto/discovery_pb.d.ts +0 -18
- package/dist/esm/src/generated/proto/discovery_pb.d.ts.map +0 -1
- package/dist/esm/src/generated/proto/discovery_pb.js +0 -37
- package/dist/esm/src/generated/proto/discovery_pb.js.map +0 -1
- package/dist/esm/src/generated/proto/javascript_pb.d.ts +0 -26
- package/dist/esm/src/generated/proto/javascript_pb.d.ts.map +0 -1
- package/dist/esm/src/generated/proto/javascript_pb.js +0 -48
- package/dist/esm/src/generated/proto/javascript_pb.js.map +0 -1
- package/dist/esm/src/generated/proto/protocol_pb.d.ts +0 -1051
- package/dist/esm/src/generated/proto/protocol_pb.d.ts.map +0 -1
- package/dist/esm/src/generated/proto/protocol_pb.js +0 -1258
- package/dist/esm/src/generated/proto/protocol_pb.js.map +0 -1
- package/dist/esm/src/invocation.d.ts +0 -48
- package/dist/esm/src/invocation.d.ts.map +0 -1
- package/dist/esm/src/invocation.js +0 -153
- package/dist/esm/src/invocation.js.map +0 -1
- package/dist/esm/src/io/decoder.d.ts +0 -9
- package/dist/esm/src/io/decoder.d.ts.map +0 -1
- package/dist/esm/src/io/decoder.js +0 -128
- package/dist/esm/src/io/decoder.js.map +0 -1
- package/dist/esm/src/io/encoder.d.ts +0 -4
- package/dist/esm/src/io/encoder.d.ts.map +0 -1
- package/dist/esm/src/io/encoder.js +0 -36
- package/dist/esm/src/io/encoder.js.map +0 -1
- package/dist/esm/src/journal.d.ts +0 -52
- package/dist/esm/src/journal.d.ts.map +0 -1
- package/dist/esm/src/journal.js +0 -410
- package/dist/esm/src/journal.js.map +0 -1
- package/dist/esm/src/local_state_store.d.ts +0 -14
- package/dist/esm/src/local_state_store.d.ts.map +0 -1
- package/dist/esm/src/local_state_store.js +0 -79
- package/dist/esm/src/local_state_store.js.map +0 -1
- package/dist/esm/src/logger.d.ts +0 -35
- package/dist/esm/src/logger.d.ts.map +0 -1
- package/dist/esm/src/logger.js.map +0 -1
- package/dist/esm/src/promise_combinator_tracker.d.ts +0 -29
- package/dist/esm/src/promise_combinator_tracker.d.ts.map +0 -1
- package/dist/esm/src/promise_combinator_tracker.js +0 -125
- package/dist/esm/src/promise_combinator_tracker.js.map +0 -1
- package/dist/esm/src/state_machine.d.ts +0 -85
- package/dist/esm/src/state_machine.d.ts.map +0 -1
- package/dist/esm/src/state_machine.js +0 -399
- package/dist/esm/src/state_machine.js.map +0 -1
- package/dist/esm/src/types/protocol.d.ts +0 -40
- package/dist/esm/src/types/protocol.d.ts.map +0 -1
- package/dist/esm/src/types/protocol.js +0 -206
- package/dist/esm/src/types/protocol.js.map +0 -1
- package/dist/esm/src/types/types.d.ts +0 -20
- package/dist/esm/src/types/types.d.ts.map +0 -1
- package/dist/esm/src/types/types.js +0 -105
- package/dist/esm/src/types/types.js.map +0 -1
- package/dist/esm/src/utils/message_logger.d.ts +0 -7
- package/dist/esm/src/utils/message_logger.d.ts.map +0 -1
- package/dist/esm/src/utils/message_logger.js +0 -75
- package/dist/esm/src/utils/message_logger.js.map +0 -1
- package/dist/esm/src/utils/promises.d.ts +0 -15
- package/dist/esm/src/utils/promises.d.ts.map +0 -1
- package/dist/esm/src/utils/promises.js +0 -63
- package/dist/esm/src/utils/promises.js.map +0 -1
- package/dist/esm/src/utils/utils.d.ts +0 -3
- package/dist/esm/src/utils/utils.d.ts.map +0 -1
- package/dist/esm/src/utils/utils.js +0 -101
- package/dist/esm/src/utils/utils.js.map +0 -1
- package/dist/esm/test/awakeable.test.d.ts +0 -2
- package/dist/esm/test/awakeable.test.d.ts.map +0 -1
- package/dist/esm/test/awakeable.test.js +0 -139
- package/dist/esm/test/awakeable.test.js.map +0 -1
- package/dist/esm/test/complete_awakeable.test.d.ts +0 -2
- package/dist/esm/test/complete_awakeable.test.d.ts.map +0 -1
- package/dist/esm/test/complete_awakeable.test.js +0 -121
- package/dist/esm/test/complete_awakeable.test.js.map +0 -1
- package/dist/esm/test/eager_state.test.d.ts +0 -2
- package/dist/esm/test/eager_state.test.d.ts.map +0 -1
- package/dist/esm/test/eager_state.test.js +0 -278
- package/dist/esm/test/eager_state.test.js.map +0 -1
- package/dist/esm/test/get_and_set_state.test.d.ts +0 -2
- package/dist/esm/test/get_and_set_state.test.d.ts.map +0 -1
- package/dist/esm/test/get_and_set_state.test.js +0 -231
- package/dist/esm/test/get_and_set_state.test.js.map +0 -1
- package/dist/esm/test/get_state.test.d.ts +0 -2
- package/dist/esm/test/get_state.test.d.ts.map +0 -1
- package/dist/esm/test/get_state.test.js +0 -326
- package/dist/esm/test/get_state.test.js.map +0 -1
- package/dist/esm/test/lambda.test.d.ts +0 -2
- package/dist/esm/test/lambda.test.d.ts.map +0 -1
- package/dist/esm/test/lambda.test.js +0 -233
- package/dist/esm/test/lambda.test.js.map +0 -1
- package/dist/esm/test/message_coders.test.d.ts +0 -2
- package/dist/esm/test/message_coders.test.d.ts.map +0 -1
- package/dist/esm/test/message_coders.test.js +0 -35
- package/dist/esm/test/message_coders.test.js.map +0 -1
- package/dist/esm/test/promise_combinator_tracker.test.d.ts +0 -2
- package/dist/esm/test/promise_combinator_tracker.test.d.ts.map +0 -1
- package/dist/esm/test/promise_combinator_tracker.test.js +0 -154
- package/dist/esm/test/promise_combinator_tracker.test.js.map +0 -1
- package/dist/esm/test/promise_combinators.test.d.ts +0 -2
- package/dist/esm/test/promise_combinators.test.d.ts.map +0 -1
- package/dist/esm/test/promise_combinators.test.js +0 -431
- package/dist/esm/test/promise_combinators.test.js.map +0 -1
- package/dist/esm/test/promises.test.d.ts +0 -2
- package/dist/esm/test/promises.test.d.ts.map +0 -1
- package/dist/esm/test/promises.test.js +0 -30
- package/dist/esm/test/promises.test.js.map +0 -1
- package/dist/esm/test/protocol_stream.test.d.ts +0 -2
- package/dist/esm/test/protocol_stream.test.d.ts.map +0 -1
- package/dist/esm/test/protocol_stream.test.js +0 -218
- package/dist/esm/test/protocol_stream.test.js.map +0 -1
- package/dist/esm/test/protoutils.d.ts +0 -44
- package/dist/esm/test/protoutils.d.ts.map +0 -1
- package/dist/esm/test/protoutils.js +0 -335
- package/dist/esm/test/protoutils.js.map +0 -1
- package/dist/esm/test/service_bind.test.d.ts +0 -2
- package/dist/esm/test/service_bind.test.d.ts.map +0 -1
- package/dist/esm/test/service_bind.test.js +0 -93
- package/dist/esm/test/service_bind.test.js.map +0 -1
- package/dist/esm/test/side_effect.test.d.ts +0 -2
- package/dist/esm/test/side_effect.test.d.ts.map +0 -1
- package/dist/esm/test/side_effect.test.js +0 -131
- package/dist/esm/test/side_effect.test.js.map +0 -1
- package/dist/esm/test/sleep.test.d.ts +0 -2
- package/dist/esm/test/sleep.test.d.ts.map +0 -1
- package/dist/esm/test/sleep.test.js +0 -222
- package/dist/esm/test/sleep.test.js.map +0 -1
- package/dist/esm/test/state_keys.test.d.ts +0 -2
- package/dist/esm/test/state_keys.test.d.ts.map +0 -1
- package/dist/esm/test/state_keys.test.js +0 -90
- package/dist/esm/test/state_keys.test.js.map +0 -1
- package/dist/esm/test/state_machine.test.d.ts +0 -2
- package/dist/esm/test/state_machine.test.d.ts.map +0 -1
- package/dist/esm/test/state_machine.test.js +0 -40
- package/dist/esm/test/state_machine.test.js.map +0 -1
- package/dist/esm/test/testdriver.d.ts +0 -39
- package/dist/esm/test/testdriver.d.ts.map +0 -1
- package/dist/esm/test/testdriver.js +0 -182
- package/dist/esm/test/testdriver.js.map +0 -1
- package/dist/esm/test/utils.test.d.ts +0 -2
- package/dist/esm/test/utils.test.d.ts.map +0 -1
- package/dist/esm/test/utils.test.js +0 -91
- 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
|
|
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
|
|
22
|
-
const
|
|
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
|
-
|
|
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
|
-
|
|
42
|
-
|
|
43
|
-
|
|
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.
|
|
47
|
-
this.
|
|
48
|
-
this.
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
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
|
-
|
|
58
|
-
|
|
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
|
-
|
|
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("
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
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
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
parameter,
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
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
|
-
|
|
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
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
let
|
|
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
|
-
|
|
188
|
+
res = await action();
|
|
217
189
|
}
|
|
218
190
|
catch (e) {
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
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
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
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
|
-
|
|
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
|
-
|
|
278
|
-
|
|
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.
|
|
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
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
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:
|
|
315
|
-
|
|
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
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
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.
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
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
|
-
|
|
350
|
-
|
|
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
|
-
|
|
295
|
+
// Extract context from first promise
|
|
296
|
+
const self = (0, promises_js_1.extractContext)(promises[0]);
|
|
358
297
|
if (!self) {
|
|
359
|
-
throw
|
|
298
|
+
throw new Error("Not a combinable promise");
|
|
360
299
|
}
|
|
361
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
309
|
+
return new promises_js_1.RestateCombinatorPromise(self, combinatorConstructor, castedPromises);
|
|
374
310
|
}
|
|
375
311
|
// -- Various private methods
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
312
|
+
processNonCompletableEntry(vmCall) {
|
|
313
|
+
try {
|
|
314
|
+
vmCall(this.coreVm);
|
|
315
|
+
}
|
|
316
|
+
catch (e) {
|
|
317
|
+
this.handleInvocationEndError(e);
|
|
380
318
|
}
|
|
381
319
|
}
|
|
382
|
-
|
|
383
|
-
|
|
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
|
-
|
|
386
|
-
const
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
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
|
-
|
|
411
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
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
|