@restatedev/restate-sdk 1.10.3 → 1.11.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 (118) hide show
  1. package/dist/_virtual/rolldown_runtime.js +13 -0
  2. package/dist/common_api.cjs +1 -0
  3. package/dist/common_api.d.cts +1 -0
  4. package/dist/common_api.d.cts.map +1 -1
  5. package/dist/common_api.d.ts +1 -0
  6. package/dist/common_api.d.ts.map +1 -1
  7. package/dist/common_api.js +1 -0
  8. package/dist/common_api.js.map +1 -1
  9. package/dist/context_impl.cjs +20 -6
  10. package/dist/context_impl.d.ts +7 -5
  11. package/dist/context_impl.d.ts.map +1 -1
  12. package/dist/context_impl.js +20 -6
  13. package/dist/context_impl.js.map +1 -1
  14. package/dist/endpoint/endpoint.cjs +2 -2
  15. package/dist/endpoint/endpoint.js +2 -2
  16. package/dist/endpoint/fetch_endpoint.cjs +2 -2
  17. package/dist/endpoint/fetch_endpoint.js +2 -2
  18. package/dist/endpoint/fetch_endpoint.js.map +1 -1
  19. package/dist/endpoint/handlers/core_logging.cjs +52 -0
  20. package/dist/endpoint/handlers/core_logging.d.ts +10 -0
  21. package/dist/endpoint/handlers/core_logging.d.ts.map +1 -0
  22. package/dist/endpoint/handlers/core_logging.js +51 -0
  23. package/dist/endpoint/handlers/core_logging.js.map +1 -0
  24. package/dist/endpoint/handlers/discovery.cjs +58 -0
  25. package/dist/endpoint/handlers/discovery.d.ts +5 -0
  26. package/dist/endpoint/handlers/discovery.d.ts.map +1 -0
  27. package/dist/endpoint/handlers/discovery.js +59 -0
  28. package/dist/endpoint/handlers/discovery.js.map +1 -0
  29. package/dist/endpoint/handlers/fetch.cjs +23 -11
  30. package/dist/endpoint/handlers/fetch.d.ts +2 -2
  31. package/dist/endpoint/handlers/fetch.d.ts.map +1 -1
  32. package/dist/endpoint/handlers/fetch.js +24 -11
  33. package/dist/endpoint/handlers/fetch.js.map +1 -1
  34. package/dist/endpoint/handlers/generic.cjs +167 -248
  35. package/dist/endpoint/handlers/generic.d.ts +2 -58
  36. package/dist/endpoint/handlers/generic.d.ts.map +1 -1
  37. package/dist/endpoint/handlers/generic.js +166 -244
  38. package/dist/endpoint/handlers/generic.js.map +1 -1
  39. package/dist/endpoint/handlers/lambda.cjs +64 -61
  40. package/dist/endpoint/handlers/lambda.d.ts +2 -2
  41. package/dist/endpoint/handlers/lambda.d.ts.map +1 -1
  42. package/dist/endpoint/handlers/lambda.js +64 -60
  43. package/dist/endpoint/handlers/lambda.js.map +1 -1
  44. package/dist/endpoint/handlers/types.d.ts +41 -0
  45. package/dist/endpoint/handlers/types.d.ts.map +1 -0
  46. package/dist/endpoint/handlers/types.js +2 -0
  47. package/dist/endpoint/handlers/types.js.map +1 -0
  48. package/dist/endpoint/handlers/utils.cjs +51 -0
  49. package/dist/endpoint/handlers/utils.d.ts +11 -0
  50. package/dist/endpoint/handlers/utils.d.ts.map +1 -0
  51. package/dist/endpoint/handlers/utils.js +48 -0
  52. package/dist/endpoint/handlers/utils.js.map +1 -0
  53. package/dist/endpoint/handlers/vm/sdk_shared_core_wasm_bindings.cjs +283 -283
  54. package/dist/endpoint/handlers/vm/sdk_shared_core_wasm_bindings.d.ts +107 -107
  55. package/dist/endpoint/handlers/vm/sdk_shared_core_wasm_bindings.d.ts.map +1 -1
  56. package/dist/endpoint/handlers/vm/sdk_shared_core_wasm_bindings.js +282 -282
  57. package/dist/endpoint/handlers/vm/sdk_shared_core_wasm_bindings.js.map +1 -1
  58. package/dist/endpoint/lambda_endpoint.cjs +2 -2
  59. package/dist/endpoint/lambda_endpoint.js +2 -2
  60. package/dist/endpoint/lambda_endpoint.js.map +1 -1
  61. package/dist/endpoint/node_endpoint.cjs +41 -41
  62. package/dist/endpoint/node_endpoint.d.ts +1 -1
  63. package/dist/endpoint/node_endpoint.d.ts.map +1 -1
  64. package/dist/endpoint/node_endpoint.js +41 -40
  65. package/dist/endpoint/node_endpoint.js.map +1 -1
  66. package/dist/fetch.cjs +7 -0
  67. package/dist/fetch.d.cts +2 -1
  68. package/dist/fetch.d.cts.map +1 -1
  69. package/dist/fetch.d.ts +2 -1
  70. package/dist/fetch.d.ts.map +1 -1
  71. package/dist/fetch.js +2 -1
  72. package/dist/fetch.js.map +1 -1
  73. package/dist/index.cjs +7 -0
  74. package/dist/index.d.cts +2 -1
  75. package/dist/index.d.ts +2 -1
  76. package/dist/index.js +2 -1
  77. package/dist/internal.cjs +11 -0
  78. package/dist/internal.d.cts +27 -0
  79. package/dist/internal.d.cts.map +1 -0
  80. package/dist/internal.d.ts +27 -0
  81. package/dist/internal.d.ts.map +1 -0
  82. package/dist/internal.js +6 -0
  83. package/dist/internal.js.map +1 -0
  84. package/dist/io.cjs +2 -2
  85. package/dist/io.d.ts +3 -3
  86. package/dist/io.d.ts.map +1 -1
  87. package/dist/io.js +2 -2
  88. package/dist/io.js.map +1 -1
  89. package/dist/lambda.cjs +7 -0
  90. package/dist/lambda.d.cts +2 -1
  91. package/dist/lambda.d.cts.map +1 -1
  92. package/dist/lambda.d.ts +2 -1
  93. package/dist/lambda.d.ts.map +1 -1
  94. package/dist/lambda.js +2 -1
  95. package/dist/lambda.js.map +1 -1
  96. package/dist/node.cjs +7 -0
  97. package/dist/node.d.cts +2 -1
  98. package/dist/node.d.cts.map +1 -1
  99. package/dist/node.d.ts +2 -1
  100. package/dist/node.d.ts.map +1 -1
  101. package/dist/node.js +2 -1
  102. package/dist/node.js.map +1 -1
  103. package/dist/package.cjs +1 -1
  104. package/dist/package.js +1 -1
  105. package/dist/package.js.map +1 -1
  106. package/dist/types/errors.cjs +2 -0
  107. package/dist/types/errors.d.cts +8 -0
  108. package/dist/types/errors.d.cts.map +1 -1
  109. package/dist/types/errors.d.ts +8 -0
  110. package/dist/types/errors.d.ts.map +1 -1
  111. package/dist/types/errors.js +2 -0
  112. package/dist/types/errors.js.map +1 -1
  113. package/package.json +2 -2
  114. package/dist/utils/streams.cjs +0 -14
  115. package/dist/utils/streams.d.ts +0 -3
  116. package/dist/utils/streams.d.ts.map +0 -1
  117. package/dist/utils/streams.js +0 -13
  118. package/dist/utils/streams.js.map +0 -1
@@ -0,0 +1,13 @@
1
+ //#region rolldown:runtime
2
+ var __defProp = Object.defineProperty;
3
+ var __export = (all) => {
4
+ let target = {};
5
+ for (var name in all) __defProp(target, name, {
6
+ get: all[name],
7
+ enumerable: true
8
+ });
9
+ return target;
10
+ };
11
+
12
+ //#endregion
13
+ export { __export };
@@ -2,6 +2,7 @@ const require_rolldown_runtime = require('./_virtual/rolldown_runtime.cjs');
2
2
  const require_errors = require('./types/errors.cjs');
3
3
  const require_rpc = require('./types/rpc.cjs');
4
4
  const require_context = require('./context.cjs');
5
+ const require_internal = require('./internal.cjs');
5
6
  let __restatedev_restate_sdk_core = require("@restatedev/restate-sdk-core");
6
7
  __restatedev_restate_sdk_core = require_rolldown_runtime.__toESM(__restatedev_restate_sdk_core);
7
8
 
@@ -4,6 +4,7 @@ import { Context, ContextDate, DurablePromise, GenericCall, GenericSend, Invocat
4
4
  import { LogMetadata, LogSource, LoggerContext, LoggerTransport, RestateLogLevel } from "./logging/logger_transport.cjs";
5
5
  import { DefaultServiceOptions, RestateEndpoint, RestateEndpointBase } from "./endpoint.cjs";
6
6
  import { EndpointOptions } from "./endpoint/types.cjs";
7
+ import { internal_d_exports } from "./internal.cjs";
7
8
  import { Duration as Duration$1, JournalValueCodec as JournalValueCodec$1, ObjectHandler as ObjectHandler$1, RestateContext as RestateContext$1, RestateObjectContext as RestateObjectContext$1, RestateObjectSharedContext as RestateObjectSharedContext$1, RestateWorkflowContext as RestateWorkflowContext$1, RestateWorkflowSharedContext as RestateWorkflowSharedContext$1, Serde as Serde$1, Service as Service$1, ServiceDefinition as ServiceDefinition$1, ServiceDefinitionFrom as ServiceDefinitionFrom$1, ServiceHandler as ServiceHandler$1, VirtualObject as VirtualObject$1, VirtualObjectDefinition as VirtualObjectDefinition$1, VirtualObjectDefinitionFrom as VirtualObjectDefinitionFrom$1, Workflow as Workflow$1, WorkflowDefinition as WorkflowDefinition$1, WorkflowDefinitionFrom as WorkflowDefinitionFrom$1, WorkflowHandler as WorkflowHandler$1, WorkflowSharedHandler as WorkflowSharedHandler$1, serde } from "@restatedev/restate-sdk-core";
8
9
 
9
10
  //#region src/common_api.d.ts
@@ -1 +1 @@
1
- {"version":3,"file":"common_api.d.cts","names":[],"sources":["../src/common_api.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;cAwCa;6GAmGiwrB,IAAA,QAAA,EAAA;;EAnGjwrB,GAAA,CAAA,gBAAA,uBAAmC,CAAA,OAAA,CAAA,EAAA,CAAA,CAAA,MAAA,GAAA,CAAA,gBAAA,QAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAA;oHAmGk7vB,IAAA,qBAAA,QAAA,EAAA;;;;;AAAptE,KA9FlwrB,kBA8FkwrB,CAAA,CAAA,CAAA,GA9F1urB,cA8F0urB,CA9F3trB,CA8F2trB,CAAA;AAAotE,cALr9vB,oBAKq9vB,EAAA,OALj8vB,QAAA,CAAA,OAKi8vB;AAAA,cAJr9vB,mBAIq9vB,EAAA,OAJl8vB,QAAA,CAAA,MAAA,CAAA,SAIk8vB;AAAA,cAHr9vB,yBAGq9vB,EAAA,OAH57vB,QAAA,CAAA,MAAA,CAAA,MAG47vB;cAFr9vB,8BAAqB,QAAA,CAAA,QAAA,CAAA;cACrB,oCAA2B,QAAA,CAAA,QAAA,CAAA"}
1
+ {"version":3,"file":"common_api.d.cts","names":[],"sources":["../src/common_api.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;cAwCa;6GAsGosrB,IAAA,QAAA,EAAA;;;EAtGpsrB,UAAA,CAAA,gBAAmC,uBAAA,CAAA,OAAA,CAAA,EAAA,CAAA,CAAA,MAAA,GAAA,CAAA,gBAAA,CAAA,kBAAA,MAsGq3vB,CAtGr3vB,GAsGq3vB,oBAtGr3vB,CAsGq3vB,OAtGr3vB,CAsGq3vB,CAtGr3vB,CAsGq3vB,CAtGr3vB,CAAA,CAAA,CAAA,EAAA,CAAA;;;;;AAsGiqrB,KAjGrsrB,kBAiGqsrB,CAAA,CAAA,CAAA,GAjG7qrB,cAiG6qrB,CAjG9prB,CAiG8prB,CAAA;AAAotE,cARx5vB,oBAQw5vB,EAAA,OARp4vB,QAAA,CAAA,OAQo4vB;AAAA,cAPx5vB,mBAOw5vB,EAAA,OAPr4vB,QAAA,CAAA,MAAA,CAAA,SAOq4vB;AAAA,cANx5vB,yBAMw5vB,EAAA,OAN/3vB,QAAA,CAAA,MAAA,CAAA,MAM+3vB;AAAA,cALx5vB,qBAKw5vB,EAAA,OALn4vB,QAAA,CAAA,QAAA,CAAA,QAKm4vB;cAJx5vB,oCAA2B,QAAA,CAAA,QAAA,CAAA"}
@@ -4,6 +4,7 @@ import { Context, ContextDate, DurablePromise, GenericCall, GenericSend, Invocat
4
4
  import { LogMetadata, LogSource, LoggerContext, LoggerTransport, RestateLogLevel } from "./logging/logger_transport.js";
5
5
  import { DefaultServiceOptions, RestateEndpoint, RestateEndpointBase } from "./endpoint.js";
6
6
  import { EndpointOptions } from "./endpoint/types.js";
7
+ import { internal_d_exports } from "./internal.js";
7
8
  import { Duration as Duration$1, JournalValueCodec as JournalValueCodec$1, ObjectHandler as ObjectHandler$1, RestateContext as RestateContext$1, RestateObjectContext as RestateObjectContext$1, RestateObjectSharedContext as RestateObjectSharedContext$1, RestateWorkflowContext as RestateWorkflowContext$1, RestateWorkflowSharedContext as RestateWorkflowSharedContext$1, Serde as Serde$1, Service as Service$1, ServiceDefinition as ServiceDefinition$1, ServiceDefinitionFrom as ServiceDefinitionFrom$1, ServiceHandler as ServiceHandler$1, VirtualObject as VirtualObject$1, VirtualObjectDefinition as VirtualObjectDefinition$1, VirtualObjectDefinitionFrom as VirtualObjectDefinitionFrom$1, Workflow as Workflow$1, WorkflowDefinition as WorkflowDefinition$1, WorkflowDefinitionFrom as WorkflowDefinitionFrom$1, WorkflowHandler as WorkflowHandler$1, WorkflowSharedHandler as WorkflowSharedHandler$1, serde as serde$1 } from "@restatedev/restate-sdk-core";
8
9
 
9
10
  //#region src/common_api.d.ts
@@ -1 +1 @@
1
- {"version":3,"file":"common_api.d.ts","names":[],"sources":["../src/common_api.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;cAwCa;6GAmGiwrB,IAAA,QAAA,EAAA;;EAnGjwrB,GAAA,CAAA,gBAAA,uBAAmC,CAAA,OAAA,CAAA,EAAA,CAAA,CAAA,MAAA,GAAA,CAAA,gBAAA,QAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAA;oHAmGk7vB,IAAA,qBAAA,QAAA,EAAA;;;;;AAAptE,KA9FlwrB,kBA8FkwrB,CAAA,CAAA,CAAA,GA9F1urB,cA8F0urB,CA9F3trB,CA8F2trB,CAAA;AAAotE,cALr9vB,oBAKq9vB,EAAA,OALj8vB,QAAA,CAAA,OAKi8vB;AAAA,cAJr9vB,mBAIq9vB,EAAA,OAJl8vB,QAAA,CAAA,MAAA,CAAA,SAIk8vB;AAAA,cAHr9vB,yBAGq9vB,EAAA,OAH57vB,QAAA,CAAA,MAAA,CAAA,MAG47vB;cAFr9vB,8BAAqB,QAAA,CAAA,QAAA,CAAA;cACrB,oCAA2B,QAAA,CAAA,QAAA,CAAA"}
1
+ {"version":3,"file":"common_api.d.ts","names":[],"sources":["../src/common_api.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;cAwCa;6GAsGosrB,IAAA,QAAA,EAAA;;;EAtGpsrB,UAAA,CAAA,gBAAmC,uBAAA,CAAA,OAAA,CAAA,EAAA,CAAA,CAAA,MAAA,GAAA,CAAA,gBAAA,CAAA,kBAAA,MAsGq3vB,CAtGr3vB,GAsGq3vB,oBAtGr3vB,CAsGq3vB,OAtGr3vB,CAsGq3vB,CAtGr3vB,CAsGq3vB,CAtGr3vB,CAAA,CAAA,CAAA,EAAA,CAAA;;;;;AAsGiqrB,KAjGrsrB,kBAiGqsrB,CAAA,CAAA,CAAA,GAjG7qrB,cAiG6qrB,CAjG9prB,CAiG8prB,CAAA;AAAotE,cARx5vB,oBAQw5vB,EAAA,OARp4vB,QAAA,CAAA,OAQo4vB;AAAA,cAPx5vB,mBAOw5vB,EAAA,OAPr4vB,QAAA,CAAA,MAAA,CAAA,SAOq4vB;AAAA,cANx5vB,yBAMw5vB,EAAA,OAN/3vB,QAAA,CAAA,MAAA,CAAA,MAM+3vB;AAAA,cALx5vB,qBAKw5vB,EAAA,OALn4vB,QAAA,CAAA,QAAA,CAAA,QAKm4vB;cAJx5vB,oCAA2B,QAAA,CAAA,QAAA,CAAA"}
@@ -1,6 +1,7 @@
1
1
  import { CancelledError, RestateError, RetryableError, TerminalError, TimeoutError } from "./types/errors.js";
2
2
  import { Opts, SendOpts, handlers, object, rpc, service, workflow } from "./types/rpc.js";
3
3
  import { InvocationIdParser, RestatePromise } from "./context.js";
4
+ import { internal_exports } from "./internal.js";
4
5
  import { serde as serde$1 } from "@restatedev/restate-sdk-core";
5
6
 
6
7
  //#region src/common_api.ts
@@ -1 +1 @@
1
- {"version":3,"file":"common_api.js","names":[],"sources":["../src/common_api.ts"],"sourcesContent":["/*\n * Copyright (c) 2023-2024 - Restate Software, Inc., Restate GmbH\n *\n * This file is part of the Restate SDK for Node.js/TypeScript,\n * which is released under the MIT license.\n *\n * You can find a copy of the license in file LICENSE in the root\n * directory of this repository or package, or at\n * https://github.com/restatedev/sdk-typescript/blob/main/LICENSE\n */\n\nimport { RestatePromise } from \"./context.js\";\n\nexport type {\n Context,\n ObjectContext,\n ObjectSharedContext,\n WorkflowContext,\n WorkflowSharedContext,\n Rand,\n GenericCall,\n GenericSend,\n InvocationId,\n InvocationHandle,\n InvocationPromise,\n TypedState,\n UntypedState,\n ContextDate,\n RunAction,\n RunOptions,\n SendOptions,\n KeyValueStore,\n DurablePromise,\n Request,\n} from \"./context.js\";\nexport { InvocationIdParser, RestatePromise } from \"./context.js\";\n\n/**\n * @deprecated Use {@link RestatePromise}\n */\nexport const CombineablePromise = RestatePromise;\n\n/**\n * @deprecated Use {@link RestatePromise}\n */\nexport type CombineablePromise<T> = RestatePromise<T>;\n\nexport type {\n Serde,\n RestateContext,\n ServiceDefinitionFrom,\n Service,\n VirtualObjectDefinitionFrom,\n VirtualObject,\n WorkflowDefinitionFrom,\n Workflow,\n RestateObjectContext,\n RestateObjectSharedContext,\n RestateWorkflowSharedContext,\n RestateWorkflowContext,\n ServiceHandler,\n ObjectHandler,\n WorkflowHandler,\n WorkflowSharedHandler,\n Duration,\n JournalValueCodec,\n} from \"@restatedev/restate-sdk-core\";\nexport { serde } from \"@restatedev/restate-sdk-core\";\n\nexport type {\n Client,\n SendClient,\n ClientCallOptions,\n ClientSendOptions,\n RemoveVoidArgument,\n InferArg,\n ServiceHandlerOpts,\n WorkflowHandlerOpts,\n ObjectHandlerOpts,\n ServiceOpts,\n ObjectOpts,\n WorkflowOpts,\n ServiceOptions,\n ObjectOptions,\n WorkflowOptions,\n RetryPolicy,\n} from \"./types/rpc.js\";\nexport {\n service,\n object,\n workflow,\n handlers,\n Opts,\n SendOpts,\n} from \"./types/rpc.js\";\n\nexport { rpc } from \"./types/rpc.js\";\n\nexport type {\n ServiceDefinition,\n VirtualObjectDefinition,\n WorkflowDefinition,\n} from \"@restatedev/restate-sdk-core\";\n\nexport type {\n RestateEndpoint,\n RestateEndpointBase,\n DefaultServiceOptions,\n} from \"./endpoint.js\";\n\nexport {\n /**\n * @deprecated YOU MUST NOT USE THIS TYPE\n */\n RestateError,\n TerminalError,\n TimeoutError,\n RetryableError,\n CancelledError,\n type RetryableErrorOptions,\n} from \"./types/errors.js\";\nexport type {\n LoggerTransport,\n LogMetadata,\n RestateLogLevel,\n LoggerContext,\n LogSource,\n} from \"./logging/logger_transport.js\";\nexport type { EndpointOptions } from \"./endpoint/types.js\";\n\n// re-exporting createHandler shortcuts\n\nimport { handlers } from \"./types/rpc.js\";\n\nexport const createServiceHandler = handlers.handler;\nexport const createObjectHandler = handlers.object.exclusive;\nexport const createObjectSharedHandler = handlers.object.shared;\nexport const createWorkflowHandler = handlers.workflow.workflow;\nexport const createWorkflowSharedHandler = handlers.workflow.shared;\n"],"mappings":";;;;;;;;;AAwCA,MAAa,qBAAqB;AA8FlC,MAAa,uBAAuB,SAAS;AAC7C,MAAa,sBAAsB,SAAS,OAAO;AACnD,MAAa,4BAA4B,SAAS,OAAO;AACzD,MAAa,wBAAwB,SAAS,SAAS;AACvD,MAAa,8BAA8B,SAAS,SAAS"}
1
+ {"version":3,"file":"common_api.js","names":[],"sources":["../src/common_api.ts"],"sourcesContent":["/*\n * Copyright (c) 2023-2024 - Restate Software, Inc., Restate GmbH\n *\n * This file is part of the Restate SDK for Node.js/TypeScript,\n * which is released under the MIT license.\n *\n * You can find a copy of the license in file LICENSE in the root\n * directory of this repository or package, or at\n * https://github.com/restatedev/sdk-typescript/blob/main/LICENSE\n */\n\nimport { RestatePromise } from \"./context.js\";\n\nexport type {\n Context,\n ObjectContext,\n ObjectSharedContext,\n WorkflowContext,\n WorkflowSharedContext,\n Rand,\n GenericCall,\n GenericSend,\n InvocationId,\n InvocationHandle,\n InvocationPromise,\n TypedState,\n UntypedState,\n ContextDate,\n RunAction,\n RunOptions,\n SendOptions,\n KeyValueStore,\n DurablePromise,\n Request,\n} from \"./context.js\";\nexport { InvocationIdParser, RestatePromise } from \"./context.js\";\n\n/**\n * @deprecated Use {@link RestatePromise}\n */\nexport const CombineablePromise = RestatePromise;\n\n/**\n * @deprecated Use {@link RestatePromise}\n */\nexport type CombineablePromise<T> = RestatePromise<T>;\n\nexport type {\n Serde,\n RestateContext,\n ServiceDefinitionFrom,\n Service,\n VirtualObjectDefinitionFrom,\n VirtualObject,\n WorkflowDefinitionFrom,\n Workflow,\n RestateObjectContext,\n RestateObjectSharedContext,\n RestateWorkflowSharedContext,\n RestateWorkflowContext,\n ServiceHandler,\n ObjectHandler,\n WorkflowHandler,\n WorkflowSharedHandler,\n Duration,\n JournalValueCodec,\n} from \"@restatedev/restate-sdk-core\";\nexport { serde } from \"@restatedev/restate-sdk-core\";\n\nexport type {\n Client,\n SendClient,\n ClientCallOptions,\n ClientSendOptions,\n RemoveVoidArgument,\n InferArg,\n ServiceHandlerOpts,\n WorkflowHandlerOpts,\n ObjectHandlerOpts,\n ServiceOpts,\n ObjectOpts,\n WorkflowOpts,\n ServiceOptions,\n ObjectOptions,\n WorkflowOptions,\n RetryPolicy,\n} from \"./types/rpc.js\";\nexport {\n service,\n object,\n workflow,\n handlers,\n Opts,\n SendOpts,\n} from \"./types/rpc.js\";\n\nexport { rpc } from \"./types/rpc.js\";\n\nexport type {\n ServiceDefinition,\n VirtualObjectDefinition,\n WorkflowDefinition,\n} from \"@restatedev/restate-sdk-core\";\n\nexport type {\n RestateEndpoint,\n RestateEndpointBase,\n DefaultServiceOptions,\n} from \"./endpoint.js\";\n\nexport {\n /**\n * @deprecated YOU MUST NOT USE THIS TYPE\n */\n RestateError,\n TerminalError,\n TimeoutError,\n RetryableError,\n CancelledError,\n type RetryableErrorOptions,\n} from \"./types/errors.js\";\nexport type {\n LoggerTransport,\n LogMetadata,\n RestateLogLevel,\n LoggerContext,\n LogSource,\n} from \"./logging/logger_transport.js\";\nexport type { EndpointOptions } from \"./endpoint/types.js\";\n\n// re-exporting createHandler shortcuts\n\nimport { handlers } from \"./types/rpc.js\";\n\nexport const createServiceHandler = handlers.handler;\nexport const createObjectHandler = handlers.object.exclusive;\nexport const createObjectSharedHandler = handlers.object.shared;\nexport const createWorkflowHandler = handlers.workflow.workflow;\nexport const createWorkflowSharedHandler = handlers.workflow.shared;\n\n// Internal APIs\nexport * as internal from \"./internal.js\";\n"],"mappings":";;;;;;;;;;AAwCA,MAAa,qBAAqB;AA8FlC,MAAa,uBAAuB,SAAS;AAC7C,MAAa,sBAAsB,SAAS,OAAO;AACnD,MAAa,4BAA4B,SAAS,OAAO;AACzD,MAAa,wBAAwB,SAAS,SAAS;AACvD,MAAa,8BAA8B,SAAS,SAAS"}
@@ -1,9 +1,9 @@
1
1
  const require_rolldown_runtime = require('./_virtual/rolldown_runtime.cjs');
2
+ const require_sdk_shared_core_wasm_bindings = require('./endpoint/handlers/vm/sdk_shared_core_wasm_bindings.cjs');
2
3
  const require_errors = require('./types/errors.cjs');
3
4
  const require_rpc = require('./types/rpc.cjs');
4
- const require_completable_promise = require('./utils/completable_promise.cjs');
5
- const require_sdk_shared_core_wasm_bindings = require('./endpoint/handlers/vm/sdk_shared_core_wasm_bindings.cjs');
6
5
  const require_rand = require('./utils/rand.cjs');
6
+ const require_completable_promise = require('./utils/completable_promise.cjs');
7
7
  const require_promises = require('./promises.cjs');
8
8
  const require_io = require('./io.cjs');
9
9
  let __restatedev_restate_sdk_core = require("@restatedev/restate-sdk-core");
@@ -24,9 +24,9 @@ var ContextImpl = class {
24
24
  runClosuresTracker;
25
25
  promisesExecutor;
26
26
  defaultSerde;
27
+ serviceKey;
27
28
  constructor(coreVm, input, console, handlerKind, vmLogger, invocationRequest, invocationEndPromise, inputReader, outputWriter, journalValueCodec, defaultSerde, asTerminalError) {
28
29
  this.coreVm = coreVm;
29
- this.input = input;
30
30
  this.console = console;
31
31
  this.handlerKind = handlerKind;
32
32
  this.vmLogger = vmLogger;
@@ -39,6 +39,10 @@ var ContextImpl = class {
39
39
  this.runClosuresTracker = new RunClosuresTracker();
40
40
  this.promisesExecutor = new require_promises.PromisesExecutor(coreVm, new require_io.InputPump(coreVm, inputReader, this.handleInvocationEndError.bind(this)), this.outputPump, this.runClosuresTracker, this.promiseExecutorErrorCallback.bind(this));
41
41
  this.defaultSerde = defaultSerde ?? __restatedev_restate_sdk_core.serde.json;
42
+ this.serviceKey = input.key;
43
+ }
44
+ isProcessing() {
45
+ return this.coreVm.is_processing();
42
46
  }
43
47
  cancel(invocationId) {
44
48
  this.processNonCompletableEntry(require_sdk_shared_core_wasm_bindings.WasmCommandType.CancelInvocation, () => {}, (vm) => vm.sys_cancel_invocation(invocationId));
@@ -50,7 +54,7 @@ var ContextImpl = class {
50
54
  switch (this.handlerKind) {
51
55
  case require_rpc.HandlerKind.EXCLUSIVE:
52
56
  case require_rpc.HandlerKind.SHARED:
53
- case require_rpc.HandlerKind.WORKFLOW: return this.input.key;
57
+ case require_rpc.HandlerKind.WORKFLOW: return this.serviceKey;
54
58
  default: throw new require_errors.TerminalError("this handler type doesn't support key()");
55
59
  }
56
60
  }
@@ -154,7 +158,10 @@ var ContextImpl = class {
154
158
  if (err !== void 0) if (err instanceof require_errors.TerminalError) this.coreVm.propose_run_completion_failure(handle, {
155
159
  code: err.code,
156
160
  message: err.message,
157
- metadata: []
161
+ metadata: Object.entries(err.metadata ?? {}).map(([key, value]) => ({
162
+ key,
163
+ value
164
+ }))
158
165
  });
159
166
  else if (err instanceof require_errors.RetryableError) {
160
167
  const maxRetryDuration = options?.maxRetryDuration ?? options?.maxRetryDurationMillis;
@@ -420,7 +427,14 @@ function SuccessWithSerde(serde$1, journalCodec, transform) {
420
427
  }
421
428
  const Failure = (value, prom) => {
422
429
  if (typeof value === "object" && "Failure" in value) {
423
- prom.reject(new require_errors.TerminalError(value.Failure.message, { errorCode: value.Failure.code }));
430
+ const metadata = (value.Failure.metadata ?? []).reduce((acc, { key, value: v }) => {
431
+ acc[key] = v;
432
+ return acc;
433
+ }, {});
434
+ prom.reject(new require_errors.TerminalError(value.Failure.message, {
435
+ errorCode: value.Failure.code,
436
+ metadata
437
+ }));
424
438
  return Promise.resolve(true);
425
439
  }
426
440
  return Promise.resolve(false);
@@ -4,16 +4,16 @@ import { TerminalError } from "./types/errors.js";
4
4
  import type { Client, SendClient } from "./types/rpc.js";
5
5
  import { HandlerKind } from "./types/rpc.js";
6
6
  import type { Duration, JournalValueCodec, Serde, Service, ServiceDefinitionFrom, VirtualObject, VirtualObjectDefinitionFrom, Workflow, WorkflowDefinitionFrom } from "@restatedev/restate-sdk-core";
7
- import type { ReadableStreamDefaultReader, WritableStreamDefaultWriter } from "node:stream/web";
8
7
  import { CompletablePromise } from "./utils/completable_promise.js";
9
8
  import type { AsyncResultValue } from "./promises.js";
10
9
  import { PromisesExecutor } from "./promises.js";
11
- export declare class ContextImpl implements ObjectContext, WorkflowContext {
10
+ import type { ContextInternal } from "./internal.js";
11
+ import { InputReader, OutputWriter } from "./endpoint/handlers/types.js";
12
+ export declare class ContextImpl implements ObjectContext, WorkflowContext, ContextInternal {
12
13
  readonly coreVm: vm.WasmVM;
13
- readonly input: vm.WasmInput;
14
14
  readonly console: Console;
15
15
  readonly handlerKind: HandlerKind;
16
- private readonly vmLogger;
16
+ readonly vmLogger: Console;
17
17
  private readonly invocationRequest;
18
18
  private readonly invocationEndPromise;
19
19
  readonly journalValueCodec: JournalValueCodec;
@@ -24,7 +24,9 @@ export declare class ContextImpl implements ObjectContext, WorkflowContext {
24
24
  private readonly runClosuresTracker;
25
25
  readonly promisesExecutor: PromisesExecutor;
26
26
  readonly defaultSerde: Serde<any>;
27
- constructor(coreVm: vm.WasmVM, input: vm.WasmInput, console: Console, handlerKind: HandlerKind, vmLogger: Console, invocationRequest: Request, invocationEndPromise: CompletablePromise<void>, inputReader: ReadableStreamDefaultReader<Uint8Array>, outputWriter: WritableStreamDefaultWriter<Uint8Array>, journalValueCodec: JournalValueCodec, defaultSerde?: Serde<any>, asTerminalError?: ((error: any) => TerminalError | undefined) | undefined);
27
+ private readonly serviceKey;
28
+ constructor(coreVm: vm.WasmVM, input: vm.WasmInput, console: Console, handlerKind: HandlerKind, vmLogger: Console, invocationRequest: Request, invocationEndPromise: CompletablePromise<void>, inputReader: InputReader, outputWriter: OutputWriter, journalValueCodec: JournalValueCodec, defaultSerde?: Serde<any>, asTerminalError?: ((error: any) => TerminalError | undefined) | undefined);
29
+ isProcessing(): boolean;
28
30
  cancel(invocationId: InvocationId): void;
29
31
  attach<T>(invocationId: InvocationId, serde?: Serde<T>): RestatePromise<T>;
30
32
  get key(): string;
@@ -1 +1 @@
1
- {"version":3,"file":"context_impl.d.ts","sourceRoot":"","sources":["../src/context_impl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context_impl.d.ts","sourceRoot":"","sources":["../src/context_impl.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
+ import { WasmCommandType, WasmHeader } from "./endpoint/handlers/vm/sdk_shared_core_wasm_bindings.js";
1
2
  import { INTERNAL_ERROR_CODE, RestateError, RetryableError, TerminalError, UNKNOWN_ERROR_CODE, ensureError, logError } from "./types/errors.js";
2
3
  import { HandlerKind, makeRpcCallProxy, makeRpcSendProxy } from "./types/rpc.js";
3
- import { CompletablePromise } from "./utils/completable_promise.js";
4
- import { WasmCommandType, WasmHeader } from "./endpoint/handlers/vm/sdk_shared_core_wasm_bindings.js";
5
4
  import { RandImpl } from "./utils/rand.js";
5
+ import { CompletablePromise } from "./utils/completable_promise.js";
6
6
  import { InvocationPendingPromise, PromisesExecutor, RestateCombinatorPromise, RestateInvocationPromise, RestatePendingPromise, RestateSinglePromise, extractContext, pendingPromise } from "./promises.js";
7
7
  import { InputPump, OutputPump } from "./io.js";
8
8
  import { millisOrDurationToMillis, serde } from "@restatedev/restate-sdk-core";
@@ -22,9 +22,9 @@ var ContextImpl = class {
22
22
  runClosuresTracker;
23
23
  promisesExecutor;
24
24
  defaultSerde;
25
+ serviceKey;
25
26
  constructor(coreVm, input, console, handlerKind, vmLogger, invocationRequest, invocationEndPromise, inputReader, outputWriter, journalValueCodec, defaultSerde, asTerminalError) {
26
27
  this.coreVm = coreVm;
27
- this.input = input;
28
28
  this.console = console;
29
29
  this.handlerKind = handlerKind;
30
30
  this.vmLogger = vmLogger;
@@ -37,6 +37,10 @@ var ContextImpl = class {
37
37
  this.runClosuresTracker = new RunClosuresTracker();
38
38
  this.promisesExecutor = new PromisesExecutor(coreVm, new InputPump(coreVm, inputReader, this.handleInvocationEndError.bind(this)), this.outputPump, this.runClosuresTracker, this.promiseExecutorErrorCallback.bind(this));
39
39
  this.defaultSerde = defaultSerde ?? serde.json;
40
+ this.serviceKey = input.key;
41
+ }
42
+ isProcessing() {
43
+ return this.coreVm.is_processing();
40
44
  }
41
45
  cancel(invocationId) {
42
46
  this.processNonCompletableEntry(WasmCommandType.CancelInvocation, () => {}, (vm) => vm.sys_cancel_invocation(invocationId));
@@ -48,7 +52,7 @@ var ContextImpl = class {
48
52
  switch (this.handlerKind) {
49
53
  case HandlerKind.EXCLUSIVE:
50
54
  case HandlerKind.SHARED:
51
- case HandlerKind.WORKFLOW: return this.input.key;
55
+ case HandlerKind.WORKFLOW: return this.serviceKey;
52
56
  default: throw new TerminalError("this handler type doesn't support key()");
53
57
  }
54
58
  }
@@ -152,7 +156,10 @@ var ContextImpl = class {
152
156
  if (err !== void 0) if (err instanceof TerminalError) this.coreVm.propose_run_completion_failure(handle, {
153
157
  code: err.code,
154
158
  message: err.message,
155
- metadata: []
159
+ metadata: Object.entries(err.metadata ?? {}).map(([key, value]) => ({
160
+ key,
161
+ value
162
+ }))
156
163
  });
157
164
  else if (err instanceof RetryableError) {
158
165
  const maxRetryDuration = options?.maxRetryDuration ?? options?.maxRetryDurationMillis;
@@ -418,7 +425,14 @@ function SuccessWithSerde(serde$1, journalCodec, transform) {
418
425
  }
419
426
  const Failure = (value, prom) => {
420
427
  if (typeof value === "object" && "Failure" in value) {
421
- prom.reject(new TerminalError(value.Failure.message, { errorCode: value.Failure.code }));
428
+ const metadata = (value.Failure.metadata ?? []).reduce((acc, { key, value: v }) => {
429
+ acc[key] = v;
430
+ return acc;
431
+ }, {});
432
+ prom.reject(new TerminalError(value.Failure.message, {
433
+ errorCode: value.Failure.code,
434
+ metadata
435
+ }));
422
436
  return Promise.resolve(true);
423
437
  }
424
438
  return Promise.resolve(false);
@@ -1 +1 @@
1
- {"version":3,"file":"context_impl.js","names":["coreVm: vm.WasmVM","input: vm.WasmInput","console: Console","handlerKind: HandlerKind","vmLogger: Console","invocationRequest: Request","invocationEndPromise: CompletablePromise<void>","journalValueCodec: JournalValueCodec","asTerminalError?: (error: any) => TerminalError | undefined","serde","requestSerde: Serde<REQ>","responseSerde: Serde<RES>","parameter: Uint8Array","handle: number","doRun: () => Promise<any>","res: T","awakeable: vm.WasmAwakeable","value: Uint8Array","castedPromises: InternalRestatePromise<any>[]","error","ctx: ContextImpl","name: string","cause: any","commandType: WasmCommandType","commandIndex: number","VoidAsNull: Completer","VoidAsUndefined: Completer","buffer: Uint8Array","Failure: Completer","StateKeys: Completer","InvocationIdCompleter: Completer"],"sources":["../src/context_impl.ts"],"sourcesContent":["/*\n * Copyright (c) 2023-2024 - Restate Software, Inc., Restate GmbH\n *\n * This file is part of the Restate SDK for Node.js/TypeScript,\n * which is released under the MIT license.\n *\n * You can find a copy of the license in file LICENSE in the root\n * directory of this repository or package, or at\n * https://github.com/restatedev/sdk-typescript/blob/main/LICENSE\n */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type {\n ContextDate,\n DurablePromise,\n GenericCall,\n GenericSend,\n InvocationHandle,\n InvocationId,\n InvocationPromise,\n ObjectContext,\n Rand,\n Request,\n RestatePromise,\n RunAction,\n RunOptions,\n SendOptions,\n WorkflowContext,\n} from \"./context.js\";\nimport type * as vm from \"./endpoint/handlers/vm/sdk_shared_core_wasm_bindings.js\";\nimport {\n WasmCommandType,\n WasmHeader,\n} from \"./endpoint/handlers/vm/sdk_shared_core_wasm_bindings.js\";\nimport {\n ensureError,\n INTERNAL_ERROR_CODE,\n logError,\n RestateError,\n RetryableError,\n TerminalError,\n UNKNOWN_ERROR_CODE,\n} from \"./types/errors.js\";\nimport type { Client, SendClient } from \"./types/rpc.js\";\nimport {\n HandlerKind,\n makeRpcCallProxy,\n makeRpcSendProxy,\n} from \"./types/rpc.js\";\nimport type {\n Duration,\n JournalValueCodec,\n Serde,\n Service,\n ServiceDefinitionFrom,\n VirtualObject,\n VirtualObjectDefinitionFrom,\n Workflow,\n WorkflowDefinitionFrom,\n} from \"@restatedev/restate-sdk-core\";\nimport { millisOrDurationToMillis, serde } from \"@restatedev/restate-sdk-core\";\nimport { RandImpl } from \"./utils/rand.js\";\nimport type {\n ReadableStreamDefaultReader,\n WritableStreamDefaultWriter,\n} from \"node:stream/web\";\nimport { CompletablePromise } from \"./utils/completable_promise.js\";\nimport type { AsyncResultValue, InternalRestatePromise } from \"./promises.js\";\nimport {\n extractContext,\n InvocationPendingPromise,\n pendingPromise,\n PromisesExecutor,\n RestateCombinatorPromise,\n RestateInvocationPromise,\n RestatePendingPromise,\n RestateSinglePromise,\n} from \"./promises.js\";\nimport { InputPump, OutputPump } from \"./io.js\";\n\nexport class ContextImpl implements ObjectContext, WorkflowContext {\n public readonly rand: Rand;\n\n public readonly date: ContextDate = {\n now: (): Promise<number> => {\n return this.run(() => Date.now());\n },\n\n toJSON: (): Promise<string> => {\n return this.run(() => new Date().toJSON());\n },\n };\n\n private readonly outputPump: OutputPump;\n private readonly runClosuresTracker: RunClosuresTracker;\n readonly promisesExecutor: PromisesExecutor;\n readonly defaultSerde: Serde<any>;\n\n constructor(\n readonly coreVm: vm.WasmVM,\n readonly input: vm.WasmInput,\n public readonly console: Console,\n public readonly handlerKind: HandlerKind,\n private readonly vmLogger: Console,\n private readonly invocationRequest: Request,\n private readonly invocationEndPromise: CompletablePromise<void>,\n inputReader: ReadableStreamDefaultReader<Uint8Array>,\n outputWriter: WritableStreamDefaultWriter<Uint8Array>,\n readonly journalValueCodec: JournalValueCodec,\n defaultSerde?: Serde<any>,\n private readonly asTerminalError?: (error: any) => TerminalError | undefined\n ) {\n this.rand = new RandImpl(input.random_seed, () => {\n // TODO reimplement this check with async context\n // if (coreVm.is_inside_run()) {\n // throw new Error(\n // \"Cannot generate random numbers within a run closure. Use the random object outside the run closure.\"\n // );\n // }\n });\n this.outputPump = new OutputPump(coreVm, outputWriter);\n this.runClosuresTracker = new RunClosuresTracker();\n this.promisesExecutor = new PromisesExecutor(\n coreVm,\n new InputPump(\n coreVm,\n inputReader,\n this.handleInvocationEndError.bind(this)\n ),\n this.outputPump,\n this.runClosuresTracker,\n this.promiseExecutorErrorCallback.bind(this)\n );\n this.defaultSerde = defaultSerde ?? serde.json;\n }\n\n cancel(invocationId: InvocationId): void {\n this.processNonCompletableEntry(\n WasmCommandType.CancelInvocation,\n () => {},\n (vm) => vm.sys_cancel_invocation(invocationId)\n );\n }\n\n attach<T>(invocationId: InvocationId, serde?: Serde<T>): RestatePromise<T> {\n return this.processCompletableEntry(\n WasmCommandType.AttachInvocation,\n () => {},\n (vm) => vm.sys_attach_invocation(invocationId),\n SuccessWithSerde(serde ?? this.defaultSerde, this.journalValueCodec),\n Failure\n );\n }\n\n public get key(): string {\n switch (this.handlerKind) {\n case HandlerKind.EXCLUSIVE:\n case HandlerKind.SHARED:\n case HandlerKind.WORKFLOW: {\n return this.input.key;\n }\n default:\n throw new TerminalError(\"this handler type doesn't support key()\");\n }\n }\n\n public request(): Request {\n return this.invocationRequest;\n }\n\n public get<T>(name: string, serde?: Serde<T>): RestatePromise<T | null> {\n return this.processCompletableEntry(\n WasmCommandType.GetState,\n () => {},\n (vm) => vm.sys_get_state(name),\n VoidAsNull,\n SuccessWithSerde(serde ?? this.defaultSerde, this.journalValueCodec)\n );\n }\n\n public stateKeys(): RestatePromise<Array<string>> {\n return this.processCompletableEntry(\n WasmCommandType.GetStateKeys,\n () => {},\n (vm) => vm.sys_get_state_keys(),\n StateKeys\n );\n }\n\n public set<T>(name: string, value: T, serde?: Serde<T>): void {\n this.processNonCompletableEntry(\n WasmCommandType.SetState,\n () =>\n this.journalValueCodec.encode(\n (serde ?? this.defaultSerde).serialize(value)\n ),\n (vm, bytes) => vm.sys_set_state(name, bytes)\n );\n }\n\n public clear(name: string): void {\n this.processNonCompletableEntry(\n WasmCommandType.ClearState,\n () => {},\n (vm) => vm.sys_clear_state(name)\n );\n }\n\n public clearAll(): void {\n this.processNonCompletableEntry(\n WasmCommandType.ClearAllState,\n () => {},\n (vm) => vm.sys_clear_all_state()\n );\n }\n\n // --- Calls, background calls, etc\n //\n public genericCall<REQ = Uint8Array, RES = Uint8Array>(\n call: GenericCall<REQ, RES>\n ): InvocationPromise<RES> {\n const requestSerde: Serde<REQ> =\n call.inputSerde ?? (serde.binary as Serde<REQ>);\n const responseSerde: Serde<RES> =\n call.outputSerde ?? (serde.binary as Serde<RES>);\n\n let parameter: Uint8Array;\n try {\n parameter = this.journalValueCodec.encode(\n requestSerde.serialize(call.parameter)\n );\n } catch (e) {\n this.handleInvocationEndError(e, (vm, error) =>\n vm.notify_error_for_next_command(\n error.message,\n error.stack,\n WasmCommandType.Call\n )\n );\n return new InvocationPendingPromise(this);\n }\n\n try {\n const call_handles = this.coreVm.sys_call(\n call.service,\n call.method,\n parameter,\n call.key,\n call.headers\n ? Object.entries(call.headers).map(\n ([key, value]) => new WasmHeader(key, value)\n )\n : [],\n call.idempotencyKey,\n call.name\n );\n const commandIndex = this.coreVm.last_command_index();\n\n const invocationIdPromise = new RestateSinglePromise(\n this,\n call_handles.invocation_id_completion_id,\n completeCommandPromiseUsing(\n WasmCommandType.Call,\n commandIndex,\n InvocationIdCompleter\n )\n );\n\n return new RestateInvocationPromise(\n this,\n call_handles.call_completion_id,\n completeCommandPromiseUsing(\n WasmCommandType.Call,\n commandIndex,\n SuccessWithSerde(responseSerde, this.journalValueCodec),\n Failure\n ),\n invocationIdPromise as RestatePromise<InvocationId>\n );\n } catch (e) {\n this.handleInvocationEndError(e);\n // We return a pending promise to avoid the caller to see the error.\n return new InvocationPendingPromise(this);\n }\n }\n\n public genericSend<REQ = Uint8Array>(\n send: GenericSend<REQ>\n ): InvocationHandle {\n const requestSerde = send.inputSerde ?? (serde.binary as Serde<REQ>);\n\n let parameter: Uint8Array;\n try {\n parameter = this.journalValueCodec.encode(\n requestSerde.serialize(send.parameter)\n );\n } catch (e) {\n this.handleInvocationEndError(e, (vm, error) =>\n vm.notify_error_for_next_command(\n error.message,\n error.stack,\n WasmCommandType.OneWayCall\n )\n );\n return new InvocationPendingPromise(this);\n }\n\n try {\n const delay =\n send.delay !== undefined\n ? millisOrDurationToMillis(send.delay)\n : undefined;\n\n const handles = this.coreVm.sys_send(\n send.service,\n send.method,\n parameter,\n send.key,\n send.headers\n ? Object.entries(send.headers).map(\n ([key, value]) => new WasmHeader(key, value)\n )\n : [],\n delay !== undefined && delay > 0 ? BigInt(delay) : undefined,\n send.idempotencyKey,\n send.name\n );\n const commandIndex = this.coreVm.last_command_index();\n\n return {\n invocationId: new RestateSinglePromise(\n this,\n handles.invocation_id_completion_id,\n completeCommandPromiseUsing(\n WasmCommandType.OneWayCall,\n commandIndex,\n InvocationIdCompleter\n )\n ),\n };\n } catch (e) {\n this.handleInvocationEndError(e);\n return {\n invocationId: pendingPromise(),\n };\n }\n }\n\n serviceClient<D>({ name }: ServiceDefinitionFrom<D>): Client<Service<D>> {\n return makeRpcCallProxy(\n (call) => this.genericCall(call),\n this.defaultSerde,\n\n name\n );\n }\n\n objectClient<D>(\n { name }: VirtualObjectDefinitionFrom<D>,\n key: string\n ): Client<VirtualObject<D>> {\n return makeRpcCallProxy(\n (call) => this.genericCall(call),\n this.defaultSerde,\n name,\n key\n );\n }\n\n workflowClient<D>(\n { name }: WorkflowDefinitionFrom<D>,\n key: string\n ): Client<Workflow<D>> {\n return makeRpcCallProxy(\n (call) => this.genericCall(call),\n this.defaultSerde,\n name,\n key\n );\n }\n\n public serviceSendClient<D>(\n { name }: ServiceDefinitionFrom<D>,\n opts?: SendOptions\n ): SendClient<Service<D>> {\n return makeRpcSendProxy(\n (send) => this.genericSend(send),\n this.defaultSerde,\n name,\n undefined,\n opts?.delay\n );\n }\n\n public objectSendClient<D>(\n { name }: VirtualObjectDefinitionFrom<D>,\n key: string,\n opts?: SendOptions\n ): SendClient<VirtualObject<D>> {\n return makeRpcSendProxy(\n (send) => this.genericSend(send),\n this.defaultSerde,\n name,\n key,\n opts?.delay\n );\n }\n\n workflowSendClient<D>(\n { name }: WorkflowDefinitionFrom<D>,\n key: string,\n opts?: SendOptions\n ): SendClient<Workflow<D>> {\n return makeRpcSendProxy(\n (send) => this.genericSend(send),\n this.defaultSerde,\n name,\n key,\n opts?.delay\n );\n }\n\n // DON'T make this function async!!!\n // The reason is that we want the errors thrown by the initial checks to be propagated in the caller context,\n // and not in the promise context. To understand the semantic difference, make this function async and run the\n // UnawaitedSideEffectShouldFailSubsequentContextCall test.\n public run<T>(\n nameOrAction: string | RunAction<T>,\n actionSecondParameter?: RunAction<T>,\n options?: RunOptions<T>\n ): RestatePromise<T> {\n const { name, action } = unpackRunParameters(\n nameOrAction,\n actionSecondParameter\n );\n const serde = options?.serde ?? this.defaultSerde;\n\n // Prepare the handle\n let handle: number;\n try {\n handle = this.coreVm.sys_run(name ?? \"\");\n } catch (e) {\n this.handleInvocationEndError(e);\n return new RestatePendingPromise(this);\n }\n const commandIndex = this.coreVm.last_command_index();\n\n // Now prepare the run task\n const doRun: () => Promise<any> = async () => {\n // Execute the user code\n const startTime = Date.now();\n let res: T;\n let err;\n try {\n res = await action();\n } catch (e) {\n err = ensureError(e, this.asTerminalError);\n }\n const attemptDuration = Date.now() - startTime;\n\n // Propose the completion to the VM\n try {\n if (err !== undefined) {\n if (err instanceof TerminalError) {\n // Record failure, go ahead\n this.coreVm.propose_run_completion_failure(handle, {\n code: err.code,\n message: err.message,\n metadata: [],\n });\n } else if (err instanceof RetryableError) {\n const maxRetryDuration =\n options?.maxRetryDuration ?? options?.maxRetryDurationMillis;\n this.coreVm.propose_run_completion_failure_transient_with_delay_override(\n handle,\n err.message,\n err.stack,\n BigInt(attemptDuration),\n err.retryAfter !== undefined\n ? BigInt(millisOrDurationToMillis(err.retryAfter))\n : undefined,\n options?.maxRetryAttempts,\n maxRetryDuration !== undefined\n ? BigInt(millisOrDurationToMillis(maxRetryDuration))\n : undefined\n );\n } else {\n this.vmLogger.warn(\n `Error when processing ctx.run '${name}'.\\n`,\n err\n );\n\n // Configure the retry policy if any of the parameters are set.\n let retryPolicy;\n if (\n options?.retryIntervalFactor !== undefined ||\n options?.maxRetryAttempts !== undefined ||\n options?.initialRetryInterval !== undefined ||\n options?.initialRetryIntervalMillis !== undefined ||\n options?.maxRetryDuration !== undefined ||\n options?.maxRetryDurationMillis !== undefined ||\n options?.maxRetryInterval !== undefined ||\n options?.maxRetryIntervalMillis !== undefined\n ) {\n const maxRetryDuration =\n options?.maxRetryDuration ?? options?.maxRetryDurationMillis;\n retryPolicy = {\n factor: options?.retryIntervalFactor ?? 2.0,\n initial_interval: millisOrDurationToMillis(\n options?.initialRetryInterval ??\n options?.initialRetryIntervalMillis ??\n 50\n ),\n max_attempts: options?.maxRetryAttempts,\n max_duration:\n maxRetryDuration === undefined\n ? undefined\n : millisOrDurationToMillis(maxRetryDuration),\n max_interval: millisOrDurationToMillis(\n options?.maxRetryInterval ??\n options?.maxRetryIntervalMillis ?? { seconds: 10 }\n ),\n };\n }\n this.coreVm.propose_run_completion_failure_transient(\n handle,\n err.message,\n err.stack,\n BigInt(attemptDuration),\n retryPolicy\n );\n }\n } else {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n const serializedRes = serde.serialize(res);\n const encodedRes = this.journalValueCodec.encode(serializedRes);\n this.coreVm.propose_run_completion_success(handle, encodedRes);\n }\n } catch (e) {\n this.handleInvocationEndError(e);\n return pendingPromise<T>();\n }\n await this.outputPump.awaitNextProgress();\n };\n\n // Register the run to execute\n this.runClosuresTracker.registerRunClosure(handle, doRun);\n\n // TODO: here as well\n // Return the promise\n return new RestateSinglePromise(\n this,\n handle,\n completeCommandPromiseUsing(\n WasmCommandType.Run,\n commandIndex,\n SuccessWithSerde(serde, this.journalValueCodec),\n Failure\n )\n );\n }\n\n public sleep(\n duration: number | Duration,\n name?: string\n ): RestatePromise<void> {\n return this.processCompletableEntry(\n WasmCommandType.Sleep,\n () => {\n if (duration === undefined) {\n throw new Error(`Duration is undefined.`);\n }\n const millis = millisOrDurationToMillis(duration);\n if (millis < 0) {\n throw new Error(\n `Invalid negative sleep duration: ${millis}ms.\\nIf this duration is computed from a desired wake up time, make sure to record 'now' using 'wakeUpTime - ctx.date.now()'.`\n );\n }\n return BigInt(millis);\n },\n (vm, millis) => vm.sys_sleep(millis, name),\n VoidAsUndefined\n );\n }\n\n // -- Awakeables\n\n public awakeable<T>(serde?: Serde<T>): {\n id: string;\n promise: RestatePromise<T>;\n } {\n let awakeable: vm.WasmAwakeable;\n try {\n awakeable = this.coreVm.sys_awakeable();\n } catch (e) {\n this.handleInvocationEndError(e);\n return {\n id: \"invalid\",\n promise: new RestatePendingPromise(this),\n };\n }\n\n return {\n id: awakeable.id,\n promise: new RestateSinglePromise(\n this,\n awakeable.handle,\n completeSignalPromiseUsing(\n VoidAsUndefined,\n SuccessWithSerde(serde ?? this.defaultSerde, this.journalValueCodec),\n Failure\n )\n ),\n };\n }\n\n public resolveAwakeable<T>(id: string, payload?: T, serde?: Serde<T>): void {\n this.processNonCompletableEntry(\n WasmCommandType.CompleteAwakeable,\n () => {\n // We coerce undefined to null as null can be stringified by JSON.stringify\n let value: Uint8Array;\n\n if (serde) {\n value =\n payload === undefined ? new Uint8Array() : serde.serialize(payload);\n } else {\n value =\n payload !== undefined\n ? this.defaultSerde.serialize(payload)\n : this.defaultSerde.serialize(null);\n }\n return this.journalValueCodec.encode(value);\n },\n (vm, bytes) => vm.sys_complete_awakeable_success(id, bytes)\n );\n }\n\n public rejectAwakeable(id: string, reason: string): void {\n this.processNonCompletableEntry(\n WasmCommandType.CompleteAwakeable,\n () => {},\n (vm) => {\n vm.sys_complete_awakeable_failure(id, {\n code: UNKNOWN_ERROR_CODE,\n message: reason,\n metadata: [],\n });\n }\n );\n }\n\n public promise<T>(name: string, serde?: Serde<T>): DurablePromise<T> {\n return new DurablePromiseImpl(this, name, serde);\n }\n\n // Used by static methods of RestatePromise\n public static createCombinator<T extends readonly RestatePromise<unknown>[]>(\n combinatorConstructor: (promises: Promise<any>[]) => Promise<any>,\n promises: T\n ): RestatePromise<unknown> {\n // Extract context from first promise\n const self = extractContext(promises[0]);\n if (!self) {\n throw new Error(\"Not a combinable promise\");\n }\n\n // Collect first the promises downcasted to the internal promise type\n const castedPromises: InternalRestatePromise<any>[] = [];\n for (const promise of promises) {\n if (extractContext(promise) !== self) {\n self.handleInvocationEndError(\n new Error(\n \"You're mixing up RestatePromises from different RestateContext. This is not supported.\"\n )\n );\n return new RestatePendingPromise(self);\n }\n castedPromises.push(promise as InternalRestatePromise<any>);\n }\n return new RestateCombinatorPromise(\n self,\n combinatorConstructor,\n castedPromises\n );\n }\n\n // -- Various private methods\n\n private processNonCompletableEntry<T>(\n commandType: vm.WasmCommandType,\n prepare: () => T,\n vmCall: (vm: vm.WasmVM, input: T) => void\n ) {\n let input;\n try {\n input = prepare();\n } catch (e) {\n this.handleInvocationEndError(e, (vm, error) =>\n vm.notify_error_for_next_command(\n error.message,\n error.stack,\n commandType\n )\n );\n return;\n }\n\n try {\n vmCall(this.coreVm, input);\n } catch (e) {\n this.handleInvocationEndError(e);\n }\n }\n\n processCompletableEntry<T, U>(\n commandType: vm.WasmCommandType,\n prepare: () => T,\n vmCall: (vm: vm.WasmVM, t: T) => number,\n ...completers: Array<Completer>\n ): RestatePromise<U> {\n let input;\n try {\n input = prepare();\n } catch (e) {\n this.handleInvocationEndError(e, (vm, error) =>\n vm.notify_error_for_next_command(\n error.message,\n error.stack,\n commandType\n )\n );\n return new RestatePendingPromise(this);\n }\n\n let handle: number;\n try {\n handle = vmCall(this.coreVm, input);\n } catch (e) {\n this.handleInvocationEndError(e);\n return new RestatePendingPromise(this);\n }\n const commandIndex = this.coreVm.last_command_index();\n return new RestateSinglePromise(\n this,\n handle,\n completeCommandPromiseUsing(commandType, commandIndex, ...completers)\n );\n }\n\n promiseExecutorErrorCallback(e: unknown) {\n if (e instanceof AsyncCompleterError) {\n const cause = ensureError(e.cause);\n logError(this.vmLogger, e.cause);\n // Special handling for this one!\n this.coreVm.notify_error_for_specific_command(\n cause.message,\n cause.stack,\n e.commandType,\n e.commandIndex,\n null\n );\n } else {\n const error = ensureError(e);\n logError(this.vmLogger, error);\n if (!(error instanceof RestateError)) {\n // Notify error\n this.coreVm.notify_error(error.message, error.stack);\n }\n }\n\n // From now on, no progress will be made.\n this.invocationEndPromise.resolve();\n }\n\n handleInvocationEndError(\n e: unknown,\n notify_vm_error: (vm: vm.WasmVM, error: Error) => void = (vm, error) => {\n vm.notify_error(error.message, error.stack);\n }\n ) {\n const error = ensureError(e);\n logError(this.vmLogger, error);\n notify_vm_error(this.coreVm, error);\n\n // From now on, no progress will be made.\n this.invocationEndPromise.resolve();\n }\n}\n\nfunction unpackRunParameters<T>(\n a: string | RunAction<T>,\n b?: RunAction<T>\n): { name?: string; action: RunAction<T> } {\n if (typeof a === \"string\") {\n if (typeof b !== \"function\") {\n throw new TypeError(\"\");\n }\n return { name: a, action: b };\n }\n if (typeof a !== \"function\") {\n throw new TypeError(\"unexpected type at the first parameter\");\n }\n if (b) {\n throw new TypeError(\"unexpected a function as a second parameter.\");\n }\n return { action: a };\n}\n\nclass DurablePromiseImpl<T> implements DurablePromise<T> {\n private readonly serde: Serde<T>;\n\n constructor(\n private readonly ctx: ContextImpl,\n private readonly name: string,\n serde?: Serde<T>\n ) {\n this.serde = serde ?? (this.ctx.defaultSerde as unknown as Serde<T>);\n }\n\n then<TResult1 = T, TResult2 = never>(\n onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null,\n onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null\n ): Promise<TResult1 | TResult2> {\n return this.get().then(onfulfilled, onrejected);\n }\n\n catch<TResult = never>(\n onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null\n ): Promise<T | TResult> {\n return this.get().catch(onrejected);\n }\n\n finally(onfinally?: (() => void) | null): Promise<T> {\n return this.get().finally(onfinally);\n }\n\n [Symbol.toStringTag] = \"DurablePromise\";\n\n get(): RestatePromise<T> {\n return this.ctx.processCompletableEntry(\n WasmCommandType.GetPromise,\n () => {},\n (vm) => vm.sys_get_promise(this.name),\n SuccessWithSerde(this.serde, this.ctx.journalValueCodec),\n Failure\n );\n }\n\n peek(): Promise<T | undefined> {\n return this.ctx.processCompletableEntry(\n WasmCommandType.PeekPromise,\n () => {},\n (vm) => vm.sys_peek_promise(this.name),\n VoidAsUndefined,\n SuccessWithSerde(this.serde, this.ctx.journalValueCodec),\n Failure\n );\n }\n\n resolve(value?: T): Promise<void> {\n return this.ctx.processCompletableEntry(\n WasmCommandType.CompletePromise,\n () => this.ctx.journalValueCodec.encode(this.serde.serialize(value as T)),\n (vm, bytes) => vm.sys_complete_promise_success(this.name, bytes),\n VoidAsUndefined,\n Failure\n );\n }\n\n reject(errorMsg: string): Promise<void> {\n return this.ctx.processCompletableEntry(\n WasmCommandType.CompletePromise,\n () => {},\n (vm) =>\n vm.sys_complete_promise_failure(this.name, {\n code: INTERNAL_ERROR_CODE,\n message: errorMsg,\n metadata: [],\n }),\n VoidAsUndefined,\n Failure\n );\n }\n}\n\n/// Tracker of run closures to run\nexport class RunClosuresTracker {\n private currentRunWaitPoint?: CompletablePromise<void>;\n private runsToExecute: Map<number, () => Promise<any>> = new Map<\n number,\n () => Promise<any>\n >();\n\n executeRun(handle: number) {\n const runClosure = this.runsToExecute.get(handle);\n if (runClosure === undefined) {\n throw new Error(`Handle ${handle} doesn't exist`);\n }\n runClosure()\n .finally(() => {\n this.unblockCurrentRunWaitPoint();\n })\n .catch(() => {});\n }\n\n registerRunClosure(handle: number, runClosure: () => Promise<any>) {\n this.runsToExecute.set(handle, runClosure);\n }\n\n awaitNextCompletedRun(): Promise<void> {\n if (this.currentRunWaitPoint === undefined) {\n this.currentRunWaitPoint = new CompletablePromise();\n }\n return this.currentRunWaitPoint.promise;\n }\n\n private unblockCurrentRunWaitPoint() {\n if (this.currentRunWaitPoint !== undefined) {\n const p = this.currentRunWaitPoint;\n this.currentRunWaitPoint = undefined;\n p.resolve();\n }\n }\n}\n\n// ---- Functions used to parse async results\n\ntype Completer = (\n value: AsyncResultValue,\n prom: CompletablePromise<any>\n) => Promise<boolean>;\n\n// This is just a special type we use to propagate completer errors between this function and handleInvocationEndError\nclass AsyncCompleterError {\n constructor(\n readonly cause: any,\n readonly commandType: WasmCommandType,\n readonly commandIndex: number\n ) {}\n}\n\nfunction completeCommandPromiseUsing<T>(\n commandType: WasmCommandType,\n commandIndex: number,\n ...completers: Array<Completer>\n): (value: AsyncResultValue, prom: CompletablePromise<T>) => Promise<void> {\n return async (value: AsyncResultValue, prom: CompletablePromise<any>) => {\n try {\n for (const completer of completers) {\n if (await completer(value, prom)) {\n return;\n }\n }\n } catch (e) {\n // eslint-disable-next-line @typescript-eslint/only-throw-error\n throw new AsyncCompleterError(e, commandType, commandIndex);\n }\n\n throw new Error(\n `Unexpected variant in async result: ${JSON.stringify(value)}`\n );\n };\n}\n\n// This is like the function above, but won't decorate the error with the command metadata\nfunction completeSignalPromiseUsing<T>(\n ...completers: Array<Completer>\n): (value: AsyncResultValue, prom: CompletablePromise<T>) => Promise<void> {\n return async (value: AsyncResultValue, prom: CompletablePromise<any>) => {\n for (const completer of completers) {\n if (await completer(value, prom)) {\n return;\n }\n }\n\n throw new Error(\n `Unexpected variant in async result: ${JSON.stringify(value)}`\n );\n };\n}\n\nconst VoidAsNull: Completer = (value, prom) => {\n if (value === \"Empty\") {\n prom.resolve(null);\n return Promise.resolve(true);\n }\n return Promise.resolve(false);\n};\nconst VoidAsUndefined: Completer = (value, prom) => {\n if (value === \"Empty\") {\n prom.resolve(undefined);\n return Promise.resolve(true);\n }\n return Promise.resolve(false);\n};\n\nfunction SuccessWithSerde<T>(\n serde: Serde<T>,\n journalCodec?: JournalValueCodec,\n transform?: <U>(success: T) => U\n): Completer {\n return async (value, prom) => {\n if (typeof value !== \"object\" || !(\"Success\" in value)) {\n return false;\n }\n let buffer: Uint8Array;\n if (journalCodec !== undefined) {\n buffer = await journalCodec.decode(value.Success);\n } else {\n buffer = value.Success;\n }\n let val = serde.deserialize(buffer);\n if (transform) {\n val = transform(val);\n }\n prom.resolve(val);\n return true;\n };\n}\n\nconst Failure: Completer = (value, prom) => {\n if (typeof value === \"object\" && \"Failure\" in value) {\n prom.reject(\n new TerminalError(value.Failure.message, {\n errorCode: value.Failure.code,\n })\n );\n return Promise.resolve(true);\n }\n return Promise.resolve(false);\n};\n\nconst StateKeys: Completer = (value, prom) => {\n if (typeof value === \"object\" && \"StateKeys\" in value) {\n prom.resolve(value.StateKeys);\n return Promise.resolve(true);\n }\n return Promise.resolve(false);\n};\n\nconst InvocationIdCompleter: Completer = (value, prom) => {\n if (typeof value === \"object\" && \"InvocationId\" in value) {\n prom.resolve(value.InvocationId);\n return Promise.resolve(true);\n }\n return Promise.resolve(false);\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"context_impl.js","names":["coreVm: vm.WasmVM","console: Console","handlerKind: HandlerKind","vmLogger: Console","invocationRequest: Request","invocationEndPromise: CompletablePromise<void>","journalValueCodec: JournalValueCodec","asTerminalError?: (error: any) => TerminalError | undefined","serde","requestSerde: Serde<REQ>","responseSerde: Serde<RES>","parameter: Uint8Array","handle: number","doRun: () => Promise<any>","res: T","awakeable: vm.WasmAwakeable","value: Uint8Array","castedPromises: InternalRestatePromise<any>[]","error","ctx: ContextImpl","name: string","cause: any","commandType: WasmCommandType","commandIndex: number","VoidAsNull: Completer","VoidAsUndefined: Completer","buffer: Uint8Array","Failure: Completer","StateKeys: Completer","InvocationIdCompleter: Completer"],"sources":["../src/context_impl.ts"],"sourcesContent":["/*\n * Copyright (c) 2023-2024 - Restate Software, Inc., Restate GmbH\n *\n * This file is part of the Restate SDK for Node.js/TypeScript,\n * which is released under the MIT license.\n *\n * You can find a copy of the license in file LICENSE in the root\n * directory of this repository or package, or at\n * https://github.com/restatedev/sdk-typescript/blob/main/LICENSE\n */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type {\n ContextDate,\n DurablePromise,\n GenericCall,\n GenericSend,\n InvocationHandle,\n InvocationId,\n InvocationPromise,\n ObjectContext,\n Rand,\n Request,\n RestatePromise,\n RunAction,\n RunOptions,\n SendOptions,\n WorkflowContext,\n} from \"./context.js\";\nimport type * as vm from \"./endpoint/handlers/vm/sdk_shared_core_wasm_bindings.js\";\nimport {\n WasmCommandType,\n WasmHeader,\n} from \"./endpoint/handlers/vm/sdk_shared_core_wasm_bindings.js\";\nimport {\n ensureError,\n INTERNAL_ERROR_CODE,\n logError,\n RestateError,\n RetryableError,\n TerminalError,\n UNKNOWN_ERROR_CODE,\n} from \"./types/errors.js\";\nimport type { Client, SendClient } from \"./types/rpc.js\";\nimport {\n HandlerKind,\n makeRpcCallProxy,\n makeRpcSendProxy,\n} from \"./types/rpc.js\";\nimport type {\n Duration,\n JournalValueCodec,\n Serde,\n Service,\n ServiceDefinitionFrom,\n VirtualObject,\n VirtualObjectDefinitionFrom,\n Workflow,\n WorkflowDefinitionFrom,\n} from \"@restatedev/restate-sdk-core\";\nimport { millisOrDurationToMillis, serde } from \"@restatedev/restate-sdk-core\";\nimport { RandImpl } from \"./utils/rand.js\";\nimport { CompletablePromise } from \"./utils/completable_promise.js\";\nimport type { AsyncResultValue, InternalRestatePromise } from \"./promises.js\";\nimport {\n extractContext,\n InvocationPendingPromise,\n pendingPromise,\n PromisesExecutor,\n RestateCombinatorPromise,\n RestateInvocationPromise,\n RestatePendingPromise,\n RestateSinglePromise,\n} from \"./promises.js\";\nimport { InputPump, OutputPump } from \"./io.js\";\nimport type { ContextInternal } from \"./internal.js\";\nimport { InputReader, OutputWriter } from \"./endpoint/handlers/types.js\";\n\nexport class ContextImpl\n implements ObjectContext, WorkflowContext, ContextInternal\n{\n public readonly rand: Rand;\n\n public readonly date: ContextDate = {\n now: (): Promise<number> => {\n return this.run(() => Date.now());\n },\n\n toJSON: (): Promise<string> => {\n return this.run(() => new Date().toJSON());\n },\n };\n\n private readonly outputPump: OutputPump;\n private readonly runClosuresTracker: RunClosuresTracker;\n readonly promisesExecutor: PromisesExecutor;\n readonly defaultSerde: Serde<any>;\n private readonly serviceKey: string;\n\n constructor(\n readonly coreVm: vm.WasmVM,\n input: vm.WasmInput,\n public readonly console: Console,\n public readonly handlerKind: HandlerKind,\n readonly vmLogger: Console,\n private readonly invocationRequest: Request,\n private readonly invocationEndPromise: CompletablePromise<void>,\n inputReader: InputReader,\n outputWriter: OutputWriter,\n readonly journalValueCodec: JournalValueCodec,\n defaultSerde?: Serde<any>,\n private readonly asTerminalError?: (error: any) => TerminalError | undefined\n ) {\n this.rand = new RandImpl(input.random_seed, () => {\n // TODO reimplement this check with async context\n // if (coreVm.is_inside_run()) {\n // throw new Error(\n // \"Cannot generate random numbers within a run closure. Use the random object outside the run closure.\"\n // );\n // }\n });\n this.outputPump = new OutputPump(coreVm, outputWriter);\n this.runClosuresTracker = new RunClosuresTracker();\n this.promisesExecutor = new PromisesExecutor(\n coreVm,\n new InputPump(\n coreVm,\n inputReader,\n this.handleInvocationEndError.bind(this)\n ),\n this.outputPump,\n this.runClosuresTracker,\n this.promiseExecutorErrorCallback.bind(this)\n );\n this.defaultSerde = defaultSerde ?? serde.json;\n this.serviceKey = input.key;\n }\n\n isProcessing(): boolean {\n return this.coreVm.is_processing();\n }\n\n cancel(invocationId: InvocationId): void {\n this.processNonCompletableEntry(\n WasmCommandType.CancelInvocation,\n () => {},\n (vm) => vm.sys_cancel_invocation(invocationId)\n );\n }\n\n attach<T>(invocationId: InvocationId, serde?: Serde<T>): RestatePromise<T> {\n return this.processCompletableEntry(\n WasmCommandType.AttachInvocation,\n () => {},\n (vm) => vm.sys_attach_invocation(invocationId),\n SuccessWithSerde(serde ?? this.defaultSerde, this.journalValueCodec),\n Failure\n );\n }\n\n public get key(): string {\n switch (this.handlerKind) {\n case HandlerKind.EXCLUSIVE:\n case HandlerKind.SHARED:\n case HandlerKind.WORKFLOW: {\n return this.serviceKey;\n }\n default:\n throw new TerminalError(\"this handler type doesn't support key()\");\n }\n }\n\n public request(): Request {\n return this.invocationRequest;\n }\n\n public get<T>(name: string, serde?: Serde<T>): RestatePromise<T | null> {\n return this.processCompletableEntry(\n WasmCommandType.GetState,\n () => {},\n (vm) => vm.sys_get_state(name),\n VoidAsNull,\n SuccessWithSerde(serde ?? this.defaultSerde, this.journalValueCodec)\n );\n }\n\n public stateKeys(): RestatePromise<Array<string>> {\n return this.processCompletableEntry(\n WasmCommandType.GetStateKeys,\n () => {},\n (vm) => vm.sys_get_state_keys(),\n StateKeys\n );\n }\n\n public set<T>(name: string, value: T, serde?: Serde<T>): void {\n this.processNonCompletableEntry(\n WasmCommandType.SetState,\n () =>\n this.journalValueCodec.encode(\n (serde ?? this.defaultSerde).serialize(value)\n ),\n (vm, bytes) => vm.sys_set_state(name, bytes)\n );\n }\n\n public clear(name: string): void {\n this.processNonCompletableEntry(\n WasmCommandType.ClearState,\n () => {},\n (vm) => vm.sys_clear_state(name)\n );\n }\n\n public clearAll(): void {\n this.processNonCompletableEntry(\n WasmCommandType.ClearAllState,\n () => {},\n (vm) => vm.sys_clear_all_state()\n );\n }\n\n // --- Calls, background calls, etc\n //\n public genericCall<REQ = Uint8Array, RES = Uint8Array>(\n call: GenericCall<REQ, RES>\n ): InvocationPromise<RES> {\n const requestSerde: Serde<REQ> =\n call.inputSerde ?? (serde.binary as Serde<REQ>);\n const responseSerde: Serde<RES> =\n call.outputSerde ?? (serde.binary as Serde<RES>);\n\n let parameter: Uint8Array;\n try {\n parameter = this.journalValueCodec.encode(\n requestSerde.serialize(call.parameter)\n );\n } catch (e) {\n this.handleInvocationEndError(e, (vm, error) =>\n vm.notify_error_for_next_command(\n error.message,\n error.stack,\n WasmCommandType.Call\n )\n );\n return new InvocationPendingPromise(this);\n }\n\n try {\n const call_handles = this.coreVm.sys_call(\n call.service,\n call.method,\n parameter,\n call.key,\n call.headers\n ? Object.entries(call.headers).map(\n ([key, value]) => new WasmHeader(key, value)\n )\n : [],\n call.idempotencyKey,\n call.name\n );\n const commandIndex = this.coreVm.last_command_index();\n\n const invocationIdPromise = new RestateSinglePromise(\n this,\n call_handles.invocation_id_completion_id,\n completeCommandPromiseUsing(\n WasmCommandType.Call,\n commandIndex,\n InvocationIdCompleter\n )\n );\n\n return new RestateInvocationPromise(\n this,\n call_handles.call_completion_id,\n completeCommandPromiseUsing(\n WasmCommandType.Call,\n commandIndex,\n SuccessWithSerde(responseSerde, this.journalValueCodec),\n Failure\n ),\n invocationIdPromise as RestatePromise<InvocationId>\n );\n } catch (e) {\n this.handleInvocationEndError(e);\n // We return a pending promise to avoid the caller to see the error.\n return new InvocationPendingPromise(this);\n }\n }\n\n public genericSend<REQ = Uint8Array>(\n send: GenericSend<REQ>\n ): InvocationHandle {\n const requestSerde = send.inputSerde ?? (serde.binary as Serde<REQ>);\n\n let parameter: Uint8Array;\n try {\n parameter = this.journalValueCodec.encode(\n requestSerde.serialize(send.parameter)\n );\n } catch (e) {\n this.handleInvocationEndError(e, (vm, error) =>\n vm.notify_error_for_next_command(\n error.message,\n error.stack,\n WasmCommandType.OneWayCall\n )\n );\n return new InvocationPendingPromise(this);\n }\n\n try {\n const delay =\n send.delay !== undefined\n ? millisOrDurationToMillis(send.delay)\n : undefined;\n\n const handles = this.coreVm.sys_send(\n send.service,\n send.method,\n parameter,\n send.key,\n send.headers\n ? Object.entries(send.headers).map(\n ([key, value]) => new WasmHeader(key, value)\n )\n : [],\n delay !== undefined && delay > 0 ? BigInt(delay) : undefined,\n send.idempotencyKey,\n send.name\n );\n const commandIndex = this.coreVm.last_command_index();\n\n return {\n invocationId: new RestateSinglePromise(\n this,\n handles.invocation_id_completion_id,\n completeCommandPromiseUsing(\n WasmCommandType.OneWayCall,\n commandIndex,\n InvocationIdCompleter\n )\n ),\n };\n } catch (e) {\n this.handleInvocationEndError(e);\n return {\n invocationId: pendingPromise(),\n };\n }\n }\n\n serviceClient<D>({ name }: ServiceDefinitionFrom<D>): Client<Service<D>> {\n return makeRpcCallProxy(\n (call) => this.genericCall(call),\n this.defaultSerde,\n\n name\n );\n }\n\n objectClient<D>(\n { name }: VirtualObjectDefinitionFrom<D>,\n key: string\n ): Client<VirtualObject<D>> {\n return makeRpcCallProxy(\n (call) => this.genericCall(call),\n this.defaultSerde,\n name,\n key\n );\n }\n\n workflowClient<D>(\n { name }: WorkflowDefinitionFrom<D>,\n key: string\n ): Client<Workflow<D>> {\n return makeRpcCallProxy(\n (call) => this.genericCall(call),\n this.defaultSerde,\n name,\n key\n );\n }\n\n public serviceSendClient<D>(\n { name }: ServiceDefinitionFrom<D>,\n opts?: SendOptions\n ): SendClient<Service<D>> {\n return makeRpcSendProxy(\n (send) => this.genericSend(send),\n this.defaultSerde,\n name,\n undefined,\n opts?.delay\n );\n }\n\n public objectSendClient<D>(\n { name }: VirtualObjectDefinitionFrom<D>,\n key: string,\n opts?: SendOptions\n ): SendClient<VirtualObject<D>> {\n return makeRpcSendProxy(\n (send) => this.genericSend(send),\n this.defaultSerde,\n name,\n key,\n opts?.delay\n );\n }\n\n workflowSendClient<D>(\n { name }: WorkflowDefinitionFrom<D>,\n key: string,\n opts?: SendOptions\n ): SendClient<Workflow<D>> {\n return makeRpcSendProxy(\n (send) => this.genericSend(send),\n this.defaultSerde,\n name,\n key,\n opts?.delay\n );\n }\n\n // DON'T make this function async!!!\n // The reason is that we want the errors thrown by the initial checks to be propagated in the caller context,\n // and not in the promise context. To understand the semantic difference, make this function async and run the\n // UnawaitedSideEffectShouldFailSubsequentContextCall test.\n public run<T>(\n nameOrAction: string | RunAction<T>,\n actionSecondParameter?: RunAction<T>,\n options?: RunOptions<T>\n ): RestatePromise<T> {\n const { name, action } = unpackRunParameters(\n nameOrAction,\n actionSecondParameter\n );\n const serde = options?.serde ?? this.defaultSerde;\n\n // Prepare the handle\n let handle: number;\n try {\n handle = this.coreVm.sys_run(name ?? \"\");\n } catch (e) {\n this.handleInvocationEndError(e);\n return new RestatePendingPromise(this);\n }\n const commandIndex = this.coreVm.last_command_index();\n\n // Now prepare the run task\n const doRun: () => Promise<any> = async () => {\n // Execute the user code\n const startTime = Date.now();\n let res: T;\n let err;\n try {\n res = await action();\n } catch (e) {\n err = ensureError(e, this.asTerminalError);\n }\n const attemptDuration = Date.now() - startTime;\n\n // Propose the completion to the VM\n try {\n if (err !== undefined) {\n if (err instanceof TerminalError) {\n // Record failure, go ahead\n this.coreVm.propose_run_completion_failure(handle, {\n code: err.code,\n message: err.message,\n metadata: Object.entries(err.metadata ?? {}).map(\n ([key, value]) => ({ key, value })\n ),\n });\n } else if (err instanceof RetryableError) {\n const maxRetryDuration =\n options?.maxRetryDuration ?? options?.maxRetryDurationMillis;\n this.coreVm.propose_run_completion_failure_transient_with_delay_override(\n handle,\n err.message,\n err.stack,\n BigInt(attemptDuration),\n err.retryAfter !== undefined\n ? BigInt(millisOrDurationToMillis(err.retryAfter))\n : undefined,\n options?.maxRetryAttempts,\n maxRetryDuration !== undefined\n ? BigInt(millisOrDurationToMillis(maxRetryDuration))\n : undefined\n );\n } else {\n this.vmLogger.warn(\n `Error when processing ctx.run '${name}'.\\n`,\n err\n );\n\n // Configure the retry policy if any of the parameters are set.\n let retryPolicy;\n if (\n options?.retryIntervalFactor !== undefined ||\n options?.maxRetryAttempts !== undefined ||\n options?.initialRetryInterval !== undefined ||\n options?.initialRetryIntervalMillis !== undefined ||\n options?.maxRetryDuration !== undefined ||\n options?.maxRetryDurationMillis !== undefined ||\n options?.maxRetryInterval !== undefined ||\n options?.maxRetryIntervalMillis !== undefined\n ) {\n const maxRetryDuration =\n options?.maxRetryDuration ?? options?.maxRetryDurationMillis;\n retryPolicy = {\n factor: options?.retryIntervalFactor ?? 2.0,\n initial_interval: millisOrDurationToMillis(\n options?.initialRetryInterval ??\n options?.initialRetryIntervalMillis ??\n 50\n ),\n max_attempts: options?.maxRetryAttempts,\n max_duration:\n maxRetryDuration === undefined\n ? undefined\n : millisOrDurationToMillis(maxRetryDuration),\n max_interval: millisOrDurationToMillis(\n options?.maxRetryInterval ??\n options?.maxRetryIntervalMillis ?? { seconds: 10 }\n ),\n };\n }\n this.coreVm.propose_run_completion_failure_transient(\n handle,\n err.message,\n err.stack,\n BigInt(attemptDuration),\n retryPolicy\n );\n }\n } else {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n const serializedRes = serde.serialize(res);\n const encodedRes = this.journalValueCodec.encode(serializedRes);\n this.coreVm.propose_run_completion_success(handle, encodedRes);\n }\n } catch (e) {\n this.handleInvocationEndError(e);\n return pendingPromise<T>();\n }\n await this.outputPump.awaitNextProgress();\n };\n\n // Register the run to execute\n this.runClosuresTracker.registerRunClosure(handle, doRun);\n\n // TODO: here as well\n // Return the promise\n return new RestateSinglePromise(\n this,\n handle,\n completeCommandPromiseUsing(\n WasmCommandType.Run,\n commandIndex,\n SuccessWithSerde(serde, this.journalValueCodec),\n Failure\n )\n );\n }\n\n public sleep(\n duration: number | Duration,\n name?: string\n ): RestatePromise<void> {\n return this.processCompletableEntry(\n WasmCommandType.Sleep,\n () => {\n if (duration === undefined) {\n throw new Error(`Duration is undefined.`);\n }\n const millis = millisOrDurationToMillis(duration);\n if (millis < 0) {\n throw new Error(\n `Invalid negative sleep duration: ${millis}ms.\\nIf this duration is computed from a desired wake up time, make sure to record 'now' using 'wakeUpTime - ctx.date.now()'.`\n );\n }\n return BigInt(millis);\n },\n (vm, millis) => vm.sys_sleep(millis, name),\n VoidAsUndefined\n );\n }\n\n // -- Awakeables\n\n public awakeable<T>(serde?: Serde<T>): {\n id: string;\n promise: RestatePromise<T>;\n } {\n let awakeable: vm.WasmAwakeable;\n try {\n awakeable = this.coreVm.sys_awakeable();\n } catch (e) {\n this.handleInvocationEndError(e);\n return {\n id: \"invalid\",\n promise: new RestatePendingPromise(this),\n };\n }\n\n return {\n id: awakeable.id,\n promise: new RestateSinglePromise(\n this,\n awakeable.handle,\n completeSignalPromiseUsing(\n VoidAsUndefined,\n SuccessWithSerde(serde ?? this.defaultSerde, this.journalValueCodec),\n Failure\n )\n ),\n };\n }\n\n public resolveAwakeable<T>(id: string, payload?: T, serde?: Serde<T>): void {\n this.processNonCompletableEntry(\n WasmCommandType.CompleteAwakeable,\n () => {\n // We coerce undefined to null as null can be stringified by JSON.stringify\n let value: Uint8Array;\n\n if (serde) {\n value =\n payload === undefined ? new Uint8Array() : serde.serialize(payload);\n } else {\n value =\n payload !== undefined\n ? this.defaultSerde.serialize(payload)\n : this.defaultSerde.serialize(null);\n }\n return this.journalValueCodec.encode(value);\n },\n (vm, bytes) => vm.sys_complete_awakeable_success(id, bytes)\n );\n }\n\n public rejectAwakeable(id: string, reason: string): void {\n this.processNonCompletableEntry(\n WasmCommandType.CompleteAwakeable,\n () => {},\n (vm) => {\n vm.sys_complete_awakeable_failure(id, {\n code: UNKNOWN_ERROR_CODE,\n message: reason,\n metadata: [],\n });\n }\n );\n }\n\n public promise<T>(name: string, serde?: Serde<T>): DurablePromise<T> {\n return new DurablePromiseImpl(this, name, serde);\n }\n\n // Used by static methods of RestatePromise\n public static createCombinator<T extends readonly RestatePromise<unknown>[]>(\n combinatorConstructor: (promises: Promise<any>[]) => Promise<any>,\n promises: T\n ): RestatePromise<unknown> {\n // Extract context from first promise\n const self = extractContext(promises[0]);\n if (!self) {\n throw new Error(\"Not a combinable promise\");\n }\n\n // Collect first the promises downcasted to the internal promise type\n const castedPromises: InternalRestatePromise<any>[] = [];\n for (const promise of promises) {\n if (extractContext(promise) !== self) {\n self.handleInvocationEndError(\n new Error(\n \"You're mixing up RestatePromises from different RestateContext. This is not supported.\"\n )\n );\n return new RestatePendingPromise(self);\n }\n castedPromises.push(promise as InternalRestatePromise<any>);\n }\n return new RestateCombinatorPromise(\n self,\n combinatorConstructor,\n castedPromises\n );\n }\n\n // -- Various private methods\n\n private processNonCompletableEntry<T>(\n commandType: vm.WasmCommandType,\n prepare: () => T,\n vmCall: (vm: vm.WasmVM, input: T) => void\n ) {\n let input;\n try {\n input = prepare();\n } catch (e) {\n this.handleInvocationEndError(e, (vm, error) =>\n vm.notify_error_for_next_command(\n error.message,\n error.stack,\n commandType\n )\n );\n return;\n }\n\n try {\n vmCall(this.coreVm, input);\n } catch (e) {\n this.handleInvocationEndError(e);\n }\n }\n\n processCompletableEntry<T, U>(\n commandType: vm.WasmCommandType,\n prepare: () => T,\n vmCall: (vm: vm.WasmVM, t: T) => number,\n ...completers: Array<Completer>\n ): RestatePromise<U> {\n let input;\n try {\n input = prepare();\n } catch (e) {\n this.handleInvocationEndError(e, (vm, error) =>\n vm.notify_error_for_next_command(\n error.message,\n error.stack,\n commandType\n )\n );\n return new RestatePendingPromise(this);\n }\n\n let handle: number;\n try {\n handle = vmCall(this.coreVm, input);\n } catch (e) {\n this.handleInvocationEndError(e);\n return new RestatePendingPromise(this);\n }\n const commandIndex = this.coreVm.last_command_index();\n return new RestateSinglePromise(\n this,\n handle,\n completeCommandPromiseUsing(commandType, commandIndex, ...completers)\n );\n }\n\n promiseExecutorErrorCallback(e: unknown) {\n if (e instanceof AsyncCompleterError) {\n const cause = ensureError(e.cause);\n logError(this.vmLogger, e.cause);\n // Special handling for this one!\n this.coreVm.notify_error_for_specific_command(\n cause.message,\n cause.stack,\n e.commandType,\n e.commandIndex,\n null\n );\n } else {\n const error = ensureError(e);\n logError(this.vmLogger, error);\n if (!(error instanceof RestateError)) {\n // Notify error\n this.coreVm.notify_error(error.message, error.stack);\n }\n }\n\n // From now on, no progress will be made.\n this.invocationEndPromise.resolve();\n }\n\n handleInvocationEndError(\n e: unknown,\n notify_vm_error: (vm: vm.WasmVM, error: Error) => void = (vm, error) => {\n vm.notify_error(error.message, error.stack);\n }\n ) {\n const error = ensureError(e);\n logError(this.vmLogger, error);\n notify_vm_error(this.coreVm, error);\n\n // From now on, no progress will be made.\n this.invocationEndPromise.resolve();\n }\n}\n\nfunction unpackRunParameters<T>(\n a: string | RunAction<T>,\n b?: RunAction<T>\n): { name?: string; action: RunAction<T> } {\n if (typeof a === \"string\") {\n if (typeof b !== \"function\") {\n throw new TypeError(\"\");\n }\n return { name: a, action: b };\n }\n if (typeof a !== \"function\") {\n throw new TypeError(\"unexpected type at the first parameter\");\n }\n if (b) {\n throw new TypeError(\"unexpected a function as a second parameter.\");\n }\n return { action: a };\n}\n\nclass DurablePromiseImpl<T> implements DurablePromise<T> {\n private readonly serde: Serde<T>;\n\n constructor(\n private readonly ctx: ContextImpl,\n private readonly name: string,\n serde?: Serde<T>\n ) {\n this.serde = serde ?? (this.ctx.defaultSerde as unknown as Serde<T>);\n }\n\n then<TResult1 = T, TResult2 = never>(\n onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null,\n onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null\n ): Promise<TResult1 | TResult2> {\n return this.get().then(onfulfilled, onrejected);\n }\n\n catch<TResult = never>(\n onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null\n ): Promise<T | TResult> {\n return this.get().catch(onrejected);\n }\n\n finally(onfinally?: (() => void) | null): Promise<T> {\n return this.get().finally(onfinally);\n }\n\n [Symbol.toStringTag] = \"DurablePromise\";\n\n get(): RestatePromise<T> {\n return this.ctx.processCompletableEntry(\n WasmCommandType.GetPromise,\n () => {},\n (vm) => vm.sys_get_promise(this.name),\n SuccessWithSerde(this.serde, this.ctx.journalValueCodec),\n Failure\n );\n }\n\n peek(): Promise<T | undefined> {\n return this.ctx.processCompletableEntry(\n WasmCommandType.PeekPromise,\n () => {},\n (vm) => vm.sys_peek_promise(this.name),\n VoidAsUndefined,\n SuccessWithSerde(this.serde, this.ctx.journalValueCodec),\n Failure\n );\n }\n\n resolve(value?: T): Promise<void> {\n return this.ctx.processCompletableEntry(\n WasmCommandType.CompletePromise,\n () => this.ctx.journalValueCodec.encode(this.serde.serialize(value as T)),\n (vm, bytes) => vm.sys_complete_promise_success(this.name, bytes),\n VoidAsUndefined,\n Failure\n );\n }\n\n reject(errorMsg: string): Promise<void> {\n return this.ctx.processCompletableEntry(\n WasmCommandType.CompletePromise,\n () => {},\n (vm) =>\n vm.sys_complete_promise_failure(this.name, {\n code: INTERNAL_ERROR_CODE,\n message: errorMsg,\n metadata: [],\n }),\n VoidAsUndefined,\n Failure\n );\n }\n}\n\n/// Tracker of run closures to run\nexport class RunClosuresTracker {\n private currentRunWaitPoint?: CompletablePromise<void>;\n private runsToExecute: Map<number, () => Promise<any>> = new Map<\n number,\n () => Promise<any>\n >();\n\n executeRun(handle: number) {\n const runClosure = this.runsToExecute.get(handle);\n if (runClosure === undefined) {\n throw new Error(`Handle ${handle} doesn't exist`);\n }\n runClosure()\n .finally(() => {\n this.unblockCurrentRunWaitPoint();\n })\n .catch(() => {});\n }\n\n registerRunClosure(handle: number, runClosure: () => Promise<any>) {\n this.runsToExecute.set(handle, runClosure);\n }\n\n awaitNextCompletedRun(): Promise<void> {\n if (this.currentRunWaitPoint === undefined) {\n this.currentRunWaitPoint = new CompletablePromise();\n }\n return this.currentRunWaitPoint.promise;\n }\n\n private unblockCurrentRunWaitPoint() {\n if (this.currentRunWaitPoint !== undefined) {\n const p = this.currentRunWaitPoint;\n this.currentRunWaitPoint = undefined;\n p.resolve();\n }\n }\n}\n\n// ---- Functions used to parse async results\n\ntype Completer = (\n value: AsyncResultValue,\n prom: CompletablePromise<any>\n) => Promise<boolean>;\n\n// This is just a special type we use to propagate completer errors between this function and handleInvocationEndError\nclass AsyncCompleterError {\n constructor(\n readonly cause: any,\n readonly commandType: WasmCommandType,\n readonly commandIndex: number\n ) {}\n}\n\nfunction completeCommandPromiseUsing<T>(\n commandType: WasmCommandType,\n commandIndex: number,\n ...completers: Array<Completer>\n): (value: AsyncResultValue, prom: CompletablePromise<T>) => Promise<void> {\n return async (value: AsyncResultValue, prom: CompletablePromise<any>) => {\n try {\n for (const completer of completers) {\n if (await completer(value, prom)) {\n return;\n }\n }\n } catch (e) {\n // eslint-disable-next-line @typescript-eslint/only-throw-error\n throw new AsyncCompleterError(e, commandType, commandIndex);\n }\n\n throw new Error(\n `Unexpected variant in async result: ${JSON.stringify(value)}`\n );\n };\n}\n\n// This is like the function above, but won't decorate the error with the command metadata\nfunction completeSignalPromiseUsing<T>(\n ...completers: Array<Completer>\n): (value: AsyncResultValue, prom: CompletablePromise<T>) => Promise<void> {\n return async (value: AsyncResultValue, prom: CompletablePromise<any>) => {\n for (const completer of completers) {\n if (await completer(value, prom)) {\n return;\n }\n }\n\n throw new Error(\n `Unexpected variant in async result: ${JSON.stringify(value)}`\n );\n };\n}\n\nconst VoidAsNull: Completer = (value, prom) => {\n if (value === \"Empty\") {\n prom.resolve(null);\n return Promise.resolve(true);\n }\n return Promise.resolve(false);\n};\nconst VoidAsUndefined: Completer = (value, prom) => {\n if (value === \"Empty\") {\n prom.resolve(undefined);\n return Promise.resolve(true);\n }\n return Promise.resolve(false);\n};\n\nfunction SuccessWithSerde<T>(\n serde: Serde<T>,\n journalCodec?: JournalValueCodec,\n transform?: <U>(success: T) => U\n): Completer {\n return async (value, prom) => {\n if (typeof value !== \"object\" || !(\"Success\" in value)) {\n return false;\n }\n let buffer: Uint8Array;\n if (journalCodec !== undefined) {\n buffer = await journalCodec.decode(value.Success);\n } else {\n buffer = value.Success;\n }\n let val = serde.deserialize(buffer);\n if (transform) {\n val = transform(val);\n }\n prom.resolve(val);\n return true;\n };\n}\n\nconst Failure: Completer = (value, prom) => {\n if (typeof value === \"object\" && \"Failure\" in value) {\n const metadata = (value.Failure.metadata ?? []).reduce(\n (\n acc: Record<string, string>,\n { key, value: v }: { key: string; value: string }\n ) => {\n acc[key] = v;\n return acc;\n },\n {} as Record<string, string>\n );\n prom.reject(\n new TerminalError(value.Failure.message, {\n errorCode: value.Failure.code,\n metadata,\n })\n );\n return Promise.resolve(true);\n }\n return Promise.resolve(false);\n};\n\nconst StateKeys: Completer = (value, prom) => {\n if (typeof value === \"object\" && \"StateKeys\" in value) {\n prom.resolve(value.StateKeys);\n return Promise.resolve(true);\n }\n return Promise.resolve(false);\n};\n\nconst InvocationIdCompleter: Completer = (value, prom) => {\n if (typeof value === \"object\" && \"InvocationId\" in value) {\n prom.resolve(value.InvocationId);\n return Promise.resolve(true);\n }\n return Promise.resolve(false);\n};\n"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
+ const require_logger_transport = require('../logging/logger_transport.cjs');
2
+ const require_console_logger_transport = require('../logging/console_logger_transport.cjs');
1
3
  const require_rpc = require('../types/rpc.cjs');
2
4
  const require_components = require('./components.cjs');
3
- const require_logger_transport = require('../logging/logger_transport.cjs');
4
5
  const require_logger = require('../logging/logger.cjs');
5
- const require_console_logger_transport = require('../logging/console_logger_transport.cjs');
6
6
 
7
7
  //#region src/endpoint/endpoint.ts
8
8
  function isServiceDefinition(m) {
@@ -1,8 +1,8 @@
1
+ import { LogSource } from "../logging/logger_transport.js";
2
+ import { defaultLoggerTransport } from "../logging/console_logger_transport.js";
1
3
  import { HandlerWrapper } from "../types/rpc.js";
2
4
  import { ServiceComponent, VirtualObjectComponent, WorkflowComponent } from "./components.js";
3
- import { LogSource } from "../logging/logger_transport.js";
4
5
  import { createLogger } from "../logging/logger.js";
5
- import { defaultLoggerTransport } from "../logging/console_logger_transport.js";
6
6
 
7
7
  //#region src/endpoint/endpoint.ts
8
8
  function isServiceDefinition(m) {
@@ -1,5 +1,5 @@
1
- const require_generic = require('./handlers/generic.cjs');
2
1
  const require_endpoint = require('./endpoint.cjs');
2
+ const require_generic = require('./handlers/generic.cjs');
3
3
  const require_fetch = require('./handlers/fetch.cjs');
4
4
 
5
5
  //#region src/endpoint/fetch_endpoint.ts
@@ -33,7 +33,7 @@ var FetchEndpointImpl = class {
33
33
  return this;
34
34
  }
35
35
  handler() {
36
- return require_fetch.fetcher(new require_generic.GenericHandler(this.builder.build(), this.protocolMode, {}));
36
+ return require_fetch.fetcher(require_generic.createRestateHandler(this.builder.build(), this.protocolMode, {}));
37
37
  }
38
38
  };
39
39
 
@@ -1,5 +1,5 @@
1
- import { GenericHandler } from "./handlers/generic.js";
2
1
  import { EndpointBuilder } from "./endpoint.js";
2
+ import { createRestateHandler } from "./handlers/generic.js";
3
3
  import { fetcher } from "./handlers/fetch.js";
4
4
 
5
5
  //#region src/endpoint/fetch_endpoint.ts
@@ -33,7 +33,7 @@ var FetchEndpointImpl = class {
33
33
  return this;
34
34
  }
35
35
  handler() {
36
- return fetcher(new GenericHandler(this.builder.build(), this.protocolMode, {}));
36
+ return fetcher(createRestateHandler(this.builder.build(), this.protocolMode, {}));
37
37
  }
38
38
  };
39
39
 
@@ -1 +1 @@
1
- {"version":3,"file":"fetch_endpoint.js","names":["protocolMode: ProtocolMode"],"sources":["../../src/endpoint/fetch_endpoint.ts"],"sourcesContent":["/*\n * Copyright (c) 2023-2024 - Restate Software, Inc., Restate GmbH\n *\n * This file is part of the Restate SDK for Node.js/TypeScript,\n * which is released under the MIT license.\n *\n * You can find a copy of the license in file LICENSE in the root\n * directory of this repository or package, or at\n * https://github.com/restatedev/sdk-typescript/blob/main/LICENSE\n */\n\nimport type {\n JournalValueCodec,\n ServiceDefinition,\n VirtualObjectDefinition,\n WorkflowDefinition,\n} from \"@restatedev/restate-sdk-core\";\nimport { EndpointBuilder } from \"./endpoint.js\";\nimport type {\n DefaultServiceOptions,\n RestateEndpointBase,\n} from \"../endpoint.js\";\nimport { GenericHandler } from \"./handlers/generic.js\";\nimport { fetcher } from \"./handlers/fetch.js\";\nimport type { LoggerTransport } from \"../logging/logger_transport.js\";\nimport type { ProtocolMode } from \"./discovery.js\";\n\n/**\n * Generic Fetch encapsulates all the Restate services served by this endpoint.\n *\n *\n * @example\n * A typical request-response handler would look like this:\n * ```\n * import * as restate from \"@restatedev/restate-sdk/fetch\";\n *\n * export default restate\n * .endpoint()\n * .bind(myService)\n * .handler();\n * @example\n * A typical bidirectional handler (works with http2 and some http1.1 servers) would look like this:\n * ```\n * import * as restate from \"@restatedev/restate-sdk/fetch\";\n *\n * export default restate\n * .endpoint()\n * .bidirectional()\n * .bind(myService)\n * .handler();\n */\nexport interface FetchEndpoint extends RestateEndpointBase<FetchEndpoint> {\n handler(): {\n fetch: (request: Request, ...extraArgs: unknown[]) => Promise<Response>;\n };\n bidirectional(set?: boolean): FetchEndpoint;\n}\n\nexport class FetchEndpointImpl implements FetchEndpoint {\n constructor(private protocolMode: ProtocolMode) {}\n private builder: EndpointBuilder = new EndpointBuilder();\n\n public bind<P extends string, M>(\n definition:\n | ServiceDefinition<P, M>\n | VirtualObjectDefinition<P, M>\n | WorkflowDefinition<P, M>\n ): FetchEndpoint {\n this.builder.bind(definition);\n return this;\n }\n\n public withIdentityV1(...keys: string[]): FetchEndpoint {\n this.builder.addIdentityKeys(...keys);\n return this;\n }\n\n public defaultServiceOptions(options: DefaultServiceOptions): FetchEndpoint {\n this.builder.setDefaultServiceOptions(options);\n return this;\n }\n\n public setLogger(newLogger: LoggerTransport): FetchEndpoint {\n this.builder.setLogger(newLogger);\n return this;\n }\n\n public bidirectional(set: boolean = true): FetchEndpoint {\n this.protocolMode = set ? \"BIDI_STREAM\" : \"REQUEST_RESPONSE\";\n return this;\n }\n\n public journalValueCodecProvider(\n codecProvider: () => Promise<JournalValueCodec>\n ): FetchEndpoint {\n this.builder.setJournalValueCodecProvider(codecProvider);\n return this;\n }\n\n handler(): {\n fetch: (request: Request, ...extraArgs: unknown[]) => Promise<Response>;\n } {\n const genericHandler = new GenericHandler(\n this.builder.build(),\n this.protocolMode,\n {}\n );\n return fetcher(genericHandler);\n }\n}\n"],"mappings":";;;;;AA0DA,IAAa,oBAAb,MAAwD;CACtD,YAAY,AAAQA,cAA4B;EAA5B;;CACpB,AAAQ,UAA2B,IAAI,iBAAiB;CAExD,AAAO,KACL,YAIe;AACf,OAAK,QAAQ,KAAK,WAAW;AAC7B,SAAO;;CAGT,AAAO,eAAe,GAAG,MAA+B;AACtD,OAAK,QAAQ,gBAAgB,GAAG,KAAK;AACrC,SAAO;;CAGT,AAAO,sBAAsB,SAA+C;AAC1E,OAAK,QAAQ,yBAAyB,QAAQ;AAC9C,SAAO;;CAGT,AAAO,UAAU,WAA2C;AAC1D,OAAK,QAAQ,UAAU,UAAU;AACjC,SAAO;;CAGT,AAAO,cAAc,MAAe,MAAqB;AACvD,OAAK,eAAe,MAAM,gBAAgB;AAC1C,SAAO;;CAGT,AAAO,0BACL,eACe;AACf,OAAK,QAAQ,6BAA6B,cAAc;AACxD,SAAO;;CAGT,UAEE;AAMA,SAAO,QALgB,IAAI,eACzB,KAAK,QAAQ,OAAO,EACpB,KAAK,cACL,EAAE,CACH,CAC6B"}
1
+ {"version":3,"file":"fetch_endpoint.js","names":["protocolMode: ProtocolMode"],"sources":["../../src/endpoint/fetch_endpoint.ts"],"sourcesContent":["/*\n * Copyright (c) 2023-2024 - Restate Software, Inc., Restate GmbH\n *\n * This file is part of the Restate SDK for Node.js/TypeScript,\n * which is released under the MIT license.\n *\n * You can find a copy of the license in file LICENSE in the root\n * directory of this repository or package, or at\n * https://github.com/restatedev/sdk-typescript/blob/main/LICENSE\n */\n\nimport type {\n JournalValueCodec,\n ServiceDefinition,\n VirtualObjectDefinition,\n WorkflowDefinition,\n} from \"@restatedev/restate-sdk-core\";\nimport { EndpointBuilder } from \"./endpoint.js\";\nimport type {\n DefaultServiceOptions,\n RestateEndpointBase,\n} from \"../endpoint.js\";\nimport { createRestateHandler } from \"./handlers/generic.js\";\nimport { fetcher } from \"./handlers/fetch.js\";\nimport type { LoggerTransport } from \"../logging/logger_transport.js\";\nimport type { ProtocolMode } from \"./discovery.js\";\n\n/**\n * Generic Fetch encapsulates all the Restate services served by this endpoint.\n *\n *\n * @example\n * A typical request-response handler would look like this:\n * ```\n * import * as restate from \"@restatedev/restate-sdk/fetch\";\n *\n * export default restate\n * .endpoint()\n * .bind(myService)\n * .handler();\n * @example\n * A typical bidirectional handler (works with http2 and some http1.1 servers) would look like this:\n * ```\n * import * as restate from \"@restatedev/restate-sdk/fetch\";\n *\n * export default restate\n * .endpoint()\n * .bidirectional()\n * .bind(myService)\n * .handler();\n */\nexport interface FetchEndpoint extends RestateEndpointBase<FetchEndpoint> {\n handler(): {\n fetch: (request: Request, ...extraArgs: unknown[]) => Promise<Response>;\n };\n bidirectional(set?: boolean): FetchEndpoint;\n}\n\nexport class FetchEndpointImpl implements FetchEndpoint {\n constructor(private protocolMode: ProtocolMode) {}\n private builder: EndpointBuilder = new EndpointBuilder();\n\n public bind<P extends string, M>(\n definition:\n | ServiceDefinition<P, M>\n | VirtualObjectDefinition<P, M>\n | WorkflowDefinition<P, M>\n ): FetchEndpoint {\n this.builder.bind(definition);\n return this;\n }\n\n public withIdentityV1(...keys: string[]): FetchEndpoint {\n this.builder.addIdentityKeys(...keys);\n return this;\n }\n\n public defaultServiceOptions(options: DefaultServiceOptions): FetchEndpoint {\n this.builder.setDefaultServiceOptions(options);\n return this;\n }\n\n public setLogger(newLogger: LoggerTransport): FetchEndpoint {\n this.builder.setLogger(newLogger);\n return this;\n }\n\n public bidirectional(set: boolean = true): FetchEndpoint {\n this.protocolMode = set ? \"BIDI_STREAM\" : \"REQUEST_RESPONSE\";\n return this;\n }\n\n public journalValueCodecProvider(\n codecProvider: () => Promise<JournalValueCodec>\n ): FetchEndpoint {\n this.builder.setJournalValueCodecProvider(codecProvider);\n return this;\n }\n\n handler(): {\n fetch: (request: Request, ...extraArgs: unknown[]) => Promise<Response>;\n } {\n const genericHandler = createRestateHandler(\n this.builder.build(),\n this.protocolMode,\n {}\n );\n return fetcher(genericHandler);\n }\n}\n"],"mappings":";;;;;AA0DA,IAAa,oBAAb,MAAwD;CACtD,YAAY,AAAQA,cAA4B;EAA5B;;CACpB,AAAQ,UAA2B,IAAI,iBAAiB;CAExD,AAAO,KACL,YAIe;AACf,OAAK,QAAQ,KAAK,WAAW;AAC7B,SAAO;;CAGT,AAAO,eAAe,GAAG,MAA+B;AACtD,OAAK,QAAQ,gBAAgB,GAAG,KAAK;AACrC,SAAO;;CAGT,AAAO,sBAAsB,SAA+C;AAC1E,OAAK,QAAQ,yBAAyB,QAAQ;AAC9C,SAAO;;CAGT,AAAO,UAAU,WAA2C;AAC1D,OAAK,QAAQ,UAAU,UAAU;AACjC,SAAO;;CAGT,AAAO,cAAc,MAAe,MAAqB;AACvD,OAAK,eAAe,MAAM,gBAAgB;AAC1C,SAAO;;CAGT,AAAO,0BACL,eACe;AACf,OAAK,QAAQ,6BAA6B,cAAc;AACxD,SAAO;;CAGT,UAEE;AAMA,SAAO,QALgB,qBACrB,KAAK,QAAQ,OAAO,EACpB,KAAK,cACL,EAAE,CACH,CAC6B"}