@restatedev/restate-sdk 1.11.1 → 1.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -9
- package/dist/_virtual/rolldown_runtime.cjs +9 -0
- package/dist/common_api.cjs +2 -1
- package/dist/common_api.d.cts +6 -2
- package/dist/common_api.d.cts.map +1 -1
- package/dist/common_api.d.ts +6 -2
- package/dist/common_api.d.ts.map +1 -1
- package/dist/common_api.js +2 -1
- package/dist/common_api.js.map +1 -1
- package/dist/context.cjs +13 -9
- package/dist/context.d.cts +36 -29
- package/dist/context.d.cts.map +1 -1
- package/dist/context.d.ts +36 -29
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +13 -9
- package/dist/context.js.map +1 -1
- package/dist/context_impl.cjs +150 -91
- package/dist/context_impl.d.cts +8 -0
- package/dist/context_impl.d.ts +8 -72
- package/dist/context_impl.d.ts.map +1 -1
- package/dist/context_impl.js +151 -93
- package/dist/context_impl.js.map +1 -1
- package/dist/endpoint/components.cjs +38 -22
- package/dist/endpoint/components.d.cts +5 -0
- package/dist/endpoint/components.d.ts +5 -97
- package/dist/endpoint/components.d.ts.map +1 -1
- package/dist/endpoint/components.js +38 -22
- package/dist/endpoint/components.js.map +1 -1
- package/dist/endpoint/endpoint.cjs +2 -2
- package/dist/endpoint/endpoint.d.cts +5 -0
- package/dist/endpoint/endpoint.d.ts +5 -39
- package/dist/endpoint/endpoint.js +2 -2
- package/dist/endpoint/endpoint.js.map +1 -1
- package/dist/endpoint/handlers/generic.cjs +113 -39
- package/dist/endpoint/handlers/generic.d.ts.map +1 -1
- package/dist/endpoint/handlers/generic.js +113 -39
- package/dist/endpoint/handlers/generic.js.map +1 -1
- package/dist/endpoint/handlers/types.d.cts +1 -0
- package/dist/endpoint/handlers/types.d.ts +1 -41
- package/dist/endpoint/handlers/utils.cjs +1 -1
- package/dist/endpoint/handlers/utils.js +1 -1
- package/dist/endpoint/handlers/vm/sdk_shared_core_wasm_bindings.cjs +43 -3
- package/dist/endpoint/handlers/vm/sdk_shared_core_wasm_bindings.d.ts +19 -1
- package/dist/endpoint/handlers/vm/sdk_shared_core_wasm_bindings.d.ts.map +1 -1
- package/dist/endpoint/handlers/vm/sdk_shared_core_wasm_bindings.js +43 -3
- package/dist/endpoint/handlers/vm/sdk_shared_core_wasm_bindings.js.map +1 -1
- package/dist/endpoint/node_endpoint.cjs +28 -12
- package/dist/endpoint/node_endpoint.d.ts +14 -2
- package/dist/endpoint/node_endpoint.d.ts.map +1 -1
- package/dist/endpoint/node_endpoint.js +27 -11
- package/dist/endpoint/node_endpoint.js.map +1 -1
- package/dist/endpoint/types.d.cts +1 -1
- package/dist/endpoint/types.d.ts +1 -1
- package/dist/endpoint.d.cts +87 -5
- package/dist/endpoint.d.cts.map +1 -1
- package/dist/endpoint.d.ts +87 -5
- package/dist/endpoint.d.ts.map +1 -1
- package/dist/error_sanitization.cjs +26 -0
- package/dist/error_sanitization.d.ts +13 -0
- package/dist/error_sanitization.d.ts.map +1 -0
- package/dist/error_sanitization.js +26 -0
- package/dist/error_sanitization.js.map +1 -0
- package/dist/fetch.cjs +3 -1
- package/dist/fetch.d.cts +5 -3
- package/dist/fetch.d.cts.map +1 -1
- package/dist/fetch.d.ts +5 -3
- package/dist/fetch.d.ts.map +1 -1
- package/dist/fetch.js +3 -2
- package/dist/fetch.js.map +1 -1
- package/dist/hooks.d.cts +87 -0
- package/dist/hooks.d.cts.map +1 -0
- package/dist/hooks.d.ts +87 -0
- package/dist/hooks.d.ts.map +1 -0
- package/dist/hooks.js +2 -0
- package/dist/hooks.js.map +1 -0
- package/dist/index.cjs +3 -1
- package/dist/index.d.cts +6 -4
- package/dist/index.d.ts +6 -4
- package/dist/index.js +3 -2
- package/dist/internal.cjs +3 -1
- package/dist/internal.d.cts +186 -2
- package/dist/internal.d.cts.map +1 -1
- package/dist/internal.d.ts +186 -2
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +4 -1
- package/dist/internal.js.map +1 -1
- package/dist/io.d.cts +1 -0
- package/dist/io.d.ts +1 -24
- package/dist/lambda.cjs +3 -1
- package/dist/lambda.d.cts +5 -3
- package/dist/lambda.d.cts.map +1 -1
- package/dist/lambda.d.ts +5 -3
- package/dist/lambda.d.ts.map +1 -1
- package/dist/lambda.js +3 -2
- package/dist/lambda.js.map +1 -1
- package/dist/logging/logger.d.cts +1 -0
- package/dist/logging/logger.d.ts +1 -10
- package/dist/node.cjs +23 -6
- package/dist/node.d.cts +46 -8
- package/dist/node.d.cts.map +1 -1
- package/dist/node.d.ts +46 -8
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +23 -7
- package/dist/node.js.map +1 -1
- package/dist/package.cjs +1 -1
- package/dist/package.js +1 -1
- package/dist/package.js.map +1 -1
- package/dist/promises.cjs +100 -53
- package/dist/promises.d.cts +18 -0
- package/dist/promises.d.cts.map +1 -0
- package/dist/promises.d.ts +15 -108
- package/dist/promises.d.ts.map +1 -1
- package/dist/promises.js +95 -48
- package/dist/promises.js.map +1 -1
- package/dist/types/errors.cjs +13 -0
- package/dist/types/errors.d.cts +11 -5
- package/dist/types/errors.d.cts.map +1 -1
- package/dist/types/errors.d.ts +11 -5
- package/dist/types/errors.d.ts.map +1 -1
- package/dist/types/errors.js +13 -1
- package/dist/types/errors.js.map +1 -1
- package/dist/types/rpc.cjs +7 -19
- package/dist/types/rpc.d.cts +185 -0
- package/dist/types/rpc.d.cts.map +1 -1
- package/dist/types/rpc.d.ts +185 -0
- package/dist/types/rpc.d.ts.map +1 -1
- package/dist/types/rpc.js +7 -19
- package/dist/types/rpc.js.map +1 -1
- package/package.json +2 -2
package/dist/context_impl.d.ts
CHANGED
|
@@ -1,72 +1,8 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import { PromisesExecutor } from "./promises.js";
|
|
10
|
-
import type { ContextInternal } from "./internal.js";
|
|
11
|
-
import { InputReader, OutputWriter } from "./endpoint/handlers/types.js";
|
|
12
|
-
export declare class ContextImpl implements ObjectContext, WorkflowContext, ContextInternal {
|
|
13
|
-
readonly coreVm: vm.WasmVM;
|
|
14
|
-
readonly console: Console;
|
|
15
|
-
readonly handlerKind: HandlerKind;
|
|
16
|
-
readonly vmLogger: Console;
|
|
17
|
-
private readonly invocationRequest;
|
|
18
|
-
private readonly invocationEndPromise;
|
|
19
|
-
readonly journalValueCodec: JournalValueCodec;
|
|
20
|
-
private readonly asTerminalError?;
|
|
21
|
-
readonly rand: Rand;
|
|
22
|
-
readonly date: ContextDate;
|
|
23
|
-
private readonly outputPump;
|
|
24
|
-
private readonly runClosuresTracker;
|
|
25
|
-
readonly promisesExecutor: PromisesExecutor;
|
|
26
|
-
readonly defaultSerde: Serde<any>;
|
|
27
|
-
private readonly serviceKey;
|
|
28
|
-
constructor(coreVm: vm.WasmVM, input: vm.WasmInput, console: Console, handlerKind: HandlerKind, vmLogger: Console, invocationRequest: Request, invocationEndPromise: CompletablePromise<void>, inputReader: InputReader, outputWriter: OutputWriter, journalValueCodec: JournalValueCodec, defaultSerde?: Serde<any>, asTerminalError?: ((error: any) => TerminalError | undefined) | undefined);
|
|
29
|
-
isProcessing(): boolean;
|
|
30
|
-
cancel(invocationId: InvocationId): void;
|
|
31
|
-
attach<T>(invocationId: InvocationId, serde?: Serde<T>): RestatePromise<T>;
|
|
32
|
-
get key(): string;
|
|
33
|
-
request(): Request;
|
|
34
|
-
get<T>(name: string, serde?: Serde<T>): RestatePromise<T | null>;
|
|
35
|
-
stateKeys(): RestatePromise<Array<string>>;
|
|
36
|
-
set<T>(name: string, value: T, serde?: Serde<T>): void;
|
|
37
|
-
clear(name: string): void;
|
|
38
|
-
clearAll(): void;
|
|
39
|
-
genericCall<REQ = Uint8Array, RES = Uint8Array>(call: GenericCall<REQ, RES>): InvocationPromise<RES>;
|
|
40
|
-
genericSend<REQ = Uint8Array>(send: GenericSend<REQ>): InvocationHandle;
|
|
41
|
-
serviceClient<D>({ name }: ServiceDefinitionFrom<D>): Client<Service<D>>;
|
|
42
|
-
objectClient<D>({ name }: VirtualObjectDefinitionFrom<D>, key: string): Client<VirtualObject<D>>;
|
|
43
|
-
workflowClient<D>({ name }: WorkflowDefinitionFrom<D>, key: string): Client<Workflow<D>>;
|
|
44
|
-
serviceSendClient<D>({ name }: ServiceDefinitionFrom<D>, opts?: SendOptions): SendClient<Service<D>>;
|
|
45
|
-
objectSendClient<D>({ name }: VirtualObjectDefinitionFrom<D>, key: string, opts?: SendOptions): SendClient<VirtualObject<D>>;
|
|
46
|
-
workflowSendClient<D>({ name }: WorkflowDefinitionFrom<D>, key: string, opts?: SendOptions): SendClient<Workflow<D>>;
|
|
47
|
-
run<T>(nameOrAction: string | RunAction<T>, actionSecondParameter?: RunAction<T>, options?: RunOptions<T>): RestatePromise<T>;
|
|
48
|
-
sleep(duration: number | Duration, name?: string): RestatePromise<void>;
|
|
49
|
-
awakeable<T>(serde?: Serde<T>): {
|
|
50
|
-
id: string;
|
|
51
|
-
promise: RestatePromise<T>;
|
|
52
|
-
};
|
|
53
|
-
resolveAwakeable<T>(id: string, payload?: T, serde?: Serde<T>): void;
|
|
54
|
-
rejectAwakeable(id: string, reason: string): void;
|
|
55
|
-
promise<T>(name: string, serde?: Serde<T>): DurablePromise<T>;
|
|
56
|
-
static createCombinator<T extends readonly RestatePromise<unknown>[]>(combinatorConstructor: (promises: Promise<any>[]) => Promise<any>, promises: T): RestatePromise<unknown>;
|
|
57
|
-
private processNonCompletableEntry;
|
|
58
|
-
processCompletableEntry<T, U>(commandType: vm.WasmCommandType, prepare: () => T, vmCall: (vm: vm.WasmVM, t: T) => number, ...completers: Array<Completer>): RestatePromise<U>;
|
|
59
|
-
promiseExecutorErrorCallback(e: unknown): void;
|
|
60
|
-
handleInvocationEndError(e: unknown, notify_vm_error?: (vm: vm.WasmVM, error: Error) => void): void;
|
|
61
|
-
}
|
|
62
|
-
export declare class RunClosuresTracker {
|
|
63
|
-
private currentRunWaitPoint?;
|
|
64
|
-
private runsToExecute;
|
|
65
|
-
executeRun(handle: number): void;
|
|
66
|
-
registerRunClosure(handle: number, runClosure: () => Promise<any>): void;
|
|
67
|
-
awaitNextCompletedRun(): Promise<void>;
|
|
68
|
-
private unblockCurrentRunWaitPoint;
|
|
69
|
-
}
|
|
70
|
-
type Completer = (value: AsyncResultValue, prom: CompletablePromise<any>) => Promise<boolean>;
|
|
71
|
-
export {};
|
|
72
|
-
//# sourceMappingURL=context_impl.d.ts.map
|
|
1
|
+
import "./types/errors.js";
|
|
2
|
+
import "./types/rpc.js";
|
|
3
|
+
import "./context.js";
|
|
4
|
+
import "./internal.js";
|
|
5
|
+
import "./endpoint/components.js";
|
|
6
|
+
import "./endpoint/handlers/types.js";
|
|
7
|
+
import "./promises.js";
|
|
8
|
+
import { Duration, JournalValueCodec, Serde, Service, ServiceDefinitionFrom, VirtualObject, VirtualObjectDefinitionFrom, Workflow, WorkflowDefinitionFrom } from "@restatedev/restate-sdk-core";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context_impl.d.ts","sourceRoot":"","sources":["../src/context_impl.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EACd,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,IAAI,EACJ,OAAO,EACP,cAAc,EACd,SAAS,EACT,UAAU,EACV,
|
|
1
|
+
{"version":3,"file":"context_impl.d.ts","sourceRoot":"","sources":["../src/context_impl.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EACd,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,IAAI,EACJ,OAAO,EACP,cAAc,EACd,SAAS,EACT,UAAU,EACV,eAAe,EAChB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,KAAK,EAAE,MAAM,yDAAyD,CAAC;AACnF,OAAO,EACL,eAAe,EAEf,SAAS,EACT,MAAM,EACP,MAAM,yDAAyD,CAAC;AACjE,OAAO,EAIL,aAAa,EAEd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EACL,WAAW,EAGZ,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EACV,QAAQ,EACR,iBAAiB,EACjB,KAAK,EACL,OAAO,EACP,qBAAqB,EACrB,aAAa,EACb,2BAA2B,EAC3B,QAAQ,EACR,sBAAsB,EACvB,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAA4B,MAAM,eAAe,CAAC;AAC3E,OAAO,EAGL,gBAAgB,EAGjB,MAAM,eAAe,CAAC;AAEvB,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EAEpB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,qBAAa,WACX,YAAW,aAAa,EAAE,eAAe,EAAE,eAAe;IA8BxD,QAAQ,CAAC,MAAM,EAAE,MAAM;aAEP,OAAO,EAAE,OAAO;aAChB,WAAW,EAAE,WAAW;IACxC,QAAQ,CAAC,QAAQ,EAAE,OAAO;IAC1B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,QAAQ,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,IAAI,CAAC;IAGvD,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB;IArC/C,SAAgB,IAAI,EAAE,IAAI,CAAC;IAE3B,SAAgB,IAAI,EAAE,WAAW,CAQ/B;IAEF,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IACxD,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAC5C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,cAAc,CAGH;IACnB,OAAO,CAAC,mBAAmB,CAAC,CAA6B;IACzD,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAA4C;IAG7E,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAAiC;gBAGnE,MAAM,EAAE,MAAM,EACvB,KAAK,EAAE,SAAS,EACA,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,WAAW,EAC/B,QAAQ,EAAE,OAAO,EACT,iBAAiB,EAAE,OAAO,EAClC,oBAAoB,EAAE,kBAAkB,CAAC,IAAI,CAAC,EACvD,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,EACjB,iBAAiB,EAAE,iBAAiB,EAC7C,gBAAgB,CAAC,EAAE,gBAAgB;IA6BrC,iBAAiB,CACf,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC;IAK3E,YAAY,IAAI,OAAO;IAIvB,MAAM,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI;IAIxC,OAAO,CAAC,OAAO;IAQf,MAAM,CAAC,CAAC,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;IAU1E,IAAW,GAAG,IAAI,MAAM,CAUvB;IAEM,OAAO,IAAI,OAAO;IAIlB,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,GAAG,IAAI,CAAC;IAUhE,SAAS,IAAI,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAS1C,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI;IAWtD,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAQzB,QAAQ,IAAI,IAAI;IAUhB,WAAW,CAAC,GAAG,GAAG,UAAU,EAAE,GAAG,GAAG,UAAU,EACnD,IAAI,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,GAC1B,iBAAiB,CAAC,GAAG,CAAC;IAoElB,WAAW,CAAC,GAAG,GAAG,UAAU,EACjC,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,GACrB,gBAAgB;IAwDnB,aAAa,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IASxE,YAAY,CAAC,CAAC,EACZ,EAAE,IAAI,EAAE,EAAE,2BAA2B,CAAC,CAAC,CAAC,EACxC,GAAG,EAAE,MAAM,GACV,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAS3B,cAAc,CAAC,CAAC,EACd,EAAE,IAAI,EAAE,EAAE,sBAAsB,CAAC,CAAC,CAAC,EACnC,GAAG,EAAE,MAAM,GACV,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IASf,iBAAiB,CAAC,CAAC,EAAE,EAC1B,IAAI,GACL,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAS7C,gBAAgB,CAAC,CAAC,EACvB,EAAE,IAAI,EAAE,EAAE,2BAA2B,CAAC,CAAC,CAAC,EACxC,GAAG,EAAE,MAAM,GACV,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAS/B,kBAAkB,CAAC,CAAC,EAClB,EAAE,IAAI,EAAE,EAAE,sBAAsB,CAAC,CAAC,CAAC,EACnC,GAAG,EAAE,MAAM,GACV,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAanB,GAAG,CAAC,CAAC,EACV,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,EACnC,qBAAqB,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EACpC,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,GACtB,cAAc,CAAC,CAAC,CAAC;IA+Hb,KAAK,CACV,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAC3B,IAAI,CAAC,EAAE,MAAM,GACZ,cAAc,CAAC,IAAI,CAAC;IAsBhB,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG;QACrC,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;KAC5B;IA0BM,gBAAgB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI;IAsBpE,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;IAYjE,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;IAoB5D,UAAU,CAAC,YAAY,EAAE,YAAY,GAAG,mBAAmB;IAI3D,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;IAIpE,YAAY,IAAI,cAAc,CAAC,IAAI,CAAC;IAYpC,mBAAmB,IAAI,cAAc,CAAC,YAAY,EAAE,CAAC;IA6BrD,0BAA0B,CAAC,CAAC,EAC1B,WAAW,EAAE,EAAE,CAAC,eAAe,EAC/B,OAAO,EAAE,MAAM,CAAC,EAChB,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,KAAK,IAAI;IAiB3C,uBAAuB,CAAC,CAAC,EAAE,CAAC,EAC1B,WAAW,EAAE,EAAE,CAAC,eAAe,EAC/B,OAAO,EAAE,MAAM,CAAC,EAChB,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,KAAK,MAAM,EACvC,GAAG,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,GAC9B,cAAc,CAAC,CAAC,CAAC;IAwBpB,YAAY,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,eAAe;CASvD;AA6KD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,mBAAmB,CAAC,CAA2B;IACvD,OAAO,CAAC,aAAa,CAGjB;IAEJ,UAAU,CAAC,MAAM,EAAE,MAAM;IAYzB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC;IAIjE,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAOtC,OAAO,CAAC,0BAA0B;CAOnC;AAID,KAAK,SAAS,GAAG,CACf,KAAK,EAAE,gBAAgB,EACvB,IAAI,EAAE,kBAAkB,CAAC,GAAG,CAAC,KAC1B,OAAO,CAAC,OAAO,CAAC,CAAC;AAStB,qBAAa,YAAa,SAAQ,KAAK;aAQjB,KAAK,EAAE,OAAO;IAChC,QAAQ,CAAC,WAAW,EAAE,eAAe;IACrC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM;gBATpB,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,eAAe;gBAEtD,KAAK,EAAE,OAAO,EACd,WAAW,EAAE,eAAe,EAC5B,YAAY,EAAE,MAAM;IAWtB,gFAAgF;IAChF,IAAI,eAAe,IAAI,OAAO,CAE7B;CACF"}
|
package/dist/context_impl.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { INTERNAL_ERROR_CODE, RetryableError, TerminalError, UNKNOWN_ERROR_CODE, ensureError } from "./types/errors.js";
|
|
2
|
+
import { CompletablePromise } from "./utils/completable_promise.js";
|
|
3
|
+
import { CombinatorRestatePromise, ConstRestatePromise, InvocationRestatePromise, PromisesExecutor, SingleRestatePromise, pendingPromise } from "./promises.js";
|
|
3
4
|
import { HandlerKind, makeRpcCallProxy, makeRpcSendProxy } from "./types/rpc.js";
|
|
5
|
+
import { WasmCommandType, WasmHeader } from "./endpoint/handlers/vm/sdk_shared_core_wasm_bindings.js";
|
|
4
6
|
import { RandImpl } from "./utils/rand.js";
|
|
5
|
-
import { CompletablePromise } from "./utils/completable_promise.js";
|
|
6
|
-
import { InvocationPendingPromise, PromisesExecutor, RestateCombinatorPromise, RestateInvocationPromise, RestatePendingPromise, RestateSinglePromise, extractContext, pendingPromise } from "./promises.js";
|
|
7
7
|
import { InputPump, OutputPump } from "./io.js";
|
|
8
8
|
import { millisOrDurationToMillis, serde } from "@restatedev/restate-sdk-core";
|
|
9
9
|
|
|
@@ -21,9 +21,13 @@ var ContextImpl = class {
|
|
|
21
21
|
outputPump;
|
|
22
22
|
runClosuresTracker;
|
|
23
23
|
promisesExecutor;
|
|
24
|
-
defaultSerde;
|
|
25
24
|
serviceKey;
|
|
26
|
-
|
|
25
|
+
runInterceptor;
|
|
26
|
+
cancellationPromise;
|
|
27
|
+
defaultSerde;
|
|
28
|
+
asTerminalError;
|
|
29
|
+
trackedInvocationIdPromises;
|
|
30
|
+
constructor(coreVm, input, console, handlerKind, vmLogger, invocationRequest, invocationEndPromise, inputReader, outputWriter, journalValueCodec, executionOptions) {
|
|
27
31
|
this.coreVm = coreVm;
|
|
28
32
|
this.console = console;
|
|
29
33
|
this.handlerKind = handlerKind;
|
|
@@ -31,18 +35,26 @@ var ContextImpl = class {
|
|
|
31
35
|
this.invocationRequest = invocationRequest;
|
|
32
36
|
this.invocationEndPromise = invocationEndPromise;
|
|
33
37
|
this.journalValueCodec = journalValueCodec;
|
|
34
|
-
this.asTerminalError = asTerminalError;
|
|
35
38
|
this.rand = new RandImpl(input.random_seed, () => {});
|
|
36
39
|
this.outputPump = new OutputPump(coreVm, outputWriter);
|
|
37
40
|
this.runClosuresTracker = new RunClosuresTracker();
|
|
38
|
-
this.promisesExecutor = new PromisesExecutor(coreVm, new InputPump(coreVm, inputReader, this.
|
|
39
|
-
this.defaultSerde = defaultSerde ?? serde.json;
|
|
41
|
+
this.promisesExecutor = new PromisesExecutor(coreVm, new InputPump(coreVm, inputReader, this.abortAttempt.bind(this)), this.outputPump, this.runClosuresTracker, this.abortAttempt.bind(this));
|
|
40
42
|
this.serviceKey = input.key;
|
|
43
|
+
this.runInterceptor = (_name, runner) => runner();
|
|
44
|
+
this.defaultSerde = executionOptions?.defaultSerde ?? serde.json;
|
|
45
|
+
this.asTerminalError = executionOptions?.asTerminalError;
|
|
46
|
+
this.trackedInvocationIdPromises = executionOptions?.explicitCancellation ? [] : void 0;
|
|
47
|
+
}
|
|
48
|
+
setRunInterceptor(interceptor) {
|
|
49
|
+
this.runInterceptor = interceptor;
|
|
41
50
|
}
|
|
42
51
|
isProcessing() {
|
|
43
52
|
return this.coreVm.is_processing();
|
|
44
53
|
}
|
|
45
54
|
cancel(invocationId) {
|
|
55
|
+
this._cancel(invocationId);
|
|
56
|
+
}
|
|
57
|
+
_cancel(invocationId) {
|
|
46
58
|
this.processNonCompletableEntry(WasmCommandType.CancelInvocation, () => {}, (vm) => vm.sys_cancel_invocation(invocationId));
|
|
47
59
|
}
|
|
48
60
|
attach(invocationId, serde$1) {
|
|
@@ -81,17 +93,18 @@ var ContextImpl = class {
|
|
|
81
93
|
try {
|
|
82
94
|
parameter = this.journalValueCodec.encode(requestSerde.serialize(call.parameter));
|
|
83
95
|
} catch (e) {
|
|
84
|
-
this.
|
|
85
|
-
return
|
|
96
|
+
this.abortAttempt(e, WasmCommandType.Call);
|
|
97
|
+
return Object.assign(ConstRestatePromise.pending(), { invocationId: pendingPromise() });
|
|
86
98
|
}
|
|
87
99
|
try {
|
|
88
100
|
const call_handles = this.coreVm.sys_call(call.service, call.method, parameter, call.key, call.headers ? Object.entries(call.headers).map(([key, value]) => new WasmHeader(key, value)) : [], call.idempotencyKey, call.name);
|
|
89
101
|
const commandIndex = this.coreVm.last_command_index();
|
|
90
|
-
const invocationIdPromise = new
|
|
91
|
-
|
|
102
|
+
const invocationIdPromise = new SingleRestatePromise(this, call_handles.invocation_id_completion_id, completeCommandPromiseUsing(WasmCommandType.Call, commandIndex, InvocationIdCompleter));
|
|
103
|
+
this.trackedInvocationIdPromises?.push(invocationIdPromise);
|
|
104
|
+
return new InvocationRestatePromise(this, call_handles.call_completion_id, completeCommandPromiseUsing(WasmCommandType.Call, commandIndex, SuccessWithSerde(responseSerde, this.journalValueCodec), Failure), invocationIdPromise);
|
|
92
105
|
} catch (e) {
|
|
93
|
-
this.
|
|
94
|
-
return
|
|
106
|
+
this.abortAttempt(e);
|
|
107
|
+
return Object.assign(ConstRestatePromise.pending(), { invocationId: pendingPromise() });
|
|
95
108
|
}
|
|
96
109
|
}
|
|
97
110
|
genericSend(send) {
|
|
@@ -100,16 +113,16 @@ var ContextImpl = class {
|
|
|
100
113
|
try {
|
|
101
114
|
parameter = this.journalValueCodec.encode(requestSerde.serialize(send.parameter));
|
|
102
115
|
} catch (e) {
|
|
103
|
-
this.
|
|
104
|
-
return
|
|
116
|
+
this.abortAttempt(e, WasmCommandType.OneWayCall);
|
|
117
|
+
return Object.assign(ConstRestatePromise.pending(), { invocationId: pendingPromise() });
|
|
105
118
|
}
|
|
106
119
|
try {
|
|
107
120
|
const delay = send.delay !== void 0 ? millisOrDurationToMillis(send.delay) : void 0;
|
|
108
121
|
const handles = this.coreVm.sys_send(send.service, send.method, parameter, send.key, send.headers ? Object.entries(send.headers).map(([key, value]) => new WasmHeader(key, value)) : [], delay !== void 0 && delay > 0 ? BigInt(delay) : void 0, send.idempotencyKey, send.name);
|
|
109
122
|
const commandIndex = this.coreVm.last_command_index();
|
|
110
|
-
return { invocationId: new
|
|
123
|
+
return { invocationId: new SingleRestatePromise(this, handles.invocation_id_completion_id, completeCommandPromiseUsing(WasmCommandType.OneWayCall, commandIndex, InvocationIdCompleter)) };
|
|
111
124
|
} catch (e) {
|
|
112
|
-
this.
|
|
125
|
+
this.abortAttempt(e);
|
|
113
126
|
return { invocationId: pendingPromise() };
|
|
114
127
|
}
|
|
115
128
|
}
|
|
@@ -122,14 +135,14 @@ var ContextImpl = class {
|
|
|
122
135
|
workflowClient({ name }, key) {
|
|
123
136
|
return makeRpcCallProxy((call) => this.genericCall(call), this.defaultSerde, name, key);
|
|
124
137
|
}
|
|
125
|
-
serviceSendClient({ name }
|
|
126
|
-
return makeRpcSendProxy((send) => this.genericSend(send), this.defaultSerde, name, void 0
|
|
138
|
+
serviceSendClient({ name }) {
|
|
139
|
+
return makeRpcSendProxy((send) => this.genericSend(send), this.defaultSerde, name, void 0);
|
|
127
140
|
}
|
|
128
|
-
objectSendClient({ name }, key
|
|
129
|
-
return makeRpcSendProxy((send) => this.genericSend(send), this.defaultSerde, name, key
|
|
141
|
+
objectSendClient({ name }, key) {
|
|
142
|
+
return makeRpcSendProxy((send) => this.genericSend(send), this.defaultSerde, name, key);
|
|
130
143
|
}
|
|
131
|
-
workflowSendClient({ name }, key
|
|
132
|
-
return makeRpcSendProxy((send) => this.genericSend(send), this.defaultSerde, name, key
|
|
144
|
+
workflowSendClient({ name }, key) {
|
|
145
|
+
return makeRpcSendProxy((send) => this.genericSend(send), this.defaultSerde, name, key);
|
|
133
146
|
}
|
|
134
147
|
run(nameOrAction, actionSecondParameter, options) {
|
|
135
148
|
const { name, action } = unpackRunParameters(nameOrAction, actionSecondParameter);
|
|
@@ -138,8 +151,8 @@ var ContextImpl = class {
|
|
|
138
151
|
try {
|
|
139
152
|
handle = this.coreVm.sys_run(name ?? "");
|
|
140
153
|
} catch (e) {
|
|
141
|
-
this.
|
|
142
|
-
return
|
|
154
|
+
this.abortAttempt(e);
|
|
155
|
+
return ConstRestatePromise.pending();
|
|
143
156
|
}
|
|
144
157
|
const commandIndex = this.coreVm.last_command_index();
|
|
145
158
|
const doRun = async () => {
|
|
@@ -147,7 +160,9 @@ var ContextImpl = class {
|
|
|
147
160
|
let res;
|
|
148
161
|
let err;
|
|
149
162
|
try {
|
|
150
|
-
|
|
163
|
+
await this.runInterceptor(name ?? "", async () => {
|
|
164
|
+
res = await action();
|
|
165
|
+
});
|
|
151
166
|
} catch (e) {
|
|
152
167
|
err = ensureError(e, this.asTerminalError);
|
|
153
168
|
}
|
|
@@ -161,22 +176,17 @@ var ContextImpl = class {
|
|
|
161
176
|
value
|
|
162
177
|
}))
|
|
163
178
|
});
|
|
164
|
-
else if (err instanceof RetryableError)
|
|
165
|
-
|
|
166
|
-
this.coreVm.propose_run_completion_failure_transient_with_delay_override(handle, err.message, err.stack, BigInt(attemptDuration), err.retryAfter !== void 0 ? BigInt(millisOrDurationToMillis(err.retryAfter)) : void 0, options?.maxRetryAttempts, maxRetryDuration !== void 0 ? BigInt(millisOrDurationToMillis(maxRetryDuration)) : void 0);
|
|
167
|
-
} else {
|
|
179
|
+
else if (err instanceof RetryableError) this.coreVm.propose_run_completion_failure_transient_with_delay_override(handle, err.message, err.stack, BigInt(attemptDuration), err.retryAfter !== void 0 ? BigInt(millisOrDurationToMillis(err.retryAfter)) : void 0, options?.maxRetryAttempts, options?.maxRetryDuration !== void 0 ? BigInt(millisOrDurationToMillis(options?.maxRetryDuration)) : void 0);
|
|
180
|
+
else {
|
|
168
181
|
this.vmLogger.warn(`Error when processing ctx.run '${name}'.\n`, err);
|
|
169
182
|
let retryPolicy;
|
|
170
|
-
if (options?.retryIntervalFactor !== void 0 || options?.maxRetryAttempts !== void 0 || options?.initialRetryInterval !== void 0 || options?.
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
max_interval: millisOrDurationToMillis(options?.maxRetryInterval ?? options?.maxRetryIntervalMillis ?? { seconds: 10 })
|
|
178
|
-
};
|
|
179
|
-
}
|
|
183
|
+
if (options?.retryIntervalFactor !== void 0 || options?.maxRetryAttempts !== void 0 || options?.initialRetryInterval !== void 0 || options?.maxRetryDuration !== void 0 || options?.maxRetryInterval !== void 0) retryPolicy = {
|
|
184
|
+
factor: options?.retryIntervalFactor ?? 2,
|
|
185
|
+
initial_interval: millisOrDurationToMillis(options?.initialRetryInterval ?? 50),
|
|
186
|
+
max_attempts: options?.maxRetryAttempts,
|
|
187
|
+
max_duration: options?.maxRetryDuration === void 0 ? void 0 : millisOrDurationToMillis(options?.maxRetryDuration),
|
|
188
|
+
max_interval: millisOrDurationToMillis(options?.maxRetryInterval ?? { seconds: 10 })
|
|
189
|
+
};
|
|
180
190
|
this.coreVm.propose_run_completion_failure_transient(handle, err.message, err.stack, BigInt(attemptDuration), retryPolicy);
|
|
181
191
|
}
|
|
182
192
|
else {
|
|
@@ -185,13 +195,13 @@ var ContextImpl = class {
|
|
|
185
195
|
this.coreVm.propose_run_completion_success(handle, encodedRes);
|
|
186
196
|
}
|
|
187
197
|
} catch (e) {
|
|
188
|
-
this.
|
|
198
|
+
this.abortAttempt(e);
|
|
189
199
|
return pendingPromise();
|
|
190
200
|
}
|
|
191
201
|
await this.outputPump.awaitNextProgress();
|
|
192
202
|
};
|
|
193
203
|
this.runClosuresTracker.registerRunClosure(handle, doRun);
|
|
194
|
-
return new
|
|
204
|
+
return new SingleRestatePromise(this, handle, completeCommandPromiseUsing(WasmCommandType.Run, commandIndex, SuccessWithSerde(serde$1, this.journalValueCodec), Failure));
|
|
195
205
|
}
|
|
196
206
|
sleep(duration, name) {
|
|
197
207
|
return this.processCompletableEntry(WasmCommandType.Sleep, () => {
|
|
@@ -206,15 +216,15 @@ var ContextImpl = class {
|
|
|
206
216
|
try {
|
|
207
217
|
awakeable = this.coreVm.sys_awakeable();
|
|
208
218
|
} catch (e) {
|
|
209
|
-
this.
|
|
219
|
+
this.abortAttempt(e);
|
|
210
220
|
return {
|
|
211
221
|
id: "invalid",
|
|
212
|
-
promise:
|
|
222
|
+
promise: ConstRestatePromise.pending()
|
|
213
223
|
};
|
|
214
224
|
}
|
|
215
225
|
return {
|
|
216
226
|
id: awakeable.id,
|
|
217
|
-
promise: new
|
|
227
|
+
promise: new SingleRestatePromise(this, awakeable.handle, completeSignalPromiseUsing(VoidAsUndefined, SuccessWithSerde(serde$1 ?? this.defaultSerde, this.journalValueCodec), Failure))
|
|
218
228
|
};
|
|
219
229
|
}
|
|
220
230
|
resolveAwakeable(id, payload, serde$1) {
|
|
@@ -227,41 +237,53 @@ var ContextImpl = class {
|
|
|
227
237
|
}
|
|
228
238
|
rejectAwakeable(id, reason) {
|
|
229
239
|
this.processNonCompletableEntry(WasmCommandType.CompleteAwakeable, () => {}, (vm) => {
|
|
230
|
-
vm.sys_complete_awakeable_failure(id,
|
|
231
|
-
code: UNKNOWN_ERROR_CODE,
|
|
232
|
-
message: reason,
|
|
233
|
-
metadata: []
|
|
234
|
-
});
|
|
240
|
+
vm.sys_complete_awakeable_failure(id, toWasmFailure(reason));
|
|
235
241
|
});
|
|
236
242
|
}
|
|
243
|
+
signal(name, serde$1) {
|
|
244
|
+
let handle;
|
|
245
|
+
try {
|
|
246
|
+
handle = this.coreVm.sys_signal(name);
|
|
247
|
+
} catch (e) {
|
|
248
|
+
this.abortAttempt(e);
|
|
249
|
+
return ConstRestatePromise.pending();
|
|
250
|
+
}
|
|
251
|
+
return new SingleRestatePromise(this, handle, completeSignalPromiseUsing(VoidAsUndefined, SuccessWithSerde(serde$1 ?? this.defaultSerde, this.journalValueCodec), Failure));
|
|
252
|
+
}
|
|
253
|
+
invocation(invocationId) {
|
|
254
|
+
return new InvocationReferenceImpl(this, invocationId);
|
|
255
|
+
}
|
|
237
256
|
promise(name, serde$1) {
|
|
238
257
|
return new DurablePromiseImpl(this, name, serde$1);
|
|
239
258
|
}
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
259
|
+
cancellation() {
|
|
260
|
+
if (!this.cancellationPromise || this.cancellationPromise.isCompleted()) this.cancellationPromise = new SingleRestatePromise(this, 1, completeSignalPromiseUsing(VoidAsUndefined));
|
|
261
|
+
return this.cancellationPromise;
|
|
262
|
+
}
|
|
263
|
+
cancelPreviousCalls() {
|
|
264
|
+
if (!this.trackedInvocationIdPromises) return ConstRestatePromise.resolve([]);
|
|
265
|
+
return CombinatorRestatePromise.fromPromises((p) => Promise.allSettled(p), this.trackedInvocationIdPromises.splice(0)).map((results, failure) => {
|
|
266
|
+
if (failure) throw failure;
|
|
267
|
+
const cancelled = [];
|
|
268
|
+
for (const result of results) if (result.status === "fulfilled") {
|
|
269
|
+
this._cancel(result.value);
|
|
270
|
+
cancelled.push(result.value);
|
|
271
|
+
} else this.console.warn(`Error when trying to get invocation id: ${result.reason}`);
|
|
272
|
+
return cancelled;
|
|
273
|
+
});
|
|
252
274
|
}
|
|
253
275
|
processNonCompletableEntry(commandType, prepare, vmCall) {
|
|
254
276
|
let input;
|
|
255
277
|
try {
|
|
256
278
|
input = prepare();
|
|
257
279
|
} catch (e) {
|
|
258
|
-
this.
|
|
280
|
+
this.abortAttempt(e, commandType);
|
|
259
281
|
return;
|
|
260
282
|
}
|
|
261
283
|
try {
|
|
262
284
|
vmCall(this.coreVm, input);
|
|
263
285
|
} catch (e) {
|
|
264
|
-
this.
|
|
286
|
+
this.abortAttempt(e);
|
|
265
287
|
}
|
|
266
288
|
}
|
|
267
289
|
processCompletableEntry(commandType, prepare, vmCall, ...completers) {
|
|
@@ -269,40 +291,38 @@ var ContextImpl = class {
|
|
|
269
291
|
try {
|
|
270
292
|
input = prepare();
|
|
271
293
|
} catch (e) {
|
|
272
|
-
this.
|
|
273
|
-
return
|
|
294
|
+
this.abortAttempt(e, commandType);
|
|
295
|
+
return ConstRestatePromise.pending();
|
|
274
296
|
}
|
|
275
297
|
let handle;
|
|
276
298
|
try {
|
|
277
299
|
handle = vmCall(this.coreVm, input);
|
|
278
300
|
} catch (e) {
|
|
279
|
-
this.
|
|
280
|
-
return
|
|
301
|
+
this.abortAttempt(e);
|
|
302
|
+
return ConstRestatePromise.pending();
|
|
281
303
|
}
|
|
282
304
|
const commandIndex = this.coreVm.last_command_index();
|
|
283
|
-
return new
|
|
284
|
-
}
|
|
285
|
-
promiseExecutorErrorCallback(e) {
|
|
286
|
-
if (e instanceof AsyncCompleterError) {
|
|
287
|
-
const cause = ensureError(e.cause);
|
|
288
|
-
logError(this.vmLogger, e.cause);
|
|
289
|
-
this.coreVm.notify_error_for_specific_command(cause.message, cause.stack, e.commandType, e.commandIndex, null);
|
|
290
|
-
} else {
|
|
291
|
-
const error = ensureError(e);
|
|
292
|
-
logError(this.vmLogger, error);
|
|
293
|
-
if (!(error instanceof RestateError)) this.coreVm.notify_error(error.message, error.stack);
|
|
294
|
-
}
|
|
295
|
-
this.invocationEndPromise.resolve();
|
|
305
|
+
return new SingleRestatePromise(this, handle, completeCommandPromiseUsing(commandType, commandIndex, ...completers));
|
|
296
306
|
}
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
}) {
|
|
300
|
-
const error = ensureError(e);
|
|
301
|
-
logError(this.vmLogger, error);
|
|
302
|
-
notify_vm_error(this.coreVm, error);
|
|
303
|
-
this.invocationEndPromise.resolve();
|
|
307
|
+
abortAttempt(e, commandType) {
|
|
308
|
+
this.invocationEndPromise.reject(commandType !== void 0 ? new CommandError(e, commandType) : ensureError(e));
|
|
304
309
|
}
|
|
305
310
|
};
|
|
311
|
+
function toWasmFailure(reason) {
|
|
312
|
+
if (typeof reason === "string") return {
|
|
313
|
+
code: UNKNOWN_ERROR_CODE,
|
|
314
|
+
message: reason,
|
|
315
|
+
metadata: []
|
|
316
|
+
};
|
|
317
|
+
return {
|
|
318
|
+
code: reason.code,
|
|
319
|
+
message: reason.message,
|
|
320
|
+
metadata: Object.entries(reason.metadata ?? {}).map(([key, value]) => ({
|
|
321
|
+
key,
|
|
322
|
+
value
|
|
323
|
+
}))
|
|
324
|
+
};
|
|
325
|
+
}
|
|
306
326
|
function unpackRunParameters(a, b) {
|
|
307
327
|
if (typeof a === "string") {
|
|
308
328
|
if (typeof b !== "function") throw new TypeError("");
|
|
@@ -315,6 +335,38 @@ function unpackRunParameters(a, b) {
|
|
|
315
335
|
if (b) throw new TypeError("unexpected a function as a second parameter.");
|
|
316
336
|
return { action: a };
|
|
317
337
|
}
|
|
338
|
+
var InvocationReferenceImpl = class {
|
|
339
|
+
constructor(ctx, invocationId) {
|
|
340
|
+
this.ctx = ctx;
|
|
341
|
+
this.invocationId = invocationId;
|
|
342
|
+
}
|
|
343
|
+
signal(name, serde$1) {
|
|
344
|
+
return new SignalReferenceImpl(this.ctx, this.invocationId, name, serde$1);
|
|
345
|
+
}
|
|
346
|
+
cancel() {
|
|
347
|
+
this.ctx.cancel(this.invocationId);
|
|
348
|
+
}
|
|
349
|
+
attach(serde$1) {
|
|
350
|
+
return this.ctx.attach(this.invocationId, serde$1);
|
|
351
|
+
}
|
|
352
|
+
};
|
|
353
|
+
var SignalReferenceImpl = class {
|
|
354
|
+
serde;
|
|
355
|
+
constructor(ctx, invocationId, name, serde$1) {
|
|
356
|
+
this.ctx = ctx;
|
|
357
|
+
this.invocationId = invocationId;
|
|
358
|
+
this.name = name;
|
|
359
|
+
this.serde = serde$1 ?? this.ctx.defaultSerde;
|
|
360
|
+
}
|
|
361
|
+
resolve(payload) {
|
|
362
|
+
this.ctx.processNonCompletableEntry(WasmCommandType.SendSignal, () => this.ctx.journalValueCodec.encode(this.serde.serialize(payload)), (vm, bytes) => vm.sys_complete_signal_success(this.invocationId, this.name, bytes));
|
|
363
|
+
}
|
|
364
|
+
reject(reason) {
|
|
365
|
+
this.ctx.processNonCompletableEntry(WasmCommandType.SendSignal, () => {}, (vm) => {
|
|
366
|
+
vm.sys_complete_signal_failure(this.invocationId, this.name, toWasmFailure(reason));
|
|
367
|
+
});
|
|
368
|
+
}
|
|
369
|
+
};
|
|
318
370
|
var DurablePromiseImpl = class {
|
|
319
371
|
serde;
|
|
320
372
|
constructor(ctx, name, serde$1) {
|
|
@@ -374,19 +426,25 @@ var RunClosuresTracker = class {
|
|
|
374
426
|
}
|
|
375
427
|
}
|
|
376
428
|
};
|
|
377
|
-
var
|
|
429
|
+
var CommandError = class extends Error {
|
|
378
430
|
constructor(cause, commandType, commandIndex) {
|
|
431
|
+
const msg = cause instanceof Error ? cause.message : String(cause);
|
|
432
|
+
super(msg, { cause });
|
|
379
433
|
this.cause = cause;
|
|
380
434
|
this.commandType = commandType;
|
|
381
435
|
this.commandIndex = commandIndex;
|
|
382
436
|
}
|
|
437
|
+
/** True when the error is for a specific command that exists in the journal. */
|
|
438
|
+
get hasCommandIndex() {
|
|
439
|
+
return this.commandIndex !== void 0;
|
|
440
|
+
}
|
|
383
441
|
};
|
|
384
442
|
function completeCommandPromiseUsing(commandType, commandIndex, ...completers) {
|
|
385
443
|
return async (value, prom) => {
|
|
386
444
|
try {
|
|
387
445
|
for (const completer of completers) if (await completer(value, prom)) return;
|
|
388
446
|
} catch (e) {
|
|
389
|
-
throw new
|
|
447
|
+
throw new CommandError(e, commandType, commandIndex);
|
|
390
448
|
}
|
|
391
449
|
throw new Error(`Unexpected variant in async result: ${JSON.stringify(value)}`);
|
|
392
450
|
};
|
|
@@ -453,5 +511,5 @@ const InvocationIdCompleter = (value, prom) => {
|
|
|
453
511
|
};
|
|
454
512
|
|
|
455
513
|
//#endregion
|
|
456
|
-
export { ContextImpl };
|
|
514
|
+
export { CommandError, ContextImpl };
|
|
457
515
|
//# sourceMappingURL=context_impl.js.map
|