@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,68 @@
|
|
|
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.HostedGrpcServiceMethod = exports.GrpcService = exports.GrpcServiceMethod = void 0;
|
|
14
|
+
const restate_context_1 = require("../restate_context");
|
|
15
|
+
class GrpcServiceMethod {
|
|
16
|
+
name;
|
|
17
|
+
localName;
|
|
18
|
+
localFn;
|
|
19
|
+
inputDecoder;
|
|
20
|
+
outputEncoder;
|
|
21
|
+
constructor(name, // the gRPC name as defined in the .proto file
|
|
22
|
+
localName, // the method name as defined in the class.
|
|
23
|
+
localFn, // the actual function
|
|
24
|
+
inputDecoder, // the protobuf decoder
|
|
25
|
+
outputEncoder // protobuf encoder
|
|
26
|
+
) {
|
|
27
|
+
this.name = name;
|
|
28
|
+
this.localName = localName;
|
|
29
|
+
this.localFn = localFn;
|
|
30
|
+
this.inputDecoder = inputDecoder;
|
|
31
|
+
this.outputEncoder = outputEncoder;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.GrpcServiceMethod = GrpcServiceMethod;
|
|
35
|
+
class GrpcService {
|
|
36
|
+
name;
|
|
37
|
+
packge;
|
|
38
|
+
impl;
|
|
39
|
+
methods;
|
|
40
|
+
constructor(name, packge, impl, methods) {
|
|
41
|
+
this.name = name;
|
|
42
|
+
this.packge = packge;
|
|
43
|
+
this.impl = impl;
|
|
44
|
+
this.methods = methods;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
exports.GrpcService = GrpcService;
|
|
48
|
+
class HostedGrpcServiceMethod {
|
|
49
|
+
instance;
|
|
50
|
+
packge;
|
|
51
|
+
service;
|
|
52
|
+
method;
|
|
53
|
+
constructor(instance, packge, service, method) {
|
|
54
|
+
this.instance = instance;
|
|
55
|
+
this.packge = packge;
|
|
56
|
+
this.service = service;
|
|
57
|
+
this.method = method;
|
|
58
|
+
}
|
|
59
|
+
// The end of an invoke is either a response (Uint8Array) or a SuspensionMessage
|
|
60
|
+
async invoke(context, inBytes) {
|
|
61
|
+
const instanceWithContext = (0, restate_context_1.setContext)(this.instance, context);
|
|
62
|
+
const input = this.method.inputDecoder(inBytes);
|
|
63
|
+
const result = await this.method.localFn(instanceWithContext, input);
|
|
64
|
+
return this.method.outputEncoder(result);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
exports.HostedGrpcServiceMethod = HostedGrpcServiceMethod;
|
|
68
|
+
//# sourceMappingURL=grpc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grpc.js","sourceRoot":"","sources":["../../src/types/grpc.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AAEH,wDAAgE;AAGhE,MAAa,iBAAiB;IAEjB;IACA;IACA;IACA;IACA;IALX,YACW,IAAY,EAAE,8CAA8C;IAC5D,SAAiB,EAAE,2CAA2C;IAC9D,OAAoD,EAAE,sBAAsB;IAC5E,YAAoC,EAAE,uBAAuB;IAC7D,aAAwC,CAAC,mBAAmB;;QAJ5D,SAAI,GAAJ,IAAI,CAAQ;QACZ,cAAS,GAAT,SAAS,CAAQ;QACjB,YAAO,GAAP,OAAO,CAA6C;QACpD,iBAAY,GAAZ,YAAY,CAAwB;QACpC,kBAAa,GAAb,aAAa,CAA2B;IAChD,CAAC;CACL;AARD,8CAQC;AAED,MAAa,WAAW;IAEX;IACA;IACA;IACA;IAJX,YACW,IAAY,EACZ,MAAc,EACd,IAAY,EACZ,OAAmD;QAHnD,SAAI,GAAJ,IAAI,CAAQ;QACZ,WAAM,GAAN,MAAM,CAAQ;QACd,SAAI,GAAJ,IAAI,CAAQ;QACZ,YAAO,GAAP,OAAO,CAA4C;IAC3D,CAAC;CACL;AAPD,kCAOC;AAED,MAAa,uBAAuB;IAEvB;IACA;IACA;IACA;IAJX,YACW,QAAiB,EACjB,MAAc,EACd,OAAe,EACf,MAA+B;QAH/B,aAAQ,GAAR,QAAQ,CAAS;QACjB,WAAM,GAAN,MAAM,CAAQ;QACd,YAAO,GAAP,OAAO,CAAQ;QACf,WAAM,GAAN,MAAM,CAAyB;IACvC,CAAC;IAEJ,gFAAgF;IAChF,KAAK,CAAC,MAAM,CACV,OAAuB,EACvB,OAAmB;QAEnB,MAAM,mBAAmB,GAAG,IAAA,4BAAU,EAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAChD,MAAM,MAAM,GAAM,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;CACF;AAlBD,0DAkBC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { SideEffectEntryMessage } from "../generated/proto/javascript";
|
|
2
|
+
import { AwakeableEntryMessage, BackgroundInvokeEntryMessage, ClearStateEntryMessage, CompleteAwakeableEntryMessage, CompletionMessage, ErrorMessage, GetStateEntryMessage, InvokeEntryMessage, OutputStreamEntryMessage, PollInputStreamEntryMessage, SetStateEntryMessage, SleepEntryMessage, StartMessage, SuspensionMessage } from "../generated/proto/protocol";
|
|
3
|
+
export { AwakeableEntryMessage, BackgroundInvokeEntryMessage, ClearStateEntryMessage, CompleteAwakeableEntryMessage, CompletionMessage, ErrorMessage, GetStateEntryMessage, InvokeEntryMessage, OutputStreamEntryMessage, PollInputStreamEntryMessage, SetStateEntryMessage, SleepEntryMessage, StartMessage, SuspensionMessage, } from "../generated/proto/protocol";
|
|
4
|
+
export declare const START_MESSAGE_TYPE = 0n;
|
|
5
|
+
export declare const COMPLETION_MESSAGE_TYPE = 1n;
|
|
6
|
+
export declare const SUSPENSION_MESSAGE_TYPE = 2n;
|
|
7
|
+
export declare const ERROR_MESSAGE_TYPE = 3n;
|
|
8
|
+
export declare const POLL_INPUT_STREAM_ENTRY_MESSAGE_TYPE = 1024n;
|
|
9
|
+
export declare const OUTPUT_STREAM_ENTRY_MESSAGE_TYPE = 1025n;
|
|
10
|
+
export declare const GET_STATE_ENTRY_MESSAGE_TYPE = 2048n;
|
|
11
|
+
export declare const SET_STATE_ENTRY_MESSAGE_TYPE = 2049n;
|
|
12
|
+
export declare const CLEAR_STATE_ENTRY_MESSAGE_TYPE = 2050n;
|
|
13
|
+
export declare const SLEEP_ENTRY_MESSAGE_TYPE = 3072n;
|
|
14
|
+
export declare const INVOKE_ENTRY_MESSAGE_TYPE = 3073n;
|
|
15
|
+
export declare const BACKGROUND_INVOKE_ENTRY_MESSAGE_TYPE = 3074n;
|
|
16
|
+
export declare const AWAKEABLE_ENTRY_MESSAGE_TYPE = 3075n;
|
|
17
|
+
export declare const COMPLETE_AWAKEABLE_ENTRY_MESSAGE_TYPE = 3076n;
|
|
18
|
+
export declare const SIDE_EFFECT_ENTRY_MESSAGE_TYPE = 64513n;
|
|
19
|
+
export declare const KNOWN_MESSAGE_TYPES: Set<bigint>;
|
|
20
|
+
export declare const PROTOBUF_MESSAGE_NAME_BY_TYPE: Map<bigint, string>;
|
|
21
|
+
export declare const PROTOBUF_MESSAGE_BY_TYPE: Map<bigint, any>;
|
|
22
|
+
export type ProtocolMessage = StartMessage | CompletionMessage | SuspensionMessage | ErrorMessage | PollInputStreamEntryMessage | OutputStreamEntryMessage | GetStateEntryMessage | SetStateEntryMessage | ClearStateEntryMessage | SleepEntryMessage | InvokeEntryMessage | BackgroundInvokeEntryMessage | AwakeableEntryMessage | CompleteAwakeableEntryMessage | SideEffectEntryMessage;
|
|
23
|
+
export declare const SUSPENSION_TRIGGERS: bigint[];
|
|
24
|
+
//# sourceMappingURL=protocol.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/types/protocol.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EACL,qBAAqB,EACrB,4BAA4B,EAC5B,sBAAsB,EACtB,6BAA6B,EAC7B,iBAAiB,EACjB,YAAY,EACZ,oBAAoB,EACpB,kBAAkB,EAClB,wBAAwB,EACxB,2BAA2B,EAC3B,oBAAoB,EACpB,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EAClB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EACL,qBAAqB,EACrB,4BAA4B,EAC5B,sBAAsB,EACtB,6BAA6B,EAC7B,iBAAiB,EACjB,YAAY,EACZ,oBAAoB,EACpB,kBAAkB,EAClB,wBAAwB,EACxB,2BAA2B,EAC3B,oBAAoB,EACpB,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,GAClB,MAAM,6BAA6B,CAAC;AAGrC,eAAO,MAAM,kBAAkB,KAAU,CAAC;AAC1C,eAAO,MAAM,uBAAuB,KAAU,CAAC;AAC/C,eAAO,MAAM,uBAAuB,KAAU,CAAC;AAC/C,eAAO,MAAM,kBAAkB,KAAU,CAAC;AAC1C,eAAO,MAAM,oCAAoC,QAAU,CAAC;AAC5D,eAAO,MAAM,gCAAgC,QAAU,CAAC;AACxD,eAAO,MAAM,4BAA4B,QAAU,CAAC;AACpD,eAAO,MAAM,4BAA4B,QAAU,CAAC;AACpD,eAAO,MAAM,8BAA8B,QAAU,CAAC;AACtD,eAAO,MAAM,wBAAwB,QAAU,CAAC;AAChD,eAAO,MAAM,yBAAyB,QAAU,CAAC;AACjD,eAAO,MAAM,oCAAoC,QAAU,CAAC;AAC5D,eAAO,MAAM,4BAA4B,QAAU,CAAC;AACpD,eAAO,MAAM,qCAAqC,QAAU,CAAC;AAI7D,eAAO,MAAM,8BAA8B,SAAU,CAAC;AAMtD,eAAO,MAAM,mBAAmB,aAgB9B,CAAC;AAEH,eAAO,MAAM,6BAA6B,qBAgBxC,CAAC;AAqBH,eAAO,MAAM,wBAAwB,kBAA6B,CAAC;AAEnE,MAAM,MAAM,eAAe,GACvB,YAAY,GACZ,iBAAiB,GACjB,iBAAiB,GACjB,YAAY,GACZ,2BAA2B,GAC3B,wBAAwB,GACxB,oBAAoB,GACpB,oBAAoB,GACpB,sBAAsB,GACtB,iBAAiB,GACjB,kBAAkB,GAClB,4BAA4B,GAC5B,qBAAqB,GACrB,6BAA6B,GAC7B,sBAAsB,CAAC;AAI3B,eAAO,MAAM,mBAAmB,EAAE,MAAM,EAMvC,CAAC"}
|
|
@@ -0,0 +1,115 @@
|
|
|
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.SUSPENSION_TRIGGERS = exports.PROTOBUF_MESSAGE_BY_TYPE = exports.PROTOBUF_MESSAGE_NAME_BY_TYPE = exports.KNOWN_MESSAGE_TYPES = exports.SIDE_EFFECT_ENTRY_MESSAGE_TYPE = exports.COMPLETE_AWAKEABLE_ENTRY_MESSAGE_TYPE = exports.AWAKEABLE_ENTRY_MESSAGE_TYPE = exports.BACKGROUND_INVOKE_ENTRY_MESSAGE_TYPE = exports.INVOKE_ENTRY_MESSAGE_TYPE = exports.SLEEP_ENTRY_MESSAGE_TYPE = exports.CLEAR_STATE_ENTRY_MESSAGE_TYPE = exports.SET_STATE_ENTRY_MESSAGE_TYPE = exports.GET_STATE_ENTRY_MESSAGE_TYPE = exports.OUTPUT_STREAM_ENTRY_MESSAGE_TYPE = exports.POLL_INPUT_STREAM_ENTRY_MESSAGE_TYPE = exports.ERROR_MESSAGE_TYPE = exports.SUSPENSION_MESSAGE_TYPE = exports.COMPLETION_MESSAGE_TYPE = exports.START_MESSAGE_TYPE = exports.SuspensionMessage = exports.StartMessage = exports.SleepEntryMessage = exports.SetStateEntryMessage = exports.PollInputStreamEntryMessage = exports.OutputStreamEntryMessage = exports.InvokeEntryMessage = exports.GetStateEntryMessage = exports.ErrorMessage = exports.CompletionMessage = exports.CompleteAwakeableEntryMessage = exports.ClearStateEntryMessage = exports.BackgroundInvokeEntryMessage = exports.AwakeableEntryMessage = void 0;
|
|
14
|
+
const javascript_1 = require("../generated/proto/javascript");
|
|
15
|
+
const protocol_1 = require("../generated/proto/protocol");
|
|
16
|
+
// Re-export the protobuf messages.
|
|
17
|
+
var protocol_2 = require("../generated/proto/protocol");
|
|
18
|
+
Object.defineProperty(exports, "AwakeableEntryMessage", { enumerable: true, get: function () { return protocol_2.AwakeableEntryMessage; } });
|
|
19
|
+
Object.defineProperty(exports, "BackgroundInvokeEntryMessage", { enumerable: true, get: function () { return protocol_2.BackgroundInvokeEntryMessage; } });
|
|
20
|
+
Object.defineProperty(exports, "ClearStateEntryMessage", { enumerable: true, get: function () { return protocol_2.ClearStateEntryMessage; } });
|
|
21
|
+
Object.defineProperty(exports, "CompleteAwakeableEntryMessage", { enumerable: true, get: function () { return protocol_2.CompleteAwakeableEntryMessage; } });
|
|
22
|
+
Object.defineProperty(exports, "CompletionMessage", { enumerable: true, get: function () { return protocol_2.CompletionMessage; } });
|
|
23
|
+
Object.defineProperty(exports, "ErrorMessage", { enumerable: true, get: function () { return protocol_2.ErrorMessage; } });
|
|
24
|
+
Object.defineProperty(exports, "GetStateEntryMessage", { enumerable: true, get: function () { return protocol_2.GetStateEntryMessage; } });
|
|
25
|
+
Object.defineProperty(exports, "InvokeEntryMessage", { enumerable: true, get: function () { return protocol_2.InvokeEntryMessage; } });
|
|
26
|
+
Object.defineProperty(exports, "OutputStreamEntryMessage", { enumerable: true, get: function () { return protocol_2.OutputStreamEntryMessage; } });
|
|
27
|
+
Object.defineProperty(exports, "PollInputStreamEntryMessage", { enumerable: true, get: function () { return protocol_2.PollInputStreamEntryMessage; } });
|
|
28
|
+
Object.defineProperty(exports, "SetStateEntryMessage", { enumerable: true, get: function () { return protocol_2.SetStateEntryMessage; } });
|
|
29
|
+
Object.defineProperty(exports, "SleepEntryMessage", { enumerable: true, get: function () { return protocol_2.SleepEntryMessage; } });
|
|
30
|
+
Object.defineProperty(exports, "StartMessage", { enumerable: true, get: function () { return protocol_2.StartMessage; } });
|
|
31
|
+
Object.defineProperty(exports, "SuspensionMessage", { enumerable: true, get: function () { return protocol_2.SuspensionMessage; } });
|
|
32
|
+
// Export the protocol message types as defined by the restate protocol.
|
|
33
|
+
exports.START_MESSAGE_TYPE = 0x0000n;
|
|
34
|
+
exports.COMPLETION_MESSAGE_TYPE = 0x0001n;
|
|
35
|
+
exports.SUSPENSION_MESSAGE_TYPE = 0x0002n;
|
|
36
|
+
exports.ERROR_MESSAGE_TYPE = 0x0003n;
|
|
37
|
+
exports.POLL_INPUT_STREAM_ENTRY_MESSAGE_TYPE = 0x0400n;
|
|
38
|
+
exports.OUTPUT_STREAM_ENTRY_MESSAGE_TYPE = 0x0401n;
|
|
39
|
+
exports.GET_STATE_ENTRY_MESSAGE_TYPE = 0x0800n;
|
|
40
|
+
exports.SET_STATE_ENTRY_MESSAGE_TYPE = 0x0801n;
|
|
41
|
+
exports.CLEAR_STATE_ENTRY_MESSAGE_TYPE = 0x0802n;
|
|
42
|
+
exports.SLEEP_ENTRY_MESSAGE_TYPE = 0x0c00n;
|
|
43
|
+
exports.INVOKE_ENTRY_MESSAGE_TYPE = 0x0c01n;
|
|
44
|
+
exports.BACKGROUND_INVOKE_ENTRY_MESSAGE_TYPE = 0x0c02n;
|
|
45
|
+
exports.AWAKEABLE_ENTRY_MESSAGE_TYPE = 0x0c03n;
|
|
46
|
+
exports.COMPLETE_AWAKEABLE_ENTRY_MESSAGE_TYPE = 0x0c04n;
|
|
47
|
+
// Export the custom message types
|
|
48
|
+
// Side effects are custom messages because the runtime does not need to inspect them
|
|
49
|
+
exports.SIDE_EFFECT_ENTRY_MESSAGE_TYPE = 0xfc01n;
|
|
50
|
+
// Restate DuplexStream
|
|
51
|
+
// Message types in the protocol.
|
|
52
|
+
// Custom message types (per SDK) such as side effect entry message should not be included here.
|
|
53
|
+
exports.KNOWN_MESSAGE_TYPES = new Set([
|
|
54
|
+
exports.START_MESSAGE_TYPE,
|
|
55
|
+
exports.COMPLETION_MESSAGE_TYPE,
|
|
56
|
+
exports.SUSPENSION_MESSAGE_TYPE,
|
|
57
|
+
exports.ERROR_MESSAGE_TYPE,
|
|
58
|
+
exports.POLL_INPUT_STREAM_ENTRY_MESSAGE_TYPE,
|
|
59
|
+
exports.OUTPUT_STREAM_ENTRY_MESSAGE_TYPE,
|
|
60
|
+
exports.GET_STATE_ENTRY_MESSAGE_TYPE,
|
|
61
|
+
exports.SET_STATE_ENTRY_MESSAGE_TYPE,
|
|
62
|
+
exports.CLEAR_STATE_ENTRY_MESSAGE_TYPE,
|
|
63
|
+
exports.SLEEP_ENTRY_MESSAGE_TYPE,
|
|
64
|
+
exports.INVOKE_ENTRY_MESSAGE_TYPE,
|
|
65
|
+
exports.BACKGROUND_INVOKE_ENTRY_MESSAGE_TYPE,
|
|
66
|
+
exports.AWAKEABLE_ENTRY_MESSAGE_TYPE,
|
|
67
|
+
exports.COMPLETE_AWAKEABLE_ENTRY_MESSAGE_TYPE,
|
|
68
|
+
exports.SIDE_EFFECT_ENTRY_MESSAGE_TYPE,
|
|
69
|
+
]);
|
|
70
|
+
exports.PROTOBUF_MESSAGE_NAME_BY_TYPE = new Map([
|
|
71
|
+
[exports.START_MESSAGE_TYPE, "StartMessage"],
|
|
72
|
+
[exports.COMPLETION_MESSAGE_TYPE, "CompletionMessage"],
|
|
73
|
+
[exports.SUSPENSION_MESSAGE_TYPE, "SuspensionMessage"],
|
|
74
|
+
[exports.ERROR_MESSAGE_TYPE, "ErrorMessage"],
|
|
75
|
+
[exports.POLL_INPUT_STREAM_ENTRY_MESSAGE_TYPE, "PollInputStreamEntryMessage"],
|
|
76
|
+
[exports.OUTPUT_STREAM_ENTRY_MESSAGE_TYPE, "OutputStreamEntryMessage"],
|
|
77
|
+
[exports.GET_STATE_ENTRY_MESSAGE_TYPE, "GetStateEntryMessage"],
|
|
78
|
+
[exports.SET_STATE_ENTRY_MESSAGE_TYPE, "SetStateEntryMessage"],
|
|
79
|
+
[exports.CLEAR_STATE_ENTRY_MESSAGE_TYPE, "ClearStateEntryMessage"],
|
|
80
|
+
[exports.SLEEP_ENTRY_MESSAGE_TYPE, "SleepEntryMessage"],
|
|
81
|
+
[exports.INVOKE_ENTRY_MESSAGE_TYPE, "InvokeEntryMessage"],
|
|
82
|
+
[exports.BACKGROUND_INVOKE_ENTRY_MESSAGE_TYPE, "BackgroundInvokeEntryMessage"],
|
|
83
|
+
[exports.AWAKEABLE_ENTRY_MESSAGE_TYPE, "AwakeableEntryMessage"],
|
|
84
|
+
[exports.COMPLETE_AWAKEABLE_ENTRY_MESSAGE_TYPE, "CompleteAwakeableEntryMessage"],
|
|
85
|
+
[exports.SIDE_EFFECT_ENTRY_MESSAGE_TYPE, "SideEffectEntryMessage"],
|
|
86
|
+
]);
|
|
87
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
88
|
+
const PROTOBUF_MESSAGES = [
|
|
89
|
+
[exports.START_MESSAGE_TYPE, protocol_1.StartMessage],
|
|
90
|
+
[exports.COMPLETION_MESSAGE_TYPE, protocol_1.CompletionMessage],
|
|
91
|
+
[exports.SUSPENSION_MESSAGE_TYPE, protocol_1.SuspensionMessage],
|
|
92
|
+
[exports.ERROR_MESSAGE_TYPE, protocol_1.ErrorMessage],
|
|
93
|
+
[exports.POLL_INPUT_STREAM_ENTRY_MESSAGE_TYPE, protocol_1.PollInputStreamEntryMessage],
|
|
94
|
+
[exports.OUTPUT_STREAM_ENTRY_MESSAGE_TYPE, protocol_1.OutputStreamEntryMessage],
|
|
95
|
+
[exports.GET_STATE_ENTRY_MESSAGE_TYPE, protocol_1.GetStateEntryMessage],
|
|
96
|
+
[exports.SET_STATE_ENTRY_MESSAGE_TYPE, protocol_1.SetStateEntryMessage],
|
|
97
|
+
[exports.CLEAR_STATE_ENTRY_MESSAGE_TYPE, protocol_1.ClearStateEntryMessage],
|
|
98
|
+
[exports.SLEEP_ENTRY_MESSAGE_TYPE, protocol_1.SleepEntryMessage],
|
|
99
|
+
[exports.INVOKE_ENTRY_MESSAGE_TYPE, protocol_1.InvokeEntryMessage],
|
|
100
|
+
[exports.BACKGROUND_INVOKE_ENTRY_MESSAGE_TYPE, protocol_1.BackgroundInvokeEntryMessage],
|
|
101
|
+
[exports.AWAKEABLE_ENTRY_MESSAGE_TYPE, protocol_1.AwakeableEntryMessage],
|
|
102
|
+
[exports.COMPLETE_AWAKEABLE_ENTRY_MESSAGE_TYPE, protocol_1.CompleteAwakeableEntryMessage],
|
|
103
|
+
[exports.SIDE_EFFECT_ENTRY_MESSAGE_TYPE, javascript_1.SideEffectEntryMessage],
|
|
104
|
+
];
|
|
105
|
+
exports.PROTOBUF_MESSAGE_BY_TYPE = new Map(PROTOBUF_MESSAGES);
|
|
106
|
+
// These message types will trigger sending a suspension message from the runtime
|
|
107
|
+
// for each of the protocol modes
|
|
108
|
+
exports.SUSPENSION_TRIGGERS = [
|
|
109
|
+
exports.INVOKE_ENTRY_MESSAGE_TYPE,
|
|
110
|
+
exports.GET_STATE_ENTRY_MESSAGE_TYPE,
|
|
111
|
+
exports.SIDE_EFFECT_ENTRY_MESSAGE_TYPE,
|
|
112
|
+
exports.AWAKEABLE_ENTRY_MESSAGE_TYPE,
|
|
113
|
+
exports.SLEEP_ENTRY_MESSAGE_TYPE,
|
|
114
|
+
];
|
|
115
|
+
//# sourceMappingURL=protocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/types/protocol.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AAEH,8DAAuE;AACvE,0DAeqC;AAErC,mCAAmC;AACnC,wDAeqC;AAdnC,iHAAA,qBAAqB,OAAA;AACrB,wHAAA,4BAA4B,OAAA;AAC5B,kHAAA,sBAAsB,OAAA;AACtB,yHAAA,6BAA6B,OAAA;AAC7B,6GAAA,iBAAiB,OAAA;AACjB,wGAAA,YAAY,OAAA;AACZ,gHAAA,oBAAoB,OAAA;AACpB,8GAAA,kBAAkB,OAAA;AAClB,oHAAA,wBAAwB,OAAA;AACxB,uHAAA,2BAA2B,OAAA;AAC3B,gHAAA,oBAAoB,OAAA;AACpB,6GAAA,iBAAiB,OAAA;AACjB,wGAAA,YAAY,OAAA;AACZ,6GAAA,iBAAiB,OAAA;AAGnB,wEAAwE;AAC3D,QAAA,kBAAkB,GAAG,OAAO,CAAC;AAC7B,QAAA,uBAAuB,GAAG,OAAO,CAAC;AAClC,QAAA,uBAAuB,GAAG,OAAO,CAAC;AAClC,QAAA,kBAAkB,GAAG,OAAO,CAAC;AAC7B,QAAA,oCAAoC,GAAG,OAAO,CAAC;AAC/C,QAAA,gCAAgC,GAAG,OAAO,CAAC;AAC3C,QAAA,4BAA4B,GAAG,OAAO,CAAC;AACvC,QAAA,4BAA4B,GAAG,OAAO,CAAC;AACvC,QAAA,8BAA8B,GAAG,OAAO,CAAC;AACzC,QAAA,wBAAwB,GAAG,OAAO,CAAC;AACnC,QAAA,yBAAyB,GAAG,OAAO,CAAC;AACpC,QAAA,oCAAoC,GAAG,OAAO,CAAC;AAC/C,QAAA,4BAA4B,GAAG,OAAO,CAAC;AACvC,QAAA,qCAAqC,GAAG,OAAO,CAAC;AAE7D,kCAAkC;AAClC,qFAAqF;AACxE,QAAA,8BAA8B,GAAG,OAAO,CAAC;AAEtD,uBAAuB;AAEvB,iCAAiC;AACjC,gGAAgG;AACnF,QAAA,mBAAmB,GAAG,IAAI,GAAG,CAAC;IACzC,0BAAkB;IAClB,+BAAuB;IACvB,+BAAuB;IACvB,0BAAkB;IAClB,4CAAoC;IACpC,wCAAgC;IAChC,oCAA4B;IAC5B,oCAA4B;IAC5B,sCAA8B;IAC9B,gCAAwB;IACxB,iCAAyB;IACzB,4CAAoC;IACpC,oCAA4B;IAC5B,6CAAqC;IACrC,sCAA8B;CAC/B,CAAC,CAAC;AAEU,QAAA,6BAA6B,GAAG,IAAI,GAAG,CAAiB;IACnE,CAAC,0BAAkB,EAAE,cAAc,CAAC;IACpC,CAAC,+BAAuB,EAAE,mBAAmB,CAAC;IAC9C,CAAC,+BAAuB,EAAE,mBAAmB,CAAC;IAC9C,CAAC,0BAAkB,EAAE,cAAc,CAAC;IACpC,CAAC,4CAAoC,EAAE,6BAA6B,CAAC;IACrE,CAAC,wCAAgC,EAAE,0BAA0B,CAAC;IAC9D,CAAC,oCAA4B,EAAE,sBAAsB,CAAC;IACtD,CAAC,oCAA4B,EAAE,sBAAsB,CAAC;IACtD,CAAC,sCAA8B,EAAE,wBAAwB,CAAC;IAC1D,CAAC,gCAAwB,EAAE,mBAAmB,CAAC;IAC/C,CAAC,iCAAyB,EAAE,oBAAoB,CAAC;IACjD,CAAC,4CAAoC,EAAE,8BAA8B,CAAC;IACtE,CAAC,oCAA4B,EAAE,uBAAuB,CAAC;IACvD,CAAC,6CAAqC,EAAE,+BAA+B,CAAC;IACxE,CAAC,sCAA8B,EAAE,wBAAwB,CAAC;CAC3D,CAAC,CAAC;AAEH,8DAA8D;AAC9D,MAAM,iBAAiB,GAAyB;IAC9C,CAAC,0BAAkB,EAAE,uBAAY,CAAC;IAClC,CAAC,+BAAuB,EAAE,4BAAiB,CAAC;IAC5C,CAAC,+BAAuB,EAAE,4BAAiB,CAAC;IAC5C,CAAC,0BAAkB,EAAE,uBAAY,CAAC;IAClC,CAAC,4CAAoC,EAAE,sCAA2B,CAAC;IACnE,CAAC,wCAAgC,EAAE,mCAAwB,CAAC;IAC5D,CAAC,oCAA4B,EAAE,+BAAoB,CAAC;IACpD,CAAC,oCAA4B,EAAE,+BAAoB,CAAC;IACpD,CAAC,sCAA8B,EAAE,iCAAsB,CAAC;IACxD,CAAC,gCAAwB,EAAE,4BAAiB,CAAC;IAC7C,CAAC,iCAAyB,EAAE,6BAAkB,CAAC;IAC/C,CAAC,4CAAoC,EAAE,uCAA4B,CAAC;IACpE,CAAC,oCAA4B,EAAE,gCAAqB,CAAC;IACrD,CAAC,6CAAqC,EAAE,wCAA6B,CAAC;IACtE,CAAC,sCAA8B,EAAE,mCAAsB,CAAC;CACzD,CAAC;AAEW,QAAA,wBAAwB,GAAG,IAAI,GAAG,CAAC,iBAAiB,CAAC,CAAC;AAmBnE,iFAAiF;AACjF,iCAAiC;AACpB,QAAA,mBAAmB,GAAa;IAC3C,iCAAyB;IACzB,oCAA4B;IAC5B,sCAA8B;IAC9B,oCAA4B;IAC5B,gCAAwB;CACzB,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { RpcContext } from "../restate_context";
|
|
2
|
+
import { Event } from "../types/types";
|
|
3
|
+
type WithKeyArgument<F> = F extends () => infer R ? (key: string) => R : F;
|
|
4
|
+
type WithoutRpcContext<F> = F extends (ctx: RpcContext, ...args: infer P) => infer R ? (...args: P) => R : never;
|
|
5
|
+
export type Client<M> = {
|
|
6
|
+
[K in keyof M as M[K] extends never ? never : K]: M[K];
|
|
7
|
+
};
|
|
8
|
+
export type SendClient<M> = {
|
|
9
|
+
[K in keyof M as M[K] extends never ? never : K]: M[K] extends (...args: infer P) => any ? (...args: P) => void : never;
|
|
10
|
+
};
|
|
11
|
+
export type UnKeyedHandler<F> = F extends (ctx: RpcContext) => Promise<any> ? F : F extends (ctx: RpcContext, input: any) => Promise<any> ? F : never;
|
|
12
|
+
export type UnKeyedRouterOpts<U> = {
|
|
13
|
+
[K in keyof U]: U[K] extends UnKeyedHandler<any> ? U[K] : never;
|
|
14
|
+
};
|
|
15
|
+
export type UnKeyedRouter<U> = {
|
|
16
|
+
[K in keyof U]: U[K] extends UnKeyedHandler<infer F> ? WithoutRpcContext<F> : never;
|
|
17
|
+
};
|
|
18
|
+
export declare const router: <M>(opts: UnKeyedRouterOpts<M>) => UnKeyedRouter<M>;
|
|
19
|
+
export type KeyedHandler<F> = F extends (ctx: RpcContext) => Promise<any> ? F : F extends (ctx: RpcContext, key: string, value: any) => Promise<any> ? F : never;
|
|
20
|
+
export type KeyedRouterOpts<U> = {
|
|
21
|
+
[K in keyof U]: U[K] extends KeyedHandler<U[K]> | KeyedEventHandler<U[K]> ? U[K] : never;
|
|
22
|
+
};
|
|
23
|
+
export type KeyedRouter<U> = {
|
|
24
|
+
[K in keyof U]: U[K] extends KeyedEventHandler<U[K]> ? never : U[K] extends KeyedHandler<infer F> ? WithKeyArgument<WithoutRpcContext<F>> : never;
|
|
25
|
+
};
|
|
26
|
+
export declare const keyedRouter: <M>(opts: KeyedRouterOpts<M>) => KeyedRouter<M>;
|
|
27
|
+
export type KeyedEventHandler<U> = U extends () => Promise<void> ? never : U extends (ctx: RpcContext) => Promise<void> ? never : U extends (ctx: RpcContext, event: Event) => Promise<void> ? U : never;
|
|
28
|
+
export declare const keyedEventHandler: <H>(handler: KeyedEventHandler<H>) => H;
|
|
29
|
+
export declare const isEventHandler: (handler: any) => handler is {
|
|
30
|
+
handler: (ctx: RpcContext, event: Event) => Promise<void>;
|
|
31
|
+
};
|
|
32
|
+
export {};
|
|
33
|
+
//# sourceMappingURL=router.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/types/router.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
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.isEventHandler = exports.keyedEventHandler = exports.keyedRouter = exports.router = void 0;
|
|
14
|
+
const router = (opts) => {
|
|
15
|
+
if (opts === undefined || opts === null) {
|
|
16
|
+
throw new Error("router must be defined");
|
|
17
|
+
}
|
|
18
|
+
return opts;
|
|
19
|
+
};
|
|
20
|
+
exports.router = router;
|
|
21
|
+
const keyedRouter = (opts) => {
|
|
22
|
+
if (opts === undefined || opts === null) {
|
|
23
|
+
throw new Error("router must be defined");
|
|
24
|
+
}
|
|
25
|
+
return opts;
|
|
26
|
+
};
|
|
27
|
+
exports.keyedRouter = keyedRouter;
|
|
28
|
+
const keyedEventHandler = (handler) => {
|
|
29
|
+
return { eventHandler: true, handler: handler };
|
|
30
|
+
};
|
|
31
|
+
exports.keyedEventHandler = keyedEventHandler;
|
|
32
|
+
const isEventHandler = (handler) => {
|
|
33
|
+
return typeof handler === "object" && handler["eventHandler"];
|
|
34
|
+
};
|
|
35
|
+
exports.isEventHandler = isEventHandler;
|
|
36
|
+
//# sourceMappingURL=router.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/types/router.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AAgDI,MAAM,MAAM,GAAG,CAAI,IAA0B,EAAoB,EAAE;IACxE,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,EAAE;QACvC,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;KAC3C;IACD,OAAO,IAAwB,CAAC;AAClC,CAAC,CAAC;AALW,QAAA,MAAM,UAKjB;AAwBK,MAAM,WAAW,GAAG,CAAI,IAAwB,EAAkB,EAAE;IACzE,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,EAAE;QACvC,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;KAC3C;IACD,OAAO,IAAsB,CAAC;AAChC,CAAC,CAAC;AALW,QAAA,WAAW,eAKtB;AAYK,MAAM,iBAAiB,GAAG,CAAI,OAA6B,EAAK,EAAE;IACvE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAO,CAAC;AACvD,CAAC,CAAC;AAFW,QAAA,iBAAiB,qBAE5B;AAEK,MAAM,cAAc,GAAG,CAC5B,OAAY,EAGZ,EAAE;IACF,OAAO,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC;AAChE,CAAC,CAAC;AANW,QAAA,cAAc,kBAMzB"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { ProtocolMessage } from "./protocol";
|
|
3
|
+
export declare class Message {
|
|
4
|
+
readonly messageType: bigint;
|
|
5
|
+
readonly message: ProtocolMessage;
|
|
6
|
+
readonly completed?: boolean | undefined;
|
|
7
|
+
readonly protocolVersion?: number | undefined;
|
|
8
|
+
readonly requiresAck?: boolean | undefined;
|
|
9
|
+
constructor(messageType: bigint, message: ProtocolMessage, completed?: boolean | undefined, protocolVersion?: number | undefined, requiresAck?: boolean | undefined);
|
|
10
|
+
}
|
|
11
|
+
export declare class Header {
|
|
12
|
+
readonly messageType: bigint;
|
|
13
|
+
readonly frameLength: number;
|
|
14
|
+
readonly completedFlag?: boolean | undefined;
|
|
15
|
+
readonly protocolVersion?: number | undefined;
|
|
16
|
+
readonly requiresAckFlag?: boolean | undefined;
|
|
17
|
+
readonly partialStateFlag?: boolean | undefined;
|
|
18
|
+
constructor(messageType: bigint, frameLength: number, completedFlag?: boolean | undefined, protocolVersion?: number | undefined, requiresAckFlag?: boolean | undefined, partialStateFlag?: boolean | undefined);
|
|
19
|
+
static fromU64be(value: bigint): Header;
|
|
20
|
+
toU64be(): bigint;
|
|
21
|
+
}
|
|
22
|
+
export declare class Event {
|
|
23
|
+
readonly key: string;
|
|
24
|
+
readonly payload: Buffer;
|
|
25
|
+
readonly attributes: Record<string, string>;
|
|
26
|
+
constructor(key: string, payload: Buffer, attributes: Record<string, string>);
|
|
27
|
+
json<T>(): T;
|
|
28
|
+
body(): Uint8Array;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types/types.ts"],"names":[],"mappings":";AAWA,OAAO,EAKL,eAAe,EAGhB,MAAM,YAAY,CAAC;AAEpB,qBAAa,OAAO;IAEhB,QAAQ,CAAC,WAAW,EAAE,MAAM;IAC5B,QAAQ,CAAC,OAAO,EAAE,eAAe;IACjC,QAAQ,CAAC,SAAS,CAAC;IACnB,QAAQ,CAAC,eAAe,CAAC;IACzB,QAAQ,CAAC,WAAW,CAAC;gBAJZ,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,eAAe,EACxB,SAAS,CAAC,qBAAS,EACnB,eAAe,CAAC,oBAAQ,EACxB,WAAW,CAAC,qBAAS;CAEjC;AAyCD,qBAAa,MAAM;IAEf,QAAQ,CAAC,WAAW,EAAE,MAAM;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM;IAC5B,QAAQ,CAAC,aAAa,CAAC;IACvB,QAAQ,CAAC,eAAe,CAAC;IACzB,QAAQ,CAAC,eAAe,CAAC;IACzB,QAAQ,CAAC,gBAAgB,CAAC;gBALjB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,aAAa,CAAC,qBAAS,EACvB,eAAe,CAAC,oBAAQ,EACxB,eAAe,CAAC,qBAAS,EACzB,gBAAgB,CAAC,qBAAS;WAGvB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IA4BvC,OAAO,IAAI,MAAM;CAazB;AAED,qBAAa,KAAK;IAEd,QAAQ,CAAC,GAAG,EAAE,MAAM;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;gBAFlC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAGtC,IAAI,CAAC,CAAC,KAAK,CAAC;IAIZ,IAAI,IAAI,UAAU;CAG1B"}
|
|
@@ -0,0 +1,125 @@
|
|
|
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.Event = exports.Header = exports.Message = void 0;
|
|
14
|
+
const protocol_1 = require("./protocol");
|
|
15
|
+
class Message {
|
|
16
|
+
messageType;
|
|
17
|
+
message;
|
|
18
|
+
completed;
|
|
19
|
+
protocolVersion;
|
|
20
|
+
requiresAck;
|
|
21
|
+
constructor(messageType, message, completed, protocolVersion, requiresAck) {
|
|
22
|
+
this.messageType = messageType;
|
|
23
|
+
this.message = message;
|
|
24
|
+
this.completed = completed;
|
|
25
|
+
this.protocolVersion = protocolVersion;
|
|
26
|
+
this.requiresAck = requiresAck;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
exports.Message = Message;
|
|
30
|
+
class MessageType {
|
|
31
|
+
static assertValid(messageTypeId) {
|
|
32
|
+
if (protocol_1.KNOWN_MESSAGE_TYPES.has(messageTypeId)) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
if ((messageTypeId & CUSTOM_MESSAGE_MASK) !== 0n) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
throw new Error(`Unknown message type ${messageTypeId}`);
|
|
39
|
+
}
|
|
40
|
+
static hasCompletedFlag(messageType) {
|
|
41
|
+
return (messageType === protocol_1.POLL_INPUT_STREAM_ENTRY_MESSAGE_TYPE ||
|
|
42
|
+
messageType === protocol_1.GET_STATE_ENTRY_MESSAGE_TYPE ||
|
|
43
|
+
messageType === protocol_1.SLEEP_ENTRY_MESSAGE_TYPE ||
|
|
44
|
+
messageType === protocol_1.AWAKEABLE_ENTRY_MESSAGE_TYPE);
|
|
45
|
+
}
|
|
46
|
+
static hasProtocolVersion(messageType) {
|
|
47
|
+
return messageType == protocol_1.START_MESSAGE_TYPE;
|
|
48
|
+
}
|
|
49
|
+
static isCustom(messageTypeId) {
|
|
50
|
+
return !protocol_1.KNOWN_MESSAGE_TYPES.has(messageTypeId);
|
|
51
|
+
}
|
|
52
|
+
static hasRequiresAckFlag(messageTypeId) {
|
|
53
|
+
return this.isCustom(messageTypeId);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
const CUSTOM_MESSAGE_MASK = BigInt(0xfc00);
|
|
57
|
+
const COMPLETED_MASK = BigInt(0x0001_0000_0000);
|
|
58
|
+
const VERSION_MASK = BigInt(0x03ff_0000_0000);
|
|
59
|
+
const REQUIRES_ACK_MASK = BigInt(0x0001_0000_0000);
|
|
60
|
+
// The header is exported but only for tests.
|
|
61
|
+
class Header {
|
|
62
|
+
messageType;
|
|
63
|
+
frameLength;
|
|
64
|
+
completedFlag;
|
|
65
|
+
protocolVersion;
|
|
66
|
+
requiresAckFlag;
|
|
67
|
+
partialStateFlag;
|
|
68
|
+
constructor(messageType, frameLength, completedFlag, protocolVersion, requiresAckFlag, partialStateFlag) {
|
|
69
|
+
this.messageType = messageType;
|
|
70
|
+
this.frameLength = frameLength;
|
|
71
|
+
this.completedFlag = completedFlag;
|
|
72
|
+
this.protocolVersion = protocolVersion;
|
|
73
|
+
this.requiresAckFlag = requiresAckFlag;
|
|
74
|
+
this.partialStateFlag = partialStateFlag;
|
|
75
|
+
}
|
|
76
|
+
static fromU64be(value) {
|
|
77
|
+
const messageType = (value >> 48n) & 0xffffn;
|
|
78
|
+
MessageType.assertValid(messageType);
|
|
79
|
+
const completedFlag = MessageType.hasCompletedFlag(messageType) &&
|
|
80
|
+
(value & COMPLETED_MASK) !== 0n
|
|
81
|
+
? true
|
|
82
|
+
: undefined;
|
|
83
|
+
const protocolVersion = MessageType.hasProtocolVersion(messageType)
|
|
84
|
+
? Number(((value & VERSION_MASK) >> 32n) & 0xffffn)
|
|
85
|
+
: undefined;
|
|
86
|
+
const requiresAckFlag = MessageType.hasRequiresAckFlag(messageType) &&
|
|
87
|
+
(value & REQUIRES_ACK_MASK) !== 0n
|
|
88
|
+
? true
|
|
89
|
+
: undefined;
|
|
90
|
+
const frameLength = Number(value & 0xffffffffn);
|
|
91
|
+
return new Header(messageType, frameLength, completedFlag, protocolVersion, requiresAckFlag);
|
|
92
|
+
}
|
|
93
|
+
toU64be() {
|
|
94
|
+
let res = (this.messageType << 48n) | BigInt(this.frameLength);
|
|
95
|
+
if (this.completedFlag) {
|
|
96
|
+
res = res | COMPLETED_MASK;
|
|
97
|
+
}
|
|
98
|
+
if (this.protocolVersion !== undefined) {
|
|
99
|
+
res = res | (BigInt(this.protocolVersion) << 32n);
|
|
100
|
+
}
|
|
101
|
+
if (this.requiresAckFlag) {
|
|
102
|
+
res = res | REQUIRES_ACK_MASK;
|
|
103
|
+
}
|
|
104
|
+
return res;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
exports.Header = Header;
|
|
108
|
+
class Event {
|
|
109
|
+
key;
|
|
110
|
+
payload;
|
|
111
|
+
attributes;
|
|
112
|
+
constructor(key, payload, attributes) {
|
|
113
|
+
this.key = key;
|
|
114
|
+
this.payload = payload;
|
|
115
|
+
this.attributes = attributes;
|
|
116
|
+
}
|
|
117
|
+
json() {
|
|
118
|
+
return JSON.parse(this.payload.toString("utf-8"));
|
|
119
|
+
}
|
|
120
|
+
body() {
|
|
121
|
+
return this.payload;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
exports.Event = Event;
|
|
125
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { RpcRequest } from "../generated/proto/dynrpc";
|
|
2
|
+
export declare const requestFromArgs: (args: unknown[]) => RpcRequest;
|
|
3
|
+
export type JsType = string | number | boolean | Object | null | Array<any> | undefined;
|
|
4
|
+
export declare const verifyAssumptions: (isKeyed: boolean, request: RpcRequest) => {
|
|
5
|
+
key?: string | undefined;
|
|
6
|
+
request?: JsType;
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=assumpsions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assumpsions.d.ts","sourceRoot":"","sources":["../../src/utils/assumpsions.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAQvD,eAAO,MAAM,eAAe,SAAU,OAAO,EAAE,KAAG,UAoCjD,CAAC;AAGF,MAAM,MAAM,MAAM,GACd,MAAM,GACN,MAAM,GACN,OAAO,GACP,MAAM,GACN,IAAI,GACJ,KAAK,CAAC,GAAG,CAAC,GACV,SAAS,CAAC;AASd,eAAO,MAAM,iBAAiB,YACnB,OAAO,WACP,UAAU;;cACQ,MAAM;CAqDlC,CAAC"}
|
|
@@ -0,0 +1,101 @@
|
|
|
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.verifyAssumptions = exports.requestFromArgs = void 0;
|
|
14
|
+
const dynrpc_1 = require("../generated/proto/dynrpc");
|
|
15
|
+
const errors_1 = require("../types/errors");
|
|
16
|
+
const ASSUME_UNKEYED_SINCE_FIRST_PARAM_NOT_STRING = 1;
|
|
17
|
+
const ASSUME_UNKEYED_SINCE_ZERO_ARGS = 2;
|
|
18
|
+
const ASSUME_KEYED_SINCE_TWO_ARGS_STR_AND_ANY = 3;
|
|
19
|
+
const ASSUME_EITHER_KEYED_OR_UNKEYED_ONE_STR_ARG = 4;
|
|
20
|
+
const requestFromArgs = (args) => {
|
|
21
|
+
switch (args.length) {
|
|
22
|
+
case 0: {
|
|
23
|
+
return dynrpc_1.RpcRequest.create({
|
|
24
|
+
senderAssumes: ASSUME_UNKEYED_SINCE_ZERO_ARGS,
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
case 1: {
|
|
28
|
+
if (typeof args[0] === "string") {
|
|
29
|
+
return dynrpc_1.RpcRequest.create({
|
|
30
|
+
key: args[0],
|
|
31
|
+
senderAssumes: ASSUME_EITHER_KEYED_OR_UNKEYED_ONE_STR_ARG,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
return dynrpc_1.RpcRequest.create({
|
|
36
|
+
request: args[0],
|
|
37
|
+
senderAssumes: ASSUME_UNKEYED_SINCE_FIRST_PARAM_NOT_STRING,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
case 2: {
|
|
42
|
+
if (typeof args[0] !== "string") {
|
|
43
|
+
throw new errors_1.TerminalError(`Two argument handlers are only possible for keyed handlers. Where the first argument must be of type 'string'.`);
|
|
44
|
+
}
|
|
45
|
+
return dynrpc_1.RpcRequest.create({
|
|
46
|
+
key: args[0],
|
|
47
|
+
request: args[1],
|
|
48
|
+
senderAssumes: ASSUME_KEYED_SINCE_TWO_ARGS_STR_AND_ANY,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
default: {
|
|
52
|
+
throw new errors_1.TerminalError("wrong number of arguments " + args.length);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
exports.requestFromArgs = requestFromArgs;
|
|
57
|
+
/* eslint-enable @typescript-eslint/ban-types, @typescript-eslint/no-explicit-any */
|
|
58
|
+
const requireThat = (condition, errorMessage) => {
|
|
59
|
+
if (!condition) {
|
|
60
|
+
throw new errors_1.TerminalError(errorMessage);
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
const verifyAssumptions = (isKeyed, request) => {
|
|
64
|
+
const assumpsion = request.senderAssumes ?? 0;
|
|
65
|
+
switch (assumpsion) {
|
|
66
|
+
case 0: {
|
|
67
|
+
// no assumption: this comes from an ingress.
|
|
68
|
+
const hasKeyProperty = typeof request.key === "string" && request.key.length > 0;
|
|
69
|
+
if (isKeyed) {
|
|
70
|
+
requireThat(hasKeyProperty, "Trying to call a keyed handler with a missing or empty 'key' property.");
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
requireThat(!hasKeyProperty, "Trying to call a an unkeyed handler with a 'key' property. Did you mean using the 'request' property instead?");
|
|
74
|
+
}
|
|
75
|
+
return { key: request.key, request: request.request };
|
|
76
|
+
}
|
|
77
|
+
case ASSUME_UNKEYED_SINCE_FIRST_PARAM_NOT_STRING: {
|
|
78
|
+
requireThat(!isKeyed, "Trying to call a keyed handler with a missing key. This could happen if the first argument passed is not a 'string'.");
|
|
79
|
+
return { request: request.request };
|
|
80
|
+
}
|
|
81
|
+
case ASSUME_UNKEYED_SINCE_ZERO_ARGS: {
|
|
82
|
+
requireThat(!isKeyed, "A keyed handler must at least be invoked with a single non empty string argument, that represents the key. 0 arguments given.");
|
|
83
|
+
return { request: request.request };
|
|
84
|
+
}
|
|
85
|
+
case ASSUME_KEYED_SINCE_TWO_ARGS_STR_AND_ANY: {
|
|
86
|
+
requireThat(isKeyed, "An unkeyed handler must have at most 1 argument. two given.");
|
|
87
|
+
return { key: request.key, request: request.request };
|
|
88
|
+
}
|
|
89
|
+
case ASSUME_EITHER_KEYED_OR_UNKEYED_ONE_STR_ARG: {
|
|
90
|
+
if (isKeyed) {
|
|
91
|
+
return { key: request.key };
|
|
92
|
+
}
|
|
93
|
+
return { request: request.key };
|
|
94
|
+
}
|
|
95
|
+
default: {
|
|
96
|
+
throw new errors_1.TerminalError(`Unknown assumption id ${assumpsion}. This indicates an incorrect (or involuntary) setting of the assumption property at the ingress request, or an SDK bug.`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
exports.verifyAssumptions = verifyAssumptions;
|
|
101
|
+
//# sourceMappingURL=assumpsions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assumpsions.js","sourceRoot":"","sources":["../../src/utils/assumpsions.ts"],"names":[],"mappings":"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"}
|