@restatedev/restate-sdk 0.0.0-SNAPSHOT-20231025205407
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +157 -0
- package/dist/connection/connection.d.ts +19 -0
- package/dist/connection/connection.d.ts.map +1 -0
- package/dist/connection/connection.js +13 -0
- package/dist/connection/connection.js.map +1 -0
- package/dist/connection/embedded_connection.d.ts +22 -0
- package/dist/connection/embedded_connection.d.ts.map +1 -0
- package/dist/connection/embedded_connection.js +78 -0
- package/dist/connection/embedded_connection.js.map +1 -0
- package/dist/connection/http_connection.d.ts +73 -0
- package/dist/connection/http_connection.d.ts.map +1 -0
- package/dist/connection/http_connection.js +203 -0
- package/dist/connection/http_connection.js.map +1 -0
- package/dist/connection/lambda_connection.d.ts +14 -0
- package/dist/connection/lambda_connection.d.ts.map +1 -0
- package/dist/connection/lambda_connection.js +56 -0
- package/dist/connection/lambda_connection.js.map +1 -0
- package/dist/embedded/api.d.ts +18 -0
- package/dist/embedded/api.d.ts.map +1 -0
- package/dist/embedded/api.js +37 -0
- package/dist/embedded/api.js.map +1 -0
- package/dist/embedded/handler.d.ts +4 -0
- package/dist/embedded/handler.d.ts.map +1 -0
- package/dist/embedded/handler.js +28 -0
- package/dist/embedded/handler.js.map +1 -0
- package/dist/embedded/http2_remote.d.ts +10 -0
- package/dist/embedded/http2_remote.d.ts.map +1 -0
- package/dist/embedded/http2_remote.js +85 -0
- package/dist/embedded/http2_remote.js.map +1 -0
- package/dist/embedded/invocation.d.ts +4 -0
- package/dist/embedded/invocation.d.ts.map +1 -0
- package/dist/embedded/invocation.js +90 -0
- package/dist/embedded/invocation.js.map +1 -0
- package/dist/generated/dev/restate/events.d.ts +96 -0
- package/dist/generated/dev/restate/events.d.ts.map +1 -0
- package/dist/generated/dev/restate/events.js +371 -0
- package/dist/generated/dev/restate/events.js.map +1 -0
- package/dist/generated/dev/restate/ext.d.ts +88 -0
- package/dist/generated/dev/restate/ext.d.ts.map +1 -0
- package/dist/generated/dev/restate/ext.js +212 -0
- package/dist/generated/dev/restate/ext.js.map +1 -0
- package/dist/generated/google/protobuf/descriptor.d.ts +1204 -0
- package/dist/generated/google/protobuf/descriptor.d.ts.map +1 -0
- package/dist/generated/google/protobuf/descriptor.js +6676 -0
- package/dist/generated/google/protobuf/descriptor.js.map +1 -0
- package/dist/generated/google/protobuf/empty.d.ts +86 -0
- package/dist/generated/google/protobuf/empty.d.ts.map +1 -0
- package/dist/generated/google/protobuf/empty.js +107 -0
- package/dist/generated/google/protobuf/empty.js.map +1 -0
- package/dist/generated/google/protobuf/struct.d.ts +175 -0
- package/dist/generated/google/protobuf/struct.d.ts.map +1 -0
- package/dist/generated/google/protobuf/struct.js +754 -0
- package/dist/generated/google/protobuf/struct.js.map +1 -0
- package/dist/generated/proto/discovery.d.ts +105 -0
- package/dist/generated/proto/discovery.d.ts.map +1 -0
- package/dist/generated/proto/discovery.js +364 -0
- package/dist/generated/proto/discovery.js.map +1 -0
- package/dist/generated/proto/dynrpc.d.ts +150 -0
- package/dist/generated/proto/dynrpc.d.ts.map +1 -0
- package/dist/generated/proto/dynrpc.js +668 -0
- package/dist/generated/proto/dynrpc.js.map +1 -0
- package/dist/generated/proto/javascript.d.ts +97 -0
- package/dist/generated/proto/javascript.d.ts.map +1 -0
- package/dist/generated/proto/javascript.js +297 -0
- package/dist/generated/proto/javascript.js.map +1 -0
- package/dist/generated/proto/protocol.d.ts +371 -0
- package/dist/generated/proto/protocol.d.ts.map +1 -0
- package/dist/generated/proto/protocol.js +2179 -0
- package/dist/generated/proto/protocol.js.map +1 -0
- package/dist/generated/proto/services.d.ts +307 -0
- package/dist/generated/proto/services.d.ts.map +1 -0
- package/dist/generated/proto/services.js +1535 -0
- package/dist/generated/proto/services.js.map +1 -0
- package/dist/generated/proto/test.d.ts +116 -0
- package/dist/generated/proto/test.d.ts.map +1 -0
- package/dist/generated/proto/test.js +321 -0
- package/dist/generated/proto/test.js.map +1 -0
- package/dist/invocation.d.ts +39 -0
- package/dist/invocation.d.ts.map +1 -0
- package/dist/invocation.js +138 -0
- package/dist/invocation.js.map +1 -0
- package/dist/io/decoder.d.ts +8 -0
- package/dist/io/decoder.d.ts.map +1 -0
- package/dist/io/decoder.js +133 -0
- package/dist/io/decoder.js.map +1 -0
- package/dist/io/encoder.d.ts +7 -0
- package/dist/io/encoder.d.ts.map +1 -0
- package/dist/io/encoder.js +57 -0
- package/dist/io/encoder.js.map +1 -0
- package/dist/journal.d.ts +42 -0
- package/dist/journal.d.ts.map +1 -0
- package/dist/journal.js +368 -0
- package/dist/journal.js.map +1 -0
- package/dist/local_state_store.d.ts +13 -0
- package/dist/local_state_store.d.ts.map +1 -0
- package/dist/local_state_store.js +72 -0
- package/dist/local_state_store.js.map +1 -0
- package/dist/public_api.d.ts +10 -0
- package/dist/public_api.d.ts.map +1 -0
- package/dist/public_api.js +59 -0
- package/dist/public_api.js.map +1 -0
- package/dist/restate_context.d.ts +405 -0
- package/dist/restate_context.d.ts.map +1 -0
- package/dist/restate_context.js +46 -0
- package/dist/restate_context.js.map +1 -0
- package/dist/restate_context_impl.d.ts +54 -0
- package/dist/restate_context_impl.d.ts.map +1 -0
- package/dist/restate_context_impl.js +364 -0
- package/dist/restate_context_impl.js.map +1 -0
- package/dist/server/base_restate_server.d.ts +30 -0
- package/dist/server/base_restate_server.d.ts.map +1 -0
- package/dist/server/base_restate_server.js +360 -0
- package/dist/server/base_restate_server.js.map +1 -0
- package/dist/server/restate_lambda_handler.d.ts +104 -0
- package/dist/server/restate_lambda_handler.d.ts.map +1 -0
- package/dist/server/restate_lambda_handler.js +245 -0
- package/dist/server/restate_lambda_handler.js.map +1 -0
- package/dist/server/restate_server.d.ts +91 -0
- package/dist/server/restate_server.d.ts.map +1 -0
- package/dist/server/restate_server.js +230 -0
- package/dist/server/restate_server.js.map +1 -0
- package/dist/state_machine.d.ts +75 -0
- package/dist/state_machine.d.ts.map +1 -0
- package/dist/state_machine.js +380 -0
- package/dist/state_machine.js.map +1 -0
- package/dist/types/errors.d.ts +40 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/errors.js +121 -0
- package/dist/types/errors.js.map +1 -0
- package/dist/types/grpc.d.ts +88 -0
- package/dist/types/grpc.d.ts.map +1 -0
- package/dist/types/grpc.js +68 -0
- package/dist/types/grpc.js.map +1 -0
- package/dist/types/protocol.d.ts +24 -0
- package/dist/types/protocol.d.ts.map +1 -0
- package/dist/types/protocol.js +115 -0
- package/dist/types/protocol.js.map +1 -0
- package/dist/types/router.d.ts +33 -0
- package/dist/types/router.d.ts.map +1 -0
- package/dist/types/router.js +36 -0
- package/dist/types/router.js.map +1 -0
- package/dist/types/types.d.ts +30 -0
- package/dist/types/types.d.ts.map +1 -0
- package/dist/types/types.js +125 -0
- package/dist/types/types.js.map +1 -0
- package/dist/utils/assumpsions.d.ts +8 -0
- package/dist/utils/assumpsions.d.ts.map +1 -0
- package/dist/utils/assumpsions.js +101 -0
- package/dist/utils/assumpsions.js.map +1 -0
- package/dist/utils/logger.d.ts +60 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +102 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/public_utils.d.ts +58 -0
- package/dist/utils/public_utils.d.ts.map +1 -0
- package/dist/utils/public_utils.js +49 -0
- package/dist/utils/public_utils.js.map +1 -0
- package/dist/utils/utils.d.ts +14 -0
- package/dist/utils/utils.d.ts.map +1 -0
- package/dist/utils/utils.js +119 -0
- package/dist/utils/utils.js.map +1 -0
- package/package.json +75 -0
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2023 - Restate Software, Inc., Restate GmbH
|
|
4
|
+
*
|
|
5
|
+
* This file is part of the Restate SDK for Node.js/TypeScript,
|
|
6
|
+
* which is released under the MIT license.
|
|
7
|
+
*
|
|
8
|
+
* You can find a copy of the license in file LICENSE in the root
|
|
9
|
+
* directory of this repository or package, or at
|
|
10
|
+
* https://github.com/restatedev/sdk-typescript/blob/main/LICENSE
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.Invocation = exports.InvocationBuilder = void 0;
|
|
14
|
+
const utils_1 = require("./utils/utils");
|
|
15
|
+
const protocol_1 = require("./types/protocol");
|
|
16
|
+
const local_state_store_1 = require("./local_state_store");
|
|
17
|
+
const errors_1 = require("./types/errors");
|
|
18
|
+
var State;
|
|
19
|
+
(function (State) {
|
|
20
|
+
State[State["ExpectingStart"] = 0] = "ExpectingStart";
|
|
21
|
+
State[State["ExpectingInput"] = 1] = "ExpectingInput";
|
|
22
|
+
State[State["ExpectingFurtherReplay"] = 2] = "ExpectingFurtherReplay";
|
|
23
|
+
State[State["Complete"] = 3] = "Complete";
|
|
24
|
+
})(State || (State = {}));
|
|
25
|
+
class InvocationBuilder {
|
|
26
|
+
method;
|
|
27
|
+
complete = new utils_1.CompletablePromise();
|
|
28
|
+
state = State.ExpectingStart;
|
|
29
|
+
runtimeReplayIndex = 0;
|
|
30
|
+
replayEntries = new Map();
|
|
31
|
+
id = undefined;
|
|
32
|
+
debugId = undefined;
|
|
33
|
+
invocationValue = undefined;
|
|
34
|
+
nbEntriesToReplay = undefined;
|
|
35
|
+
localStateStore;
|
|
36
|
+
constructor(method) {
|
|
37
|
+
this.method = method;
|
|
38
|
+
}
|
|
39
|
+
handleMessage(m) {
|
|
40
|
+
try {
|
|
41
|
+
switch (this.state) {
|
|
42
|
+
case State.ExpectingStart:
|
|
43
|
+
checkState(State.ExpectingStart, protocol_1.START_MESSAGE_TYPE, m);
|
|
44
|
+
this.handleStartMessage(m.message);
|
|
45
|
+
this.state = State.ExpectingInput;
|
|
46
|
+
return false;
|
|
47
|
+
case State.ExpectingInput:
|
|
48
|
+
checkState(State.ExpectingInput, protocol_1.POLL_INPUT_STREAM_ENTRY_MESSAGE_TYPE, m);
|
|
49
|
+
this.addReplayEntry(m);
|
|
50
|
+
break;
|
|
51
|
+
case State.ExpectingFurtherReplay:
|
|
52
|
+
this.addReplayEntry(m);
|
|
53
|
+
break;
|
|
54
|
+
case State.Complete:
|
|
55
|
+
throw new Error(`Journal builder is getting a message after the journal was complete. entries-to-replay: ${this.nbEntriesToReplay}, message: ${(0, utils_1.printMessageAsJson)(m)}`);
|
|
56
|
+
}
|
|
57
|
+
this.state =
|
|
58
|
+
this.replayEntries.size === this.nbEntriesToReplay
|
|
59
|
+
? State.Complete
|
|
60
|
+
: State.ExpectingFurtherReplay;
|
|
61
|
+
if (this.state === State.Complete) {
|
|
62
|
+
this.complete.resolve();
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
catch (e) {
|
|
68
|
+
const error = (0, errors_1.ensureError)(e);
|
|
69
|
+
this.complete.reject(error);
|
|
70
|
+
return true; // we want no further messages
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
handleStreamError(e) {
|
|
74
|
+
this.complete.reject(e);
|
|
75
|
+
}
|
|
76
|
+
handleInputClosed() {
|
|
77
|
+
this.complete.reject(new Error("Input closed before journal is complete"));
|
|
78
|
+
}
|
|
79
|
+
completion() {
|
|
80
|
+
return this.complete.promise;
|
|
81
|
+
}
|
|
82
|
+
handleStartMessage(m) {
|
|
83
|
+
this.nbEntriesToReplay = m.knownEntries;
|
|
84
|
+
this.id = m.id;
|
|
85
|
+
this.debugId = m.debugId;
|
|
86
|
+
this.localStateStore = new local_state_store_1.LocalStateStore(m.partialState, m.stateMap);
|
|
87
|
+
return this;
|
|
88
|
+
}
|
|
89
|
+
addReplayEntry(m) {
|
|
90
|
+
if (m.messageType === protocol_1.POLL_INPUT_STREAM_ENTRY_MESSAGE_TYPE) {
|
|
91
|
+
this.invocationValue = m.message.value;
|
|
92
|
+
}
|
|
93
|
+
// Will be retrieved when the user code reaches this point
|
|
94
|
+
this.replayEntries.set(this.runtimeReplayIndex, m);
|
|
95
|
+
this.incrementRuntimeReplayIndex();
|
|
96
|
+
return this;
|
|
97
|
+
}
|
|
98
|
+
incrementRuntimeReplayIndex() {
|
|
99
|
+
this.runtimeReplayIndex++;
|
|
100
|
+
}
|
|
101
|
+
isComplete() {
|
|
102
|
+
return this.state === State.Complete;
|
|
103
|
+
}
|
|
104
|
+
build() {
|
|
105
|
+
if (!this.isComplete()) {
|
|
106
|
+
throw new Error(`Cannot build invocation. Not all data present: ${JSON.stringify(this)}`);
|
|
107
|
+
}
|
|
108
|
+
return new Invocation(this.method, this.id, this.debugId, this.nbEntriesToReplay, this.replayEntries, this.invocationValue, this.localStateStore);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
exports.InvocationBuilder = InvocationBuilder;
|
|
112
|
+
class Invocation {
|
|
113
|
+
method;
|
|
114
|
+
id;
|
|
115
|
+
debugId;
|
|
116
|
+
nbEntriesToReplay;
|
|
117
|
+
replayEntries;
|
|
118
|
+
invocationValue;
|
|
119
|
+
localStateStore;
|
|
120
|
+
logPrefix;
|
|
121
|
+
constructor(method, id, debugId, nbEntriesToReplay, replayEntries, invocationValue, localStateStore) {
|
|
122
|
+
this.method = method;
|
|
123
|
+
this.id = id;
|
|
124
|
+
this.debugId = debugId;
|
|
125
|
+
this.nbEntriesToReplay = nbEntriesToReplay;
|
|
126
|
+
this.replayEntries = replayEntries;
|
|
127
|
+
this.invocationValue = invocationValue;
|
|
128
|
+
this.localStateStore = localStateStore;
|
|
129
|
+
this.logPrefix = `[${(0, utils_1.makeFqServiceName)(this.method.packge, this.method.service)}/${this.method.method.name}] [${this.debugId}]`;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
exports.Invocation = Invocation;
|
|
133
|
+
function checkState(state, expected, m) {
|
|
134
|
+
if (m.messageType !== expected) {
|
|
135
|
+
throw new Error(`Unexpected message in state ${state}: ${(0, utils_1.printMessageAsJson)(m)}`);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=invocation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invocation.js","sourceRoot":"","sources":["../src/invocation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
/// <reference types="node" />
|
|
3
|
+
import stream from "stream";
|
|
4
|
+
import { Message } from "../types/types";
|
|
5
|
+
export declare function streamDecoder(): stream.Transform;
|
|
6
|
+
export declare function decodeLambdaBody(msgBase64: string): Message[];
|
|
7
|
+
export declare function decodeMessagesBuffer(buffer: Buffer): Message[];
|
|
8
|
+
//# sourceMappingURL=decoder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decoder.d.ts","sourceRoot":"","sources":["../../src/io/decoder.ts"],"names":[],"mappings":";;AAsBA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAAU,OAAO,EAAE,MAAM,gBAAgB,CAAC;AA4EjD,wBAAgB,aAAa,IAAI,MAAM,CAAC,SAAS,CAiBhD;AAMD,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,EAAE,CAS7D;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,EAAE,CAsB9D"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2023 - Restate Software, Inc., Restate GmbH
|
|
4
|
+
*
|
|
5
|
+
* This file is part of the Restate SDK for Node.js/TypeScript,
|
|
6
|
+
* which is released under the MIT license.
|
|
7
|
+
*
|
|
8
|
+
* You can find a copy of the license in file LICENSE in the root
|
|
9
|
+
* directory of this repository or package, or at
|
|
10
|
+
* https://github.com/restatedev/sdk-typescript/blob/main/LICENSE
|
|
11
|
+
*/
|
|
12
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
13
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
14
|
+
};
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.decodeMessagesBuffer = exports.decodeLambdaBody = exports.streamDecoder = void 0;
|
|
17
|
+
// This is a NodeJs stream transformer. It is used to convert a chunked stream of bytes to
|
|
18
|
+
// a stream of JavaScript objects of the form { header: .. , message: ..} where:
|
|
19
|
+
// * header has some information about the frame like, the message type, and some flags.
|
|
20
|
+
// * message is the Protobuf decoded message.
|
|
21
|
+
//
|
|
22
|
+
// To use this one would need to do the following:
|
|
23
|
+
//
|
|
24
|
+
// let decodedStream = stream.pipe(streamDecoder());
|
|
25
|
+
//
|
|
26
|
+
// at this point the decodedStream is a high level stream of objects {header, message}
|
|
27
|
+
const stream_1 = __importDefault(require("stream"));
|
|
28
|
+
const protocol_1 = require("../types/protocol");
|
|
29
|
+
const types_1 = require("../types/types");
|
|
30
|
+
const assert_1 = __importDefault(require("assert"));
|
|
31
|
+
const errors_1 = require("../types/errors");
|
|
32
|
+
const WAITING_FOR_HEADER = 0;
|
|
33
|
+
const WAITING_FOR_BODY = 1;
|
|
34
|
+
function initalDecoderState(buf) {
|
|
35
|
+
return {
|
|
36
|
+
state: WAITING_FOR_HEADER,
|
|
37
|
+
header: undefined,
|
|
38
|
+
buf,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
function appendBufferToDecoder(state, chunk) {
|
|
42
|
+
state.buf = Buffer.concat([state.buf, chunk]);
|
|
43
|
+
}
|
|
44
|
+
function decodeMessages(decoderState, out) {
|
|
45
|
+
let buf = decoderState.buf;
|
|
46
|
+
while (buf.length > 0 || decoderState.state === WAITING_FOR_BODY) {
|
|
47
|
+
switch (decoderState.state) {
|
|
48
|
+
case WAITING_FOR_HEADER: {
|
|
49
|
+
(0, assert_1.default)(decoderState.header === undefined);
|
|
50
|
+
if (buf.length < 8) {
|
|
51
|
+
decoderState.buf = buf;
|
|
52
|
+
return decoderState;
|
|
53
|
+
}
|
|
54
|
+
const h = buf.readBigUInt64BE();
|
|
55
|
+
buf = buf.subarray(8);
|
|
56
|
+
decoderState.header = types_1.Header.fromU64be(h);
|
|
57
|
+
decoderState.state = WAITING_FOR_BODY;
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
case WAITING_FOR_BODY: {
|
|
61
|
+
const header = decoderState.header;
|
|
62
|
+
(0, assert_1.default)(header !== undefined);
|
|
63
|
+
if (buf.length < header.frameLength) {
|
|
64
|
+
decoderState.buf = buf;
|
|
65
|
+
return decoderState;
|
|
66
|
+
}
|
|
67
|
+
const frame = buf.subarray(0, header.frameLength);
|
|
68
|
+
buf = buf.subarray(header.frameLength);
|
|
69
|
+
decoderState.state = WAITING_FOR_HEADER;
|
|
70
|
+
decoderState.header = undefined;
|
|
71
|
+
const pbType = protocol_1.PROTOBUF_MESSAGE_BY_TYPE.get(header.messageType);
|
|
72
|
+
if (pbType === undefined) {
|
|
73
|
+
throw new Error("Got unknown message type " + header.messageType);
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
const message = pbType.decode(frame);
|
|
77
|
+
out.push(new types_1.Message(header.messageType, message, header.completedFlag, header.protocolVersion, header.requiresAckFlag));
|
|
78
|
+
}
|
|
79
|
+
break;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
decoderState.buf = buf;
|
|
84
|
+
return decoderState;
|
|
85
|
+
}
|
|
86
|
+
function streamDecoder() {
|
|
87
|
+
let decoderState = initalDecoderState(Buffer.alloc(0));
|
|
88
|
+
return new stream_1.default.Transform({
|
|
89
|
+
writableObjectMode: true,
|
|
90
|
+
objectMode: true,
|
|
91
|
+
transform(chunk, _encoding, cb) {
|
|
92
|
+
try {
|
|
93
|
+
appendBufferToDecoder(decoderState, chunk);
|
|
94
|
+
decoderState = decodeMessages(decoderState, this);
|
|
95
|
+
cb();
|
|
96
|
+
}
|
|
97
|
+
catch (e) {
|
|
98
|
+
cb((0, errors_1.ensureError)(e), null);
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
exports.streamDecoder = streamDecoder;
|
|
104
|
+
// Decodes messages from Lambda requests to an array of headers + protocol messages
|
|
105
|
+
const base64regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;
|
|
106
|
+
function decodeLambdaBody(msgBase64) {
|
|
107
|
+
if (!base64regex.test(msgBase64)) {
|
|
108
|
+
throw new Error("Cannot parse the lambda request body, body was not valid base64 encoded: " +
|
|
109
|
+
msgBase64);
|
|
110
|
+
}
|
|
111
|
+
const buffer = Buffer.from(msgBase64, "base64");
|
|
112
|
+
return decodeMessagesBuffer(buffer);
|
|
113
|
+
}
|
|
114
|
+
exports.decodeLambdaBody = decodeLambdaBody;
|
|
115
|
+
function decodeMessagesBuffer(buffer) {
|
|
116
|
+
const decodedEntries = [];
|
|
117
|
+
let finalState;
|
|
118
|
+
try {
|
|
119
|
+
finalState = decodeMessages(initalDecoderState(buffer), decodedEntries);
|
|
120
|
+
}
|
|
121
|
+
catch (e) {
|
|
122
|
+
const err = (0, errors_1.ensureError)(e);
|
|
123
|
+
throw new Error("Cannot parse the lambda request body, message was not a valid sequence of Restate messages: " +
|
|
124
|
+
err.message, { cause: err });
|
|
125
|
+
}
|
|
126
|
+
if (finalState.buf.length > 0) {
|
|
127
|
+
throw new Error("Cannot parse the request body: Trailing data (incomplete message) in request body: " +
|
|
128
|
+
finalState.buf.toString("hex"));
|
|
129
|
+
}
|
|
130
|
+
return decodedEntries;
|
|
131
|
+
}
|
|
132
|
+
exports.decodeMessagesBuffer = decodeMessagesBuffer;
|
|
133
|
+
//# sourceMappingURL=decoder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decoder.js","sourceRoot":"","sources":["../../src/io/decoder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import stream from "stream";
|
|
3
|
+
import { Message } from "../types/types";
|
|
4
|
+
export declare function streamEncoder(): stream.Transform;
|
|
5
|
+
export declare function encodeMessage(msg: Message): Uint8Array;
|
|
6
|
+
export declare function encodeMessages(messages: Message[]): Uint8Array;
|
|
7
|
+
//# sourceMappingURL=encoder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encoder.d.ts","sourceRoot":"","sources":["../../src/io/encoder.ts"],"names":[],"mappings":";AAWA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAAU,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEjD,wBAAgB,aAAa,IAAI,MAAM,CAAC,SAAS,CAYhD;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,CAEtD;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,UAAU,CAyB9D"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2023 - Restate Software, Inc., Restate GmbH
|
|
4
|
+
*
|
|
5
|
+
* This file is part of the Restate SDK for Node.js/TypeScript,
|
|
6
|
+
* which is released under the MIT license.
|
|
7
|
+
*
|
|
8
|
+
* You can find a copy of the license in file LICENSE in the root
|
|
9
|
+
* directory of this repository or package, or at
|
|
10
|
+
* https://github.com/restatedev/sdk-typescript/blob/main/LICENSE
|
|
11
|
+
*/
|
|
12
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
13
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
14
|
+
};
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.encodeMessages = exports.encodeMessage = exports.streamEncoder = void 0;
|
|
17
|
+
const stream_1 = __importDefault(require("stream"));
|
|
18
|
+
const protocol_1 = require("../types/protocol");
|
|
19
|
+
const types_1 = require("../types/types");
|
|
20
|
+
function streamEncoder() {
|
|
21
|
+
return new stream_1.default.Transform({
|
|
22
|
+
writableObjectMode: true,
|
|
23
|
+
objectMode: true,
|
|
24
|
+
transform(msg, _encoding, cb) {
|
|
25
|
+
// We do not catch errors here because we want them to be handled at the Connection level,
|
|
26
|
+
// so we can close the state machine.
|
|
27
|
+
const result = encodeMessage(msg);
|
|
28
|
+
cb(null, result);
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
exports.streamEncoder = streamEncoder;
|
|
33
|
+
function encodeMessage(msg) {
|
|
34
|
+
return encodeMessages([msg]);
|
|
35
|
+
}
|
|
36
|
+
exports.encodeMessage = encodeMessage;
|
|
37
|
+
function encodeMessages(messages) {
|
|
38
|
+
const chunks = [];
|
|
39
|
+
for (const message of messages) {
|
|
40
|
+
const pbType = protocol_1.PROTOBUF_MESSAGE_BY_TYPE.get(BigInt(message.messageType));
|
|
41
|
+
if (pbType === undefined) {
|
|
42
|
+
throw new Error("Trying to encode a message with unknown message type " +
|
|
43
|
+
message.messageType);
|
|
44
|
+
}
|
|
45
|
+
const bodyBuf = pbType.encode(message.message).finish();
|
|
46
|
+
const header = new types_1.Header(BigInt(message.messageType), bodyBuf.length, message.completed, message.protocolVersion, // only set for incoming start message
|
|
47
|
+
message.requiresAck);
|
|
48
|
+
const encoded = header.toU64be();
|
|
49
|
+
const headerBuf = Buffer.alloc(8);
|
|
50
|
+
headerBuf.writeBigUInt64BE(encoded);
|
|
51
|
+
chunks.push(headerBuf);
|
|
52
|
+
chunks.push(bodyBuf);
|
|
53
|
+
}
|
|
54
|
+
return Buffer.concat(chunks);
|
|
55
|
+
}
|
|
56
|
+
exports.encodeMessages = encodeMessages;
|
|
57
|
+
//# sourceMappingURL=encoder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encoder.js","sourceRoot":"","sources":["../../src/io/encoder.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;;;;AAEH,oDAA4B;AAC5B,gDAA6D;AAC7D,0CAAiD;AAEjD,SAAgB,aAAa;IAC3B,OAAO,IAAI,gBAAM,CAAC,SAAS,CAAC;QAC1B,kBAAkB,EAAE,IAAI;QACxB,UAAU,EAAE,IAAI;QAEhB,SAAS,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE;YAC1B,0FAA0F;YAC1F,qCAAqC;YACrC,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;YAClC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACnB,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAZD,sCAYC;AAED,SAAgB,aAAa,CAAC,GAAY;IACxC,OAAO,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/B,CAAC;AAFD,sCAEC;AAED,SAAgB,cAAc,CAAC,QAAmB;IAChD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;QAC9B,MAAM,MAAM,GAAG,mCAAwB,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;QACzE,IAAI,MAAM,KAAK,SAAS,EAAE;YACxB,MAAM,IAAI,KAAK,CACb,uDAAuD;gBACrD,OAAO,CAAC,WAAW,CACtB,CAAC;SACH;QACD,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;QACxD,MAAM,MAAM,GAAG,IAAI,cAAM,CACvB,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAC3B,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,eAAe,EAAE,sCAAsC;QAC/D,OAAO,CAAC,WAAW,CACpB,CAAC;QACF,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;QACjC,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAClC,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACtB;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC;AAzBD,wCAyBC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import * as p from "./types/protocol";
|
|
2
|
+
import { Failure } from "./generated/proto/protocol";
|
|
3
|
+
import { CompletionMessage, OutputStreamEntryMessage, SuspensionMessage } from "./types/protocol";
|
|
4
|
+
import { Invocation } from "./invocation";
|
|
5
|
+
export declare class Journal<I, O> {
|
|
6
|
+
readonly invocation: Invocation<I, O>;
|
|
7
|
+
private state;
|
|
8
|
+
private userCodeJournalIndex;
|
|
9
|
+
private pendingJournalEntries;
|
|
10
|
+
constructor(invocation: Invocation<I, O>);
|
|
11
|
+
handleInputMessage(m: p.PollInputStreamEntryMessage): void;
|
|
12
|
+
handleUserSideMessage(messageType: bigint, message: p.ProtocolMessage | Uint8Array): Promise<any | undefined>;
|
|
13
|
+
isUnResolved(index: number): boolean;
|
|
14
|
+
handleRuntimeCompletionMessage(m: CompletionMessage): void;
|
|
15
|
+
private handleReplay;
|
|
16
|
+
resolveResult<T>(journalIndex: number, journalEntry: JournalEntry, value: T | undefined, failure?: Failure | undefined, failureWouldBeTerminal?: boolean): void;
|
|
17
|
+
handleClosingMessage(messageType: bigint, message: OutputStreamEntryMessage | SuspensionMessage): void;
|
|
18
|
+
private checkJournalMatch;
|
|
19
|
+
getCompletableIndices(): number[];
|
|
20
|
+
private transitionState;
|
|
21
|
+
private incrementUserCodeIndex;
|
|
22
|
+
isClosed(): boolean;
|
|
23
|
+
isProcessing(): boolean;
|
|
24
|
+
getUserCodeJournalIndex(): number;
|
|
25
|
+
close(): void;
|
|
26
|
+
outputMsgWasReplayed(): boolean | undefined;
|
|
27
|
+
nextEntryWillBeReplayed(): boolean;
|
|
28
|
+
}
|
|
29
|
+
export declare class JournalEntry {
|
|
30
|
+
readonly messageType: bigint;
|
|
31
|
+
readonly message: p.ProtocolMessage | Uint8Array;
|
|
32
|
+
promise: Promise<any>;
|
|
33
|
+
resolve: (value: any) => void;
|
|
34
|
+
reject: (reason?: any) => void;
|
|
35
|
+
constructor(messageType: bigint, message: p.ProtocolMessage | Uint8Array);
|
|
36
|
+
}
|
|
37
|
+
export declare enum NewExecutionState {
|
|
38
|
+
REPLAYING = "REPLAYING",
|
|
39
|
+
PROCESSING = "PROCESSING",
|
|
40
|
+
CLOSED = "CLOSED"
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=journal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"journal.d.ts","sourceRoot":"","sources":["../src/journal.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,CAAC,MAAM,kBAAkB,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAML,iBAAiB,EAMjB,wBAAwB,EAQxB,iBAAiB,EAClB,MAAM,kBAAkB,CAAC;AAI1B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,qBAAa,OAAO,CAAC,CAAC,EAAE,CAAC;IASX,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC;IARjD,OAAO,CAAC,KAAK,CAA+B;IAE5C,OAAO,CAAC,oBAAoB,CAAK;IAIjC,OAAO,CAAC,qBAAqB,CAAmC;gBAE3C,UAAU,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC;IAejD,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,2BAA2B;IAa5C,qBAAqB,CAC1B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,CAAC,CAAC,eAAe,GAAG,UAAU,GAEtC,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC;IAgFpB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAKpC,8BAA8B,CAAC,CAAC,EAAE,iBAAiB;IAkC1D,OAAO,CAAC,YAAY;IAuHpB,aAAa,CAAC,CAAC,EACb,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,CAAC,GAAG,SAAS,EACpB,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,EAC7B,sBAAsB,CAAC,EAAE,OAAO;IAclC,oBAAoB,CAClB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,wBAAwB,GAAG,iBAAiB;IAiBvD,OAAO,CAAC,iBAAiB;IAmBlB,qBAAqB,IAAI,MAAM,EAAE;IAOxC,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,sBAAsB;IAUvB,QAAQ,IAAI,OAAO;IAInB,YAAY,IAAI,OAAO;IAIvB,uBAAuB,IAAI,MAAM;IAIjC,KAAK;IAIL,oBAAoB;IAgB3B,uBAAuB;CAGxB;AAED,qBAAa,YAAY;IASrB,QAAQ,CAAC,WAAW,EAAE,MAAM;IAC5B,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,eAAe,GAAG,UAAU;IAR3C,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IAEtB,OAAO,EAAG,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IAE/B,MAAM,EAAG,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;gBAG5B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,CAAC,CAAC,eAAe,GAAG,UAAU;CAQnD;AAOD,oBAAY,iBAAiB;IAC3B,SAAS,cAAc;IACvB,UAAU,eAAe;IACzB,MAAM,WAAW;CAClB"}
|