@restatedev/restate-sdk-cloudflare-workers 0.0.0-SNAPSHOT-20241001101403

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 (123) hide show
  1. package/dist/esm/src/common_api.d.ts +12 -0
  2. package/dist/esm/src/common_api.d.ts.map +1 -0
  3. package/dist/esm/src/common_api.js +16 -0
  4. package/dist/esm/src/common_api.js.map +1 -0
  5. package/dist/esm/src/context.d.ts +587 -0
  6. package/dist/esm/src/context.d.ts.map +1 -0
  7. package/dist/esm/src/context.js +75 -0
  8. package/dist/esm/src/context.js.map +1 -0
  9. package/dist/esm/src/context_impl.d.ts +96 -0
  10. package/dist/esm/src/context_impl.d.ts.map +1 -0
  11. package/dist/esm/src/context_impl.js +696 -0
  12. package/dist/esm/src/context_impl.js.map +1 -0
  13. package/dist/esm/src/endpoint/endpoint_builder.d.ts +28 -0
  14. package/dist/esm/src/endpoint/endpoint_builder.d.ts.map +1 -0
  15. package/dist/esm/src/endpoint/endpoint_builder.js +139 -0
  16. package/dist/esm/src/endpoint/endpoint_builder.js.map +1 -0
  17. package/dist/esm/src/endpoint/fetch_endpoint.d.ts +54 -0
  18. package/dist/esm/src/endpoint/fetch_endpoint.d.ts.map +1 -0
  19. package/dist/esm/src/endpoint/fetch_endpoint.js +57 -0
  20. package/dist/esm/src/endpoint/fetch_endpoint.js.map +1 -0
  21. package/dist/esm/src/endpoint/handlers/fetch.d.ts +6 -0
  22. package/dist/esm/src/endpoint/handlers/fetch.d.ts.map +1 -0
  23. package/dist/esm/src/endpoint/handlers/fetch.js +30 -0
  24. package/dist/esm/src/endpoint/handlers/fetch.js.map +1 -0
  25. package/dist/esm/src/endpoint/handlers/generic.d.ts +62 -0
  26. package/dist/esm/src/endpoint/handlers/generic.d.ts.map +1 -0
  27. package/dist/esm/src/endpoint/handlers/generic.js +289 -0
  28. package/dist/esm/src/endpoint/handlers/generic.js.map +1 -0
  29. package/dist/esm/src/endpoint/handlers/lambda.d.ts +8 -0
  30. package/dist/esm/src/endpoint/handlers/lambda.d.ts.map +1 -0
  31. package/dist/esm/src/endpoint/handlers/lambda.js +80 -0
  32. package/dist/esm/src/endpoint/handlers/lambda.js.map +1 -0
  33. package/dist/esm/src/endpoint/handlers/vm/sdk_shared_core_wasm_bindings.d.ts +270 -0
  34. package/dist/esm/src/endpoint/handlers/vm/sdk_shared_core_wasm_bindings.js +20 -0
  35. package/dist/esm/src/endpoint/handlers/vm/sdk_shared_core_wasm_bindings_bg.js +1392 -0
  36. package/dist/esm/src/endpoint/handlers/vm/sdk_shared_core_wasm_bindings_bg.wasm +0 -0
  37. package/dist/esm/src/endpoint/handlers/vm/sdk_shared_core_wasm_bindings_bg.wasm.d.ts +61 -0
  38. package/dist/esm/src/endpoint/lambda_endpoint.d.ts +34 -0
  39. package/dist/esm/src/endpoint/lambda_endpoint.d.ts.map +1 -0
  40. package/dist/esm/src/endpoint/lambda_endpoint.js +49 -0
  41. package/dist/esm/src/endpoint/lambda_endpoint.js.map +1 -0
  42. package/dist/esm/src/endpoint/node_endpoint.d.ts +21 -0
  43. package/dist/esm/src/endpoint/node_endpoint.d.ts.map +1 -0
  44. package/dist/esm/src/endpoint/node_endpoint.js +101 -0
  45. package/dist/esm/src/endpoint/node_endpoint.js.map +1 -0
  46. package/dist/esm/src/endpoint/request_signing/basex.d.ts +10 -0
  47. package/dist/esm/src/endpoint/request_signing/basex.d.ts.map +1 -0
  48. package/dist/esm/src/endpoint/request_signing/basex.js +136 -0
  49. package/dist/esm/src/endpoint/request_signing/basex.js.map +1 -0
  50. package/dist/esm/src/endpoint/request_signing/ed25519.d.ts +17 -0
  51. package/dist/esm/src/endpoint/request_signing/ed25519.d.ts.map +1 -0
  52. package/dist/esm/src/endpoint/request_signing/ed25519.js +52 -0
  53. package/dist/esm/src/endpoint/request_signing/ed25519.js.map +1 -0
  54. package/dist/esm/src/endpoint/request_signing/v1.d.ts +10 -0
  55. package/dist/esm/src/endpoint/request_signing/v1.d.ts.map +1 -0
  56. package/dist/esm/src/endpoint/request_signing/v1.js +143 -0
  57. package/dist/esm/src/endpoint/request_signing/v1.js.map +1 -0
  58. package/dist/esm/src/endpoint/request_signing/validate.d.ts +19 -0
  59. package/dist/esm/src/endpoint/request_signing/validate.d.ts.map +1 -0
  60. package/dist/esm/src/endpoint/request_signing/validate.js +40 -0
  61. package/dist/esm/src/endpoint/request_signing/validate.js.map +1 -0
  62. package/dist/esm/src/endpoint.d.ts +132 -0
  63. package/dist/esm/src/endpoint.d.ts.map +1 -0
  64. package/dist/esm/src/endpoint.js +12 -0
  65. package/dist/esm/src/endpoint.js.map +1 -0
  66. package/dist/esm/src/fetch.d.ts +8 -0
  67. package/dist/esm/src/fetch.d.ts.map +1 -0
  68. package/dist/esm/src/fetch.js +23 -0
  69. package/dist/esm/src/fetch.js.map +1 -0
  70. package/dist/esm/src/generated/version.d.ts +2 -0
  71. package/dist/esm/src/generated/version.d.ts.map +1 -0
  72. package/dist/esm/src/generated/version.js +2 -0
  73. package/dist/esm/src/generated/version.js.map +1 -0
  74. package/dist/esm/src/lambda.d.ts +7 -0
  75. package/dist/esm/src/lambda.d.ts.map +1 -0
  76. package/dist/esm/src/lambda.js +19 -0
  77. package/dist/esm/src/lambda.js.map +1 -0
  78. package/dist/esm/src/logger.d.ts +35 -0
  79. package/dist/esm/src/logger.d.ts.map +1 -0
  80. package/dist/esm/src/logger.js +144 -0
  81. package/dist/esm/src/logger.js.map +1 -0
  82. package/dist/esm/src/public_api.d.ts +7 -0
  83. package/dist/esm/src/public_api.d.ts.map +1 -0
  84. package/dist/esm/src/public_api.js +19 -0
  85. package/dist/esm/src/public_api.js.map +1 -0
  86. package/dist/esm/src/types/components.d.ts +85 -0
  87. package/dist/esm/src/types/components.d.ts.map +1 -0
  88. package/dist/esm/src/types/components.js +228 -0
  89. package/dist/esm/src/types/components.js.map +1 -0
  90. package/dist/esm/src/types/discovery.d.ts +43 -0
  91. package/dist/esm/src/types/discovery.d.ts.map +1 -0
  92. package/dist/esm/src/types/discovery.js +28 -0
  93. package/dist/esm/src/types/discovery.js.map +1 -0
  94. package/dist/esm/src/types/errors.d.ts +21 -0
  95. package/dist/esm/src/types/errors.d.ts.map +1 -0
  96. package/dist/esm/src/types/errors.js +47 -0
  97. package/dist/esm/src/types/errors.js.map +1 -0
  98. package/dist/esm/src/types/rpc.d.ts +417 -0
  99. package/dist/esm/src/types/rpc.d.ts.map +1 -0
  100. package/dist/esm/src/types/rpc.js +607 -0
  101. package/dist/esm/src/types/rpc.js.map +1 -0
  102. package/dist/esm/src/user_agent.d.ts +2 -0
  103. package/dist/esm/src/user_agent.d.ts.map +1 -0
  104. package/dist/esm/src/user_agent.js +13 -0
  105. package/dist/esm/src/user_agent.js.map +1 -0
  106. package/dist/esm/src/utils/buffer.d.ts +5 -0
  107. package/dist/esm/src/utils/buffer.d.ts.map +1 -0
  108. package/dist/esm/src/utils/buffer.js +53 -0
  109. package/dist/esm/src/utils/buffer.js.map +1 -0
  110. package/dist/esm/src/utils/completable_promise.d.ts +9 -0
  111. package/dist/esm/src/utils/completable_promise.d.ts.map +1 -0
  112. package/dist/esm/src/utils/completable_promise.js +30 -0
  113. package/dist/esm/src/utils/completable_promise.js.map +1 -0
  114. package/dist/esm/src/utils/rand.d.ts +13 -0
  115. package/dist/esm/src/utils/rand.d.ts.map +1 -0
  116. package/dist/esm/src/utils/rand.js +106 -0
  117. package/dist/esm/src/utils/rand.js.map +1 -0
  118. package/dist/esm/src/utils/streams.d.ts +4 -0
  119. package/dist/esm/src/utils/streams.d.ts.map +1 -0
  120. package/dist/esm/src/utils/streams.js +20 -0
  121. package/dist/esm/src/utils/streams.js.map +1 -0
  122. package/dist/esm/tsconfig.tsbuildinfo +1 -0
  123. package/package.json +82 -0
@@ -0,0 +1,289 @@
1
+ /*
2
+ * Copyright (c) 2023-2024 - Restate Software, Inc., Restate GmbH
3
+ *
4
+ * This file is part of the Restate SDK for Node.js/TypeScript,
5
+ * which is released under the MIT license.
6
+ *
7
+ * You can find a copy of the license in file LICENSE in the root
8
+ * directory of this repository or package, or at
9
+ * https://github.com/restatedev/sdk-typescript/blob/main/LICENSE
10
+ */
11
+ import { ensureError, TerminalError } from "../../types/errors.js";
12
+ import { parseUrlComponents } from "../../types/components.js";
13
+ import { validateRequestSignature } from "../request_signing/validate.js";
14
+ import { X_RESTATE_SERVER } from "../../user_agent.js";
15
+ import { TransformStream } from "node:stream/web";
16
+ import { OnceStream } from "../../utils/streams.js";
17
+ import { ContextImpl } from "../../context_impl.js";
18
+ import { createRestateConsole, DEFAULT_LOGGER_LOG_LEVEL, defaultLogger, LoggerContext, LogSource, RestateLogLevel, } from "../../logger.js";
19
+ import * as vm from "./vm/sdk_shared_core_wasm_bindings.js";
20
+ import { CompletablePromise } from "../../utils/completable_promise.js";
21
+ export var ServiceDiscoveryProtocolVersion;
22
+ (function (ServiceDiscoveryProtocolVersion) {
23
+ /**
24
+ * @generated from enum value: SERVICE_DISCOVERY_PROTOCOL_VERSION_UNSPECIFIED = 0;
25
+ */
26
+ ServiceDiscoveryProtocolVersion[ServiceDiscoveryProtocolVersion["SERVICE_DISCOVERY_PROTOCOL_VERSION_UNSPECIFIED"] = 0] = "SERVICE_DISCOVERY_PROTOCOL_VERSION_UNSPECIFIED";
27
+ /**
28
+ * initial service discovery protocol version using endpoint_manifest_schema.json
29
+ *
30
+ * @generated from enum value: V1 = 1;
31
+ */
32
+ ServiceDiscoveryProtocolVersion[ServiceDiscoveryProtocolVersion["V1"] = 1] = "V1";
33
+ })(ServiceDiscoveryProtocolVersion || (ServiceDiscoveryProtocolVersion = {}));
34
+ /**
35
+ * This is an internal API to support 'fetch' like handlers.
36
+ * It supports both request-reply mode and bidirectional streaming mode.
37
+ *
38
+ * An individual handler will have to convert the shape of the incoming request
39
+ * to a RestateRequest, and then pass it to this handler, and eventually convert back
40
+ * the response.
41
+ * Different runtimes have slightly different shapes of the incoming request, and responses.
42
+ */
43
+ export class GenericHandler {
44
+ endpoint;
45
+ protocolMode;
46
+ constructor(endpoint, protocolMode) {
47
+ this.endpoint = endpoint;
48
+ this.protocolMode = protocolMode;
49
+ if (!this.endpoint.keySet) {
50
+ this.endpoint.rlog.warn(`Accepting requests without validating request signatures; handler access must be restricted`);
51
+ }
52
+ else {
53
+ this.endpoint.rlog.info(`Validating requests using signing keys [${Array.from(this.endpoint.keySet.keys())}]`);
54
+ }
55
+ // Set the logging level in the shared core too!
56
+ switch (DEFAULT_LOGGER_LOG_LEVEL) {
57
+ case RestateLogLevel.TRACE:
58
+ vm.set_log_level(vm.LogLevel.TRACE);
59
+ break;
60
+ case RestateLogLevel.DEBUG:
61
+ vm.set_log_level(vm.LogLevel.DEBUG);
62
+ break;
63
+ case RestateLogLevel.INFO:
64
+ vm.set_log_level(vm.LogLevel.INFO);
65
+ break;
66
+ case RestateLogLevel.WARN:
67
+ vm.set_log_level(vm.LogLevel.WARN);
68
+ break;
69
+ case RestateLogLevel.ERROR:
70
+ vm.set_log_level(vm.LogLevel.ERROR);
71
+ break;
72
+ }
73
+ }
74
+ // handle does not throw.
75
+ async handle(request, context) {
76
+ try {
77
+ return await this._handle(request, context);
78
+ }
79
+ catch (e) {
80
+ const error = ensureError(e);
81
+ this.endpoint.rlog.error("Error while handling invocation: " + (error.stack ?? error.message));
82
+ return this.toErrorResponse(500, error.message);
83
+ }
84
+ }
85
+ async _handle(request, context) {
86
+ // this is the recommended way to get the relative path from a url that may be relative or absolute
87
+ const path = new URL(request.url, "https://example.com").pathname;
88
+ const parsed = parseUrlComponents(path);
89
+ const error = await this.validateConnectionSignature(parsed, request.headers);
90
+ if (error !== null) {
91
+ return error;
92
+ }
93
+ if (parsed.type === "unknown") {
94
+ const msg = `Invalid path: path doesn't end in /invoke/SvcName/handlerName and also not in /discover: ${path}`;
95
+ this.endpoint.rlog.trace(msg);
96
+ return this.toErrorResponse(404, msg);
97
+ }
98
+ if (parsed.type === "discover") {
99
+ return this.handleDiscovery(request.headers["accept"]);
100
+ }
101
+ const serviceProtocolVersionString = request.headers["content-type"];
102
+ if (typeof serviceProtocolVersionString !== "string") {
103
+ const errorMessage = "Missing content-type header";
104
+ this.endpoint.rlog.warn(errorMessage);
105
+ return this.toErrorResponse(415, errorMessage);
106
+ }
107
+ const method = this.endpoint.componentByName(parsed.componentName);
108
+ if (!method) {
109
+ const msg = `No service found for URL: ${JSON.stringify(parsed)}`;
110
+ this.endpoint.rlog.error(msg);
111
+ return this.toErrorResponse(404, msg);
112
+ }
113
+ const handler = method?.handlerMatching(parsed);
114
+ if (!handler) {
115
+ const msg = `No service found for URL: ${JSON.stringify(parsed)}`;
116
+ this.endpoint.rlog.error(msg);
117
+ return this.toErrorResponse(404, msg);
118
+ }
119
+ if (!request.body) {
120
+ const msg = "The incoming message body was null";
121
+ this.endpoint.rlog.error(msg);
122
+ return this.toErrorResponse(400, msg);
123
+ }
124
+ return this.handleInvoke(handler, request.body, request.headers, request.extraArgs, context ?? {});
125
+ }
126
+ async validateConnectionSignature(path, headers) {
127
+ if (!this.endpoint.keySet) {
128
+ // not validating
129
+ return null;
130
+ }
131
+ try {
132
+ const validateResponse = await validateRequestSignature(this.endpoint.keySet, path, headers);
133
+ if (!validateResponse.valid) {
134
+ this.endpoint.rlog.error(`Rejecting request as its JWT did not validate: ${
135
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
136
+ validateResponse.error}`);
137
+ return this.toErrorResponse(401, "Unauthorized");
138
+ }
139
+ else {
140
+ return null;
141
+ }
142
+ }
143
+ catch (e) {
144
+ const error = ensureError(e);
145
+ this.endpoint.rlog.error("Error while attempting to validate request signature: " +
146
+ (error.stack ?? error.message));
147
+ return this.toErrorResponse(401, "Unauthorized");
148
+ }
149
+ }
150
+ async handleInvoke(handler, body, headers, extraArgs, additionalContext) {
151
+ // Instantiate core vm and prepare response headers
152
+ const vmHeaders = Object.entries(headers)
153
+ .filter(([, v]) => v !== undefined)
154
+ .map(([k, v]) => new vm.WasmHeader(k, v instanceof Array ? v[0] : v));
155
+ const coreVm = new vm.WasmVM(vmHeaders);
156
+ const responseHead = coreVm.get_response_head();
157
+ const responseHeaders = responseHead.headers.reduce((headers, { key, value }) => ({
158
+ [key]: value,
159
+ ...headers,
160
+ }), {
161
+ "x-restate-server": X_RESTATE_SERVER,
162
+ });
163
+ const inputReader = body.getReader();
164
+ // Now buffer input entries
165
+ while (!coreVm.is_ready_to_execute()) {
166
+ const nextValue = await inputReader.read();
167
+ if (nextValue.value != undefined) {
168
+ coreVm.notify_input(nextValue.value);
169
+ }
170
+ if (nextValue.done) {
171
+ coreVm.notify_input_closed();
172
+ break;
173
+ }
174
+ }
175
+ // Get input
176
+ const input = coreVm.sys_input();
177
+ // Prepare context
178
+ const console = createRestateConsole(this.endpoint.logger, LogSource.USER, new LoggerContext(input.invocation_id, "", handler.component().name(), handler.name(), additionalContext), () => !coreVm.is_processing());
179
+ // This promise is used to signal the end of the computation,
180
+ // which can be either the user returns a value,
181
+ // or an exception gets catched, or the state machine fails/suspends.
182
+ //
183
+ // The last case is handled internally within the ContextImpl.
184
+ const invocationEndPromise = new CompletablePromise();
185
+ // Prepare response stream
186
+ const responseTransformStream = new TransformStream();
187
+ const outputWriter = responseTransformStream.writable.getWriter();
188
+ // Prepare context
189
+ const ctx = new ContextImpl(coreVm, input, console, handler.kind(), headers, extraArgs, invocationEndPromise, inputReader, outputWriter);
190
+ // Finally invoke user handler
191
+ handler
192
+ .invoke(ctx, input.input)
193
+ .then((bytes) => {
194
+ coreVm.sys_write_output_success(bytes);
195
+ coreVm.sys_end();
196
+ })
197
+ .catch((e) => {
198
+ const error = ensureError(e);
199
+ console.warn("Function completed with an error.\n", error);
200
+ if (error instanceof TerminalError) {
201
+ coreVm.sys_write_output_failure({
202
+ code: error.code,
203
+ message: error.message,
204
+ });
205
+ coreVm.sys_end();
206
+ }
207
+ else {
208
+ coreVm.notify_error(error.message, error.stack);
209
+ }
210
+ })
211
+ .finally(() => {
212
+ invocationEndPromise.resolve();
213
+ });
214
+ // Let's wire up invocationEndPromise with consuming all the output and closing the streams.
215
+ invocationEndPromise.promise
216
+ .then(async () => {
217
+ // Consume output till the end, write it out, then close the stream
218
+ let nextOutput = coreVm.take_output();
219
+ while (nextOutput !== null && nextOutput !== undefined) {
220
+ await outputWriter.write(nextOutput);
221
+ nextOutput = coreVm.take_output();
222
+ }
223
+ await outputWriter.close();
224
+ // Let's cancel the input reader, if it's still here
225
+ inputReader.cancel().catch(() => { });
226
+ })
227
+ .catch(() => { });
228
+ return {
229
+ headers: responseHeaders,
230
+ statusCode: responseHead.status_code,
231
+ body: responseTransformStream.readable,
232
+ };
233
+ }
234
+ handleDiscovery(acceptVersionsString) {
235
+ if (typeof acceptVersionsString !== "string") {
236
+ const errorMessage = "Missing accept header";
237
+ this.endpoint.rlog.warn(errorMessage);
238
+ return this.toErrorResponse(415, errorMessage);
239
+ }
240
+ if (!acceptVersionsString.includes("application/vnd.restate.endpointmanifest.v1+json")) {
241
+ const errorMessage = `Unsupported service discovery protocol version '${acceptVersionsString}'`;
242
+ this.endpoint.rlog.warn(errorMessage);
243
+ return this.toErrorResponse(415, errorMessage);
244
+ }
245
+ const discovery = this.endpoint.computeDiscovery(this.protocolMode);
246
+ const body = JSON.stringify(discovery);
247
+ return {
248
+ headers: {
249
+ "content-type": "application/vnd.restate.endpointmanifest.v1+json",
250
+ "x-restate-server": X_RESTATE_SERVER,
251
+ },
252
+ statusCode: 200,
253
+ body: OnceStream(new TextEncoder().encode(body)),
254
+ };
255
+ }
256
+ toErrorResponse(code, message) {
257
+ return {
258
+ headers: {
259
+ "content-type": "application/json",
260
+ "x-restate-server": X_RESTATE_SERVER,
261
+ },
262
+ statusCode: code,
263
+ body: OnceStream(new TextEncoder().encode(JSON.stringify({ message }))),
264
+ };
265
+ }
266
+ }
267
+ function wasmLogLevelToRestateLogLevel(level) {
268
+ switch (level) {
269
+ case vm.LogLevel.TRACE:
270
+ return RestateLogLevel.TRACE;
271
+ case vm.LogLevel.DEBUG:
272
+ return RestateLogLevel.DEBUG;
273
+ case vm.LogLevel.INFO:
274
+ return RestateLogLevel.INFO;
275
+ case vm.LogLevel.WARN:
276
+ return RestateLogLevel.WARN;
277
+ case vm.LogLevel.ERROR:
278
+ return RestateLogLevel.ERROR;
279
+ }
280
+ }
281
+ /// This is used by the shared core!
282
+ export function vm_log(level, str) {
283
+ defaultLogger({
284
+ level: wasmLogLevelToRestateLogLevel(level),
285
+ replaying: false,
286
+ source: LogSource.JOURNAL,
287
+ }, str);
288
+ }
289
+ //# sourceMappingURL=generic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generic.js","sourceRoot":"","sources":["../../../../../src/endpoint/handlers/generic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { APIGatewayProxyEvent, APIGatewayProxyEventV2, APIGatewayProxyResult, APIGatewayProxyStructuredResultV2, Context } from "aws-lambda";
2
+ import type { GenericHandler } from "./generic.js";
3
+ export declare class LambdaHandler {
4
+ private readonly handler;
5
+ constructor(handler: GenericHandler);
6
+ handleRequest(event: APIGatewayProxyEvent | APIGatewayProxyEventV2, context: Context): Promise<APIGatewayProxyResult | APIGatewayProxyStructuredResultV2>;
7
+ }
8
+ //# sourceMappingURL=lambda.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lambda.d.ts","sourceRoot":"","sources":["../../../../../src/endpoint/handlers/lambda.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACV,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,iCAAiC,EACjC,OAAO,EACR,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,cAAc,CAAC;AAMnE,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,cAAc;IAE9C,aAAa,CACjB,KAAK,EAAE,oBAAoB,GAAG,sBAAsB,EACpD,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,qBAAqB,GAAG,iCAAiC,CAAC;CAiEtE"}
@@ -0,0 +1,80 @@
1
+ /*
2
+ * Copyright (c) 2023-2024 - Restate Software, Inc., Restate GmbH
3
+ *
4
+ * This file is part of the Restate SDK for Node.js/TypeScript,
5
+ * which is released under the MIT license.
6
+ *
7
+ * You can find a copy of the license in file LICENSE in the root
8
+ * directory of this repository or package, or at
9
+ * https://github.com/restatedev/sdk-typescript/blob/main/LICENSE
10
+ */
11
+ import { Buffer } from "node:buffer";
12
+ import { WritableStream } from "node:stream/web";
13
+ import { OnceStream } from "../../utils/streams.js";
14
+ import { X_RESTATE_SERVER } from "../../user_agent.js";
15
+ import { ensureError } from "../../types/errors.js";
16
+ export class LambdaHandler {
17
+ handler;
18
+ constructor(handler) {
19
+ this.handler = handler;
20
+ }
21
+ async handleRequest(event, context) {
22
+ //
23
+ // Request path
24
+ //
25
+ const path = "path" in event ? event.path : event.rawPath;
26
+ //
27
+ // Convert the request body to a Uint8Array stream
28
+ // Lambda functions receive the body as base64 encoded string
29
+ //
30
+ let body;
31
+ if (!event.body) {
32
+ body = null;
33
+ }
34
+ else if (event.isBase64Encoded) {
35
+ body = OnceStream(Buffer.from(event.body, "base64"));
36
+ }
37
+ else {
38
+ body = OnceStream(new TextEncoder().encode(event.body));
39
+ }
40
+ const request = {
41
+ body,
42
+ headers: event.headers,
43
+ url: path,
44
+ extraArgs: [context],
45
+ };
46
+ const resp = await this.handler.handle(request, {
47
+ AWSRequestId: context.awsRequestId,
48
+ });
49
+ const chunks = [];
50
+ try {
51
+ await resp.body.pipeTo(new WritableStream({
52
+ write: (chunk) => {
53
+ chunks.push(chunk);
54
+ },
55
+ }));
56
+ }
57
+ catch (e) {
58
+ // unlike in the streaming case, we can actually catch errors in the response body and form a nicer error
59
+ const error = ensureError(e);
60
+ this.handler.endpoint.rlog.error("Error while collecting invocation response: " +
61
+ (error.stack ?? error.message));
62
+ return {
63
+ headers: {
64
+ "content-type": "application/json",
65
+ "x-restate-server": X_RESTATE_SERVER,
66
+ },
67
+ statusCode: 500,
68
+ isBase64Encoded: false,
69
+ body: JSON.stringify({ message: error.message }),
70
+ };
71
+ }
72
+ return {
73
+ headers: resp.headers,
74
+ statusCode: resp.statusCode,
75
+ isBase64Encoded: true,
76
+ body: Buffer.concat(chunks).toString("base64"),
77
+ };
78
+ }
79
+ }
80
+ //# sourceMappingURL=lambda.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lambda.js","sourceRoot":"","sources":["../../../../../src/endpoint/handlers/lambda.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AASH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,cAAc,EAAuB,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,MAAM,OAAO,aAAa;IACK;IAA7B,YAA6B,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;IAAG,CAAC;IAExD,KAAK,CAAC,aAAa,CACjB,KAAoD,EACpD,OAAgB;QAEhB,EAAE;QACF,eAAe;QACf,EAAE;QACF,MAAM,IAAI,GAAG,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;QAE1D,EAAE;QACF,kDAAkD;QAClD,6DAA6D;QAC7D,EAAE;QACF,IAAI,IAAuC,CAAC;QAC5C,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAChB,IAAI,GAAG,IAAI,CAAC;QACd,CAAC;aAAM,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;YACjC,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,UAAU,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,OAAO,GAAmB;YAC9B,IAAI;YACJ,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,GAAG,EAAE,IAAI;YACT,SAAS,EAAE,CAAC,OAAO,CAAC;SACrB,CAAC;QAEF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE;YAC9C,YAAY,EAAE,OAAO,CAAC,YAAY;SACnC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAiB,EAAE,CAAC;QAEhC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CACpB,IAAI,cAAc,CAAa;gBAC7B,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;oBACf,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACrB,CAAC;aACF,CAAC,CACH,CAAC;QACJ,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,yGAAyG;YACzG,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAC9B,8CAA8C;gBAC5C,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,CACjC,CAAC;YACF,OAAO;gBACL,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,kBAAkB,EAAE,gBAAgB;iBACrC;gBACD,UAAU,EAAE,GAAG;gBACf,eAAe,EAAE,KAAK;gBACtB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;aACjD,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,eAAe,EAAE,IAAI;YACrB,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;SAC/C,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,270 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ * Setups the WASM module
5
+ */
6
+ export function start(): void;
7
+ /**
8
+ * @param {LogLevel} level
9
+ */
10
+ export function set_log_level(level: LogLevel): void;
11
+ /**
12
+ */
13
+ export enum LogLevel {
14
+ TRACE = 0,
15
+ DEBUG = 1,
16
+ INFO = 2,
17
+ WARN = 3,
18
+ ERROR = 4,
19
+ }
20
+ export interface WasmFailure {
21
+ code: number;
22
+ message: string;
23
+ }
24
+
25
+ export interface WasmExponentialRetryConfig {
26
+ initial_interval: number | undefined;
27
+ factor: number;
28
+ max_interval: number | undefined;
29
+ max_attempts: number | undefined;
30
+ max_duration: number | undefined;
31
+ }
32
+
33
+ export interface WasmAwakeable {
34
+ id: string;
35
+ handle: number;
36
+ }
37
+
38
+ export type WasmAsyncResultValue = "NotReady" | "Empty" | { Success: Uint8Array } | { Failure: WasmFailure } | { StateKeys: string[] } | { CombinatorResult: WasmAsyncResultHandle[] };
39
+
40
+ export type WasmRunEnterResult = { ExecutedWithSuccess: Uint8Array } | { ExecutedWithFailure: WasmFailure } | "NotExecuted";
41
+
42
+ /**
43
+ */
44
+ export class WasmHeader {
45
+ free(): void;
46
+ /**
47
+ * @param {string} key
48
+ * @param {string} value
49
+ */
50
+ constructor(key: string, value: string);
51
+ /**
52
+ */
53
+ readonly key: string;
54
+ /**
55
+ */
56
+ readonly value: string;
57
+ }
58
+ /**
59
+ */
60
+ export class WasmInput {
61
+ free(): void;
62
+ /**
63
+ */
64
+ readonly headers: (WasmHeader)[];
65
+ /**
66
+ */
67
+ readonly input: Uint8Array;
68
+ /**
69
+ */
70
+ readonly invocation_id: string;
71
+ /**
72
+ */
73
+ readonly key: string;
74
+ }
75
+ /**
76
+ */
77
+ export class WasmResponseHead {
78
+ free(): void;
79
+ /**
80
+ */
81
+ readonly headers: (WasmHeader)[];
82
+ /**
83
+ */
84
+ readonly status_code: number;
85
+ }
86
+ /**
87
+ */
88
+ export class WasmVM {
89
+ free(): void;
90
+ /**
91
+ * @param {(WasmHeader)[]} headers
92
+ */
93
+ constructor(headers: (WasmHeader)[]);
94
+ /**
95
+ * @returns {WasmResponseHead}
96
+ */
97
+ get_response_head(): WasmResponseHead;
98
+ /**
99
+ * @param {Uint8Array} buffer
100
+ */
101
+ notify_input(buffer: Uint8Array): void;
102
+ /**
103
+ */
104
+ notify_input_closed(): void;
105
+ /**
106
+ * @param {string} error
107
+ * @param {string | undefined} [description]
108
+ */
109
+ notify_error(error: string, description?: string): void;
110
+ /**
111
+ * @returns {any}
112
+ */
113
+ take_output(): any;
114
+ /**
115
+ * @returns {boolean}
116
+ */
117
+ is_ready_to_execute(): boolean;
118
+ /**
119
+ * @param {number} handle
120
+ */
121
+ notify_await_point(handle: number): void;
122
+ /**
123
+ * @param {number} handle
124
+ * @returns {WasmAsyncResultValue}
125
+ */
126
+ take_async_result(handle: number): WasmAsyncResultValue;
127
+ /**
128
+ * @returns {WasmInput}
129
+ */
130
+ sys_input(): WasmInput;
131
+ /**
132
+ * @param {string} key
133
+ * @returns {number}
134
+ */
135
+ sys_get_state(key: string): number;
136
+ /**
137
+ * @returns {number}
138
+ */
139
+ sys_get_state_keys(): number;
140
+ /**
141
+ * @param {string} key
142
+ * @param {Uint8Array} buffer
143
+ */
144
+ sys_set_state(key: string, buffer: Uint8Array): void;
145
+ /**
146
+ * @param {string} key
147
+ */
148
+ sys_clear_state(key: string): void;
149
+ /**
150
+ */
151
+ sys_clear_all_state(): void;
152
+ /**
153
+ * @param {bigint} millis
154
+ * @returns {number}
155
+ */
156
+ sys_sleep(millis: bigint): number;
157
+ /**
158
+ * @param {string} service
159
+ * @param {string} handler
160
+ * @param {Uint8Array} buffer
161
+ * @param {string | undefined} [key]
162
+ * @returns {number}
163
+ */
164
+ sys_call(service: string, handler: string, buffer: Uint8Array, key?: string): number;
165
+ /**
166
+ * @param {string} service
167
+ * @param {string} handler
168
+ * @param {Uint8Array} buffer
169
+ * @param {string | undefined} [key]
170
+ * @param {bigint | undefined} [delay]
171
+ */
172
+ sys_send(service: string, handler: string, buffer: Uint8Array, key?: string, delay?: bigint): void;
173
+ /**
174
+ * @returns {WasmAwakeable}
175
+ */
176
+ sys_awakeable(): WasmAwakeable;
177
+ /**
178
+ * @param {string} id
179
+ * @param {Uint8Array} buffer
180
+ */
181
+ sys_complete_awakeable_success(id: string, buffer: Uint8Array): void;
182
+ /**
183
+ * @param {string} id
184
+ * @param {WasmFailure} value
185
+ */
186
+ sys_complete_awakeable_failure(id: string, value: WasmFailure): void;
187
+ /**
188
+ * @param {string} key
189
+ * @returns {number}
190
+ */
191
+ sys_get_promise(key: string): number;
192
+ /**
193
+ * @param {string} key
194
+ * @returns {number}
195
+ */
196
+ sys_peek_promise(key: string): number;
197
+ /**
198
+ * @param {string} key
199
+ * @param {Uint8Array} buffer
200
+ * @returns {number}
201
+ */
202
+ sys_complete_promise_success(key: string, buffer: Uint8Array): number;
203
+ /**
204
+ * @param {string} key
205
+ * @param {WasmFailure} value
206
+ * @returns {number}
207
+ */
208
+ sys_complete_promise_failure(key: string, value: WasmFailure): number;
209
+ /**
210
+ * @param {string} name
211
+ * @returns {WasmRunEnterResult}
212
+ */
213
+ sys_run_enter(name: string): WasmRunEnterResult;
214
+ /**
215
+ * @param {Uint8Array} buffer
216
+ * @returns {number}
217
+ */
218
+ sys_run_exit_success(buffer: Uint8Array): number;
219
+ /**
220
+ * @param {WasmFailure} value
221
+ * @returns {number}
222
+ */
223
+ sys_run_exit_failure(value: WasmFailure): number;
224
+ /**
225
+ * @param {WasmFailure} value
226
+ * @param {bigint} attempt_duration
227
+ * @param {WasmExponentialRetryConfig} config
228
+ * @returns {number}
229
+ */
230
+ sys_run_exit_failure_transient(value: WasmFailure, attempt_duration: bigint, config: WasmExponentialRetryConfig): number;
231
+ /**
232
+ * @param {Uint8Array} buffer
233
+ */
234
+ sys_write_output_success(buffer: Uint8Array): void;
235
+ /**
236
+ * @param {WasmFailure} value
237
+ */
238
+ sys_write_output_failure(value: WasmFailure): void;
239
+ /**
240
+ */
241
+ sys_end(): void;
242
+ /**
243
+ * @returns {boolean}
244
+ */
245
+ is_processing(): boolean;
246
+ /**
247
+ * @returns {boolean}
248
+ */
249
+ is_inside_run(): boolean;
250
+ /**
251
+ * @param {Uint32Array} handles
252
+ * @returns {number | undefined}
253
+ */
254
+ sys_try_complete_all_combinator(handles: Uint32Array): number | undefined;
255
+ /**
256
+ * @param {Uint32Array} handles
257
+ * @returns {number | undefined}
258
+ */
259
+ sys_try_complete_any_combinator(handles: Uint32Array): number | undefined;
260
+ /**
261
+ * @param {Uint32Array} handles
262
+ * @returns {number | undefined}
263
+ */
264
+ sys_try_complete_all_settled_combinator(handles: Uint32Array): number | undefined;
265
+ /**
266
+ * @param {Uint32Array} handles
267
+ * @returns {number | undefined}
268
+ */
269
+ sys_try_complete_race_combinator(handles: Uint32Array): number | undefined;
270
+ }