@restatedev/restate-sdk 0.9.2 → 1.0.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 +10 -0
- package/dist/src/connection/buffered_connection.d.ts +1 -2
- package/dist/src/connection/buffered_connection.d.ts.map +1 -1
- package/dist/src/connection/buffered_connection.js.map +1 -1
- package/dist/src/connection/connection.d.ts +1 -0
- package/dist/src/connection/connection.d.ts.map +1 -1
- package/dist/src/connection/http_connection.d.ts +6 -2
- package/dist/src/connection/http_connection.d.ts.map +1 -1
- package/dist/src/connection/http_connection.js +8 -3
- package/dist/src/connection/http_connection.js.map +1 -1
- package/dist/src/connection/lambda_connection.d.ts +3 -1
- package/dist/src/connection/lambda_connection.d.ts.map +1 -1
- package/dist/src/connection/lambda_connection.js +6 -1
- package/dist/src/connection/lambda_connection.js.map +1 -1
- package/dist/src/context.d.ts +149 -44
- package/dist/src/context.d.ts.map +1 -1
- package/dist/src/context.js.map +1 -1
- package/dist/src/context_impl.d.ts +15 -12
- package/dist/src/context_impl.d.ts.map +1 -1
- package/dist/src/context_impl.js +109 -19
- package/dist/src/context_impl.js.map +1 -1
- package/dist/src/endpoint/endpoint_impl.d.ts +5 -6
- package/dist/src/endpoint/endpoint_impl.d.ts.map +1 -1
- package/dist/src/endpoint/endpoint_impl.js +44 -18
- package/dist/src/endpoint/endpoint_impl.js.map +1 -1
- package/dist/src/endpoint/http2_handler.d.ts.map +1 -1
- package/dist/src/endpoint/http2_handler.js +42 -9
- package/dist/src/endpoint/http2_handler.js.map +1 -1
- package/dist/src/endpoint/lambda_handler.d.ts.map +1 -1
- package/dist/src/endpoint/lambda_handler.js +34 -12
- package/dist/src/endpoint/lambda_handler.js.map +1 -1
- package/dist/src/endpoint.d.ts +5 -3
- package/dist/src/endpoint.d.ts.map +1 -1
- package/dist/src/endpoint.js.map +1 -1
- package/dist/src/generated/proto/discovery_pb.d.ts +18 -0
- package/dist/src/generated/proto/discovery_pb.d.ts.map +1 -0
- package/dist/src/generated/proto/discovery_pb.js +40 -0
- package/dist/src/generated/proto/discovery_pb.js.map +1 -0
- package/dist/src/generated/proto/protocol_pb.d.ts +186 -0
- package/dist/src/generated/proto/protocol_pb.d.ts.map +1 -1
- package/dist/src/generated/proto/protocol_pb.js +177 -1
- package/dist/src/generated/proto/protocol_pb.js.map +1 -1
- package/dist/src/generated/version.d.ts +1 -1
- package/dist/src/generated/version.js +1 -1
- package/dist/src/io/decoder.d.ts +0 -1
- package/dist/src/io/decoder.d.ts.map +1 -1
- package/dist/src/io/decoder.js +2 -8
- package/dist/src/io/decoder.js.map +1 -1
- package/dist/src/io/encoder.d.ts.map +1 -1
- package/dist/src/io/encoder.js +1 -2
- package/dist/src/io/encoder.js.map +1 -1
- package/dist/src/journal.d.ts.map +1 -1
- package/dist/src/journal.js +17 -0
- package/dist/src/journal.js.map +1 -1
- package/dist/src/logger.d.ts.map +1 -1
- package/dist/src/logger.js +0 -7
- package/dist/src/logger.js.map +1 -1
- package/dist/src/public_api.d.ts +4 -4
- package/dist/src/public_api.d.ts.map +1 -1
- package/dist/src/public_api.js +3 -26
- package/dist/src/public_api.js.map +1 -1
- package/dist/src/state_machine.d.ts +3 -2
- package/dist/src/state_machine.d.ts.map +1 -1
- package/dist/src/state_machine.js +9 -9
- package/dist/src/state_machine.js.map +1 -1
- package/dist/src/types/components.d.ts +31 -19
- package/dist/src/types/components.d.ts.map +1 -1
- package/dist/src/types/components.js +127 -30
- package/dist/src/types/components.js.map +1 -1
- package/dist/src/types/discovery.d.ts +6 -3
- package/dist/src/types/discovery.d.ts.map +1 -1
- package/dist/src/types/discovery.js +2 -0
- package/dist/src/types/discovery.js.map +1 -1
- package/dist/src/types/protocol.d.ts +13 -4
- package/dist/src/types/protocol.d.ts.map +1 -1
- package/dist/src/types/protocol.js +95 -5
- package/dist/src/types/protocol.js.map +1 -1
- package/dist/src/types/rpc.d.ts +276 -26
- package/dist/src/types/rpc.d.ts.map +1 -1
- package/dist/src/types/rpc.js +385 -5
- package/dist/src/types/rpc.js.map +1 -1
- package/dist/src/types/types.d.ts +2 -4
- package/dist/src/types/types.d.ts.map +1 -1
- package/dist/src/types/types.js +3 -14
- package/dist/src/types/types.js.map +1 -1
- package/dist/src/utils/serde.d.ts +2 -0
- package/dist/src/utils/serde.d.ts.map +1 -1
- package/dist/src/utils/serde.js +28 -4
- package/dist/src/utils/serde.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/dist/src/clients/workflow_client.d.ts +0 -77
- package/dist/src/clients/workflow_client.d.ts.map +0 -1
- package/dist/src/clients/workflow_client.js +0 -172
- package/dist/src/clients/workflow_client.js.map +0 -1
- package/dist/src/workflows/workflow.d.ts +0 -101
- package/dist/src/workflows/workflow.d.ts.map +0 -1
- package/dist/src/workflows/workflow.js +0 -84
- package/dist/src/workflows/workflow.js.map +0 -1
- package/dist/src/workflows/workflow_state_service.d.ts +0 -35
- package/dist/src/workflows/workflow_state_service.d.ts.map +0 -1
- package/dist/src/workflows/workflow_state_service.js +0 -201
- package/dist/src/workflows/workflow_state_service.js.map +0 -1
- package/dist/src/workflows/workflow_wrapper_service.d.ts +0 -10
- package/dist/src/workflows/workflow_wrapper_service.d.ts.map +0 -1
- package/dist/src/workflows/workflow_wrapper_service.js +0 -285
- package/dist/src/workflows/workflow_wrapper_service.js.map +0 -1
|
@@ -1,172 +0,0 @@
|
|
|
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 __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
13
|
-
if (k2 === undefined) k2 = k;
|
|
14
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
15
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
16
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
17
|
-
}
|
|
18
|
-
Object.defineProperty(o, k2, desc);
|
|
19
|
-
}) : (function(o, m, k, k2) {
|
|
20
|
-
if (k2 === undefined) k2 = k;
|
|
21
|
-
o[k2] = m[k];
|
|
22
|
-
}));
|
|
23
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
24
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
25
|
-
}) : function(o, v) {
|
|
26
|
-
o["default"] = v;
|
|
27
|
-
});
|
|
28
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
29
|
-
if (mod && mod.__esModule) return mod;
|
|
30
|
-
var result = {};
|
|
31
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
32
|
-
__setModuleDefault(result, mod);
|
|
33
|
-
return result;
|
|
34
|
-
};
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.connect = void 0;
|
|
37
|
-
const restate = __importStar(require("../public_api"));
|
|
38
|
-
const errors_1 = require("../types/errors");
|
|
39
|
-
/**
|
|
40
|
-
* Creates a typed client to start and interact with workflow executions.
|
|
41
|
-
* The specifiec URI must point to the Restate request endpoint (ingress).
|
|
42
|
-
*
|
|
43
|
-
* This function doesn't immediately verify the connection, it will not fail
|
|
44
|
-
* if Restate is unreachable. Connection failures will only manifest when
|
|
45
|
-
* attempting to submit or connect a specific workflow.
|
|
46
|
-
*/
|
|
47
|
-
function connect(restateUri) {
|
|
48
|
-
return {
|
|
49
|
-
submitWorkflow: async (pathOrApi, workflowId, params) => {
|
|
50
|
-
const path = typeof pathOrApi === "string" ? pathOrApi : pathOrApi.name;
|
|
51
|
-
let result;
|
|
52
|
-
try {
|
|
53
|
-
result = await makeCall(restateUri, path, "submit", workflowId, params);
|
|
54
|
-
}
|
|
55
|
-
catch (err) {
|
|
56
|
-
const error = (0, errors_1.ensureError)(err);
|
|
57
|
-
throw new Error("Cannot start workflow: " + error.message, {
|
|
58
|
-
cause: error,
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
return {
|
|
62
|
-
status: result,
|
|
63
|
-
client: new WorkflowClientImpl(restateUri, path, workflowId),
|
|
64
|
-
};
|
|
65
|
-
},
|
|
66
|
-
async connectToWorkflow(pathOrApi, workflowId) {
|
|
67
|
-
const path = typeof pathOrApi === "string" ? pathOrApi : pathOrApi.name;
|
|
68
|
-
const client = new WorkflowClientImpl(restateUri, path, workflowId);
|
|
69
|
-
const status = await client.status();
|
|
70
|
-
if (status === restate.workflow.LifecycleStatus.NOT_STARTED) {
|
|
71
|
-
throw new Error("No workflow running/finished/failed with ID " + workflowId);
|
|
72
|
-
}
|
|
73
|
-
return {
|
|
74
|
-
status,
|
|
75
|
-
client: new WorkflowClientImpl(restateUri, path, workflowId),
|
|
76
|
-
};
|
|
77
|
-
},
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
exports.connect = connect;
|
|
81
|
-
class WorkflowClientImpl {
|
|
82
|
-
restateUri;
|
|
83
|
-
serviceName;
|
|
84
|
-
wfId;
|
|
85
|
-
constructor(restateUri, serviceName, wfId) {
|
|
86
|
-
this.restateUri = restateUri;
|
|
87
|
-
this.serviceName = serviceName;
|
|
88
|
-
this.wfId = wfId;
|
|
89
|
-
}
|
|
90
|
-
workflowId() {
|
|
91
|
-
return this.wfId;
|
|
92
|
-
}
|
|
93
|
-
status() {
|
|
94
|
-
return this.makeCall("status", {});
|
|
95
|
-
}
|
|
96
|
-
result() {
|
|
97
|
-
return this.makeCall("waitForResult", {});
|
|
98
|
-
}
|
|
99
|
-
workflowInterface() {
|
|
100
|
-
const clientProxy = new Proxy({}, {
|
|
101
|
-
get: (_target, prop) => {
|
|
102
|
-
const method = prop;
|
|
103
|
-
return async (args) => {
|
|
104
|
-
return this.makeCall(method, args);
|
|
105
|
-
};
|
|
106
|
-
},
|
|
107
|
-
});
|
|
108
|
-
return clientProxy;
|
|
109
|
-
}
|
|
110
|
-
async makeCall(method, args) {
|
|
111
|
-
return await makeCall(this.restateUri, this.serviceName, method, this.wfId, args);
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
// ----------------------------------------------------------------------------
|
|
115
|
-
// Utils
|
|
116
|
-
// ----------------------------------------------------------------------------
|
|
117
|
-
async function makeCall(restateUri, serviceName, method, workflowId, params) {
|
|
118
|
-
if (!workflowId || typeof workflowId !== "string") {
|
|
119
|
-
throw new Error("missing workflowId");
|
|
120
|
-
}
|
|
121
|
-
if (params === undefined) {
|
|
122
|
-
params = {};
|
|
123
|
-
}
|
|
124
|
-
if (typeof params !== "object") {
|
|
125
|
-
throw new Error("invalid parameters: must be an object");
|
|
126
|
-
}
|
|
127
|
-
const url = `${restateUri}/${serviceName}/${method}`;
|
|
128
|
-
const data = {
|
|
129
|
-
request: {
|
|
130
|
-
workflowId,
|
|
131
|
-
...params,
|
|
132
|
-
},
|
|
133
|
-
};
|
|
134
|
-
let body;
|
|
135
|
-
try {
|
|
136
|
-
body = JSON.stringify(data);
|
|
137
|
-
}
|
|
138
|
-
catch (err) {
|
|
139
|
-
throw new Error("Cannot encode request: " + err, { cause: err });
|
|
140
|
-
}
|
|
141
|
-
// eslint-disable-next-line no-console
|
|
142
|
-
console.debug(`Making call to Restate at ${url}`);
|
|
143
|
-
const httpResponse = await fetch(url, {
|
|
144
|
-
method: "POST",
|
|
145
|
-
headers: {
|
|
146
|
-
"Content-Type": "application/json",
|
|
147
|
-
},
|
|
148
|
-
body,
|
|
149
|
-
});
|
|
150
|
-
const responseText = await httpResponse.text();
|
|
151
|
-
if (!httpResponse.ok) {
|
|
152
|
-
throw new Error(`Request failed: ${httpResponse.status}\n${responseText}`);
|
|
153
|
-
}
|
|
154
|
-
let response;
|
|
155
|
-
try {
|
|
156
|
-
response = JSON.parse(responseText);
|
|
157
|
-
}
|
|
158
|
-
catch (err) {
|
|
159
|
-
throw new Error("Cannot parse response JSON: " + err, { cause: err });
|
|
160
|
-
}
|
|
161
|
-
if (response.error) {
|
|
162
|
-
throw new Error(response.error);
|
|
163
|
-
}
|
|
164
|
-
if (response.response) {
|
|
165
|
-
return response.response;
|
|
166
|
-
}
|
|
167
|
-
if (Object.keys(response).length === 0) {
|
|
168
|
-
return undefined;
|
|
169
|
-
}
|
|
170
|
-
throw new Error("Unrecognized response object: " + responseText);
|
|
171
|
-
}
|
|
172
|
-
//# sourceMappingURL=workflow_client.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workflow_client.js","sourceRoot":"","sources":["../../../src/clients/workflow_client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
import * as restate from "../public_api";
|
|
2
|
-
/**
|
|
3
|
-
* Creates a new workflow service that will be served under the given path.
|
|
4
|
-
*
|
|
5
|
-
* A workflow must consist of
|
|
6
|
-
* - one run method: `run(ctx: WfContext, params: T) => Promise<R>`
|
|
7
|
-
* - an arbitrary number of interaction methods: `foo(ctx: SharedWfContext, params: X) => Promise<Y>`
|
|
8
|
-
*/
|
|
9
|
-
export declare function workflow<P extends string, R, T, U>(name: P, workflow: Workflow<R, T, U>): WorkflowServices<P, R, T, U>;
|
|
10
|
-
/**
|
|
11
|
-
* The type signature of a workflow.
|
|
12
|
-
* A workflow must consist of
|
|
13
|
-
* - one run method: `run(ctx: WfContext, params: T) => Promise<R>`
|
|
14
|
-
* - an arbitrary number of interaction methods: `foo(ctx: SharedWfContext, params: T) => Promise<R>`
|
|
15
|
-
*/
|
|
16
|
-
export type Workflow<R, T, U> = {
|
|
17
|
-
run: RunMethod<R, T>;
|
|
18
|
-
} & WorkflowMethods<R, T, U>;
|
|
19
|
-
type RunMethod<R, T> = (ctx: WfContext, params: T) => Promise<R>;
|
|
20
|
-
type InteractionMethod<R, T> = (ctx: SharedWfContext, params: T) => Promise<R>;
|
|
21
|
-
type WorkflowMethods<R, T, U> = {
|
|
22
|
-
[K in keyof U]: K extends "run" ? U[K] extends RunMethod<R, T> ? U[K] : "The 'run' methods needs to follow the signature: (ctx: WfContext, params: any) => Promise<any> " : U[K] extends InteractionMethod<any, any> ? U[K] : "Methods other than 'run' are interaction methods and need to follow the signature: (ctx: SharedWfContext, params: any) => Promise<any>";
|
|
23
|
-
};
|
|
24
|
-
/**
|
|
25
|
-
* The workflow service(s) and API.
|
|
26
|
-
*
|
|
27
|
-
* Register at a Restate endpoint (HTTP/2, Lambda, etc.) as follows:
|
|
28
|
-
* ```
|
|
29
|
-
* const myWorkflow = restate.workflows.workflow("org.acme.myworkflow", {
|
|
30
|
-
* // workflow implementation
|
|
31
|
-
* })
|
|
32
|
-
* restate.createServer().bind(myWorkflow)
|
|
33
|
-
* ```
|
|
34
|
-
*
|
|
35
|
-
* The {@link WorkflowServices.api<P>} can be used to create typed clients, both
|
|
36
|
-
* from other Restate-backed serviced (e.g., `ctx.rpc(api).triggerMySignal()`)
|
|
37
|
-
* or from external clients (`clients.connectWorkflows(restateUri).connectToWorkflow(api, id);`).
|
|
38
|
-
*/
|
|
39
|
-
export interface WorkflowServices<P extends string, R, T, U> extends restate.ServiceBundle {
|
|
40
|
-
readonly api: restate.ServiceDefinition<P, WorkflowRestateRpcApi<R, T, U>>;
|
|
41
|
-
}
|
|
42
|
-
export type DurablePromise<T> = restate.CombineablePromise<T> & {
|
|
43
|
-
peek(): Promise<T | null>;
|
|
44
|
-
resolve(value?: T): void;
|
|
45
|
-
reject(errorMsg: string): void;
|
|
46
|
-
};
|
|
47
|
-
/**
|
|
48
|
-
* The context for the workflow's interaction methods, which are all methods
|
|
49
|
-
* other than the 'run()' method.
|
|
50
|
-
*
|
|
51
|
-
* This gives primarily access to state reads and promises.
|
|
52
|
-
*/
|
|
53
|
-
export interface SharedWfContext {
|
|
54
|
-
workflowId: string;
|
|
55
|
-
get<T>(stateName: string): Promise<T | null>;
|
|
56
|
-
promise<T = void>(name: string): DurablePromise<T>;
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* The context for the workflow's 'run()' function.
|
|
60
|
-
*
|
|
61
|
-
* This is a full context as for stateful durable keyed services, plus the
|
|
62
|
-
* workflow-specific bits, like workflowID and durable promises.
|
|
63
|
-
*/
|
|
64
|
-
export interface WfContext extends SharedWfContext, restate.ObjectContext {
|
|
65
|
-
}
|
|
66
|
-
export declare enum LifecycleStatus {
|
|
67
|
-
NOT_STARTED = "NOT_STARTED",
|
|
68
|
-
RUNNING = "RUNNING",
|
|
69
|
-
FINISHED = "FINISHED",
|
|
70
|
-
FAILED = "FAILED"
|
|
71
|
-
}
|
|
72
|
-
export declare enum WorkflowStartResult {
|
|
73
|
-
STARTED = "STARTED",
|
|
74
|
-
ALREADY_STARTED = "ALREADY_STARTED",
|
|
75
|
-
ALREADY_FINISHED = "ALREADY_FINISHED"
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* The type of requests accepted by the workflow service.
|
|
79
|
-
* Must contain the 'workflowId' property.
|
|
80
|
-
*/
|
|
81
|
-
export type WorkflowRequest<T> = T & {
|
|
82
|
-
workflowId: string;
|
|
83
|
-
};
|
|
84
|
-
/**
|
|
85
|
-
* The API signature of the workflow for use with RPC operations from Restate services.
|
|
86
|
-
*/
|
|
87
|
-
export type WorkflowRestateRpcApi<R, T, U> = {
|
|
88
|
-
start: (param: WorkflowRequest<T>) => Promise<WorkflowStartResult>;
|
|
89
|
-
waitForResult: (request: WorkflowRequest<unknown>) => Promise<R>;
|
|
90
|
-
status: (request: WorkflowRequest<unknown>) => Promise<LifecycleStatus>;
|
|
91
|
-
} & {
|
|
92
|
-
[K in keyof Omit<U, "run">]: U[K] extends InteractionMethod<infer R, infer T> ? (request: WorkflowRequest<T>) => Promise<R> : never;
|
|
93
|
-
};
|
|
94
|
-
/**
|
|
95
|
-
* The API signature of the workflow for external clients.
|
|
96
|
-
*/
|
|
97
|
-
export type WorkflowClientApi<U> = {
|
|
98
|
-
[K in keyof Omit<U, "run">]: U[K] extends (ctx: SharedWfContext) => Promise<infer R> ? () => Promise<R> : U[K] extends (ctx: SharedWfContext, params: infer T) => Promise<infer R> ? (request: T) => Promise<R> : never;
|
|
99
|
-
};
|
|
100
|
-
export {};
|
|
101
|
-
//# sourceMappingURL=workflow.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../../src/workflows/workflow.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,84 +0,0 @@
|
|
|
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 __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
13
|
-
if (k2 === undefined) k2 = k;
|
|
14
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
15
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
16
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
17
|
-
}
|
|
18
|
-
Object.defineProperty(o, k2, desc);
|
|
19
|
-
}) : (function(o, m, k, k2) {
|
|
20
|
-
if (k2 === undefined) k2 = k;
|
|
21
|
-
o[k2] = m[k];
|
|
22
|
-
}));
|
|
23
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
24
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
25
|
-
}) : function(o, v) {
|
|
26
|
-
o["default"] = v;
|
|
27
|
-
});
|
|
28
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
29
|
-
if (mod && mod.__esModule) return mod;
|
|
30
|
-
var result = {};
|
|
31
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
32
|
-
__setModuleDefault(result, mod);
|
|
33
|
-
return result;
|
|
34
|
-
};
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.WorkflowStartResult = exports.LifecycleStatus = exports.workflow = void 0;
|
|
37
|
-
const restate = __importStar(require("../public_api"));
|
|
38
|
-
const wws = __importStar(require("./workflow_wrapper_service"));
|
|
39
|
-
const wss = __importStar(require("./workflow_state_service"));
|
|
40
|
-
const STATE_SERVICE_PATH_SUFFIX = "_state";
|
|
41
|
-
// ----------------------------------------------------------------------------
|
|
42
|
-
// workflow definition / registration
|
|
43
|
-
// ----------------------------------------------------------------------------
|
|
44
|
-
/**
|
|
45
|
-
* Creates a new workflow service that will be served under the given path.
|
|
46
|
-
*
|
|
47
|
-
* A workflow must consist of
|
|
48
|
-
* - one run method: `run(ctx: WfContext, params: T) => Promise<R>`
|
|
49
|
-
* - an arbitrary number of interaction methods: `foo(ctx: SharedWfContext, params: X) => Promise<Y>`
|
|
50
|
-
*/
|
|
51
|
-
function workflow(name, workflow) {
|
|
52
|
-
// the state service manages all state and promises for us
|
|
53
|
-
const stateServiceRouter = restate.object({
|
|
54
|
-
name,
|
|
55
|
-
handlers: wss.workflowStateService,
|
|
56
|
-
});
|
|
57
|
-
const stateServiceApi = {
|
|
58
|
-
name: (name + STATE_SERVICE_PATH_SUFFIX),
|
|
59
|
-
};
|
|
60
|
-
// the wrapper service manages life cycle, contexts, delegation to the state service
|
|
61
|
-
const wrapperServiceRouter = wws.createWrapperService(workflow, name, stateServiceApi);
|
|
62
|
-
return {
|
|
63
|
-
api: { name },
|
|
64
|
-
registerServices: (endpoint) => {
|
|
65
|
-
endpoint.bind(stateServiceRouter);
|
|
66
|
-
endpoint.bind(wrapperServiceRouter);
|
|
67
|
-
},
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
exports.workflow = workflow;
|
|
71
|
-
var LifecycleStatus;
|
|
72
|
-
(function (LifecycleStatus) {
|
|
73
|
-
LifecycleStatus["NOT_STARTED"] = "NOT_STARTED";
|
|
74
|
-
LifecycleStatus["RUNNING"] = "RUNNING";
|
|
75
|
-
LifecycleStatus["FINISHED"] = "FINISHED";
|
|
76
|
-
LifecycleStatus["FAILED"] = "FAILED";
|
|
77
|
-
})(LifecycleStatus = exports.LifecycleStatus || (exports.LifecycleStatus = {}));
|
|
78
|
-
var WorkflowStartResult;
|
|
79
|
-
(function (WorkflowStartResult) {
|
|
80
|
-
WorkflowStartResult["STARTED"] = "STARTED";
|
|
81
|
-
WorkflowStartResult["ALREADY_STARTED"] = "ALREADY_STARTED";
|
|
82
|
-
WorkflowStartResult["ALREADY_FINISHED"] = "ALREADY_FINISHED";
|
|
83
|
-
})(WorkflowStartResult = exports.WorkflowStartResult || (exports.WorkflowStartResult = {}));
|
|
84
|
-
//# sourceMappingURL=workflow.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../../src/workflows/workflow.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uDAAyC;AACzC,gEAAkD;AAClD,8DAAgD;AAEhD,MAAM,yBAAyB,GAAG,QAAQ,CAAC;AAE3C,+EAA+E;AAC/E,wDAAwD;AACxD,+EAA+E;AAE/E;;;;;;GAMG;AACH,SAAgB,QAAQ,CACtB,IAAO,EACP,QAA2B;IAE3B,0DAA0D;IAC1D,MAAM,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC;QACxC,IAAI;QACJ,QAAQ,EAAE,GAAG,CAAC,oBAAoB;KACnC,CAAC,CAAC;IACH,MAAM,eAAe,GAAe;QAClC,IAAI,EAAE,CAAC,IAAI,GAAG,yBAAyB,CAAM;KAC9C,CAAC;IAEF,oFAAoF;IACpF,MAAM,oBAAoB,GAAG,GAAG,CAAC,oBAAoB,CACnD,QAAQ,EACR,IAAI,EACJ,eAAe,CAChB,CAAC;IAEF,OAAO;QACL,GAAG,EAAE,EAAE,IAAI,EAGV;QACD,gBAAgB,EAAE,CAAC,QAAiC,EAAE,EAAE;YACtD,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAClC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACtC,CAAC;KACqC,CAAC;AAC3C,CAAC;AA9BD,4BA8BC;AA+ED,IAAY,eAKX;AALD,WAAY,eAAe;IACzB,8CAA2B,CAAA;IAC3B,sCAAmB,CAAA;IACnB,wCAAqB,CAAA;IACrB,oCAAiB,CAAA;AACnB,CAAC,EALW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAK1B;AAED,IAAY,mBAIX;AAJD,WAAY,mBAAmB;IAC7B,0CAAmB,CAAA;IACnB,0DAAmC,CAAA;IACnC,4DAAqC,CAAA;AACvC,CAAC,EAJW,mBAAmB,GAAnB,2BAAmB,KAAnB,2BAAmB,QAI9B"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import * as restate from "../public_api";
|
|
2
|
-
import { LifecycleStatus, WorkflowStartResult } from "./workflow";
|
|
3
|
-
export type ValueOrError<T> = {
|
|
4
|
-
value?: T;
|
|
5
|
-
error?: string;
|
|
6
|
-
};
|
|
7
|
-
export type api<P extends string> = restate.VirtualObjectDefinition<P, restate.VirtualObject<typeof workflowStateService>>;
|
|
8
|
-
export declare const workflowStateService: {
|
|
9
|
-
startWorkflow: (ctx: restate.ObjectContext) => Promise<WorkflowStartResult>;
|
|
10
|
-
finishOrFailWorkflow: <R>(ctx: restate.ObjectContext, result: ValueOrError<R>) => Promise<void>;
|
|
11
|
-
getStatus: (ctx: restate.ObjectContext) => Promise<LifecycleStatus>;
|
|
12
|
-
completePromise: <T>(ctx: restate.ObjectContext, req: {
|
|
13
|
-
promiseName: string;
|
|
14
|
-
completion: ValueOrError<T>;
|
|
15
|
-
}) => Promise<void>;
|
|
16
|
-
peekPromise: <T_1>(ctx: restate.ObjectContext, req: {
|
|
17
|
-
promiseName: string;
|
|
18
|
-
}) => Promise<ValueOrError<T_1> | null>;
|
|
19
|
-
subscribePromise: <T_2>(ctx: restate.ObjectContext, req: {
|
|
20
|
-
promiseName: string;
|
|
21
|
-
awkId: string;
|
|
22
|
-
}) => Promise<ValueOrError<T_2> | null>;
|
|
23
|
-
getResult: <R_1>(ctx: restate.ObjectContext) => Promise<ValueOrError<R_1> | null>;
|
|
24
|
-
subscribeResult: <T_3>(ctx: restate.ObjectContext, awkId: string) => Promise<ValueOrError<T_3> | null>;
|
|
25
|
-
getState: <T_4>(ctx: restate.ObjectContext, stateName: string) => Promise<T_4 | null>;
|
|
26
|
-
setState: <T_5>(ctx: restate.ObjectContext, request: {
|
|
27
|
-
stateName: string;
|
|
28
|
-
value: T_5;
|
|
29
|
-
}) => Promise<void>;
|
|
30
|
-
clearState: (ctx: restate.ObjectContext, stateName: string) => Promise<void>;
|
|
31
|
-
stateKeys: (ctx: restate.ObjectContext) => Promise<Array<string>>;
|
|
32
|
-
clearAllState: (ctx: restate.ObjectContext) => Promise<void>;
|
|
33
|
-
dispose: (ctx: restate.ObjectContext) => Promise<void>;
|
|
34
|
-
};
|
|
35
|
-
//# sourceMappingURL=workflow_state_service.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workflow_state_service.d.ts","sourceRoot":"","sources":["../../../src/workflows/workflow_state_service.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,OAAO,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AASlE,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI;IAC5B,KAAK,CAAC,EAAE,CAAC,CAAC;IACV,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,MAAM,IAAI,OAAO,CAAC,uBAAuB,CACjE,CAAC,EACD,OAAO,CAAC,aAAa,CAAC,OAAO,oBAAoB,CAAC,CACnD,CAAC;AAEF,eAAO,MAAM,oBAAoB;yBAExB,QAAQ,aAAa,KACzB,QAAQ,mBAAmB,CAAC;mCAgBxB,QAAQ,aAAa,8BAEzB,QAAQ,IAAI,CAAC;qBA2BO,QAAQ,aAAa,KAAG,QAAQ,eAAe,CAAC;8BAQhE,QAAQ,aAAa;qBACN,MAAM;;UACzB,QAAQ,IAAI,CAAC;4BAeT,QAAQ,aAAa,OACrB;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE;iCAMvB,QAAQ,aAAa,OACrB;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;0BAWtC,QAAQ,aAAa;gCAMrB,QAAQ,aAAa,SACnB,MAAM;yBAmBR,QAAQ,aAAa,aACf,MAAM;yBAMZ,QAAQ,aAAa;mBACJ,MAAM;;UAC3B,QAAQ,IAAI,CAAC;sBAqBT,QAAQ,aAAa,aACf,MAAM,KAChB,QAAQ,IAAI,CAAC;qBAIO,QAAQ,aAAa,KAAG,QAAQ,MAAM,MAAM,CAAC,CAAC;yBAM1C,QAAQ,aAAa,KAAG,QAAQ,IAAI,CAAC;mBAS3C,QAAQ,aAAa,KAAG,QAAQ,IAAI,CAAC;CAG3D,CAAC"}
|
|
@@ -1,201 +0,0 @@
|
|
|
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 __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
13
|
-
if (k2 === undefined) k2 = k;
|
|
14
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
15
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
16
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
17
|
-
}
|
|
18
|
-
Object.defineProperty(o, k2, desc);
|
|
19
|
-
}) : (function(o, m, k, k2) {
|
|
20
|
-
if (k2 === undefined) k2 = k;
|
|
21
|
-
o[k2] = m[k];
|
|
22
|
-
}));
|
|
23
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
24
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
25
|
-
}) : function(o, v) {
|
|
26
|
-
o["default"] = v;
|
|
27
|
-
});
|
|
28
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
29
|
-
if (mod && mod.__esModule) return mod;
|
|
30
|
-
var result = {};
|
|
31
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
32
|
-
__setModuleDefault(result, mod);
|
|
33
|
-
return result;
|
|
34
|
-
};
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.workflowStateService = void 0;
|
|
37
|
-
const restate = __importStar(require("../public_api"));
|
|
38
|
-
const workflow_1 = require("./workflow");
|
|
39
|
-
const LIFECYCLE_STATUS_STATE_NAME = "status";
|
|
40
|
-
const RESULT_STATE_NAME = "result";
|
|
41
|
-
const RESULT_LISTENERS_NAME = "result_listeners";
|
|
42
|
-
const PROMISE_STATE_PREFIX = "prom_s_";
|
|
43
|
-
const USER_STATE_PREFIX = "state_";
|
|
44
|
-
const PROMISE_AWAKEABLE_PREFIX = "prom_l_";
|
|
45
|
-
exports.workflowStateService = {
|
|
46
|
-
startWorkflow: async (ctx) => {
|
|
47
|
-
const status = (await ctx.get(LIFECYCLE_STATUS_STATE_NAME)) ??
|
|
48
|
-
workflow_1.LifecycleStatus.NOT_STARTED;
|
|
49
|
-
if (status !== workflow_1.LifecycleStatus.NOT_STARTED) {
|
|
50
|
-
return status === workflow_1.LifecycleStatus.RUNNING
|
|
51
|
-
? workflow_1.WorkflowStartResult.ALREADY_STARTED
|
|
52
|
-
: workflow_1.WorkflowStartResult.ALREADY_FINISHED;
|
|
53
|
-
}
|
|
54
|
-
ctx.set(LIFECYCLE_STATUS_STATE_NAME, workflow_1.LifecycleStatus.RUNNING);
|
|
55
|
-
return workflow_1.WorkflowStartResult.STARTED;
|
|
56
|
-
},
|
|
57
|
-
finishOrFailWorkflow: async (ctx, result) => {
|
|
58
|
-
if (result.error === undefined && result.value === undefined) {
|
|
59
|
-
throw new restate.TerminalError("Result is undefined");
|
|
60
|
-
}
|
|
61
|
-
const status = (await ctx.get(LIFECYCLE_STATUS_STATE_NAME)) ??
|
|
62
|
-
workflow_1.LifecycleStatus.NOT_STARTED;
|
|
63
|
-
if (status !== workflow_1.LifecycleStatus.RUNNING) {
|
|
64
|
-
// not sure this can ever happen, but we put this here defensively
|
|
65
|
-
throw new restate.TerminalError("Unexpected state: " + status);
|
|
66
|
-
}
|
|
67
|
-
const newStatus = result.error
|
|
68
|
-
? workflow_1.LifecycleStatus.FAILED
|
|
69
|
-
: workflow_1.LifecycleStatus.FINISHED;
|
|
70
|
-
ctx.set(LIFECYCLE_STATUS_STATE_NAME, newStatus);
|
|
71
|
-
await completePromise(ctx, RESULT_STATE_NAME, RESULT_LISTENERS_NAME, result);
|
|
72
|
-
},
|
|
73
|
-
getStatus: async (ctx) => {
|
|
74
|
-
return ((await ctx.get(LIFECYCLE_STATUS_STATE_NAME)) ??
|
|
75
|
-
workflow_1.LifecycleStatus.NOT_STARTED);
|
|
76
|
-
},
|
|
77
|
-
completePromise: async (ctx, req) => {
|
|
78
|
-
// we don't accept writes after the workflow is done
|
|
79
|
-
if (!(await checkIfRunning(ctx))) {
|
|
80
|
-
return;
|
|
81
|
-
}
|
|
82
|
-
await completePromise(ctx, PROMISE_STATE_PREFIX + req.promiseName, PROMISE_AWAKEABLE_PREFIX + req.promiseName, req.completion);
|
|
83
|
-
},
|
|
84
|
-
peekPromise: async (ctx, req) => {
|
|
85
|
-
return peekPromise(ctx, PROMISE_STATE_PREFIX + req.promiseName);
|
|
86
|
-
},
|
|
87
|
-
subscribePromise: async (ctx, req) => {
|
|
88
|
-
return subscribePromise(ctx, PROMISE_STATE_PREFIX + req.promiseName, PROMISE_AWAKEABLE_PREFIX + req.promiseName, req.awkId);
|
|
89
|
-
},
|
|
90
|
-
getResult: async (ctx) => {
|
|
91
|
-
return peekPromise(ctx, RESULT_STATE_NAME);
|
|
92
|
-
},
|
|
93
|
-
subscribeResult: async (ctx, awkId) => {
|
|
94
|
-
const status = (await ctx.get(LIFECYCLE_STATUS_STATE_NAME)) ??
|
|
95
|
-
workflow_1.LifecycleStatus.NOT_STARTED;
|
|
96
|
-
if (status === workflow_1.LifecycleStatus.NOT_STARTED) {
|
|
97
|
-
throw new restate.TerminalError(`Workflow with id '${ctx.key}' does not exist.`);
|
|
98
|
-
}
|
|
99
|
-
return subscribePromise(ctx, RESULT_STATE_NAME, RESULT_LISTENERS_NAME, awkId);
|
|
100
|
-
},
|
|
101
|
-
getState: async (ctx, stateName) => {
|
|
102
|
-
return ctx.get(USER_STATE_PREFIX + stateName);
|
|
103
|
-
},
|
|
104
|
-
setState: async (ctx, request) => {
|
|
105
|
-
if (!request?.stateName) {
|
|
106
|
-
throw new restate.TerminalError("missing state name");
|
|
107
|
-
}
|
|
108
|
-
if (request.value === undefined || request.value === null) {
|
|
109
|
-
throw new restate.TerminalError("invalid state value: " + request.value);
|
|
110
|
-
}
|
|
111
|
-
// if the workflow isn't running (any more) we don't accept state updates
|
|
112
|
-
// shouldn't be possible anyways (because only workflow method has access to writable state)
|
|
113
|
-
// but we are defensive here against API errors
|
|
114
|
-
if (!(await checkIfRunning(ctx))) {
|
|
115
|
-
return;
|
|
116
|
-
}
|
|
117
|
-
const stateName = USER_STATE_PREFIX + request.stateName;
|
|
118
|
-
ctx.set(stateName, request.value);
|
|
119
|
-
},
|
|
120
|
-
clearState: async (ctx, stateName) => {
|
|
121
|
-
ctx.clear(USER_STATE_PREFIX + stateName);
|
|
122
|
-
},
|
|
123
|
-
stateKeys: async (ctx) => {
|
|
124
|
-
return (await ctx.stateKeys()).filter((name) => name.startsWith(USER_STATE_PREFIX));
|
|
125
|
-
},
|
|
126
|
-
clearAllState: async (ctx) => {
|
|
127
|
-
const stateNames = (await ctx.stateKeys()).filter((name) => name.startsWith(USER_STATE_PREFIX));
|
|
128
|
-
for (const stateName of stateNames) {
|
|
129
|
-
ctx.clear(stateName);
|
|
130
|
-
}
|
|
131
|
-
},
|
|
132
|
-
dispose: async (ctx) => {
|
|
133
|
-
ctx.clearAll();
|
|
134
|
-
},
|
|
135
|
-
};
|
|
136
|
-
// ----------------------------------------------------------------------------
|
|
137
|
-
async function completePromise(ctx, stateName, awakeableStateName, completion) {
|
|
138
|
-
if (completion.value !== undefined && completion.error !== undefined) {
|
|
139
|
-
throw new restate.TerminalError("Completion can only be either with value or with error");
|
|
140
|
-
}
|
|
141
|
-
if (completion.value !== undefined && completion.value === null) {
|
|
142
|
-
throw new restate.TerminalError("promise cannot be completed with null");
|
|
143
|
-
}
|
|
144
|
-
if (completion.error !== undefined && completion.error === null) {
|
|
145
|
-
throw new restate.TerminalError("promise cannot be rejected with null");
|
|
146
|
-
}
|
|
147
|
-
const currVal = await ctx.get(stateName);
|
|
148
|
-
if (currVal !== null) {
|
|
149
|
-
// promise already completed
|
|
150
|
-
return currVal;
|
|
151
|
-
}
|
|
152
|
-
// first completor
|
|
153
|
-
// (a) set state
|
|
154
|
-
ctx.set(stateName, completion);
|
|
155
|
-
// (b) complete awaiting awakeables
|
|
156
|
-
const listeners = (await ctx.get(awakeableStateName)) ?? [];
|
|
157
|
-
listeners.forEach((awkId) => {
|
|
158
|
-
if (completion.error !== undefined) {
|
|
159
|
-
ctx.rejectAwakeable(awkId, completion.error);
|
|
160
|
-
}
|
|
161
|
-
else {
|
|
162
|
-
ctx.resolveAwakeable(awkId, completion.value);
|
|
163
|
-
}
|
|
164
|
-
});
|
|
165
|
-
ctx.clear(awakeableStateName);
|
|
166
|
-
return completion;
|
|
167
|
-
}
|
|
168
|
-
async function subscribePromise(ctx, stateName, awakeableStateName, awakeableId) {
|
|
169
|
-
const currVal = await ctx.get(stateName);
|
|
170
|
-
// case (a), we have a value already
|
|
171
|
-
if (currVal !== null) {
|
|
172
|
-
if (currVal.error !== undefined) {
|
|
173
|
-
ctx.rejectAwakeable(awakeableId, currVal.error);
|
|
174
|
-
}
|
|
175
|
-
else {
|
|
176
|
-
ctx.resolveAwakeable(awakeableId, currVal.value);
|
|
177
|
-
}
|
|
178
|
-
return currVal;
|
|
179
|
-
}
|
|
180
|
-
// case (b), we remember the awk Id and get when we have a value
|
|
181
|
-
// but only if the workflow is still running
|
|
182
|
-
if (!(await checkIfRunning(ctx))) {
|
|
183
|
-
const response = {
|
|
184
|
-
error: "Promised will never resolve because workflow is not running",
|
|
185
|
-
};
|
|
186
|
-
ctx.rejectAwakeable(awakeableId, response.error);
|
|
187
|
-
return response;
|
|
188
|
-
}
|
|
189
|
-
const listeners = (await ctx.get(awakeableStateName)) ?? [];
|
|
190
|
-
listeners.push(awakeableId);
|
|
191
|
-
ctx.set(awakeableStateName, listeners);
|
|
192
|
-
return null;
|
|
193
|
-
}
|
|
194
|
-
async function peekPromise(ctx, stateName) {
|
|
195
|
-
return ctx.get(stateName);
|
|
196
|
-
}
|
|
197
|
-
async function checkIfRunning(ctx) {
|
|
198
|
-
const status = await ctx.get(LIFECYCLE_STATUS_STATE_NAME);
|
|
199
|
-
return status === workflow_1.LifecycleStatus.RUNNING;
|
|
200
|
-
}
|
|
201
|
-
//# sourceMappingURL=workflow_state_service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workflow_state_service.js","sourceRoot":"","sources":["../../../src/workflows/workflow_state_service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import * as restate from "../public_api";
|
|
2
|
-
import * as wf from "./workflow";
|
|
3
|
-
import * as wss from "./workflow_state_service";
|
|
4
|
-
export declare function createWrapperService<P extends string, R, T, M>(workflow: wf.Workflow<R, T, M>, name: P, stateServiceApi: wss.api<P>): restate.ServiceDefinition<P, restate.Service<{
|
|
5
|
-
submit: (ctx: restate.Context, request: wf.WorkflowRequest<T>) => Promise<wf.WorkflowStartResult>;
|
|
6
|
-
run: (ctx: restate.Context, request: wf.WorkflowRequest<T>) => Promise<R>;
|
|
7
|
-
waitForResult: (ctx: restate.Context, request: wf.WorkflowRequest<unknown>) => Promise<R>;
|
|
8
|
-
status: (ctx: restate.Context, request: wf.WorkflowRequest<unknown>) => Promise<wf.LifecycleStatus>;
|
|
9
|
-
}>>;
|
|
10
|
-
//# sourceMappingURL=workflow_wrapper_service.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workflow_wrapper_service.d.ts","sourceRoot":"","sources":["../../../src/workflows/workflow_wrapper_service.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,OAAO,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,KAAK,GAAG,MAAM,0BAA0B,CAAC;AA2LhD,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5D,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAC9B,IAAI,EAAE,CAAC,EACP,eAAe,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;kBAIlB,QAAQ,OAAO,WACX,GAAG,eAAe,CAAC,CAAC,CAAC,KAC7B,QAAQ,GAAG,mBAAmB,CAAC;eAa3B,QAAQ,OAAO,WACX,GAAG,eAAe,CAAC,CAAC,CAAC,KAC7B,QAAQ,CAAC,CAAC;yBA+BN,QAAQ,OAAO,WACX,GAAG,eAAe,CAAC,OAAO,CAAC,KACnC,QAAQ,CAAC,CAAC;kBAWN,QAAQ,OAAO,WACX,GAAG,eAAe,CAAC,OAAO,CAAC,KACnC,QAAQ,GAAG,eAAe,CAAC;IA2CjC"}
|