@restatedev/restate-sdk 1.11.1 → 1.12.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 (128) hide show
  1. package/dist/_virtual/rolldown_runtime.cjs +9 -0
  2. package/dist/common_api.cjs +2 -1
  3. package/dist/common_api.d.cts +6 -2
  4. package/dist/common_api.d.cts.map +1 -1
  5. package/dist/common_api.d.ts +6 -2
  6. package/dist/common_api.d.ts.map +1 -1
  7. package/dist/common_api.js +2 -1
  8. package/dist/common_api.js.map +1 -1
  9. package/dist/context.cjs +13 -9
  10. package/dist/context.d.cts +36 -29
  11. package/dist/context.d.cts.map +1 -1
  12. package/dist/context.d.ts +36 -29
  13. package/dist/context.d.ts.map +1 -1
  14. package/dist/context.js +13 -9
  15. package/dist/context.js.map +1 -1
  16. package/dist/context_impl.cjs +150 -91
  17. package/dist/context_impl.d.cts +8 -0
  18. package/dist/context_impl.d.ts +8 -72
  19. package/dist/context_impl.d.ts.map +1 -1
  20. package/dist/context_impl.js +151 -93
  21. package/dist/context_impl.js.map +1 -1
  22. package/dist/endpoint/components.cjs +35 -20
  23. package/dist/endpoint/components.d.cts +5 -0
  24. package/dist/endpoint/components.d.ts +5 -97
  25. package/dist/endpoint/components.d.ts.map +1 -1
  26. package/dist/endpoint/components.js +35 -20
  27. package/dist/endpoint/components.js.map +1 -1
  28. package/dist/endpoint/endpoint.cjs +2 -2
  29. package/dist/endpoint/endpoint.d.cts +5 -0
  30. package/dist/endpoint/endpoint.d.ts +5 -39
  31. package/dist/endpoint/endpoint.js +2 -2
  32. package/dist/endpoint/endpoint.js.map +1 -1
  33. package/dist/endpoint/handlers/generic.cjs +115 -39
  34. package/dist/endpoint/handlers/generic.d.ts.map +1 -1
  35. package/dist/endpoint/handlers/generic.js +115 -39
  36. package/dist/endpoint/handlers/generic.js.map +1 -1
  37. package/dist/endpoint/handlers/types.d.cts +1 -0
  38. package/dist/endpoint/handlers/types.d.ts +1 -41
  39. package/dist/endpoint/handlers/utils.cjs +1 -1
  40. package/dist/endpoint/handlers/utils.js +1 -1
  41. package/dist/endpoint/handlers/vm/sdk_shared_core_wasm_bindings.cjs +43 -3
  42. package/dist/endpoint/handlers/vm/sdk_shared_core_wasm_bindings.d.ts +19 -1
  43. package/dist/endpoint/handlers/vm/sdk_shared_core_wasm_bindings.d.ts.map +1 -1
  44. package/dist/endpoint/handlers/vm/sdk_shared_core_wasm_bindings.js +43 -3
  45. package/dist/endpoint/handlers/vm/sdk_shared_core_wasm_bindings.js.map +1 -1
  46. package/dist/endpoint/node_endpoint.cjs +28 -12
  47. package/dist/endpoint/node_endpoint.d.ts +14 -2
  48. package/dist/endpoint/node_endpoint.d.ts.map +1 -1
  49. package/dist/endpoint/node_endpoint.js +27 -11
  50. package/dist/endpoint/node_endpoint.js.map +1 -1
  51. package/dist/endpoint/types.d.cts +1 -1
  52. package/dist/endpoint/types.d.ts +1 -1
  53. package/dist/endpoint.d.cts +87 -5
  54. package/dist/endpoint.d.cts.map +1 -1
  55. package/dist/endpoint.d.ts +87 -5
  56. package/dist/endpoint.d.ts.map +1 -1
  57. package/dist/error_sanitization.cjs +26 -0
  58. package/dist/error_sanitization.d.ts +13 -0
  59. package/dist/error_sanitization.d.ts.map +1 -0
  60. package/dist/error_sanitization.js +26 -0
  61. package/dist/error_sanitization.js.map +1 -0
  62. package/dist/fetch.cjs +3 -1
  63. package/dist/fetch.d.cts +5 -3
  64. package/dist/fetch.d.cts.map +1 -1
  65. package/dist/fetch.d.ts +5 -3
  66. package/dist/fetch.d.ts.map +1 -1
  67. package/dist/fetch.js +3 -2
  68. package/dist/fetch.js.map +1 -1
  69. package/dist/hooks.d.cts +87 -0
  70. package/dist/hooks.d.cts.map +1 -0
  71. package/dist/hooks.d.ts +87 -0
  72. package/dist/hooks.d.ts.map +1 -0
  73. package/dist/hooks.js +2 -0
  74. package/dist/hooks.js.map +1 -0
  75. package/dist/index.cjs +3 -1
  76. package/dist/index.d.cts +6 -4
  77. package/dist/index.d.ts +6 -4
  78. package/dist/index.js +3 -2
  79. package/dist/internal.cjs +3 -1
  80. package/dist/internal.d.cts +186 -2
  81. package/dist/internal.d.cts.map +1 -1
  82. package/dist/internal.d.ts +186 -2
  83. package/dist/internal.d.ts.map +1 -1
  84. package/dist/internal.js +4 -1
  85. package/dist/internal.js.map +1 -1
  86. package/dist/io.d.cts +1 -0
  87. package/dist/io.d.ts +1 -24
  88. package/dist/lambda.cjs +3 -1
  89. package/dist/lambda.d.cts +5 -3
  90. package/dist/lambda.d.cts.map +1 -1
  91. package/dist/lambda.d.ts +5 -3
  92. package/dist/lambda.d.ts.map +1 -1
  93. package/dist/lambda.js +3 -2
  94. package/dist/lambda.js.map +1 -1
  95. package/dist/logging/logger.d.cts +1 -0
  96. package/dist/logging/logger.d.ts +1 -10
  97. package/dist/node.cjs +23 -6
  98. package/dist/node.d.cts +46 -8
  99. package/dist/node.d.cts.map +1 -1
  100. package/dist/node.d.ts +46 -8
  101. package/dist/node.d.ts.map +1 -1
  102. package/dist/node.js +23 -7
  103. package/dist/node.js.map +1 -1
  104. package/dist/package.cjs +1 -1
  105. package/dist/package.js +1 -1
  106. package/dist/package.js.map +1 -1
  107. package/dist/promises.cjs +90 -53
  108. package/dist/promises.d.cts +18 -0
  109. package/dist/promises.d.cts.map +1 -0
  110. package/dist/promises.d.ts +15 -108
  111. package/dist/promises.d.ts.map +1 -1
  112. package/dist/promises.js +85 -48
  113. package/dist/promises.js.map +1 -1
  114. package/dist/types/errors.cjs +13 -0
  115. package/dist/types/errors.d.cts +11 -5
  116. package/dist/types/errors.d.cts.map +1 -1
  117. package/dist/types/errors.d.ts +11 -5
  118. package/dist/types/errors.d.ts.map +1 -1
  119. package/dist/types/errors.js +13 -1
  120. package/dist/types/errors.js.map +1 -1
  121. package/dist/types/rpc.cjs +7 -19
  122. package/dist/types/rpc.d.cts +174 -0
  123. package/dist/types/rpc.d.cts.map +1 -1
  124. package/dist/types/rpc.d.ts +174 -0
  125. package/dist/types/rpc.d.ts.map +1 -1
  126. package/dist/types/rpc.js +7 -19
  127. package/dist/types/rpc.js.map +1 -1
  128. package/package.json +2 -2
package/dist/node.d.ts CHANGED
@@ -1,11 +1,14 @@
1
1
  import { CancelledError, RestateError, RetryableError, RetryableErrorOptions, TerminalError, TimeoutError } from "./types/errors.js";
2
+ import { Hooks, HooksProvider, Interceptor } from "./hooks.js";
2
3
  import { Client, ClientCallOptions, ClientSendOptions, InferArg, ObjectHandlerOpts, ObjectOptions, ObjectOpts, Opts, RemoveVoidArgument, RetryPolicy, SendClient, SendOpts, ServiceHandlerOpts, ServiceOptions, ServiceOpts, WorkflowHandlerOpts, WorkflowOptions, WorkflowOpts, handlers, object, rpc, service, workflow } from "./types/rpc.js";
3
- import { Context, ContextDate, DurablePromise, GenericCall, GenericSend, InvocationHandle, InvocationId, InvocationIdParser, InvocationPromise, KeyValueStore, ObjectContext, ObjectSharedContext, Rand, Request, RestatePromise, RunAction, RunOptions, SendOptions, TypedState, UntypedState, WorkflowContext, WorkflowSharedContext } from "./context.js";
4
+ import { Context, ContextDate, DurablePromise, GenericCall, GenericSend, InvocationHandle, InvocationId, InvocationIdParser, InvocationPromise, KeyValueStore, ObjectContext, ObjectSharedContext, Rand, Request, RestatePromise, RunAction, RunOptions, Target, TypedState, UntypedState, WorkflowContext, WorkflowSharedContext } from "./context.js";
5
+ import { internal_d_exports } from "./internal.js";
4
6
  import { LogMetadata, LogSource, LoggerContext, LoggerTransport, RestateLogLevel } from "./logging/logger_transport.js";
5
7
  import { DefaultServiceOptions, RestateEndpoint, RestateEndpointBase } from "./endpoint.js";
8
+ import { isRestatePromise } from "./promises.js";
6
9
  import { EndpointOptions } from "./endpoint/types.js";
7
- import { internal_d_exports } from "./internal.js";
8
10
  import { CombineablePromise, Duration, JournalValueCodec, ObjectHandler, RestateContext, RestateObjectContext, RestateObjectSharedContext, RestateWorkflowContext, RestateWorkflowSharedContext, Serde, Service, ServiceDefinition, ServiceDefinitionFrom, ServiceHandler, VirtualObject, VirtualObjectDefinition, VirtualObjectDefinitionFrom, Workflow, WorkflowDefinition, WorkflowDefinitionFrom, WorkflowHandler, WorkflowSharedHandler, createObjectHandler, createObjectSharedHandler, createServiceHandler, createWorkflowHandler, createWorkflowSharedHandler, serde } from "./common_api.js";
11
+ import * as http0 from "http";
9
12
  import * as http20 from "http2";
10
13
 
11
14
  //#region src/node.d.ts
@@ -15,17 +18,52 @@ import * as http20 from "http2";
15
18
  */
16
19
  declare function endpoint(): RestateEndpoint;
17
20
  /**
18
- * Creates an HTTP/2 request handler for the provided services.
21
+ * Options for creating a Node.js endpoint handler.
22
+ *
23
+ * Extends {@link EndpointOptions} with Node.js-specific options for controlling
24
+ * the protocol mode.
25
+ */
26
+ interface NodeEndpointOptions extends EndpointOptions {
27
+ /**
28
+ * Controls the protocol mode used by the handler.
29
+ *
30
+ * - `undefined` (default): auto-detect based on HTTP version.
31
+ * HTTP/2+ uses bidirectional streaming (`BIDI_STREAM`),
32
+ * HTTP/1.1 uses request-response mode (`REQUEST_RESPONSE`).
33
+ * - `true`: force `BIDI_STREAM` for all requests.
34
+ * - `false`: force `REQUEST_RESPONSE` for all requests.
35
+ */
36
+ bidirectional?: boolean;
37
+ }
38
+ /**
39
+ * Creates a request handler for the provided services.
40
+ *
41
+ * The returned handler auto-detects the HTTP protocol version per request:
42
+ * - HTTP/2+ requests use bidirectional streaming (`BIDI_STREAM`)
43
+ * - HTTP/1.1 requests use request-response mode (`REQUEST_RESPONSE`) by default
19
44
  *
20
- * @example
45
+ * Set `bidirectional: true` to force `BIDI_STREAM` for all requests, or
46
+ * `bidirectional: false` to force `REQUEST_RESPONSE` for all requests.
47
+ *
48
+ * @example HTTP/2 server
21
49
  * ```
22
50
  * const httpServer = http2.createServer(createEndpointHandler({ services: [myService] }));
23
51
  * httpServer.listen(port);
24
52
  * ```
25
- * @param {EndpointOptions} options - Configuration options for the endpoint handler.
26
- * @returns An HTTP/2 request handler function.
53
+ *
54
+ * @example HTTP/1.1 server
55
+ * ```
56
+ * const httpServer = http.createServer(createEndpointHandler({ services: [myService] }));
57
+ * httpServer.listen(port);
58
+ * ```
59
+ *
60
+ * @param {NodeEndpointOptions} options - Configuration options for the endpoint handler.
61
+ * @returns A request handler function compatible with both HTTP/1.1 and HTTP/2 servers.
27
62
  */
28
- declare function createEndpointHandler(options: EndpointOptions): (request: http20.Http2ServerRequest, response: http20.Http2ServerResponse) => void;
63
+ declare function createEndpointHandler(options: NodeEndpointOptions): {
64
+ (request: http0.IncomingMessage, response: http0.ServerResponse): void;
65
+ (request: http20.Http2ServerRequest, response: http20.Http2ServerResponse): void;
66
+ };
29
67
  interface ServeOptions extends EndpointOptions {
30
68
  port?: number;
31
69
  }
@@ -48,5 +86,5 @@ declare function serve({
48
86
  ...options
49
87
  }: ServeOptions): Promise<number>;
50
88
  //#endregion
51
- export { CancelledError, Client, ClientCallOptions, ClientSendOptions, CombineablePromise, Context, ContextDate, DefaultServiceOptions, DurablePromise, Duration, EndpointOptions, GenericCall, GenericSend, InferArg, InvocationHandle, InvocationId, InvocationIdParser, InvocationPromise, JournalValueCodec, KeyValueStore, LogMetadata, LogSource, LoggerContext, LoggerTransport, ObjectContext, ObjectHandler, ObjectHandlerOpts, ObjectOptions, ObjectOpts, ObjectSharedContext, Opts, Rand, RemoveVoidArgument, Request, RestateContext, RestateEndpoint, RestateEndpointBase, RestateError, RestateLogLevel, RestateObjectContext, RestateObjectSharedContext, RestatePromise, RestateWorkflowContext, RestateWorkflowSharedContext, RetryPolicy, RetryableError, RetryableErrorOptions, RunAction, RunOptions, SendClient, SendOptions, SendOpts, Serde, ServeOptions, Service, ServiceDefinition, ServiceDefinitionFrom, ServiceHandler, ServiceHandlerOpts, ServiceOptions, ServiceOpts, TerminalError, TimeoutError, TypedState, UntypedState, VirtualObject, VirtualObjectDefinition, VirtualObjectDefinitionFrom, Workflow, WorkflowContext, WorkflowDefinition, WorkflowDefinitionFrom, WorkflowHandler, WorkflowHandlerOpts, WorkflowOptions, WorkflowOpts, WorkflowSharedContext, WorkflowSharedHandler, createEndpointHandler, createObjectHandler, createObjectSharedHandler, createServiceHandler, createWorkflowHandler, createWorkflowSharedHandler, endpoint, handlers, internal_d_exports as internal, object, rpc, serde, serve, service, workflow };
89
+ export { CancelledError, Client, ClientCallOptions, ClientSendOptions, CombineablePromise, Context, ContextDate, DefaultServiceOptions, DurablePromise, Duration, EndpointOptions, GenericCall, GenericSend, Hooks, HooksProvider, InferArg, Interceptor, InvocationHandle, InvocationId, InvocationIdParser, InvocationPromise, JournalValueCodec, KeyValueStore, LogMetadata, LogSource, LoggerContext, LoggerTransport, NodeEndpointOptions, ObjectContext, ObjectHandler, ObjectHandlerOpts, ObjectOptions, ObjectOpts, ObjectSharedContext, Opts, Rand, RemoveVoidArgument, Request, RestateContext, RestateEndpoint, RestateEndpointBase, RestateError, RestateLogLevel, RestateObjectContext, RestateObjectSharedContext, RestatePromise, RestateWorkflowContext, RestateWorkflowSharedContext, RetryPolicy, RetryableError, RetryableErrorOptions, RunAction, RunOptions, SendClient, SendOpts, Serde, ServeOptions, Service, ServiceDefinition, ServiceDefinitionFrom, ServiceHandler, ServiceHandlerOpts, ServiceOptions, ServiceOpts, Target, TerminalError, TimeoutError, TypedState, UntypedState, VirtualObject, VirtualObjectDefinition, VirtualObjectDefinitionFrom, Workflow, WorkflowContext, WorkflowDefinition, WorkflowDefinitionFrom, WorkflowHandler, WorkflowHandlerOpts, WorkflowOptions, WorkflowOpts, WorkflowSharedContext, WorkflowSharedHandler, createEndpointHandler, createObjectHandler, createObjectSharedHandler, createServiceHandler, createWorkflowHandler, createWorkflowSharedHandler, endpoint, handlers, internal_d_exports as internal, isRestatePromise, object, rpc, serde, serve, service, workflow };
52
90
  //# sourceMappingURL=node.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"node.d.ts","names":[],"sources":["../src/node.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;;;iBAqBgB,QAAA,CAAA,GAAY;;;;AAA5B;AAeA;;;;;AAOA;AAkBA;AAAwB,iBAzBR,qBAAA,CAyBQ,OAAA,EAzBuB,eAyBvB,CAAA,EAAA,CAAA,OAAA,EAzBsC,MAAA,CAAA,kBAyBtC,EAAA,QAAA,EAzBsC,MAAA,CAAA,mBAyBtC,EAAA,GAAA,IAAA;AAAoB,UAlB3B,YAAA,SAAqB,eAkBM,CAAA;EAAY,IAAA,CAAA,EAAA,MAAA;;;;;;;;;;;;;;;;iBAAxC,KAAA;;;GAA4B,eAAY"}
1
+ {"version":3,"file":"node.d.ts","names":[],"sources":["../src/node.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;;;;;;iBAqBgB,QAAA,CAAA,GAAY;;;;;;;AAAZ,UAUC,mBAAA,SAA4B,eAVF,CAAA;EAU1B;AAsCjB;;;;;;;AAQA;EAkBgB,aAAK,CAAA,EAAA,OAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA1BL,qBAAA,UAA+B;YAAmB,KAAA,CAAA;;;UAQjD,YAAA,SAAqB;;;;;;;;;;;;;;;;;iBAkBtB,KAAA;;;GAA4B,eAAY"}
package/dist/node.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { CancelledError, RestateError, RetryableError, TerminalError, TimeoutError } from "./types/errors.js";
2
- import { Opts, SendOpts, handlers, object, rpc, service, workflow } from "./types/rpc.js";
2
+ import { isRestatePromise } from "./promises.js";
3
3
  import { InvocationIdParser, RestatePromise } from "./context.js";
4
+ import { Opts, SendOpts, handlers, object, rpc, service, workflow } from "./types/rpc.js";
4
5
  import { internal_exports } from "./internal.js";
5
6
  import { CombineablePromise, createObjectHandler, createObjectSharedHandler, createServiceHandler, createWorkflowHandler, createWorkflowSharedHandler, serde } from "./common_api.js";
6
7
  import { withOptions } from "./endpoint/withOptions.js";
@@ -15,18 +16,33 @@ function endpoint() {
15
16
  return new NodeEndpoint();
16
17
  }
17
18
  /**
18
- * Creates an HTTP/2 request handler for the provided services.
19
+ * Creates a request handler for the provided services.
20
+ *
21
+ * The returned handler auto-detects the HTTP protocol version per request:
22
+ * - HTTP/2+ requests use bidirectional streaming (`BIDI_STREAM`)
23
+ * - HTTP/1.1 requests use request-response mode (`REQUEST_RESPONSE`) by default
19
24
  *
20
- * @example
25
+ * Set `bidirectional: true` to force `BIDI_STREAM` for all requests, or
26
+ * `bidirectional: false` to force `REQUEST_RESPONSE` for all requests.
27
+ *
28
+ * @example HTTP/2 server
21
29
  * ```
22
30
  * const httpServer = http2.createServer(createEndpointHandler({ services: [myService] }));
23
31
  * httpServer.listen(port);
24
32
  * ```
25
- * @param {EndpointOptions} options - Configuration options for the endpoint handler.
26
- * @returns An HTTP/2 request handler function.
33
+ *
34
+ * @example HTTP/1.1 server
35
+ * ```
36
+ * const httpServer = http.createServer(createEndpointHandler({ services: [myService] }));
37
+ * httpServer.listen(port);
38
+ * ```
39
+ *
40
+ * @param {NodeEndpointOptions} options - Configuration options for the endpoint handler.
41
+ * @returns A request handler function compatible with both HTTP/1.1 and HTTP/2 servers.
27
42
  */
28
43
  function createEndpointHandler(options) {
29
- return withOptions(new NodeEndpoint(), options).http2Handler();
44
+ const { bidirectional,...endpointOptions } = options;
45
+ return withOptions(new NodeEndpoint(), endpointOptions).handler({ bidirectional });
30
46
  }
31
47
  /**
32
48
  * Serves this Restate services as HTTP2 server, listening to the given port.
@@ -47,5 +63,5 @@ function serve({ port,...options }) {
47
63
  }
48
64
 
49
65
  //#endregion
50
- export { CancelledError, CombineablePromise, InvocationIdParser, Opts, RestateError, RestatePromise, RetryableError, SendOpts, TerminalError, TimeoutError, createEndpointHandler, createObjectHandler, createObjectSharedHandler, createServiceHandler, createWorkflowHandler, createWorkflowSharedHandler, endpoint, handlers, internal_exports as internal, object, rpc, serde, serve, service, workflow };
66
+ export { CancelledError, CombineablePromise, InvocationIdParser, Opts, RestateError, RestatePromise, RetryableError, SendOpts, TerminalError, TimeoutError, createEndpointHandler, createObjectHandler, createObjectSharedHandler, createServiceHandler, createWorkflowHandler, createWorkflowSharedHandler, endpoint, handlers, internal_exports as internal, isRestatePromise, object, rpc, serde, serve, service, workflow };
51
67
  //# sourceMappingURL=node.js.map
package/dist/node.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"node.js","names":[],"sources":["../src/node.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\nexport * from \"./common_api.js\";\nimport type { RestateEndpoint } from \"./endpoint.js\";\nimport { NodeEndpoint } from \"./endpoint/node_endpoint.js\";\nimport type { EndpointOptions } from \"./endpoint/types.js\";\nimport { withOptions } from \"./endpoint/withOptions.js\";\n\n/**\n * Create a new {@link RestateEndpoint}.\n * @deprecated Please use {@link createEndpointHandler}\n */\nexport function endpoint(): RestateEndpoint {\n return new NodeEndpoint();\n}\n\n/**\n * Creates an HTTP/2 request handler for the provided services.\n *\n * @example\n * ```\n * const httpServer = http2.createServer(createEndpointHandler({ services: [myService] }));\n * httpServer.listen(port);\n * ```\n * @param {EndpointOptions} options - Configuration options for the endpoint handler.\n * @returns An HTTP/2 request handler function.\n */\nexport function createEndpointHandler(options: EndpointOptions) {\n return withOptions<RestateEndpoint>(\n new NodeEndpoint(),\n options\n ).http2Handler();\n}\n\nexport interface ServeOptions extends EndpointOptions {\n port?: number;\n}\n\n/**\n * Serves this Restate services as HTTP2 server, listening to the given port.\n *\n * If the port is undefined, this method will use the port set in the `PORT`\n * environment variable. If that variable is undefined as well, the method will\n * default to port 9080.\n *\n * The returned promise resolves with the bound port when the server starts listening, or rejects with a failure otherwise.\n *\n * If you need to manually control the server lifecycle, we suggest to manually instantiate the http2 server and use {@link createEndpointHandler}.\n *\n * @param {ServeOptions} options - Configuration options for the endpoint handler.\n * @returns a Promise that resolves with the bound port, or rejects with a failure otherwise.\n */\nexport function serve({ port, ...options }: ServeOptions) {\n return withOptions<RestateEndpoint>(new NodeEndpoint(), options).listen(port);\n}\n"],"mappings":";;;;;;;;;;;;;AAqBA,SAAgB,WAA4B;AAC1C,QAAO,IAAI,cAAc;;;;;;;;;;;;;AAc3B,SAAgB,sBAAsB,SAA0B;AAC9D,QAAO,YACL,IAAI,cAAc,EAClB,QACD,CAAC,cAAc;;;;;;;;;;;;;;;;AAqBlB,SAAgB,MAAM,EAAE,KAAM,GAAG,WAAyB;AACxD,QAAO,YAA6B,IAAI,cAAc,EAAE,QAAQ,CAAC,OAAO,KAAK"}
1
+ {"version":3,"file":"node.js","names":[],"sources":["../src/node.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\nexport * from \"./common_api.js\";\nimport type { RestateEndpoint } from \"./endpoint.js\";\nimport { NodeEndpoint } from \"./endpoint/node_endpoint.js\";\nimport type { EndpointOptions } from \"./endpoint/types.js\";\nimport { withOptions } from \"./endpoint/withOptions.js\";\n\n/**\n * Create a new {@link RestateEndpoint}.\n * @deprecated Please use {@link createEndpointHandler}\n */\nexport function endpoint(): RestateEndpoint {\n return new NodeEndpoint();\n}\n\n/**\n * Options for creating a Node.js endpoint handler.\n *\n * Extends {@link EndpointOptions} with Node.js-specific options for controlling\n * the protocol mode.\n */\nexport interface NodeEndpointOptions extends EndpointOptions {\n /**\n * Controls the protocol mode used by the handler.\n *\n * - `undefined` (default): auto-detect based on HTTP version.\n * HTTP/2+ uses bidirectional streaming (`BIDI_STREAM`),\n * HTTP/1.1 uses request-response mode (`REQUEST_RESPONSE`).\n * - `true`: force `BIDI_STREAM` for all requests.\n * - `false`: force `REQUEST_RESPONSE` for all requests.\n */\n bidirectional?: boolean;\n}\n\n/**\n * Creates a request handler for the provided services.\n *\n * The returned handler auto-detects the HTTP protocol version per request:\n * - HTTP/2+ requests use bidirectional streaming (`BIDI_STREAM`)\n * - HTTP/1.1 requests use request-response mode (`REQUEST_RESPONSE`) by default\n *\n * Set `bidirectional: true` to force `BIDI_STREAM` for all requests, or\n * `bidirectional: false` to force `REQUEST_RESPONSE` for all requests.\n *\n * @example HTTP/2 server\n * ```\n * const httpServer = http2.createServer(createEndpointHandler({ services: [myService] }));\n * httpServer.listen(port);\n * ```\n *\n * @example HTTP/1.1 server\n * ```\n * const httpServer = http.createServer(createEndpointHandler({ services: [myService] }));\n * httpServer.listen(port);\n * ```\n *\n * @param {NodeEndpointOptions} options - Configuration options for the endpoint handler.\n * @returns A request handler function compatible with both HTTP/1.1 and HTTP/2 servers.\n */\nexport function createEndpointHandler(options: NodeEndpointOptions) {\n const { bidirectional, ...endpointOptions } = options;\n return withOptions<RestateEndpoint>(\n new NodeEndpoint(),\n endpointOptions\n ).handler({ bidirectional });\n}\n\nexport interface ServeOptions extends EndpointOptions {\n port?: number;\n}\n\n/**\n * Serves this Restate services as HTTP2 server, listening to the given port.\n *\n * If the port is undefined, this method will use the port set in the `PORT`\n * environment variable. If that variable is undefined as well, the method will\n * default to port 9080.\n *\n * The returned promise resolves with the bound port when the server starts listening, or rejects with a failure otherwise.\n *\n * If you need to manually control the server lifecycle, we suggest to manually instantiate the http2 server and use {@link createEndpointHandler}.\n *\n * @param {ServeOptions} options - Configuration options for the endpoint handler.\n * @returns a Promise that resolves with the bound port, or rejects with a failure otherwise.\n */\nexport function serve({ port, ...options }: ServeOptions) {\n return withOptions<RestateEndpoint>(new NodeEndpoint(), options).listen(port);\n}\n"],"mappings":";;;;;;;;;;;;;;AAqBA,SAAgB,WAA4B;AAC1C,QAAO,IAAI,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+C3B,SAAgB,sBAAsB,SAA8B;CAClE,MAAM,EAAE,cAAe,GAAG,oBAAoB;AAC9C,QAAO,YACL,IAAI,cAAc,EAClB,gBACD,CAAC,QAAQ,EAAE,eAAe,CAAC;;;;;;;;;;;;;;;;AAqB9B,SAAgB,MAAM,EAAE,KAAM,GAAG,WAAyB;AACxD,QAAO,YAA6B,IAAI,cAAc,EAAE,QAAQ,CAAC,OAAO,KAAK"}
package/dist/package.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
 
2
2
  //#region package.json
3
- var version = "1.11.1";
3
+ var version = "1.12.0";
4
4
 
5
5
  //#endregion
6
6
  Object.defineProperty(exports, 'version', {
package/dist/package.js CHANGED
@@ -1,5 +1,5 @@
1
1
  //#region package.json
2
- var version = "1.11.1";
2
+ var version = "1.12.0";
3
3
 
4
4
  //#endregion
5
5
  export { version };
@@ -1 +1 @@
1
- {"version":3,"file":"package.js","names":[],"sources":["../package.json"],"sourcesContent":["{\n \"name\": \"@restatedev/restate-sdk\",\n \"version\": \"1.11.1\",\n \"description\": \"Typescript SDK for Restate\",\n \"author\": \"Restate Developers\",\n \"email\": \"code@restate.dev\",\n \"license\": \"MIT\",\n \"homepage\": \"https://github.com/restatedev/sdk-typescript#readme\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/restatedev/sdk-typescript.git\"\n },\n \"bugs\": {\n \"url\": \"https://github.com/restatedev/sdk-typescript/issues\"\n },\n \"type\": \"module\",\n \"main\": \"./dist/index.cjs\",\n \"module\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.cts\",\n \"exports\": {\n \".\": {\n \"import\": \"./dist/index.js\",\n \"require\": \"./dist/index.cjs\"\n },\n \"./fetch\": {\n \"import\": \"./dist/fetch.js\",\n \"require\": \"./dist/fetch.cjs\"\n },\n \"./lambda\": {\n \"import\": \"./dist/lambda.js\",\n \"require\": \"./dist/lambda.cjs\"\n },\n \"./node\": {\n \"import\": \"./dist/node.js\",\n \"require\": \"./dist/node.cjs\"\n },\n \"./package.json\": \"./package.json\"\n },\n \"files\": [\n \"dist\",\n \"README.md\"\n ],\n \"publishConfig\": {\n \"access\": \"public\"\n },\n \"scripts\": {\n \"test\": \"turbo run _test --filter={.}...\",\n \"_test\": \"vitest run\",\n \"build\": \"turbo run _build --filter={.}...\",\n \"_build\": \"tsc --noEmit && tsdown\",\n \"dev\": \"tsc --noEmit --watch\",\n \"clean\": \"rm -rf dist *.tsbuildinfo .turbo\",\n \"check:types\": \"turbo run _check:types --filter={.}...\",\n \"_check:types\": \"tsc --noEmit --project tsconfig.build.json\",\n \"lint\": \"eslint .\",\n \"check:exports\": \"turbo run _check:exports --filter={.}...\",\n \"_check:exports\": \"attw --pack .\",\n \"check:api\": \"turbo run _check:api --filter={.}...\",\n \"_check:api\": \"api-extractor run --local && api-extractor run --local --config api-extractor.fetch.json && api-extractor run --local --config api-extractor.lambda.json && api-extractor run --local --config api-extractor.node.json\",\n \"prepublishOnly\": \"pnpm -w verify\"\n },\n \"dependencies\": {\n \"@restatedev/restate-sdk-core\": \"workspace:*\"\n },\n \"devDependencies\": {\n \"@types/aws-lambda\": \"^8.10.115\"\n },\n \"typesVersions\": {\n \"*\": {\n \"fetch\": [\n \"./dist/fetch.d.ts\"\n ],\n \"lambda\": [\n \"./dist/lambda.d.ts\"\n ],\n \"node\": [\n \"./dist/node.d.ts\"\n ]\n }\n }\n}\n"],"mappings":";cAEa"}
1
+ {"version":3,"file":"package.js","names":[],"sources":["../package.json"],"sourcesContent":["{\n \"name\": \"@restatedev/restate-sdk\",\n \"version\": \"1.12.0\",\n \"description\": \"Typescript SDK for Restate\",\n \"author\": \"Restate Developers\",\n \"email\": \"code@restate.dev\",\n \"license\": \"MIT\",\n \"homepage\": \"https://github.com/restatedev/sdk-typescript#readme\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/restatedev/sdk-typescript.git\"\n },\n \"bugs\": {\n \"url\": \"https://github.com/restatedev/sdk-typescript/issues\"\n },\n \"type\": \"module\",\n \"main\": \"./dist/index.cjs\",\n \"module\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.cts\",\n \"exports\": {\n \".\": {\n \"import\": \"./dist/index.js\",\n \"require\": \"./dist/index.cjs\"\n },\n \"./fetch\": {\n \"import\": \"./dist/fetch.js\",\n \"require\": \"./dist/fetch.cjs\"\n },\n \"./lambda\": {\n \"import\": \"./dist/lambda.js\",\n \"require\": \"./dist/lambda.cjs\"\n },\n \"./node\": {\n \"import\": \"./dist/node.js\",\n \"require\": \"./dist/node.cjs\"\n },\n \"./package.json\": \"./package.json\"\n },\n \"files\": [\n \"dist\",\n \"README.md\"\n ],\n \"publishConfig\": {\n \"access\": \"public\"\n },\n \"scripts\": {\n \"test\": \"turbo run _test --filter={.}...\",\n \"_test\": \"vitest run\",\n \"build\": \"turbo run _build --filter={.}...\",\n \"_build\": \"tsc --noEmit && tsdown\",\n \"dev\": \"tsc --noEmit --watch\",\n \"clean\": \"rm -rf dist *.tsbuildinfo .turbo\",\n \"check:types\": \"turbo run _check:types --filter={.}...\",\n \"_check:types\": \"tsc --noEmit --project tsconfig.build.json\",\n \"lint\": \"eslint .\",\n \"check:exports\": \"turbo run _check:exports --filter={.}...\",\n \"_check:exports\": \"attw --pack .\",\n \"check:api\": \"turbo run _check:api --filter={.}...\",\n \"_check:api\": \"api-extractor run --local && api-extractor run --local --config api-extractor.fetch.json && api-extractor run --local --config api-extractor.lambda.json && api-extractor run --local --config api-extractor.node.json\",\n \"prepublishOnly\": \"pnpm -w verify\"\n },\n \"dependencies\": {\n \"@restatedev/restate-sdk-core\": \"workspace:*\"\n },\n \"devDependencies\": {\n \"@types/aws-lambda\": \"^8.10.115\"\n },\n \"typesVersions\": {\n \"*\": {\n \"fetch\": [\n \"./dist/fetch.d.ts\"\n ],\n \"lambda\": [\n \"./dist/lambda.d.ts\"\n ],\n \"node\": [\n \"./dist/node.d.ts\"\n ]\n }\n }\n}\n"],"mappings":";cAEa"}
package/dist/promises.cjs CHANGED
@@ -8,20 +8,31 @@ node_timers_promises = require_rolldown_runtime.__toESM(node_timers_promises);
8
8
  function pendingPromise() {
9
9
  return new Promise(() => {});
10
10
  }
11
+ /**
12
+ * Returns `true` if the given value is a {@link RestatePromise}.
13
+ *
14
+ * Use this for runtime type detection when you need to distinguish Restate promises
15
+ * from regular promises, e.g. for overload resolution.
16
+ */
17
+ function isRestatePromise(p) {
18
+ return p instanceof InternalRestatePromise;
19
+ }
11
20
  var PromiseState = /* @__PURE__ */ function(PromiseState$1) {
12
21
  PromiseState$1[PromiseState$1["COMPLETED"] = 0] = "COMPLETED";
13
22
  PromiseState$1[PromiseState$1["NOT_COMPLETED"] = 1] = "NOT_COMPLETED";
14
23
  return PromiseState$1;
15
24
  }(PromiseState || {});
25
+ var InternalRestatePromise = class {};
16
26
  const RESTATE_CTX_SYMBOL = Symbol("restateContext");
17
27
  function extractContext(n) {
18
28
  return n[RESTATE_CTX_SYMBOL];
19
29
  }
20
- var AbstractRestatePromise = class {
30
+ var BaseRestatePromise = class extends InternalRestatePromise {
21
31
  [RESTATE_CTX_SYMBOL];
22
32
  pollingPromise;
23
33
  cancelPromise = new require_completable_promise.CompletablePromise();
24
34
  constructor(ctx) {
35
+ super();
25
36
  this[RESTATE_CTX_SYMBOL] = ctx;
26
37
  }
27
38
  then(onfulfilled, onrejected) {
@@ -40,7 +51,7 @@ var AbstractRestatePromise = class {
40
51
  return Promise.race([this.cancelPromise.promise, this.publicPromise()]);
41
52
  }
42
53
  orTimeout(duration) {
43
- return new RestateCombinatorPromise(this[RESTATE_CTX_SYMBOL], ([thisPromise, sleepPromise]) => {
54
+ return new CombinatorRestatePromise(this[RESTATE_CTX_SYMBOL], ([thisPromise, sleepPromise]) => {
44
55
  return new Promise((resolve, reject) => {
45
56
  thisPromise.then(resolve, reject);
46
57
  sleepPromise.then(() => {
@@ -50,13 +61,13 @@ var AbstractRestatePromise = class {
50
61
  }, [this, this[RESTATE_CTX_SYMBOL].sleep(duration)]);
51
62
  }
52
63
  map(mapper) {
53
- return new RestateMappedPromise(this[RESTATE_CTX_SYMBOL], this, mapper);
64
+ return new MappedRestatePromise(this[RESTATE_CTX_SYMBOL], this, mapper);
54
65
  }
55
66
  tryCancel() {
56
67
  this.cancelPromise.reject(new require_errors.CancelledError());
57
68
  }
58
69
  };
59
- var RestateSinglePromise = class extends AbstractRestatePromise {
70
+ var SingleRestatePromise = class extends BaseRestatePromise {
60
71
  state = PromiseState.NOT_COMPLETED;
61
72
  completablePromise = new require_completable_promise.CompletablePromise();
62
73
  constructor(ctx, handle, completer) {
@@ -77,9 +88,12 @@ var RestateSinglePromise = class extends AbstractRestatePromise {
77
88
  publicPromise() {
78
89
  return this.completablePromise.promise;
79
90
  }
91
+ isCompleted() {
92
+ return this.state === PromiseState.COMPLETED;
93
+ }
80
94
  [Symbol.toStringTag] = "RestateSinglePromise";
81
95
  };
82
- var RestateInvocationPromise = class extends RestateSinglePromise {
96
+ var InvocationRestatePromise = class extends SingleRestatePromise {
83
97
  constructor(ctx, handle, completer, invocationIdPromise) {
84
98
  super(ctx, handle, completer);
85
99
  this.invocationIdPromise = invocationIdPromise;
@@ -88,7 +102,7 @@ var RestateInvocationPromise = class extends RestateSinglePromise {
88
102
  return this.invocationIdPromise;
89
103
  }
90
104
  };
91
- var RestateCombinatorPromise = class extends AbstractRestatePromise {
105
+ var CombinatorRestatePromise = class CombinatorRestatePromise extends BaseRestatePromise {
92
106
  state = PromiseState.NOT_COMPLETED;
93
107
  combinatorPromise;
94
108
  constructor(ctx, combinatorConstructor, childs) {
@@ -98,6 +112,21 @@ var RestateCombinatorPromise = class extends AbstractRestatePromise {
98
112
  this.state = PromiseState.COMPLETED;
99
113
  });
100
114
  }
115
+ static fromPromises(combinatorConstructor, promises) {
116
+ const castedPromises = [];
117
+ let foundContext = void 0;
118
+ for (const [idx, promise] of promises.entries()) {
119
+ if (!isRestatePromise(promise)) throw new Error(`Promise index ${idx} used inside the combinator is not an instance of RestatePromise. This is not supported.`);
120
+ else if (foundContext === void 0) foundContext = extractContext(promise);
121
+ else {
122
+ const thisContext = extractContext(promise);
123
+ if (thisContext !== void 0 && thisContext !== foundContext) throw new Error("You're mixing up RestatePromises from different RestateContext. This is not supported.");
124
+ }
125
+ castedPromises.push(promise);
126
+ }
127
+ if (foundContext === void 0) return ConstRestatePromise.fromPromise(combinatorConstructor(castedPromises), true);
128
+ return new CombinatorRestatePromise(foundContext, combinatorConstructor, castedPromises);
129
+ }
101
130
  uncompletedLeaves() {
102
131
  return this.state === PromiseState.COMPLETED ? [] : this.childs.flatMap((p) => p.uncompletedLeaves());
103
132
  }
@@ -109,45 +138,7 @@ var RestateCombinatorPromise = class extends AbstractRestatePromise {
109
138
  }
110
139
  [Symbol.toStringTag] = "RestateCombinatorPromise";
111
140
  };
112
- var RestatePendingPromise = class {
113
- [RESTATE_CTX_SYMBOL];
114
- constructor(ctx) {
115
- this[RESTATE_CTX_SYMBOL] = ctx;
116
- }
117
- then(onfulfilled, onrejected) {
118
- return pendingPromise().then(onfulfilled, onrejected);
119
- }
120
- catch(onrejected) {
121
- return pendingPromise().catch(onrejected);
122
- }
123
- finally(onfinally) {
124
- return pendingPromise().finally(onfinally);
125
- }
126
- orTimeout() {
127
- return this;
128
- }
129
- map() {
130
- return this;
131
- }
132
- tryCancel() {}
133
- async tryComplete() {}
134
- uncompletedLeaves() {
135
- return [];
136
- }
137
- publicPromise() {
138
- return pendingPromise();
139
- }
140
- [Symbol.toStringTag] = "RestatePendingPromise";
141
- };
142
- var InvocationPendingPromise = class extends RestatePendingPromise {
143
- constructor(ctx) {
144
- super(ctx);
145
- }
146
- get invocationId() {
147
- return pendingPromise();
148
- }
149
- };
150
- var RestateMappedPromise = class extends AbstractRestatePromise {
141
+ var MappedRestatePromise = class extends BaseRestatePromise {
151
142
  publicPromiseMapper;
152
143
  constructor(ctx, inner, mapper) {
153
144
  super(ctx);
@@ -158,7 +149,7 @@ var RestateMappedPromise = class extends AbstractRestatePromise {
158
149
  } catch (e) {
159
150
  if (e instanceof require_errors.TerminalError) return Promise.reject(e);
160
151
  else {
161
- ctx.handleInvocationEndError(e);
152
+ ctx.abortAttempt(e);
162
153
  return pendingPromise();
163
154
  }
164
155
  }
@@ -179,6 +170,52 @@ var RestateMappedPromise = class extends AbstractRestatePromise {
179
170
  }
180
171
  [Symbol.toStringTag] = "RestateMappedPromise";
181
172
  };
173
+ var ConstRestatePromise = class ConstRestatePromise extends InternalRestatePromise {
174
+ constructor(constPromise, settled) {
175
+ super();
176
+ this.constPromise = constPromise;
177
+ this.settled = settled;
178
+ }
179
+ static resolve(value) {
180
+ return new ConstRestatePromise(Promise.resolve(value), true);
181
+ }
182
+ static reject(reason) {
183
+ return new ConstRestatePromise(Promise.reject(reason), true);
184
+ }
185
+ static pending() {
186
+ return new ConstRestatePromise(pendingPromise(), false);
187
+ }
188
+ static fromPromise(promise, settled) {
189
+ return new ConstRestatePromise(promise, settled);
190
+ }
191
+ then(onfulfilled, onrejected) {
192
+ return this.constPromise.then(onfulfilled, onrejected);
193
+ }
194
+ catch(onrejected) {
195
+ return this.constPromise.catch(onrejected);
196
+ }
197
+ finally(onfinally) {
198
+ return this.constPromise.finally(onfinally);
199
+ }
200
+ orTimeout() {
201
+ if (this.settled) return this;
202
+ return ConstRestatePromise.reject(new require_errors.TimeoutError());
203
+ }
204
+ map(mapper) {
205
+ return ConstRestatePromise.fromPromise(this.constPromise.then((value) => mapper(value, void 0), (reason) => mapper(void 0, reason)), this.settled);
206
+ }
207
+ tryCancel() {}
208
+ publicPromise() {
209
+ return this.constPromise;
210
+ }
211
+ tryComplete() {
212
+ return Promise.resolve();
213
+ }
214
+ uncompletedLeaves() {
215
+ return [];
216
+ }
217
+ [Symbol.toStringTag] = "ConstRestatePromise";
218
+ };
182
219
  /**
183
220
  * Promises executor, gluing VM with I/O and Promises given to user space.
184
221
  */
@@ -198,7 +235,7 @@ var PromisesExecutor = class {
198
235
  try {
199
236
  await restatePromise.tryComplete();
200
237
  } catch (e) {
201
- restatePromise[RESTATE_CTX_SYMBOL].handleInvocationEndError(e);
238
+ this.errorCallback(e);
202
239
  return Promise.resolve();
203
240
  }
204
241
  return (0, node_timers_promises.setImmediate)().then(async () => {
@@ -224,11 +261,11 @@ var PromisesExecutor = class {
224
261
  };
225
262
 
226
263
  //#endregion
227
- exports.InvocationPendingPromise = InvocationPendingPromise;
264
+ exports.CombinatorRestatePromise = CombinatorRestatePromise;
265
+ exports.ConstRestatePromise = ConstRestatePromise;
266
+ exports.InternalRestatePromise = InternalRestatePromise;
267
+ exports.InvocationRestatePromise = InvocationRestatePromise;
228
268
  exports.PromisesExecutor = PromisesExecutor;
229
- exports.RestateCombinatorPromise = RestateCombinatorPromise;
230
- exports.RestateInvocationPromise = RestateInvocationPromise;
231
- exports.RestatePendingPromise = RestatePendingPromise;
232
- exports.RestateSinglePromise = RestateSinglePromise;
233
- exports.extractContext = extractContext;
269
+ exports.SingleRestatePromise = SingleRestatePromise;
270
+ exports.isRestatePromise = isRestatePromise;
234
271
  exports.pendingPromise = pendingPromise;
@@ -0,0 +1,18 @@
1
+ import "./types/errors.cjs";
2
+ import { RestatePromise } from "./context.cjs";
3
+ import "./context_impl.cjs";
4
+ import "./io.cjs";
5
+ import { Duration } from "@restatedev/restate-sdk-core";
6
+
7
+ //#region src/promises.d.ts
8
+
9
+ /**
10
+ * Returns `true` if the given value is a {@link RestatePromise}.
11
+ *
12
+ * Use this for runtime type detection when you need to distinguish Restate promises
13
+ * from regular promises, e.g. for overload resolution.
14
+ */
15
+ declare function isRestatePromise<T>(p: Promise<T>): p is RestatePromise<T>;
16
+ //#endregion
17
+ export { isRestatePromise };
18
+ //# sourceMappingURL=promises.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promises.d.cts","names":[],"sources":["../src/promises.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;;iBA8CgB,uBAAuB,QAAQ,UAAU,eAAe"}
@@ -1,111 +1,18 @@
1
- import type { RestatePromise, InvocationId, InvocationPromise } from "./context.js";
2
- import type * as vm from "./endpoint/handlers/vm/sdk_shared_core_wasm_bindings.js";
3
- import { TerminalError } from "./types/errors.js";
4
- import { CompletablePromise } from "./utils/completable_promise.js";
5
- import type { ContextImpl, RunClosuresTracker } from "./context_impl.js";
6
- import type { InputPump, OutputPump } from "./io.js";
7
- import type { Duration } from "@restatedev/restate-sdk-core";
8
- export declare function pendingPromise<T>(): Promise<T>;
9
- export declare const RESTATE_CTX_SYMBOL: unique symbol;
10
- export interface InternalRestatePromise<T> extends RestatePromise<T> {
11
- [RESTATE_CTX_SYMBOL]: ContextImpl;
12
- tryCancel(): void;
13
- tryComplete(): Promise<void>;
14
- uncompletedLeaves(): Array<number>;
15
- publicPromise(): Promise<T>;
16
- }
17
- export type AsyncResultValue = "Empty" | {
18
- Success: Uint8Array;
19
- } | {
20
- Failure: vm.WasmFailure;
21
- } | {
22
- StateKeys: string[];
23
- } | {
24
- InvocationId: string;
25
- };
26
- export declare function extractContext(n: any): ContextImpl | undefined;
27
- declare abstract class AbstractRestatePromise<T> implements InternalRestatePromise<T> {
28
- [RESTATE_CTX_SYMBOL]: ContextImpl;
29
- private pollingPromise?;
30
- private cancelPromise;
31
- protected constructor(ctx: ContextImpl);
32
- then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null): Promise<TResult1 | TResult2>;
33
- catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null): Promise<T | TResult>;
34
- finally(onfinally?: (() => void) | null): Promise<T>;
35
- private publicPromiseOrCancelPromise;
36
- orTimeout(duration: number | Duration): RestatePromise<T>;
37
- map<U>(mapper: (value?: T, failure?: TerminalError) => U): RestatePromise<U>;
38
- tryCancel(): void;
39
- abstract tryComplete(): Promise<void>;
40
- abstract uncompletedLeaves(): Array<number>;
41
- abstract publicPromise(): Promise<T>;
42
- abstract [Symbol.toStringTag]: string;
43
- }
44
- export declare class RestateSinglePromise<T> extends AbstractRestatePromise<T> {
45
- readonly handle: number;
46
- private readonly completer;
47
- private state;
48
- private completablePromise;
49
- constructor(ctx: ContextImpl, handle: number, completer: (value: AsyncResultValue, prom: CompletablePromise<T>) => Promise<void>);
50
- uncompletedLeaves(): number[];
51
- tryComplete(): Promise<void>;
52
- publicPromise(): Promise<T>;
53
- readonly [Symbol.toStringTag] = "RestateSinglePromise";
54
- }
55
- export declare class RestateInvocationPromise<T> extends RestateSinglePromise<T> implements InvocationPromise<T> {
56
- private readonly invocationIdPromise;
57
- constructor(ctx: ContextImpl, handle: number, completer: (value: AsyncResultValue, prom: CompletablePromise<T>) => Promise<void>, invocationIdPromise: Promise<InvocationId>);
58
- get invocationId(): Promise<InvocationId>;
59
- }
60
- export declare class RestateCombinatorPromise extends AbstractRestatePromise<any> {
61
- readonly childs: Array<InternalRestatePromise<any>>;
62
- private state;
63
- private readonly combinatorPromise;
64
- constructor(ctx: ContextImpl, combinatorConstructor: (promises: Promise<any>[]) => Promise<any>, childs: Array<InternalRestatePromise<any>>);
65
- uncompletedLeaves(): number[];
66
- tryComplete(): Promise<void>;
67
- publicPromise(): Promise<unknown>;
68
- readonly [Symbol.toStringTag] = "RestateCombinatorPromise";
69
- }
70
- export declare class RestatePendingPromise<T> implements InternalRestatePromise<T> {
71
- [RESTATE_CTX_SYMBOL]: ContextImpl;
72
- constructor(ctx: ContextImpl);
73
- then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null): Promise<TResult1 | TResult2>;
74
- catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null): Promise<T | TResult>;
75
- finally(onfinally?: (() => void) | null): Promise<T>;
76
- orTimeout(): RestatePromise<T>;
77
- map<U>(): RestatePromise<U>;
78
- tryCancel(): void;
79
- tryComplete(): Promise<void>;
80
- uncompletedLeaves(): number[];
81
- publicPromise(): Promise<T>;
82
- readonly [Symbol.toStringTag] = "RestatePendingPromise";
83
- }
84
- export declare class InvocationPendingPromise<T> extends RestatePendingPromise<T> implements InvocationPromise<T> {
85
- constructor(ctx: ContextImpl);
86
- get invocationId(): Promise<InvocationId>;
87
- }
88
- export declare class RestateMappedPromise<T, U> extends AbstractRestatePromise<U> {
89
- readonly inner: InternalRestatePromise<T>;
90
- private publicPromiseMapper;
91
- constructor(ctx: ContextImpl, inner: InternalRestatePromise<T>, mapper: (value?: T, failure?: TerminalError) => U);
92
- tryComplete(): Promise<void>;
93
- uncompletedLeaves(): number[];
94
- publicPromise(): Promise<U>;
95
- readonly [Symbol.toStringTag] = "RestateMappedPromise";
96
- }
1
+ import "./types/errors.js";
2
+ import { RestatePromise } from "./context.js";
3
+ import "./context_impl.js";
4
+ import "./io.js";
5
+ import { Duration } from "@restatedev/restate-sdk-core";
6
+
7
+ //#region src/promises.d.ts
8
+
97
9
  /**
98
- * Promises executor, gluing VM with I/O and Promises given to user space.
10
+ * Returns `true` if the given value is a {@link RestatePromise}.
11
+ *
12
+ * Use this for runtime type detection when you need to distinguish Restate promises
13
+ * from regular promises, e.g. for overload resolution.
99
14
  */
100
- export declare class PromisesExecutor {
101
- private readonly coreVm;
102
- private readonly inputPump;
103
- private readonly outputPump;
104
- private readonly runClosuresTracker;
105
- private readonly errorCallback;
106
- constructor(coreVm: vm.WasmVM, inputPump: InputPump, outputPump: OutputPump, runClosuresTracker: RunClosuresTracker, errorCallback: (e: any) => void);
107
- doProgress(restatePromise: InternalRestatePromise<unknown>): Promise<void>;
108
- private doProgressInner;
109
- }
110
- export {};
15
+ declare function isRestatePromise<T>(p: Promise<T>): p is RestatePromise<T>;
16
+ //#endregion
17
+ export { isRestatePromise };
111
18
  //# sourceMappingURL=promises.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"promises.d.ts","sourceRoot":"","sources":["../src/promises.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"promises.d.ts","names":[],"sources":["../src/promises.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;;iBA8CgB,uBAAuB,QAAQ,UAAU,eAAe"}