@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
@@ -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_lambda = require('./handlers/lambda.cjs');
4
4
 
5
5
  //#region src/endpoint/lambda_endpoint.ts
@@ -27,7 +27,7 @@ var LambdaEndpointImpl = class {
27
27
  }
28
28
  handler() {
29
29
  const compressionEnabled = require_lambda.isCompressionSupported();
30
- const lambdaHandler = new require_lambda.LambdaHandler(new require_generic.GenericHandler(this.builder.build(), "REQUEST_RESPONSE", compressionEnabled ? { lambdaCompression: "zstd" } : {}), compressionEnabled);
30
+ const lambdaHandler = new require_lambda.LambdaHandler(require_generic.createRestateHandler(this.builder.build(), "REQUEST_RESPONSE", compressionEnabled ? { lambdaCompression: "zstd" } : {}), compressionEnabled);
31
31
  return lambdaHandler.handleRequest.bind(lambdaHandler);
32
32
  }
33
33
  };
@@ -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 { LambdaHandler, isCompressionSupported } from "./handlers/lambda.js";
4
4
 
5
5
  //#region src/endpoint/lambda_endpoint.ts
@@ -27,7 +27,7 @@ var LambdaEndpointImpl = class {
27
27
  }
28
28
  handler() {
29
29
  const compressionEnabled = isCompressionSupported();
30
- const lambdaHandler = new LambdaHandler(new GenericHandler(this.builder.build(), "REQUEST_RESPONSE", compressionEnabled ? { lambdaCompression: "zstd" } : {}), compressionEnabled);
30
+ const lambdaHandler = new LambdaHandler(createRestateHandler(this.builder.build(), "REQUEST_RESPONSE", compressionEnabled ? { lambdaCompression: "zstd" } : {}), compressionEnabled);
31
31
  return lambdaHandler.handleRequest.bind(lambdaHandler);
32
32
  }
33
33
  };
@@ -1 +1 @@
1
- {"version":3,"file":"lambda_endpoint.js","names":[],"sources":["../../src/endpoint/lambda_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 { isCompressionSupported, LambdaHandler } from \"./handlers/lambda.js\";\nimport type { LoggerTransport } from \"../logging/logger_transport.js\";\n\n/**\n * LambdaEndpoint encapsulates all the Restate services served by this endpoint.\n *\n *\n * @example\n * A typical endpoint served as Lambda would look like this:\n * ```\n * import * as restate from \"@restatedev/restate-sdk/lambda\";\n *\n * export const handler = restate\n * .endpoint()\n * .bind(myService)\n * .handler();\n */\nexport interface LambdaEndpoint extends RestateEndpointBase<LambdaEndpoint> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n handler(): (event: any, ctx: any) => Promise<any>;\n}\n\nexport class LambdaEndpointImpl implements LambdaEndpoint {\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 ): LambdaEndpoint {\n this.builder.bind(definition);\n return this;\n }\n\n public withIdentityV1(...keys: string[]): LambdaEndpoint {\n this.builder.addIdentityKeys(...keys);\n return this;\n }\n\n public defaultServiceOptions(options: DefaultServiceOptions): LambdaEndpoint {\n this.builder.setDefaultServiceOptions(options);\n return this;\n }\n\n public setLogger(logger: LoggerTransport): LambdaEndpoint {\n this.builder.setLogger(logger);\n return this;\n }\n\n public journalValueCodecProvider(\n codecProvider: () => Promise<JournalValueCodec>\n ): LambdaEndpoint {\n this.builder.setJournalValueCodecProvider(codecProvider);\n return this;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n handler(): (event: any, ctx: any) => Promise<any> {\n const compressionEnabled = isCompressionSupported();\n\n const genericHandler = new GenericHandler(\n this.builder.build(),\n \"REQUEST_RESPONSE\",\n compressionEnabled\n ? {\n lambdaCompression: \"zstd\",\n }\n : {}\n );\n const lambdaHandler = new LambdaHandler(genericHandler, compressionEnabled);\n return lambdaHandler.handleRequest.bind(lambdaHandler);\n }\n}\n"],"mappings":";;;;;AA6CA,IAAa,qBAAb,MAA0D;CACxD,AAAQ,UAA2B,IAAI,iBAAiB;CAExD,AAAO,KACL,YAIgB;AAChB,OAAK,QAAQ,KAAK,WAAW;AAC7B,SAAO;;CAGT,AAAO,eAAe,GAAG,MAAgC;AACvD,OAAK,QAAQ,gBAAgB,GAAG,KAAK;AACrC,SAAO;;CAGT,AAAO,sBAAsB,SAAgD;AAC3E,OAAK,QAAQ,yBAAyB,QAAQ;AAC9C,SAAO;;CAGT,AAAO,UAAU,QAAyC;AACxD,OAAK,QAAQ,UAAU,OAAO;AAC9B,SAAO;;CAGT,AAAO,0BACL,eACgB;AAChB,OAAK,QAAQ,6BAA6B,cAAc;AACxD,SAAO;;CAIT,UAAkD;EAChD,MAAM,qBAAqB,wBAAwB;EAWnD,MAAM,gBAAgB,IAAI,cATH,IAAI,eACzB,KAAK,QAAQ,OAAO,EACpB,oBACA,qBACI,EACE,mBAAmB,QACpB,GACD,EAAE,CACP,EACuD,mBAAmB;AAC3E,SAAO,cAAc,cAAc,KAAK,cAAc"}
1
+ {"version":3,"file":"lambda_endpoint.js","names":[],"sources":["../../src/endpoint/lambda_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 { isCompressionSupported, LambdaHandler } from \"./handlers/lambda.js\";\nimport type { LoggerTransport } from \"../logging/logger_transport.js\";\n\n/**\n * LambdaEndpoint encapsulates all the Restate services served by this endpoint.\n *\n *\n * @example\n * A typical endpoint served as Lambda would look like this:\n * ```\n * import * as restate from \"@restatedev/restate-sdk/lambda\";\n *\n * export const handler = restate\n * .endpoint()\n * .bind(myService)\n * .handler();\n */\nexport interface LambdaEndpoint extends RestateEndpointBase<LambdaEndpoint> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n handler(): (event: any, ctx: any) => Promise<any>;\n}\n\nexport class LambdaEndpointImpl implements LambdaEndpoint {\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 ): LambdaEndpoint {\n this.builder.bind(definition);\n return this;\n }\n\n public withIdentityV1(...keys: string[]): LambdaEndpoint {\n this.builder.addIdentityKeys(...keys);\n return this;\n }\n\n public defaultServiceOptions(options: DefaultServiceOptions): LambdaEndpoint {\n this.builder.setDefaultServiceOptions(options);\n return this;\n }\n\n public setLogger(logger: LoggerTransport): LambdaEndpoint {\n this.builder.setLogger(logger);\n return this;\n }\n\n public journalValueCodecProvider(\n codecProvider: () => Promise<JournalValueCodec>\n ): LambdaEndpoint {\n this.builder.setJournalValueCodecProvider(codecProvider);\n return this;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n handler(): (event: any, ctx: any) => Promise<any> {\n const compressionEnabled = isCompressionSupported();\n\n const genericHandler = createRestateHandler(\n this.builder.build(),\n \"REQUEST_RESPONSE\",\n compressionEnabled\n ? {\n lambdaCompression: \"zstd\",\n }\n : {}\n );\n const lambdaHandler = new LambdaHandler(genericHandler, compressionEnabled);\n return lambdaHandler.handleRequest.bind(lambdaHandler);\n }\n}\n"],"mappings":";;;;;AA6CA,IAAa,qBAAb,MAA0D;CACxD,AAAQ,UAA2B,IAAI,iBAAiB;CAExD,AAAO,KACL,YAIgB;AAChB,OAAK,QAAQ,KAAK,WAAW;AAC7B,SAAO;;CAGT,AAAO,eAAe,GAAG,MAAgC;AACvD,OAAK,QAAQ,gBAAgB,GAAG,KAAK;AACrC,SAAO;;CAGT,AAAO,sBAAsB,SAAgD;AAC3E,OAAK,QAAQ,yBAAyB,QAAQ;AAC9C,SAAO;;CAGT,AAAO,UAAU,QAAyC;AACxD,OAAK,QAAQ,UAAU,OAAO;AAC9B,SAAO;;CAGT,AAAO,0BACL,eACgB;AAChB,OAAK,QAAQ,6BAA6B,cAAc;AACxD,SAAO;;CAIT,UAAkD;EAChD,MAAM,qBAAqB,wBAAwB;EAWnD,MAAM,gBAAgB,IAAI,cATH,qBACrB,KAAK,QAAQ,OAAO,EACpB,oBACA,qBACI,EACE,mBAAmB,QACpB,GACD,EAAE,CACP,EACuD,mBAAmB;AAC3E,SAAO,cAAc,cAAc,KAAK,cAAc"}
@@ -1,11 +1,10 @@
1
1
  const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
2
2
  const require_errors = require('../types/errors.cjs');
3
- const require_generic = require('./handlers/generic.cjs');
4
3
  const require_endpoint = require('./endpoint.cjs');
4
+ const require_utils = require('./handlers/utils.cjs');
5
+ const require_generic = require('./handlers/generic.cjs');
5
6
  let http2 = require("http2");
6
7
  http2 = require_rolldown_runtime.__toESM(http2);
7
- let node_stream = require("node:stream");
8
- node_stream = require_rolldown_runtime.__toESM(node_stream);
9
8
 
10
9
  //#region src/endpoint/node_endpoint.ts
11
10
  var NodeEndpoint = class {
@@ -54,46 +53,47 @@ var NodeEndpoint = class {
54
53
  }
55
54
  };
56
55
  function nodeHttp2Handler(endpoint) {
57
- const handler = new require_generic.GenericHandler(endpoint, "BIDI_STREAM", {});
58
- return (request, response) => {
59
- (async () => {
60
- const abortController = new AbortController();
61
- request.once("aborted", () => {
62
- abortController.abort();
63
- });
64
- request.once("close", () => {
65
- abortController.abort();
56
+ const handler = require_generic.createRestateHandler(endpoint, "BIDI_STREAM", {});
57
+ return (httpRequest, httpResponse) => {
58
+ const url = httpRequest.url;
59
+ const abortController = new AbortController();
60
+ httpRequest.on("close", () => {
61
+ abortController.abort();
62
+ });
63
+ const restateResponse = handler.handle({
64
+ url,
65
+ headers: httpRequest.headers,
66
+ extraArgs: []
67
+ });
68
+ httpResponse.writeHead(restateResponse.statusCode, restateResponse.headers);
69
+ restateResponse.process({
70
+ inputReader: inputReaderAdapter(httpRequest),
71
+ outputWriter: outputWriterAdapter(httpResponse),
72
+ abortSignal: abortController.signal
73
+ }).catch((e) => {
74
+ const error = require_errors.ensureError(e);
75
+ (require_utils.tryCreateContextualLogger(endpoint.loggerTransport, url, httpRequest.headers) ?? endpoint.rlog).error("Unexpected error: " + (error.stack ?? error.message));
76
+ });
77
+ };
78
+ }
79
+ function inputReaderAdapter(request) {
80
+ return request[Symbol.asyncIterator]();
81
+ }
82
+ function outputWriterAdapter(response) {
83
+ return {
84
+ write: function(value) {
85
+ return new Promise((resolve, reject) => {
86
+ response.write(value, (err) => {
87
+ if (err) reject(err);
88
+ else resolve();
89
+ });
66
90
  });
67
- request.once("error", () => {
68
- abortController.abort();
91
+ },
92
+ close: function() {
93
+ return new Promise((resolve) => {
94
+ response.end(() => resolve());
69
95
  });
70
- if (request.destroyed || request.aborted) {
71
- endpoint.rlog.error("Client disconnected");
72
- abortController.abort();
73
- }
74
- try {
75
- const url = request.url;
76
- const webRequestBody = node_stream.Readable.toWeb(request);
77
- const resp = await handler.handle({
78
- url,
79
- headers: request.headers,
80
- body: webRequestBody,
81
- extraArgs: [],
82
- abortSignal: abortController.signal
83
- });
84
- if (response.destroyed) return;
85
- response.writeHead(resp.statusCode, resp.headers);
86
- const responseWeb = node_stream.Writable.toWeb(response);
87
- await resp.body.pipeTo(responseWeb);
88
- } catch (e) {
89
- const error = require_errors.ensureError(e);
90
- const logger = require_generic.tryCreateContextualLogger(endpoint.loggerTransport, request.url, request.headers) ?? endpoint.rlog;
91
- if (error.name === "AbortError") logger.error("Got abort error from connection: " + error.message + "\nThis might indicate that:\n* The restate-server aborted the connection after hitting the 'abort-timeout'\n* The connection with the restate-server was lost\n\nPlease check the invocation in the Restate UI for more details.");
92
- else logger.error("Error while handling request: " + (error.stack ?? error.message));
93
- response.destroy(error);
94
- abortController.abort();
95
- }
96
- })().catch(() => {});
96
+ }
97
97
  };
98
98
  }
99
99
 
@@ -1,6 +1,6 @@
1
1
  import type { RestateEndpoint } from "../index.js";
2
2
  import type { JournalValueCodec, ServiceDefinition, VirtualObjectDefinition, WorkflowDefinition } from "@restatedev/restate-sdk-core";
3
- import type { Http2ServerRequest, Http2ServerResponse } from "http2";
3
+ import { Http2ServerRequest, Http2ServerResponse } from "http2";
4
4
  import type { LoggerTransport } from "../logging/logger_transport.js";
5
5
  import type { DefaultServiceOptions } from "../endpoint.js";
6
6
  export declare class NodeEndpoint implements RestateEndpoint {
@@ -1 +1 @@
1
- {"version":3,"file":"node_endpoint.d.ts","sourceRoot":"","sources":["../../src/endpoint/node_endpoint.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,EACvB,kBAAkB,EACnB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAWrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAE5D,qBAAa,YAAa,YAAW,eAAe;IAClD,OAAO,CAAC,OAAO,CAA0C;IAElD,IAAI,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,EAC7B,UAAU,EACN,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,GACvB,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAAC,GAC7B,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,GAC3B,eAAe;IAKX,cAAc,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,eAAe;IAKlD,qBAAqB,CAC1B,OAAO,EAAE,qBAAqB,GAC7B,eAAe;IAKX,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,eAAe;IAKnD,yBAAyB,CAC9B,aAAa,EAAE,MAAM,OAAO,CAAC,iBAAiB,CAAC,GAC9C,eAAe;IAKlB,YAAY,IAAI,CACd,OAAO,EAAE,kBAAkB,EAC3B,QAAQ,EAAE,mBAAmB,KAC1B,IAAI;IAIT,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CA+BvC"}
1
+ {"version":3,"file":"node_endpoint.d.ts","sourceRoot":"","sources":["../../src/endpoint/node_endpoint.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,EACvB,kBAAkB,EACnB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAMhE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAI5D,qBAAa,YAAa,YAAW,eAAe;IAClD,OAAO,CAAC,OAAO,CAA0C;IAElD,IAAI,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,EAC7B,UAAU,EACN,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,GACvB,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAAC,GAC7B,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,GAC3B,eAAe;IAKX,cAAc,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,eAAe;IAKlD,qBAAqB,CAC1B,OAAO,EAAE,qBAAqB,GAC7B,eAAe;IAKX,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,eAAe;IAKnD,yBAAyB,CAC9B,aAAa,EAAE,MAAM,OAAO,CAAC,iBAAiB,CAAC,GAC9C,eAAe;IAKlB,YAAY,IAAI,CACd,OAAO,EAAE,kBAAkB,EAC3B,QAAQ,EAAE,mBAAmB,KAC1B,IAAI;IAIT,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CA+BvC"}
@@ -1,8 +1,8 @@
1
1
  import { ensureError } from "../types/errors.js";
2
- import { GenericHandler, tryCreateContextualLogger } from "./handlers/generic.js";
3
2
  import { EndpointBuilder } from "./endpoint.js";
3
+ import { tryCreateContextualLogger } from "./handlers/utils.js";
4
+ import { createRestateHandler } from "./handlers/generic.js";
4
5
  import * as http2 from "http2";
5
- import { Readable, Writable } from "node:stream";
6
6
 
7
7
  //#region src/endpoint/node_endpoint.ts
8
8
  var NodeEndpoint = class {
@@ -51,46 +51,47 @@ var NodeEndpoint = class {
51
51
  }
52
52
  };
53
53
  function nodeHttp2Handler(endpoint) {
54
- const handler = new GenericHandler(endpoint, "BIDI_STREAM", {});
55
- return (request, response) => {
56
- (async () => {
57
- const abortController = new AbortController();
58
- request.once("aborted", () => {
59
- abortController.abort();
60
- });
61
- request.once("close", () => {
62
- abortController.abort();
54
+ const handler = createRestateHandler(endpoint, "BIDI_STREAM", {});
55
+ return (httpRequest, httpResponse) => {
56
+ const url = httpRequest.url;
57
+ const abortController = new AbortController();
58
+ httpRequest.on("close", () => {
59
+ abortController.abort();
60
+ });
61
+ const restateResponse = handler.handle({
62
+ url,
63
+ headers: httpRequest.headers,
64
+ extraArgs: []
65
+ });
66
+ httpResponse.writeHead(restateResponse.statusCode, restateResponse.headers);
67
+ restateResponse.process({
68
+ inputReader: inputReaderAdapter(httpRequest),
69
+ outputWriter: outputWriterAdapter(httpResponse),
70
+ abortSignal: abortController.signal
71
+ }).catch((e) => {
72
+ const error = ensureError(e);
73
+ (tryCreateContextualLogger(endpoint.loggerTransport, url, httpRequest.headers) ?? endpoint.rlog).error("Unexpected error: " + (error.stack ?? error.message));
74
+ });
75
+ };
76
+ }
77
+ function inputReaderAdapter(request) {
78
+ return request[Symbol.asyncIterator]();
79
+ }
80
+ function outputWriterAdapter(response) {
81
+ return {
82
+ write: function(value) {
83
+ return new Promise((resolve, reject) => {
84
+ response.write(value, (err) => {
85
+ if (err) reject(err);
86
+ else resolve();
87
+ });
63
88
  });
64
- request.once("error", () => {
65
- abortController.abort();
89
+ },
90
+ close: function() {
91
+ return new Promise((resolve) => {
92
+ response.end(() => resolve());
66
93
  });
67
- if (request.destroyed || request.aborted) {
68
- endpoint.rlog.error("Client disconnected");
69
- abortController.abort();
70
- }
71
- try {
72
- const url = request.url;
73
- const webRequestBody = Readable.toWeb(request);
74
- const resp = await handler.handle({
75
- url,
76
- headers: request.headers,
77
- body: webRequestBody,
78
- extraArgs: [],
79
- abortSignal: abortController.signal
80
- });
81
- if (response.destroyed) return;
82
- response.writeHead(resp.statusCode, resp.headers);
83
- const responseWeb = Writable.toWeb(response);
84
- await resp.body.pipeTo(responseWeb);
85
- } catch (e) {
86
- const error = ensureError(e);
87
- const logger = tryCreateContextualLogger(endpoint.loggerTransport, request.url, request.headers) ?? endpoint.rlog;
88
- if (error.name === "AbortError") logger.error("Got abort error from connection: " + error.message + "\nThis might indicate that:\n* The restate-server aborted the connection after hitting the 'abort-timeout'\n* The connection with the restate-server was lost\n\nPlease check the invocation in the Restate UI for more details.");
89
- else logger.error("Error while handling request: " + (error.stack ?? error.message));
90
- response.destroy(error);
91
- abortController.abort();
92
- }
93
- })().catch(() => {});
94
+ }
94
95
  };
95
96
  }
96
97
 
@@ -1 +1 @@
1
- {"version":3,"file":"node_endpoint.js","names":[],"sources":["../../src/endpoint/node_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 { RestateEndpoint } from \"../index.js\";\nimport type {\n JournalValueCodec,\n ServiceDefinition,\n VirtualObjectDefinition,\n WorkflowDefinition,\n} from \"@restatedev/restate-sdk-core\";\n\nimport type { Http2ServerRequest, Http2ServerResponse } from \"http2\";\nimport * as http2 from \"http2\";\nimport type { Endpoint } from \"./endpoint.js\";\nimport { EndpointBuilder } from \"./endpoint.js\";\nimport {\n GenericHandler,\n tryCreateContextualLogger,\n} from \"./handlers/generic.js\";\nimport { Readable, Writable } from \"node:stream\";\nimport type { WritableStream } from \"node:stream/web\";\nimport { ensureError } from \"../types/errors.js\";\nimport type { LoggerTransport } from \"../logging/logger_transport.js\";\nimport type { DefaultServiceOptions } from \"../endpoint.js\";\n\nexport class NodeEndpoint implements RestateEndpoint {\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 ): RestateEndpoint {\n this.builder.bind(definition);\n return this;\n }\n\n public withIdentityV1(...keys: string[]): RestateEndpoint {\n this.builder.addIdentityKeys(...keys);\n return this;\n }\n\n public defaultServiceOptions(\n options: DefaultServiceOptions\n ): RestateEndpoint {\n this.builder.setDefaultServiceOptions(options);\n return this;\n }\n\n public setLogger(logger: LoggerTransport): RestateEndpoint {\n this.builder.setLogger(logger);\n return this;\n }\n\n public journalValueCodecProvider(\n codecProvider: () => Promise<JournalValueCodec>\n ): RestateEndpoint {\n this.builder.setJournalValueCodecProvider(codecProvider);\n return this;\n }\n\n http2Handler(): (\n request: Http2ServerRequest,\n response: Http2ServerResponse\n ) => void {\n return nodeHttp2Handler(this.builder.build());\n }\n\n listen(port?: number): Promise<number> {\n const endpoint = this.builder.build();\n\n const actualPort = port ?? parseInt(process.env.PORT ?? \"9080\");\n endpoint.rlog.info(`Restate SDK started listening on ${actualPort}...`);\n\n const server = http2.createServer(nodeHttp2Handler(endpoint));\n\n return new Promise((resolve, reject) => {\n let failed = false;\n server.once(\"error\", (e: Error) => {\n failed = true;\n reject(e);\n });\n server.listen(actualPort, () => {\n if (failed) {\n return;\n }\n const address = server.address();\n if (address === null || typeof address === \"string\") {\n reject(\n new TypeError(\n \"endpoint.listen() currently supports only binding to a PORT\"\n )\n );\n } else {\n resolve(address.port);\n }\n });\n });\n }\n}\n\nfunction nodeHttp2Handler(\n endpoint: Endpoint\n): (request: Http2ServerRequest, response: Http2ServerResponse) => void {\n const handler = new GenericHandler(endpoint, \"BIDI_STREAM\", {});\n\n return (request, response) => {\n (async () => {\n const abortController = new AbortController();\n\n request.once(\"aborted\", () => {\n abortController.abort();\n });\n request.once(\"close\", () => {\n abortController.abort();\n });\n request.once(\"error\", () => {\n abortController.abort();\n });\n\n if (request.destroyed || request.aborted) {\n endpoint.rlog.error(\"Client disconnected\");\n abortController.abort();\n }\n\n try {\n const url = request.url;\n const webRequestBody = Readable.toWeb(request);\n\n const resp = await handler.handle({\n url,\n headers: request.headers,\n body: webRequestBody,\n extraArgs: [],\n abortSignal: abortController.signal,\n });\n\n if (response.destroyed) {\n return;\n }\n\n response.writeHead(resp.statusCode, resp.headers);\n const responseWeb = Writable.toWeb(\n response\n ) as WritableStream<Uint8Array>;\n await resp.body.pipeTo(responseWeb);\n } catch (e) {\n const error = ensureError(e);\n\n const logger =\n tryCreateContextualLogger(\n endpoint.loggerTransport,\n request.url,\n request.headers\n ) ?? endpoint.rlog;\n if (error.name === \"AbortError\") {\n logger.error(\n \"Got abort error from connection: \" +\n error.message +\n \"\\n\" +\n \"This might indicate that:\\n\" +\n \"* The restate-server aborted the connection after hitting the 'abort-timeout'\\n\" +\n \"* The connection with the restate-server was lost\\n\" +\n \"\\n\" +\n \"Please check the invocation in the Restate UI for more details.\"\n );\n } else {\n logger.error(\n \"Error while handling request: \" + (error.stack ?? error.message)\n );\n }\n\n response.destroy(error);\n abortController.abort();\n }\n })().catch(() => {});\n };\n}\n"],"mappings":";;;;;;;AAiCA,IAAa,eAAb,MAAqD;CACnD,AAAQ,UAA2B,IAAI,iBAAiB;CAExD,AAAO,KACL,YAIiB;AACjB,OAAK,QAAQ,KAAK,WAAW;AAC7B,SAAO;;CAGT,AAAO,eAAe,GAAG,MAAiC;AACxD,OAAK,QAAQ,gBAAgB,GAAG,KAAK;AACrC,SAAO;;CAGT,AAAO,sBACL,SACiB;AACjB,OAAK,QAAQ,yBAAyB,QAAQ;AAC9C,SAAO;;CAGT,AAAO,UAAU,QAA0C;AACzD,OAAK,QAAQ,UAAU,OAAO;AAC9B,SAAO;;CAGT,AAAO,0BACL,eACiB;AACjB,OAAK,QAAQ,6BAA6B,cAAc;AACxD,SAAO;;CAGT,eAGU;AACR,SAAO,iBAAiB,KAAK,QAAQ,OAAO,CAAC;;CAG/C,OAAO,MAAgC;EACrC,MAAM,WAAW,KAAK,QAAQ,OAAO;EAErC,MAAM,aAAa,QAAQ,SAAS,QAAQ,IAAI,QAAQ,OAAO;AAC/D,WAAS,KAAK,KAAK,oCAAoC,WAAW,KAAK;EAEvE,MAAM,SAAS,MAAM,aAAa,iBAAiB,SAAS,CAAC;AAE7D,SAAO,IAAI,SAAS,SAAS,WAAW;GACtC,IAAI,SAAS;AACb,UAAO,KAAK,UAAU,MAAa;AACjC,aAAS;AACT,WAAO,EAAE;KACT;AACF,UAAO,OAAO,kBAAkB;AAC9B,QAAI,OACF;IAEF,MAAM,UAAU,OAAO,SAAS;AAChC,QAAI,YAAY,QAAQ,OAAO,YAAY,SACzC,wBACE,IAAI,UACF,8DACD,CACF;QAED,SAAQ,QAAQ,KAAK;KAEvB;IACF;;;AAIN,SAAS,iBACP,UACsE;CACtE,MAAM,UAAU,IAAI,eAAe,UAAU,eAAe,EAAE,CAAC;AAE/D,SAAQ,SAAS,aAAa;AAC5B,GAAC,YAAY;GACX,MAAM,kBAAkB,IAAI,iBAAiB;AAE7C,WAAQ,KAAK,iBAAiB;AAC5B,oBAAgB,OAAO;KACvB;AACF,WAAQ,KAAK,eAAe;AAC1B,oBAAgB,OAAO;KACvB;AACF,WAAQ,KAAK,eAAe;AAC1B,oBAAgB,OAAO;KACvB;AAEF,OAAI,QAAQ,aAAa,QAAQ,SAAS;AACxC,aAAS,KAAK,MAAM,sBAAsB;AAC1C,oBAAgB,OAAO;;AAGzB,OAAI;IACF,MAAM,MAAM,QAAQ;IACpB,MAAM,iBAAiB,SAAS,MAAM,QAAQ;IAE9C,MAAM,OAAO,MAAM,QAAQ,OAAO;KAChC;KACA,SAAS,QAAQ;KACjB,MAAM;KACN,WAAW,EAAE;KACb,aAAa,gBAAgB;KAC9B,CAAC;AAEF,QAAI,SAAS,UACX;AAGF,aAAS,UAAU,KAAK,YAAY,KAAK,QAAQ;IACjD,MAAM,cAAc,SAAS,MAC3B,SACD;AACD,UAAM,KAAK,KAAK,OAAO,YAAY;YAC5B,GAAG;IACV,MAAM,QAAQ,YAAY,EAAE;IAE5B,MAAM,SACJ,0BACE,SAAS,iBACT,QAAQ,KACR,QAAQ,QACT,IAAI,SAAS;AAChB,QAAI,MAAM,SAAS,aACjB,QAAO,MACL,sCACE,MAAM,UACN,mOAMH;QAED,QAAO,MACL,oCAAoC,MAAM,SAAS,MAAM,SAC1D;AAGH,aAAS,QAAQ,MAAM;AACvB,oBAAgB,OAAO;;MAEvB,CAAC,YAAY,GAAG"}
1
+ {"version":3,"file":"node_endpoint.js","names":[],"sources":["../../src/endpoint/node_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 { RestateEndpoint } from \"../index.js\";\nimport type {\n JournalValueCodec,\n ServiceDefinition,\n VirtualObjectDefinition,\n WorkflowDefinition,\n} from \"@restatedev/restate-sdk-core\";\nimport { Http2ServerRequest, Http2ServerResponse } from \"http2\";\nimport * as http2 from \"http2\";\nimport type { Endpoint } from \"./endpoint.js\";\nimport { EndpointBuilder } from \"./endpoint.js\";\nimport { createRestateHandler } from \"./handlers/generic.js\";\nimport { ensureError } from \"../types/errors.js\";\nimport type { LoggerTransport } from \"../logging/logger_transport.js\";\nimport type { DefaultServiceOptions } from \"../endpoint.js\";\nimport { tryCreateContextualLogger } from \"./handlers/utils.js\";\nimport { InputReader, OutputWriter } from \"./handlers/types.js\";\n\nexport class NodeEndpoint implements RestateEndpoint {\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 ): RestateEndpoint {\n this.builder.bind(definition);\n return this;\n }\n\n public withIdentityV1(...keys: string[]): RestateEndpoint {\n this.builder.addIdentityKeys(...keys);\n return this;\n }\n\n public defaultServiceOptions(\n options: DefaultServiceOptions\n ): RestateEndpoint {\n this.builder.setDefaultServiceOptions(options);\n return this;\n }\n\n public setLogger(logger: LoggerTransport): RestateEndpoint {\n this.builder.setLogger(logger);\n return this;\n }\n\n public journalValueCodecProvider(\n codecProvider: () => Promise<JournalValueCodec>\n ): RestateEndpoint {\n this.builder.setJournalValueCodecProvider(codecProvider);\n return this;\n }\n\n http2Handler(): (\n request: Http2ServerRequest,\n response: Http2ServerResponse\n ) => void {\n return nodeHttp2Handler(this.builder.build());\n }\n\n listen(port?: number): Promise<number> {\n const endpoint = this.builder.build();\n\n const actualPort = port ?? parseInt(process.env.PORT ?? \"9080\");\n endpoint.rlog.info(`Restate SDK started listening on ${actualPort}...`);\n\n const server = http2.createServer(nodeHttp2Handler(endpoint));\n\n return new Promise((resolve, reject) => {\n let failed = false;\n server.once(\"error\", (e: Error) => {\n failed = true;\n reject(e);\n });\n server.listen(actualPort, () => {\n if (failed) {\n return;\n }\n const address = server.address();\n if (address === null || typeof address === \"string\") {\n reject(\n new TypeError(\n \"endpoint.listen() currently supports only binding to a PORT\"\n )\n );\n } else {\n resolve(address.port);\n }\n });\n });\n }\n}\n\nfunction nodeHttp2Handler(\n endpoint: Endpoint\n): (request: Http2ServerRequest, response: Http2ServerResponse) => void {\n const handler = createRestateHandler(endpoint, \"BIDI_STREAM\", {});\n\n return (httpRequest, httpResponse) => {\n const url = httpRequest.url;\n\n // Abort controller used to cleanup resources at the end of this stream lifecycle\n const abortController = new AbortController();\n httpRequest.on(\"close\", () => {\n // The 'close' event is emitted when the Http2Stream is destroyed.\n abortController.abort();\n });\n\n const restateResponse = handler.handle({\n url,\n headers: httpRequest.headers,\n extraArgs: [],\n });\n\n httpResponse.writeHead(restateResponse.statusCode, restateResponse.headers);\n\n restateResponse\n .process({\n inputReader: inputReaderAdapter(httpRequest),\n outputWriter: outputWriterAdapter(httpResponse),\n abortSignal: abortController.signal,\n })\n .catch((e) => {\n // handle should never throw\n const error = ensureError(e);\n const logger =\n tryCreateContextualLogger(\n endpoint.loggerTransport,\n url,\n httpRequest.headers\n ) ?? endpoint.rlog;\n logger.error(\"Unexpected error: \" + (error.stack ?? error.message));\n });\n };\n}\n\nfunction inputReaderAdapter(request: Http2ServerRequest): InputReader {\n return request[Symbol.asyncIterator]();\n}\n\nfunction outputWriterAdapter(response: Http2ServerResponse): OutputWriter {\n return {\n write: function (value: Uint8Array): Promise<void> {\n return new Promise((resolve, reject) => {\n response.write(value, (err) => {\n if (err) {\n reject(err);\n } else {\n resolve();\n }\n });\n });\n },\n close: function (): Promise<void> {\n return new Promise((resolve) => {\n response.end(() => resolve());\n });\n },\n };\n}\n"],"mappings":";;;;;;;AA6BA,IAAa,eAAb,MAAqD;CACnD,AAAQ,UAA2B,IAAI,iBAAiB;CAExD,AAAO,KACL,YAIiB;AACjB,OAAK,QAAQ,KAAK,WAAW;AAC7B,SAAO;;CAGT,AAAO,eAAe,GAAG,MAAiC;AACxD,OAAK,QAAQ,gBAAgB,GAAG,KAAK;AACrC,SAAO;;CAGT,AAAO,sBACL,SACiB;AACjB,OAAK,QAAQ,yBAAyB,QAAQ;AAC9C,SAAO;;CAGT,AAAO,UAAU,QAA0C;AACzD,OAAK,QAAQ,UAAU,OAAO;AAC9B,SAAO;;CAGT,AAAO,0BACL,eACiB;AACjB,OAAK,QAAQ,6BAA6B,cAAc;AACxD,SAAO;;CAGT,eAGU;AACR,SAAO,iBAAiB,KAAK,QAAQ,OAAO,CAAC;;CAG/C,OAAO,MAAgC;EACrC,MAAM,WAAW,KAAK,QAAQ,OAAO;EAErC,MAAM,aAAa,QAAQ,SAAS,QAAQ,IAAI,QAAQ,OAAO;AAC/D,WAAS,KAAK,KAAK,oCAAoC,WAAW,KAAK;EAEvE,MAAM,SAAS,MAAM,aAAa,iBAAiB,SAAS,CAAC;AAE7D,SAAO,IAAI,SAAS,SAAS,WAAW;GACtC,IAAI,SAAS;AACb,UAAO,KAAK,UAAU,MAAa;AACjC,aAAS;AACT,WAAO,EAAE;KACT;AACF,UAAO,OAAO,kBAAkB;AAC9B,QAAI,OACF;IAEF,MAAM,UAAU,OAAO,SAAS;AAChC,QAAI,YAAY,QAAQ,OAAO,YAAY,SACzC,wBACE,IAAI,UACF,8DACD,CACF;QAED,SAAQ,QAAQ,KAAK;KAEvB;IACF;;;AAIN,SAAS,iBACP,UACsE;CACtE,MAAM,UAAU,qBAAqB,UAAU,eAAe,EAAE,CAAC;AAEjE,SAAQ,aAAa,iBAAiB;EACpC,MAAM,MAAM,YAAY;EAGxB,MAAM,kBAAkB,IAAI,iBAAiB;AAC7C,cAAY,GAAG,eAAe;AAE5B,mBAAgB,OAAO;IACvB;EAEF,MAAM,kBAAkB,QAAQ,OAAO;GACrC;GACA,SAAS,YAAY;GACrB,WAAW,EAAE;GACd,CAAC;AAEF,eAAa,UAAU,gBAAgB,YAAY,gBAAgB,QAAQ;AAE3E,kBACG,QAAQ;GACP,aAAa,mBAAmB,YAAY;GAC5C,cAAc,oBAAoB,aAAa;GAC/C,aAAa,gBAAgB;GAC9B,CAAC,CACD,OAAO,MAAM;GAEZ,MAAM,QAAQ,YAAY,EAAE;AAO5B,IALE,0BACE,SAAS,iBACT,KACA,YAAY,QACb,IAAI,SAAS,MACT,MAAM,wBAAwB,MAAM,SAAS,MAAM,SAAS;IACnE;;;AAIR,SAAS,mBAAmB,SAA0C;AACpE,QAAO,QAAQ,OAAO,gBAAgB;;AAGxC,SAAS,oBAAoB,UAA6C;AACxE,QAAO;EACL,OAAO,SAAU,OAAkC;AACjD,UAAO,IAAI,SAAS,SAAS,WAAW;AACtC,aAAS,MAAM,QAAQ,QAAQ;AAC7B,SAAI,IACF,QAAO,IAAI;SAEX,UAAS;MAEX;KACF;;EAEJ,OAAO,WAA2B;AAChC,UAAO,IAAI,SAAS,YAAY;AAC9B,aAAS,UAAU,SAAS,CAAC;KAC7B;;EAEL"}
package/dist/fetch.cjs CHANGED
@@ -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
  const require_common_api = require('./common_api.cjs');
6
7
  const require_fetch_endpoint = require('./endpoint/fetch_endpoint.cjs');
7
8
  const require_withOptions = require('./endpoint/withOptions.cjs');
@@ -66,6 +67,12 @@ Object.defineProperty(exports, 'handlers', {
66
67
  return require_rpc.handlers;
67
68
  }
68
69
  });
70
+ Object.defineProperty(exports, 'internal', {
71
+ enumerable: true,
72
+ get: function () {
73
+ return require_internal.internal_exports;
74
+ }
75
+ });
69
76
  exports.object = require_rpc.object;
70
77
  Object.defineProperty(exports, 'rpc', {
71
78
  enumerable: true,
package/dist/fetch.d.cts CHANGED
@@ -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 { 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.cjs";
8
9
  import { FetchEndpoint } from "./endpoint/fetch_endpoint.cjs";
9
10
 
@@ -48,5 +49,5 @@ interface FetchEndpointOptions extends EndpointOptions {
48
49
  */
49
50
  declare function createEndpointHandler(options: FetchEndpointOptions): (request: Request, ...extraArgs: unknown[]) => Promise<Response>;
50
51
  //#endregion
51
- export { CancelledError, Client, ClientCallOptions, ClientSendOptions, CombineablePromise, Context, ContextDate, DefaultServiceOptions, DurablePromise, Duration, EndpointOptions, type FetchEndpoint, FetchEndpointOptions, GenericCall, GenericSend, InferArg, InvocationHandle, InvocationId, InvocationIdParser, InvocationPromise, JournalValueCodec, KeyValueStore, LogMetadata, LogSource, LoggerContext, LoggerTransport, ObjectContext, ObjectHandler, ObjectHandlerOpts, ObjectOptions, ObjectOpts, ObjectSharedContext, Opts, Rand, RemoveVoidArgument, Request$1 as Request, RestateContext, RestateEndpoint, RestateEndpointBase, RestateError, RestateLogLevel, RestateObjectContext, RestateObjectSharedContext, RestatePromise, RestateWorkflowContext, RestateWorkflowSharedContext, RetryPolicy, RetryableError, RetryableErrorOptions, RunAction, RunOptions, SendClient, SendOptions, SendOpts, Serde, 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, object, rpc, serde, service, workflow };
52
+ export { CancelledError, Client, ClientCallOptions, ClientSendOptions, CombineablePromise, Context, ContextDate, DefaultServiceOptions, DurablePromise, Duration, EndpointOptions, type FetchEndpoint, FetchEndpointOptions, GenericCall, GenericSend, InferArg, InvocationHandle, InvocationId, InvocationIdParser, InvocationPromise, JournalValueCodec, KeyValueStore, LogMetadata, LogSource, LoggerContext, LoggerTransport, ObjectContext, ObjectHandler, ObjectHandlerOpts, ObjectOptions, ObjectOpts, ObjectSharedContext, Opts, Rand, RemoveVoidArgument, Request$1 as Request, RestateContext, RestateEndpoint, RestateEndpointBase, RestateError, RestateLogLevel, RestateObjectContext, RestateObjectSharedContext, RestatePromise, RestateWorkflowContext, RestateWorkflowSharedContext, RetryPolicy, RetryableError, RetryableErrorOptions, RunAction, RunOptions, SendClient, SendOptions, SendOpts, Serde, 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, service, workflow };
52
53
  //# sourceMappingURL=fetch.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.d.cts","names":[],"sources":["../src/fetch.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;;;iBAyBgB,QAAA,CAAA,GAAY;UAIX,oBAAA,SAA6B;EAJ9B;AAIhB;AAiCA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAgB,qBAAA,UAA+B,iCAAoB,qCAAA,QAAA"}
1
+ {"version":3,"file":"fetch.d.cts","names":[],"sources":["../src/fetch.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;;;;iBAyBgB,QAAA,CAAA,GAAY;UAIX,oBAAA,SAA6B;;AAJ9C;AAIA;AAiCA;;;;;EAAmE,aAAA,CAAA,EAAA,OAAA;;;;;;;;;;;;;;;;;;;;;;;iBAAnD,qBAAA,UAA+B,iCAAoB,qCAAA,QAAA"}
package/dist/fetch.d.ts CHANGED
@@ -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 { 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";
8
9
  import { FetchEndpoint } from "./endpoint/fetch_endpoint.js";
9
10
 
@@ -48,5 +49,5 @@ interface FetchEndpointOptions extends EndpointOptions {
48
49
  */
49
50
  declare function createEndpointHandler(options: FetchEndpointOptions): (request: Request, ...extraArgs: unknown[]) => Promise<Response>;
50
51
  //#endregion
51
- export { CancelledError, Client, ClientCallOptions, ClientSendOptions, CombineablePromise, Context, ContextDate, DefaultServiceOptions, DurablePromise, Duration, EndpointOptions, type FetchEndpoint, FetchEndpointOptions, GenericCall, GenericSend, InferArg, InvocationHandle, InvocationId, InvocationIdParser, InvocationPromise, JournalValueCodec, KeyValueStore, LogMetadata, LogSource, LoggerContext, LoggerTransport, ObjectContext, ObjectHandler, ObjectHandlerOpts, ObjectOptions, ObjectOpts, ObjectSharedContext, Opts, Rand, RemoveVoidArgument, Request$1 as Request, RestateContext, RestateEndpoint, RestateEndpointBase, RestateError, RestateLogLevel, RestateObjectContext, RestateObjectSharedContext, RestatePromise, RestateWorkflowContext, RestateWorkflowSharedContext, RetryPolicy, RetryableError, RetryableErrorOptions, RunAction, RunOptions, SendClient, SendOptions, SendOpts, Serde, 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, object, rpc, serde, service, workflow };
52
+ export { CancelledError, Client, ClientCallOptions, ClientSendOptions, CombineablePromise, Context, ContextDate, DefaultServiceOptions, DurablePromise, Duration, EndpointOptions, type FetchEndpoint, FetchEndpointOptions, GenericCall, GenericSend, InferArg, InvocationHandle, InvocationId, InvocationIdParser, InvocationPromise, JournalValueCodec, KeyValueStore, LogMetadata, LogSource, LoggerContext, LoggerTransport, ObjectContext, ObjectHandler, ObjectHandlerOpts, ObjectOptions, ObjectOpts, ObjectSharedContext, Opts, Rand, RemoveVoidArgument, Request$1 as Request, RestateContext, RestateEndpoint, RestateEndpointBase, RestateError, RestateLogLevel, RestateObjectContext, RestateObjectSharedContext, RestatePromise, RestateWorkflowContext, RestateWorkflowSharedContext, RetryPolicy, RetryableError, RetryableErrorOptions, RunAction, RunOptions, SendClient, SendOptions, SendOpts, Serde, 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, service, workflow };
52
53
  //# sourceMappingURL=fetch.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.d.ts","names":[],"sources":["../src/fetch.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;;;iBAyBgB,QAAA,CAAA,GAAY;UAIX,oBAAA,SAA6B;EAJ9B;AAIhB;AAiCA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAgB,qBAAA,UAA+B,iCAAoB,qCAAA,QAAA"}
1
+ {"version":3,"file":"fetch.d.ts","names":[],"sources":["../src/fetch.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;;;;iBAyBgB,QAAA,CAAA,GAAY;UAIX,oBAAA,SAA6B;;AAJ9C;AAIA;AAiCA;;;;;EAAmE,aAAA,CAAA,EAAA,OAAA;;;;;;;;;;;;;;;;;;;;;;;iBAAnD,qBAAA,UAA+B,iCAAoB,qCAAA,QAAA"}
package/dist/fetch.js CHANGED
@@ -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 { CombineablePromise, createObjectHandler, createObjectSharedHandler, createServiceHandler, createWorkflowHandler, createWorkflowSharedHandler, serde } from "./common_api.js";
5
6
  import { FetchEndpointImpl } from "./endpoint/fetch_endpoint.js";
6
7
  import { withOptions } from "./endpoint/withOptions.js";
@@ -40,5 +41,5 @@ function createEndpointHandler(options) {
40
41
  }
41
42
 
42
43
  //#endregion
43
- export { CancelledError, CombineablePromise, InvocationIdParser, Opts, RestateError, RestatePromise, RetryableError, SendOpts, TerminalError, TimeoutError, createEndpointHandler, createObjectHandler, createObjectSharedHandler, createServiceHandler, createWorkflowHandler, createWorkflowSharedHandler, endpoint, handlers, object, rpc, serde, service, workflow };
44
+ 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, service, workflow };
44
45
  //# sourceMappingURL=fetch.js.map
package/dist/fetch.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.js","names":[],"sources":["../src/fetch.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\";\n\nimport {\n type FetchEndpoint,\n FetchEndpointImpl,\n} from \"./endpoint/fetch_endpoint.js\";\nimport type { EndpointOptions } from \"./endpoint/types.js\";\nimport { withOptions } from \"./endpoint/withOptions.js\";\n\n/**\n * Create a new {@link RestateEndpoint} in request response protocol mode.\n * Bidirectional mode (must be served over http2) can be enabled with .enableHttp2()\n * @deprecated Please use {@link createEndpointHandler}\n */\nexport function endpoint(): FetchEndpoint {\n return new FetchEndpointImpl(\"REQUEST_RESPONSE\");\n}\n\nexport interface FetchEndpointOptions extends EndpointOptions {\n /**\n * Enables bidirectional communication for the handler.\n *\n * When set to `true`, the handler supports bidirectional streaming (e.g., via HTTP/2 or compatible HTTP/1.1 servers).\n * When `false`, the handler operates in request-response mode only.\n *\n * @default false\n */\n bidirectional?: boolean;\n}\n\n/**\n * Creates a Fetch handler that encapsulates all the Restate services served by this endpoint.\n *\n * @param {FetchEndpointOptions} options - Configuration options for the endpoint handler.\n * @returns A fetch handler function.\n *\n * @example\n * A typical request-response handler would look like this:\n * ```\n * import { createEndpointHandler } from \"@restatedev/restate-sdk/fetch\";\n *\n * export const handler = createEndpointHandler({ services: [myService] })\n *\n * @example\n * A typical bidirectional handler (works with http2 and some http1.1 servers) would look like this:\n * ```\n * import { createEndpointHandler } from \"@restatedev/restate-sdk/fetch\";\n *\n * export const handler = createEndpointHandler({ services: [myService], bidirectional: true })\n *\n */\nexport function createEndpointHandler(options: FetchEndpointOptions) {\n return withOptions<FetchEndpoint>(\n new FetchEndpointImpl(\n options.bidirectional ? \"BIDI_STREAM\" : \"REQUEST_RESPONSE\"\n ),\n options\n ).handler().fetch;\n}\nexport { type FetchEndpoint } from \"./endpoint/fetch_endpoint.js\";\n"],"mappings":";;;;;;;;;;;;;AAyBA,SAAgB,WAA0B;AACxC,QAAO,IAAI,kBAAkB,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;AAoClD,SAAgB,sBAAsB,SAA+B;AACnE,QAAO,YACL,IAAI,kBACF,QAAQ,gBAAgB,gBAAgB,mBACzC,EACD,QACD,CAAC,SAAS,CAAC"}
1
+ {"version":3,"file":"fetch.js","names":[],"sources":["../src/fetch.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\";\n\nimport {\n type FetchEndpoint,\n FetchEndpointImpl,\n} from \"./endpoint/fetch_endpoint.js\";\nimport type { EndpointOptions } from \"./endpoint/types.js\";\nimport { withOptions } from \"./endpoint/withOptions.js\";\n\n/**\n * Create a new {@link RestateEndpoint} in request response protocol mode.\n * Bidirectional mode (must be served over http2) can be enabled with .enableHttp2()\n * @deprecated Please use {@link createEndpointHandler}\n */\nexport function endpoint(): FetchEndpoint {\n return new FetchEndpointImpl(\"REQUEST_RESPONSE\");\n}\n\nexport interface FetchEndpointOptions extends EndpointOptions {\n /**\n * Enables bidirectional communication for the handler.\n *\n * When set to `true`, the handler supports bidirectional streaming (e.g., via HTTP/2 or compatible HTTP/1.1 servers).\n * When `false`, the handler operates in request-response mode only.\n *\n * @default false\n */\n bidirectional?: boolean;\n}\n\n/**\n * Creates a Fetch handler that encapsulates all the Restate services served by this endpoint.\n *\n * @param {FetchEndpointOptions} options - Configuration options for the endpoint handler.\n * @returns A fetch handler function.\n *\n * @example\n * A typical request-response handler would look like this:\n * ```\n * import { createEndpointHandler } from \"@restatedev/restate-sdk/fetch\";\n *\n * export const handler = createEndpointHandler({ services: [myService] })\n *\n * @example\n * A typical bidirectional handler (works with http2 and some http1.1 servers) would look like this:\n * ```\n * import { createEndpointHandler } from \"@restatedev/restate-sdk/fetch\";\n *\n * export const handler = createEndpointHandler({ services: [myService], bidirectional: true })\n *\n */\nexport function createEndpointHandler(options: FetchEndpointOptions) {\n return withOptions<FetchEndpoint>(\n new FetchEndpointImpl(\n options.bidirectional ? \"BIDI_STREAM\" : \"REQUEST_RESPONSE\"\n ),\n options\n ).handler().fetch;\n}\nexport { type FetchEndpoint } from \"./endpoint/fetch_endpoint.js\";\n"],"mappings":";;;;;;;;;;;;;;AAyBA,SAAgB,WAA0B;AACxC,QAAO,IAAI,kBAAkB,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;AAoClD,SAAgB,sBAAsB,SAA+B;AACnE,QAAO,YACL,IAAI,kBACF,QAAQ,gBAAgB,gBAAgB,mBACzC,EACD,QACD,CAAC,SAAS,CAAC"}
package/dist/index.cjs CHANGED
@@ -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
  const require_common_api = require('./common_api.cjs');
6
7
  const require_node = require('./node.cjs');
7
8
  let __restatedev_restate_sdk_core = require("@restatedev/restate-sdk-core");
@@ -30,6 +31,12 @@ Object.defineProperty(exports, 'handlers', {
30
31
  return require_rpc.handlers;
31
32
  }
32
33
  });
34
+ Object.defineProperty(exports, 'internal', {
35
+ enumerable: true,
36
+ get: function () {
37
+ return require_internal.internal_exports;
38
+ }
39
+ });
33
40
  exports.object = require_rpc.object;
34
41
  Object.defineProperty(exports, 'rpc', {
35
42
  enumerable: true,
package/dist/index.d.cts CHANGED
@@ -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 { 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.cjs";
8
9
  import { ServeOptions, createEndpointHandler, endpoint, serve } from "./node.cjs";
9
- 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, object, rpc, serde, serve, service, workflow };
10
+ 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 };
package/dist/index.d.ts CHANGED
@@ -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 { 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";
8
9
  import { ServeOptions, createEndpointHandler, endpoint, serve } from "./node.js";
9
- 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, object, rpc, serde, serve, service, workflow };
10
+ 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 };
package/dist/index.js CHANGED
@@ -1,7 +1,8 @@
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 { CombineablePromise, createObjectHandler, createObjectSharedHandler, createServiceHandler, createWorkflowHandler, createWorkflowSharedHandler, serde } from "./common_api.js";
5
6
  import { createEndpointHandler, endpoint, serve } from "./node.js";
6
7
 
7
- export { CancelledError, CombineablePromise, InvocationIdParser, Opts, RestateError, RestatePromise, RetryableError, SendOpts, TerminalError, TimeoutError, createEndpointHandler, createObjectHandler, createObjectSharedHandler, createServiceHandler, createWorkflowHandler, createWorkflowSharedHandler, endpoint, handlers, object, rpc, serde, serve, service, workflow };
8
+ 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 };
@@ -0,0 +1,11 @@
1
+
2
+ //#region src/internal.ts
3
+ var internal_exports = {};
4
+
5
+ //#endregion
6
+ Object.defineProperty(exports, 'internal_exports', {
7
+ enumerable: true,
8
+ get: function () {
9
+ return internal_exports;
10
+ }
11
+ });
@@ -0,0 +1,27 @@
1
+ import { Context } from "./context.cjs";
2
+
3
+ //#region src/internal.d.ts
4
+ declare namespace internal_d_exports {
5
+ export { ContextInternal };
6
+ }
7
+ /**
8
+ * Internal {@link Context} interface exposing additional features.
9
+ *
10
+ * Please note that this API is to be considered experimental and might change without notice.
11
+ *
12
+ * @experimental
13
+ */
14
+ interface ContextInternal extends Context {
15
+ /**
16
+ * Returns true if the handler is in the processing phase.
17
+ * This is the mechanism used by `ctx.console` to distinguish whether we should log or not in replaying/processing.
18
+ *
19
+ * **WARNING**: This method should not be used to influence control flow, as it will **surely** lead to non-determinism errors!
20
+ *
21
+ * @experimental
22
+ */
23
+ isProcessing(): boolean;
24
+ }
25
+ //#endregion
26
+ export { internal_d_exports };
27
+ //# sourceMappingURL=internal.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal.d.cts","names":[],"sources":["../src/internal.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;AASA;;;UAAiB,eAAA,SAAwB"}
@@ -0,0 +1,27 @@
1
+ import { Context } from "./context.js";
2
+
3
+ //#region src/internal.d.ts
4
+ declare namespace internal_d_exports {
5
+ export { ContextInternal };
6
+ }
7
+ /**
8
+ * Internal {@link Context} interface exposing additional features.
9
+ *
10
+ * Please note that this API is to be considered experimental and might change without notice.
11
+ *
12
+ * @experimental
13
+ */
14
+ interface ContextInternal extends Context {
15
+ /**
16
+ * Returns true if the handler is in the processing phase.
17
+ * This is the mechanism used by `ctx.console` to distinguish whether we should log or not in replaying/processing.
18
+ *
19
+ * **WARNING**: This method should not be used to influence control flow, as it will **surely** lead to non-determinism errors!
20
+ *
21
+ * @experimental
22
+ */
23
+ isProcessing(): boolean;
24
+ }
25
+ //#endregion
26
+ export { internal_d_exports };
27
+ //# sourceMappingURL=internal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal.d.ts","names":[],"sources":["../src/internal.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;AASA;;;UAAiB,eAAA,SAAwB"}
@@ -0,0 +1,6 @@
1
+ //#region src/internal.ts
2
+ var internal_exports = {};
3
+
4
+ //#endregion
5
+ export { internal_exports };
6
+ //# sourceMappingURL=internal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal.js","names":[],"sources":["../src/internal.ts"],"sourcesContent":["import { Context } from \"./context.js\";\n\n/**\n * Internal {@link Context} interface exposing additional features.\n *\n * Please note that this API is to be considered experimental and might change without notice.\n *\n * @experimental\n */\nexport interface ContextInternal extends Context {\n /**\n * Returns true if the handler is in the processing phase.\n * This is the mechanism used by `ctx.console` to distinguish whether we should log or not in replaying/processing.\n *\n * **WARNING**: This method should not be used to influence control flow, as it will **surely** lead to non-determinism errors!\n *\n * @experimental\n */\n isProcessing(): boolean;\n}\n"],"mappings":""}
package/dist/io.cjs CHANGED
@@ -20,13 +20,13 @@ var InputPump = class {
20
20
  async readNext() {
21
21
  let nextValue;
22
22
  try {
23
- nextValue = await this.inputReader.read();
23
+ nextValue = await this.inputReader.next();
24
24
  } catch (e) {
25
25
  this.errorCallback(e);
26
26
  return require_promises.pendingPromise();
27
27
  }
28
- if (nextValue.value !== void 0) this.coreVm.notify_input(nextValue.value);
29
28
  if (nextValue.done) this.coreVm.notify_input_closed();
29
+ else if (nextValue.value !== void 0) this.coreVm.notify_input(nextValue.value);
30
30
  }
31
31
  };
32
32
  /**