@restatedev/restate-sdk 0.7.3-worker → 0.8.1
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 +1 -1
- package/README.md +29 -51
- package/dist/clients/workflow_client.d.ts +77 -0
- package/dist/clients/workflow_client.d.ts.map +1 -0
- package/dist/clients/workflow_client.js +172 -0
- package/dist/clients/workflow_client.js.map +1 -0
- package/dist/connection/buffered_connection.js +44 -0
- package/dist/connection/buffered_connection.js.map +1 -0
- package/dist/connection/connection.js +13 -0
- package/dist/connection/connection.js.map +1 -0
- package/dist/connection/embedded_connection.js +59 -0
- package/dist/connection/embedded_connection.js.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.js +58 -0
- package/dist/connection/lambda_connection.js.map +1 -0
- package/dist/{restate_context.d.ts → context.d.ts} +239 -170
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +113 -0
- package/dist/context.js.map +1 -0
- package/dist/{restate_context_impl.d.ts → context_impl.d.ts} +26 -30
- package/dist/context_impl.d.ts.map +1 -0
- package/dist/context_impl.js +439 -0
- package/dist/context_impl.js.map +1 -0
- package/dist/embedded/api.d.ts +2 -2
- package/dist/embedded/api.d.ts.map +1 -1
- package/dist/embedded/api.js +35 -0
- package/dist/embedded/api.js.map +1 -0
- package/dist/embedded/handler.d.ts +2 -2
- package/dist/embedded/handler.d.ts.map +1 -1
- package/dist/embedded/handler.js +26 -0
- package/dist/embedded/handler.js.map +1 -0
- package/dist/embedded/http2_remote.js +91 -0
- package/dist/embedded/http2_remote.js.map +1 -0
- package/dist/embedded/invocation.d.ts.map +1 -1
- package/dist/embedded/invocation.js +94 -0
- package/dist/embedded/invocation.js.map +1 -0
- package/dist/endpoint/endpoint_impl.d.ts +35 -0
- package/dist/endpoint/endpoint_impl.d.ts.map +1 -0
- package/dist/endpoint/endpoint_impl.js +405 -0
- package/dist/endpoint/endpoint_impl.js.map +1 -0
- package/dist/endpoint/http2_handler.d.ts +11 -0
- package/dist/endpoint/http2_handler.d.ts.map +1 -0
- package/dist/endpoint/http2_handler.js +119 -0
- package/dist/endpoint/http2_handler.js.map +1 -0
- package/dist/endpoint/lambda_handler.d.ts +15 -0
- package/dist/endpoint/lambda_handler.d.ts.map +1 -0
- package/dist/endpoint/lambda_handler.js +144 -0
- package/dist/endpoint/lambda_handler.js.map +1 -0
- package/dist/endpoint.d.ts +161 -0
- package/dist/endpoint.d.ts.map +1 -0
- package/dist/endpoint.js +22 -0
- package/dist/endpoint.js.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.js +215 -0
- package/dist/generated/dev/restate/ext.js.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.js +107 -0
- package/dist/generated/google/protobuf/empty.js.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.js +364 -0
- package/dist/generated/proto/discovery.js.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 +13 -0
- package/dist/generated/proto/javascript.d.ts.map +1 -1
- package/dist/generated/proto/javascript.js +416 -0
- package/dist/generated/proto/javascript.js.map +1 -0
- package/dist/generated/proto/protocol.d.ts +43 -0
- package/dist/generated/proto/protocol.d.ts.map +1 -1
- package/dist/generated/proto/protocol.js +2641 -0
- package/dist/generated/proto/protocol.js.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.js +321 -0
- package/dist/generated/proto/test.js.map +1 -0
- package/dist/invocation.d.ts +4 -1
- package/dist/invocation.d.ts.map +1 -1
- package/dist/invocation.js +157 -0
- package/dist/invocation.js.map +1 -0
- package/dist/io/decoder.d.ts +1 -0
- package/dist/io/decoder.d.ts.map +1 -1
- package/dist/io/decoder.js +140 -0
- package/dist/io/decoder.js.map +1 -0
- package/dist/io/encoder.d.ts +1 -2
- package/dist/io/encoder.d.ts.map +1 -1
- package/dist/io/encoder.js +68 -0
- package/dist/io/encoder.js.map +1 -0
- package/dist/journal.d.ts +13 -4
- package/dist/journal.d.ts.map +1 -1
- package/dist/journal.js +405 -0
- package/dist/journal.js.map +1 -0
- package/dist/local_state_store.d.ts +5 -3
- package/dist/local_state_store.d.ts.map +1 -1
- package/dist/local_state_store.js +82 -0
- package/dist/local_state_store.js.map +1 -0
- package/dist/logger.d.ts +19 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +90 -0
- package/dist/logger.js.map +1 -0
- package/dist/promise_combinator_tracker.d.ts +29 -0
- package/dist/promise_combinator_tracker.d.ts.map +1 -0
- package/dist/promise_combinator_tracker.js +128 -0
- package/dist/promise_combinator_tracker.js.map +1 -0
- package/dist/public_api.d.ts +5 -5
- package/dist/public_api.d.ts.map +1 -1
- package/dist/public_api.js +60 -0
- package/dist/public_api.js.map +1 -0
- package/dist/state_machine.d.ts +19 -12
- package/dist/state_machine.d.ts.map +1 -1
- package/dist/state_machine.js +437 -0
- package/dist/state_machine.js.map +1 -0
- package/dist/types/errors.d.ts +12 -3
- package/dist/types/errors.d.ts.map +1 -1
- package/dist/types/errors.js +273 -0
- package/dist/types/errors.js.map +1 -0
- package/dist/types/grpc.d.ts +6 -4
- package/dist/types/grpc.d.ts.map +1 -1
- package/dist/types/grpc.js +81 -0
- package/dist/types/grpc.js.map +1 -0
- package/dist/types/protocol.d.ts +9 -5
- package/dist/types/protocol.d.ts.map +1 -1
- package/dist/types/protocol.js +147 -0
- package/dist/types/protocol.js.map +1 -0
- package/dist/types/router.d.ts +8 -8
- package/dist/types/router.d.ts.map +1 -1
- package/dist/types/router.js +36 -0
- package/dist/types/router.js.map +1 -0
- package/dist/types/types.d.ts +1 -0
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/types.js +138 -0
- package/dist/types/types.js.map +1 -0
- package/dist/utils/{assumpsions.d.ts → assumptions.d.ts} +1 -1
- package/dist/utils/{assumpsions.d.ts.map → assumptions.d.ts.map} +1 -1
- package/dist/utils/assumptions.js +101 -0
- package/dist/utils/assumptions.js.map +1 -0
- package/dist/utils/message_logger.d.ts +28 -0
- package/dist/utils/message_logger.d.ts.map +1 -0
- package/dist/utils/message_logger.js +88 -0
- package/dist/utils/message_logger.js.map +1 -0
- package/dist/utils/promises.d.ts +15 -0
- package/dist/utils/promises.d.ts.map +1 -0
- package/dist/utils/promises.js +67 -0
- package/dist/utils/promises.js.map +1 -0
- package/dist/utils/public_utils.js +49 -0
- package/dist/utils/public_utils.js.map +1 -0
- package/dist/utils/rand.d.ts +1 -1
- package/dist/utils/rand.d.ts.map +1 -1
- package/dist/utils/rand.js +114 -0
- package/dist/utils/rand.js.map +1 -0
- package/dist/utils/utils.d.ts +1 -10
- package/dist/utils/utils.d.ts.map +1 -1
- package/dist/utils/utils.js +122 -0
- package/dist/utils/utils.js.map +1 -0
- package/dist/workflows/workflow.d.ts +101 -0
- package/dist/workflows/workflow.d.ts.map +1 -0
- package/dist/workflows/workflow.js +80 -0
- package/dist/workflows/workflow.js.map +1 -0
- package/dist/workflows/workflow_state_service.d.ts +35 -0
- package/dist/workflows/workflow_state_service.d.ts.map +1 -0
- package/dist/workflows/workflow_state_service.js +201 -0
- package/dist/workflows/workflow_state_service.js.map +1 -0
- package/dist/workflows/workflow_wrapper_service.d.ts +10 -0
- package/dist/workflows/workflow_wrapper_service.d.ts.map +1 -0
- package/dist/workflows/workflow_wrapper_service.js +264 -0
- package/dist/workflows/workflow_wrapper_service.js.map +1 -0
- package/package.json +38 -39
- package/src/clients/workflow_client.ts +290 -0
- package/src/connection/buffered_connection.ts +47 -0
- package/src/connection/connection.ts +34 -0
- package/src/connection/embedded_connection.ts +62 -0
- package/src/connection/http_connection.ts +228 -0
- package/src/connection/lambda_connection.ts +69 -0
- package/src/context.ts +633 -0
- package/src/context_impl.ts +721 -0
- package/src/embedded/api.ts +57 -0
- package/src/embedded/handler.ts +36 -0
- package/src/embedded/http2_remote.ts +103 -0
- package/src/embedded/invocation.ts +126 -0
- package/src/endpoint/endpoint_impl.ts +623 -0
- package/src/endpoint/http2_handler.ts +151 -0
- package/src/endpoint/lambda_handler.ts +181 -0
- package/src/endpoint.ts +187 -0
- package/src/generated/dev/restate/events.ts +430 -0
- package/src/generated/dev/restate/ext.ts +238 -0
- package/src/generated/google/protobuf/descriptor.ts +7889 -0
- package/src/generated/google/protobuf/empty.ts +150 -0
- package/src/generated/google/protobuf/struct.ts +878 -0
- package/src/generated/proto/discovery.ts +423 -0
- package/src/generated/proto/dynrpc.ts +768 -0
- package/src/generated/proto/javascript.ts +488 -0
- package/src/generated/proto/protocol.ts +3091 -0
- package/src/generated/proto/services.ts +1834 -0
- package/src/generated/proto/test.ts +387 -0
- package/src/invocation.ts +212 -0
- package/src/io/decoder.ts +171 -0
- package/src/io/encoder.ts +72 -0
- package/src/journal.ts +537 -0
- package/src/local_state_store.ts +94 -0
- package/src/logger.ts +121 -0
- package/src/promise_combinator_tracker.ts +191 -0
- package/src/public_api.ts +53 -0
- package/src/state_machine.ts +635 -0
- package/src/types/errors.ts +297 -0
- package/src/types/grpc.ts +97 -0
- package/src/types/protocol.ts +201 -0
- package/src/types/router.ts +118 -0
- package/src/types/types.ts +160 -0
- package/src/utils/assumptions.ts +131 -0
- package/src/utils/message_logger.ts +112 -0
- package/src/utils/promises.ts +118 -0
- package/src/utils/public_utils.ts +91 -0
- package/src/utils/rand.ts +142 -0
- package/src/utils/utils.ts +178 -0
- package/src/workflows/workflow.ts +178 -0
- package/src/workflows/workflow_state_service.ts +299 -0
- package/src/workflows/workflow_wrapper_service.ts +314 -0
- package/dist/cloudflare_bundle.js +0 -27387
- package/dist/restate_context.d.ts.map +0 -1
- package/dist/restate_context_impl.d.ts.map +0 -1
- package/dist/server/base_restate_server.d.ts +0 -32
- package/dist/server/base_restate_server.d.ts.map +0 -1
- package/dist/server/restate_lambda_handler.d.ts +0 -104
- package/dist/server/restate_lambda_handler.d.ts.map +0 -1
- package/dist/server/restate_server.d.ts +0 -97
- package/dist/server/restate_server.d.ts.map +0 -1
- package/dist/utils/logger.d.ts +0 -60
- package/dist/utils/logger.d.ts.map +0 -1
package/dist/io/decoder.d.ts.map
CHANGED
|
@@ -1 +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;
|
|
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;AAUjD,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAgF5C,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,140 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2023-2024 - 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 = exports.SUPPORTED_PROTOCOL_VERSION = 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
|
+
exports.SUPPORTED_PROTOCOL_VERSION = 1;
|
|
35
|
+
function initalDecoderState(buf) {
|
|
36
|
+
return {
|
|
37
|
+
state: WAITING_FOR_HEADER,
|
|
38
|
+
header: undefined,
|
|
39
|
+
buf,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
function appendBufferToDecoder(state, chunk) {
|
|
43
|
+
state.buf = Buffer.concat([state.buf, chunk]);
|
|
44
|
+
}
|
|
45
|
+
function decodeMessages(decoderState, out) {
|
|
46
|
+
let buf = decoderState.buf;
|
|
47
|
+
while (buf.length > 0 || decoderState.state === WAITING_FOR_BODY) {
|
|
48
|
+
switch (decoderState.state) {
|
|
49
|
+
case WAITING_FOR_HEADER: {
|
|
50
|
+
(0, assert_1.default)(decoderState.header === undefined);
|
|
51
|
+
if (buf.length < 8) {
|
|
52
|
+
decoderState.buf = buf;
|
|
53
|
+
return decoderState;
|
|
54
|
+
}
|
|
55
|
+
const h = buf.readBigUInt64BE();
|
|
56
|
+
buf = buf.subarray(8);
|
|
57
|
+
const materializedHeader = types_1.Header.fromU64be(h);
|
|
58
|
+
decoderState.header = materializedHeader;
|
|
59
|
+
decoderState.state = WAITING_FOR_BODY;
|
|
60
|
+
// Check protocol version
|
|
61
|
+
if (materializedHeader.protocolVersion !== undefined &&
|
|
62
|
+
materializedHeader.protocolVersion !== exports.SUPPORTED_PROTOCOL_VERSION) {
|
|
63
|
+
throw new Error(`Unsupported protocol version ${materializedHeader.protocolVersion}, only version ${exports.SUPPORTED_PROTOCOL_VERSION} is supported`);
|
|
64
|
+
}
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
67
|
+
case WAITING_FOR_BODY: {
|
|
68
|
+
const header = decoderState.header;
|
|
69
|
+
(0, assert_1.default)(header !== undefined);
|
|
70
|
+
if (buf.length < header.frameLength) {
|
|
71
|
+
decoderState.buf = buf;
|
|
72
|
+
return decoderState;
|
|
73
|
+
}
|
|
74
|
+
const frame = buf.subarray(0, header.frameLength);
|
|
75
|
+
buf = buf.subarray(header.frameLength);
|
|
76
|
+
decoderState.state = WAITING_FOR_HEADER;
|
|
77
|
+
decoderState.header = undefined;
|
|
78
|
+
const pbType = protocol_1.PROTOBUF_MESSAGE_BY_TYPE.get(header.messageType);
|
|
79
|
+
if (pbType === undefined) {
|
|
80
|
+
throw new Error("Got unknown message type " + header.messageType);
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
const message = pbType.decode(frame);
|
|
84
|
+
out.push(new types_1.Message(header.messageType, message, header.completedFlag, header.protocolVersion, header.requiresAckFlag));
|
|
85
|
+
}
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
decoderState.buf = buf;
|
|
91
|
+
return decoderState;
|
|
92
|
+
}
|
|
93
|
+
function streamDecoder() {
|
|
94
|
+
let decoderState = initalDecoderState(Buffer.alloc(0));
|
|
95
|
+
return new stream_1.default.Transform({
|
|
96
|
+
writableObjectMode: true,
|
|
97
|
+
objectMode: true,
|
|
98
|
+
transform(chunk, _encoding, cb) {
|
|
99
|
+
try {
|
|
100
|
+
appendBufferToDecoder(decoderState, chunk);
|
|
101
|
+
decoderState = decodeMessages(decoderState, this);
|
|
102
|
+
cb();
|
|
103
|
+
}
|
|
104
|
+
catch (e) {
|
|
105
|
+
cb((0, errors_1.ensureError)(e), null);
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
exports.streamDecoder = streamDecoder;
|
|
111
|
+
// Decodes messages from Lambda requests to an array of headers + protocol messages
|
|
112
|
+
const base64regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;
|
|
113
|
+
function decodeLambdaBody(msgBase64) {
|
|
114
|
+
if (!base64regex.test(msgBase64)) {
|
|
115
|
+
throw new Error("Cannot parse the lambda request body, body was not valid base64 encoded: " +
|
|
116
|
+
msgBase64);
|
|
117
|
+
}
|
|
118
|
+
const buffer = Buffer.from(msgBase64, "base64");
|
|
119
|
+
return decodeMessagesBuffer(buffer);
|
|
120
|
+
}
|
|
121
|
+
exports.decodeLambdaBody = decodeLambdaBody;
|
|
122
|
+
function decodeMessagesBuffer(buffer) {
|
|
123
|
+
const decodedEntries = [];
|
|
124
|
+
let finalState;
|
|
125
|
+
try {
|
|
126
|
+
finalState = decodeMessages(initalDecoderState(buffer), decodedEntries);
|
|
127
|
+
}
|
|
128
|
+
catch (e) {
|
|
129
|
+
const err = (0, errors_1.ensureError)(e);
|
|
130
|
+
throw new Error("Cannot parse the lambda request body, message was not a valid sequence of Restate messages: " +
|
|
131
|
+
err.message, { cause: err });
|
|
132
|
+
}
|
|
133
|
+
if (finalState.buf.length > 0) {
|
|
134
|
+
throw new Error("Cannot parse the request body: Trailing data (incomplete message) in request body: " +
|
|
135
|
+
finalState.buf.toString("hex"));
|
|
136
|
+
}
|
|
137
|
+
return decodedEntries;
|
|
138
|
+
}
|
|
139
|
+
exports.decodeMessagesBuffer = decodeMessagesBuffer;
|
|
140
|
+
//# 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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"}
|
package/dist/io/encoder.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
/// <reference types="node" />
|
|
3
2
|
import stream from "stream";
|
|
4
3
|
import { Message } from "../types/types";
|
|
5
4
|
export declare function streamEncoder(): stream.Transform;
|
|
6
5
|
export declare function encodeMessage(msg: Message): Uint8Array;
|
|
7
|
-
export declare function encodeMessages(messages: Message[]):
|
|
6
|
+
export declare function encodeMessages(messages: Message[]): Uint8Array;
|
|
8
7
|
//# sourceMappingURL=encoder.d.ts.map
|
package/dist/io/encoder.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encoder.d.ts","sourceRoot":"","sources":["../../src/io/encoder.ts"],"names":[],"mappings":"
|
|
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;AAGjD,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,CAqC9D"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2023-2024 - 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
|
+
const minimal_1 = __importDefault(require("protobufjs/minimal"));
|
|
21
|
+
function streamEncoder() {
|
|
22
|
+
return new stream_1.default.Transform({
|
|
23
|
+
writableObjectMode: true,
|
|
24
|
+
objectMode: true,
|
|
25
|
+
transform(msg, _encoding, cb) {
|
|
26
|
+
// We do not catch errors here because we want them to be handled at the Connection level,
|
|
27
|
+
// so we can close the state machine.
|
|
28
|
+
const result = encodeMessage(msg);
|
|
29
|
+
cb(null, result);
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
exports.streamEncoder = streamEncoder;
|
|
34
|
+
function encodeMessage(msg) {
|
|
35
|
+
return encodeMessages([msg]);
|
|
36
|
+
}
|
|
37
|
+
exports.encodeMessage = encodeMessage;
|
|
38
|
+
function encodeMessages(messages) {
|
|
39
|
+
const offsets = [];
|
|
40
|
+
const headers = [];
|
|
41
|
+
let off = 0;
|
|
42
|
+
const writer = minimal_1.default.Writer.create();
|
|
43
|
+
for (const message of messages) {
|
|
44
|
+
const pbType = protocol_1.PROTOBUF_MESSAGE_BY_TYPE.get(BigInt(message.messageType));
|
|
45
|
+
if (pbType === undefined) {
|
|
46
|
+
throw new Error("Trying to encode a message with unknown message type " +
|
|
47
|
+
message.messageType);
|
|
48
|
+
}
|
|
49
|
+
offsets.push(off);
|
|
50
|
+
writer.fixed64(0);
|
|
51
|
+
pbType.encode(message.message, writer);
|
|
52
|
+
const messageLen = writer.len - 8 - off;
|
|
53
|
+
off = writer.len;
|
|
54
|
+
const header = new types_1.Header(BigInt(message.messageType), messageLen, message.completed, message.protocolVersion, // only set for incoming start message
|
|
55
|
+
message.requiresAck);
|
|
56
|
+
const header64 = header.toU64be();
|
|
57
|
+
headers.push(header64);
|
|
58
|
+
}
|
|
59
|
+
const buffer = writer.finish();
|
|
60
|
+
for (let i = 0; i < offsets.length; i++) {
|
|
61
|
+
const offset = offsets[i];
|
|
62
|
+
const header = headers[i];
|
|
63
|
+
buffer.writeBigUInt64BE(header, offset);
|
|
64
|
+
}
|
|
65
|
+
return buffer;
|
|
66
|
+
}
|
|
67
|
+
exports.encodeMessages = encodeMessages;
|
|
68
|
+
//# 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;AACjD,iEAAqC;AAErC,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,OAAO,GAAG,EAAE,CAAC;IACnB,MAAM,OAAO,GAAG,EAAE,CAAC;IACnB,IAAI,GAAG,GAAG,CAAC,CAAC;IAEZ,MAAM,MAAM,GAAG,iBAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IACnC,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,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAClB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACvC,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QACxC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QAEjB,MAAM,MAAM,GAAG,IAAI,cAAM,CACvB,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAC3B,UAAU,EACV,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,eAAe,EAAE,sCAAsC;QAC/D,OAAO,CAAC,WAAW,CACpB,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;QAClC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACxB;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAY,CAAC;IACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACvC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACzC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AArCD,wCAqCC"}
|
package/dist/journal.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import * as p from "./types/protocol";
|
|
2
2
|
import { Failure } from "./generated/proto/protocol";
|
|
3
3
|
import { CompletionMessage, EntryAckMessage, OutputStreamEntryMessage, SuspensionMessage } from "./types/protocol";
|
|
4
|
+
import { Message } from "./types/types";
|
|
4
5
|
import { Invocation } from "./invocation";
|
|
6
|
+
import { CompletablePromise } from "./utils/promises";
|
|
5
7
|
export declare class Journal<I, O> {
|
|
6
8
|
readonly invocation: Invocation<I, O>;
|
|
7
9
|
private state;
|
|
@@ -19,9 +21,18 @@ export declare class Journal<I, O> {
|
|
|
19
21
|
private checkJournalMatch;
|
|
20
22
|
getCompletableIndices(): number[];
|
|
21
23
|
private transitionState;
|
|
22
|
-
|
|
24
|
+
incrementUserCodeIndex(): void;
|
|
25
|
+
/**
|
|
26
|
+
* Read the next replay entry
|
|
27
|
+
*/
|
|
28
|
+
readNextReplayEntry(): Message | undefined;
|
|
29
|
+
/**
|
|
30
|
+
* Append journal entry. This won't increment the journal index.
|
|
31
|
+
*/
|
|
32
|
+
appendJournalEntry(messageType: bigint, message: p.ProtocolMessage | Uint8Array): Promise<unknown>;
|
|
23
33
|
isClosed(): boolean;
|
|
24
34
|
isProcessing(): boolean;
|
|
35
|
+
isReplaying(): boolean;
|
|
25
36
|
getUserCodeJournalIndex(): number;
|
|
26
37
|
close(): void;
|
|
27
38
|
outputMsgWasReplayed(): boolean | undefined;
|
|
@@ -30,9 +41,7 @@ export declare class Journal<I, O> {
|
|
|
30
41
|
export declare class JournalEntry {
|
|
31
42
|
readonly messageType: bigint;
|
|
32
43
|
readonly message: p.ProtocolMessage | Uint8Array;
|
|
33
|
-
|
|
34
|
-
resolve: (value: any) => void;
|
|
35
|
-
reject: (reason?: any) => void;
|
|
44
|
+
completablePromise: CompletablePromise<unknown>;
|
|
36
45
|
constructor(messageType: bigint, message: p.ProtocolMessage | Uint8Array);
|
|
37
46
|
}
|
|
38
47
|
export declare enum NewExecutionState {
|
package/dist/journal.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"journal.d.ts","sourceRoot":"","sources":["../src/journal.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,CAAC,MAAM,kBAAkB,CAAC;AACtC,OAAO,
|
|
1
|
+
{"version":3,"file":"journal.d.ts","sourceRoot":"","sources":["../src/journal.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,CAAC,MAAM,kBAAkB,CAAC;AACtC,OAAO,EACL,OAAO,EAER,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAQL,iBAAiB,EACjB,eAAe,EAQf,wBAAwB,EAQxB,iBAAiB,EAClB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAItD,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;IAoCnD,qBAAqB,CAAC,CAAC,EAAE,eAAe;IAa/C,OAAO,CAAC,YAAY;IAyIpB,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;IAmBvD,OAAO,CAAC,iBAAiB;IAmBlB,qBAAqB,IAAI,MAAM,EAAE;IAOxC,OAAO,CAAC,eAAe;IAcvB,sBAAsB;IAUtB;;OAEG;IACI,mBAAmB;IAK1B;;OAEG;IACI,kBAAkB,CACvB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,CAAC,CAAC,eAAe,GAAG,UAAU,GACtC,OAAO,CAAC,OAAO,CAAC;IAMZ,QAAQ,IAAI,OAAO;IAInB,YAAY,IAAI,OAAO;IAIvB,WAAW,IAAI,OAAO;IAItB,uBAAuB,IAAI,MAAM;IAIjC,KAAK;IAIL,oBAAoB;IAgB3B,uBAAuB;CAGxB;AAED,qBAAa,YAAY;IAIrB,QAAQ,CAAC,WAAW,EAAE,MAAM;IAC5B,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,eAAe,GAAG,UAAU;IAJ3C,kBAAkB,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC;gBAG5C,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,CAAC,CAAC,eAAe,GAAG,UAAU;CAKnD;AAOD,oBAAY,iBAAiB;IAC3B,SAAS,cAAc;IACvB,UAAU,eAAe;IACzB,MAAM,WAAW;CAClB"}
|