@restatedev/restate-sdk 0.7.2-worker → 0.8.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/LICENSE +1 -1
- package/README.md +29 -51
- package/dist/clients/workflow_client.d.ts +77 -0
- package/dist/clients/workflow_client.d.ts.map +1 -0
- package/dist/clients/workflow_client.js +172 -0
- package/dist/clients/workflow_client.js.map +1 -0
- package/dist/connection/buffered_connection.js +44 -0
- package/dist/connection/buffered_connection.js.map +1 -0
- package/dist/connection/connection.js +13 -0
- package/dist/connection/connection.js.map +1 -0
- package/dist/connection/embedded_connection.js +59 -0
- package/dist/connection/embedded_connection.js.map +1 -0
- package/dist/connection/http_connection.js +203 -0
- package/dist/connection/http_connection.js.map +1 -0
- package/dist/connection/lambda_connection.js +58 -0
- package/dist/connection/lambda_connection.js.map +1 -0
- package/dist/{restate_context.d.ts → context.d.ts} +239 -170
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +113 -0
- package/dist/context.js.map +1 -0
- package/dist/{restate_context_impl.d.ts → context_impl.d.ts} +26 -30
- package/dist/context_impl.d.ts.map +1 -0
- package/dist/context_impl.js +439 -0
- package/dist/context_impl.js.map +1 -0
- package/dist/embedded/api.d.ts +2 -2
- package/dist/embedded/api.d.ts.map +1 -1
- package/dist/embedded/api.js +35 -0
- package/dist/embedded/api.js.map +1 -0
- package/dist/embedded/handler.d.ts +2 -2
- package/dist/embedded/handler.d.ts.map +1 -1
- package/dist/embedded/handler.js +26 -0
- package/dist/embedded/handler.js.map +1 -0
- package/dist/embedded/http2_remote.js +91 -0
- package/dist/embedded/http2_remote.js.map +1 -0
- package/dist/embedded/invocation.d.ts.map +1 -1
- package/dist/embedded/invocation.js +94 -0
- package/dist/embedded/invocation.js.map +1 -0
- package/dist/endpoint/endpoint_impl.d.ts +35 -0
- package/dist/endpoint/endpoint_impl.d.ts.map +1 -0
- package/dist/endpoint/endpoint_impl.js +405 -0
- package/dist/endpoint/endpoint_impl.js.map +1 -0
- package/dist/endpoint/http2_handler.d.ts +11 -0
- package/dist/endpoint/http2_handler.d.ts.map +1 -0
- package/dist/endpoint/http2_handler.js +119 -0
- package/dist/endpoint/http2_handler.js.map +1 -0
- package/dist/endpoint/lambda_handler.d.ts +15 -0
- package/dist/endpoint/lambda_handler.d.ts.map +1 -0
- package/dist/endpoint/lambda_handler.js +144 -0
- package/dist/endpoint/lambda_handler.js.map +1 -0
- package/dist/endpoint.d.ts +161 -0
- package/dist/endpoint.d.ts.map +1 -0
- package/dist/endpoint.js +22 -0
- package/dist/endpoint.js.map +1 -0
- package/dist/generated/dev/restate/events.js +371 -0
- package/dist/generated/dev/restate/events.js.map +1 -0
- package/dist/generated/dev/restate/ext.js +215 -0
- package/dist/generated/dev/restate/ext.js.map +1 -0
- package/dist/generated/google/protobuf/descriptor.js +6676 -0
- package/dist/generated/google/protobuf/descriptor.js.map +1 -0
- package/dist/generated/google/protobuf/empty.js +107 -0
- package/dist/generated/google/protobuf/empty.js.map +1 -0
- package/dist/generated/google/protobuf/struct.js +754 -0
- package/dist/generated/google/protobuf/struct.js.map +1 -0
- package/dist/generated/proto/discovery.js +364 -0
- package/dist/generated/proto/discovery.js.map +1 -0
- package/dist/generated/proto/dynrpc.js +668 -0
- package/dist/generated/proto/dynrpc.js.map +1 -0
- package/dist/generated/proto/javascript.d.ts +13 -0
- package/dist/generated/proto/javascript.d.ts.map +1 -1
- package/dist/generated/proto/javascript.js +416 -0
- package/dist/generated/proto/javascript.js.map +1 -0
- package/dist/generated/proto/protocol.d.ts +43 -0
- package/dist/generated/proto/protocol.d.ts.map +1 -1
- package/dist/generated/proto/protocol.js +2641 -0
- package/dist/generated/proto/protocol.js.map +1 -0
- package/dist/generated/proto/services.js +1535 -0
- package/dist/generated/proto/services.js.map +1 -0
- package/dist/generated/proto/test.js +321 -0
- package/dist/generated/proto/test.js.map +1 -0
- package/dist/invocation.d.ts +4 -1
- package/dist/invocation.d.ts.map +1 -1
- package/dist/invocation.js +157 -0
- package/dist/invocation.js.map +1 -0
- package/dist/io/decoder.d.ts +1 -0
- package/dist/io/decoder.d.ts.map +1 -1
- package/dist/io/decoder.js +140 -0
- package/dist/io/decoder.js.map +1 -0
- package/dist/io/encoder.d.ts +1 -2
- package/dist/io/encoder.d.ts.map +1 -1
- package/dist/io/encoder.js +68 -0
- package/dist/io/encoder.js.map +1 -0
- package/dist/journal.d.ts +13 -4
- package/dist/journal.d.ts.map +1 -1
- package/dist/journal.js +405 -0
- package/dist/journal.js.map +1 -0
- package/dist/local_state_store.d.ts +5 -3
- package/dist/local_state_store.d.ts.map +1 -1
- package/dist/local_state_store.js +82 -0
- package/dist/local_state_store.js.map +1 -0
- package/dist/logger.d.ts +19 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +90 -0
- package/dist/logger.js.map +1 -0
- package/dist/promise_combinator_tracker.d.ts +29 -0
- package/dist/promise_combinator_tracker.d.ts.map +1 -0
- package/dist/promise_combinator_tracker.js +128 -0
- package/dist/promise_combinator_tracker.js.map +1 -0
- package/dist/public_api.d.ts +5 -5
- package/dist/public_api.d.ts.map +1 -1
- package/dist/public_api.js +60 -0
- package/dist/public_api.js.map +1 -0
- package/dist/state_machine.d.ts +19 -12
- package/dist/state_machine.d.ts.map +1 -1
- package/dist/state_machine.js +437 -0
- package/dist/state_machine.js.map +1 -0
- package/dist/types/errors.d.ts +12 -3
- package/dist/types/errors.d.ts.map +1 -1
- package/dist/types/errors.js +273 -0
- package/dist/types/errors.js.map +1 -0
- package/dist/types/grpc.d.ts +6 -4
- package/dist/types/grpc.d.ts.map +1 -1
- package/dist/types/grpc.js +81 -0
- package/dist/types/grpc.js.map +1 -0
- package/dist/types/protocol.d.ts +9 -5
- package/dist/types/protocol.d.ts.map +1 -1
- package/dist/types/protocol.js +147 -0
- package/dist/types/protocol.js.map +1 -0
- package/dist/types/router.d.ts +8 -8
- package/dist/types/router.d.ts.map +1 -1
- package/dist/types/router.js +36 -0
- package/dist/types/router.js.map +1 -0
- package/dist/types/types.d.ts +1 -0
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/types.js +138 -0
- package/dist/types/types.js.map +1 -0
- package/dist/utils/{assumpsions.d.ts → assumptions.d.ts} +1 -1
- package/dist/utils/{assumpsions.d.ts.map → assumptions.d.ts.map} +1 -1
- package/dist/utils/assumptions.js +101 -0
- package/dist/utils/assumptions.js.map +1 -0
- package/dist/utils/message_logger.d.ts +28 -0
- package/dist/utils/message_logger.d.ts.map +1 -0
- package/dist/utils/message_logger.js +88 -0
- package/dist/utils/message_logger.js.map +1 -0
- package/dist/utils/promises.d.ts +15 -0
- package/dist/utils/promises.d.ts.map +1 -0
- package/dist/utils/promises.js +67 -0
- package/dist/utils/promises.js.map +1 -0
- package/dist/utils/public_utils.js +49 -0
- package/dist/utils/public_utils.js.map +1 -0
- package/dist/utils/rand.d.ts +1 -1
- package/dist/utils/rand.d.ts.map +1 -1
- package/dist/utils/rand.js +114 -0
- package/dist/utils/rand.js.map +1 -0
- package/dist/utils/utils.d.ts +1 -10
- package/dist/utils/utils.d.ts.map +1 -1
- package/dist/utils/utils.js +122 -0
- package/dist/utils/utils.js.map +1 -0
- package/dist/workflows/workflow.d.ts +101 -0
- package/dist/workflows/workflow.d.ts.map +1 -0
- package/dist/workflows/workflow.js +80 -0
- package/dist/workflows/workflow.js.map +1 -0
- package/dist/workflows/workflow_state_service.d.ts +35 -0
- package/dist/workflows/workflow_state_service.d.ts.map +1 -0
- package/dist/workflows/workflow_state_service.js +201 -0
- package/dist/workflows/workflow_state_service.js.map +1 -0
- package/dist/workflows/workflow_wrapper_service.d.ts +10 -0
- package/dist/workflows/workflow_wrapper_service.d.ts.map +1 -0
- package/dist/workflows/workflow_wrapper_service.js +264 -0
- package/dist/workflows/workflow_wrapper_service.js.map +1 -0
- package/package.json +38 -38
- package/src/clients/workflow_client.ts +290 -0
- package/src/connection/buffered_connection.ts +47 -0
- package/src/connection/connection.ts +34 -0
- package/src/connection/embedded_connection.ts +62 -0
- package/src/connection/http_connection.ts +228 -0
- package/src/connection/lambda_connection.ts +69 -0
- package/src/context.ts +633 -0
- package/src/context_impl.ts +721 -0
- package/src/embedded/api.ts +57 -0
- package/src/embedded/handler.ts +36 -0
- package/src/embedded/http2_remote.ts +103 -0
- package/src/embedded/invocation.ts +126 -0
- package/src/endpoint/endpoint_impl.ts +623 -0
- package/src/endpoint/http2_handler.ts +151 -0
- package/src/endpoint/lambda_handler.ts +178 -0
- package/src/endpoint.ts +187 -0
- package/src/generated/dev/restate/events.ts +430 -0
- package/src/generated/dev/restate/ext.ts +238 -0
- package/src/generated/google/protobuf/descriptor.ts +7889 -0
- package/src/generated/google/protobuf/empty.ts +150 -0
- package/src/generated/google/protobuf/struct.ts +878 -0
- package/src/generated/proto/discovery.ts +423 -0
- package/src/generated/proto/dynrpc.ts +768 -0
- package/src/generated/proto/javascript.ts +488 -0
- package/src/generated/proto/protocol.ts +3091 -0
- package/src/generated/proto/services.ts +1834 -0
- package/src/generated/proto/test.ts +387 -0
- package/src/invocation.ts +212 -0
- package/src/io/decoder.ts +171 -0
- package/src/io/encoder.ts +72 -0
- package/src/journal.ts +537 -0
- package/src/local_state_store.ts +94 -0
- package/src/logger.ts +121 -0
- package/src/promise_combinator_tracker.ts +191 -0
- package/src/public_api.ts +53 -0
- package/src/state_machine.ts +635 -0
- package/src/types/errors.ts +297 -0
- package/src/types/grpc.ts +97 -0
- package/src/types/protocol.ts +201 -0
- package/src/types/router.ts +118 -0
- package/src/types/types.ts +160 -0
- package/src/utils/assumptions.ts +131 -0
- package/src/utils/message_logger.ts +112 -0
- package/src/utils/promises.ts +118 -0
- package/src/utils/public_utils.ts +91 -0
- package/src/utils/rand.ts +142 -0
- package/src/utils/utils.ts +178 -0
- package/src/workflows/workflow.ts +178 -0
- package/src/workflows/workflow_state_service.ts +299 -0
- package/src/workflows/workflow_wrapper_service.ts +314 -0
- package/dist/cloudflare_bundle.js +0 -26133
- package/dist/restate_context.d.ts.map +0 -1
- package/dist/restate_context_impl.d.ts.map +0 -1
- package/dist/server/base_restate_server.d.ts +0 -32
- package/dist/server/base_restate_server.d.ts.map +0 -1
- package/dist/server/restate_lambda_handler.d.ts +0 -104
- package/dist/server/restate_lambda_handler.d.ts.map +0 -1
- package/dist/server/restate_server.d.ts +0 -97
- package/dist/server/restate_server.d.ts.map +0 -1
- package/dist/utils/logger.d.ts +0 -60
- package/dist/utils/logger.d.ts.map +0 -1
|
@@ -0,0 +1,201 @@
|
|
|
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 = restate.keyedRouter({
|
|
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, _workflowId, 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, _workflowId, 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, _workflowId, req) => {
|
|
85
|
+
return peekPromise(ctx, PROMISE_STATE_PREFIX + req.promiseName);
|
|
86
|
+
},
|
|
87
|
+
subscribePromise: async (ctx, _workflowId, 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, workflowId, 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 '${workflowId}' does not exist.`);
|
|
98
|
+
}
|
|
99
|
+
return subscribePromise(ctx, RESULT_STATE_NAME, RESULT_LISTENERS_NAME, awkId);
|
|
100
|
+
},
|
|
101
|
+
getState: async (ctx, _workflowId, stateName) => {
|
|
102
|
+
return ctx.get(USER_STATE_PREFIX + stateName);
|
|
103
|
+
},
|
|
104
|
+
setState: async (ctx, _workflowId, 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, _workflowId, 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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow_state_service.js","sourceRoot":"","sources":["../../src/workflows/workflow_state_service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
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<R, T, M>(workflow: wf.Workflow<R, T, M>, path: string, stateServiceApi: restate.ServiceApi<wss.api>): restate.UnKeyedRouter<{
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow_wrapper_service.d.ts","sourceRoot":"","sources":["../../src/workflows/workflow_wrapper_service.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,OAAO,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,KAAK,GAAG,MAAM,0BAA0B,CAAC;AAkKhD,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAC1C,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAC9B,IAAI,EAAE,MAAM,EACZ,eAAe,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;kBAInC,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;yBA6BN,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;GA8CjC"}
|
|
@@ -0,0 +1,264 @@
|
|
|
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.createWrapperService = void 0;
|
|
37
|
+
const restate = __importStar(require("../public_api"));
|
|
38
|
+
const wf = __importStar(require("./workflow"));
|
|
39
|
+
const DEFAULT_RETENTION_PERIOD = 7 * 24 * 60 * 60 * 1000; // 1 week
|
|
40
|
+
// ----------------------------------------------------------------------------
|
|
41
|
+
// Workflow Context Implementations
|
|
42
|
+
// ----------------------------------------------------------------------------
|
|
43
|
+
class SharedContextImpl {
|
|
44
|
+
ctx;
|
|
45
|
+
wfId;
|
|
46
|
+
stateServiceApi;
|
|
47
|
+
constructor(ctx, wfId, stateServiceApi) {
|
|
48
|
+
this.ctx = ctx;
|
|
49
|
+
this.wfId = wfId;
|
|
50
|
+
this.stateServiceApi = stateServiceApi;
|
|
51
|
+
}
|
|
52
|
+
workflowId() {
|
|
53
|
+
return this.wfId;
|
|
54
|
+
}
|
|
55
|
+
get(stateName) {
|
|
56
|
+
return this.ctx
|
|
57
|
+
.rpc(this.stateServiceApi)
|
|
58
|
+
.getState(this.wfId, stateName);
|
|
59
|
+
}
|
|
60
|
+
promise(name) {
|
|
61
|
+
// Create the awakeable to complete
|
|
62
|
+
const awk = this.ctx.awakeable();
|
|
63
|
+
this.ctx.send(this.stateServiceApi).subscribePromise(this.wfId, {
|
|
64
|
+
promiseName: name,
|
|
65
|
+
awkId: awk.id,
|
|
66
|
+
});
|
|
67
|
+
// Prepare implementation of DurablePromise
|
|
68
|
+
const peek = async () => {
|
|
69
|
+
const result = await this.ctx
|
|
70
|
+
.rpc(this.stateServiceApi)
|
|
71
|
+
.peekPromise(this.wfId, { promiseName: name });
|
|
72
|
+
if (result === null) {
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
if (result.error !== undefined) {
|
|
76
|
+
return Promise.reject(new Error(result.error));
|
|
77
|
+
}
|
|
78
|
+
return Promise.resolve(result.value);
|
|
79
|
+
};
|
|
80
|
+
const resolve = (value) => {
|
|
81
|
+
const currentValue = value === undefined ? null : value;
|
|
82
|
+
this.ctx.send(this.stateServiceApi).completePromise(this.wfId, {
|
|
83
|
+
promiseName: name,
|
|
84
|
+
completion: { value: currentValue },
|
|
85
|
+
});
|
|
86
|
+
};
|
|
87
|
+
const reject = (errorMsg) => {
|
|
88
|
+
this.ctx.send(this.stateServiceApi).completePromise(this.wfId, {
|
|
89
|
+
promiseName: name,
|
|
90
|
+
completion: { error: errorMsg },
|
|
91
|
+
});
|
|
92
|
+
};
|
|
93
|
+
return Object.defineProperties(awk.promise, {
|
|
94
|
+
peek: {
|
|
95
|
+
value: peek.bind(this),
|
|
96
|
+
},
|
|
97
|
+
resolve: {
|
|
98
|
+
value: resolve.bind(this),
|
|
99
|
+
},
|
|
100
|
+
reject: {
|
|
101
|
+
value: reject.bind(this),
|
|
102
|
+
},
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
class ExclusiveContextImpl extends SharedContextImpl {
|
|
107
|
+
id;
|
|
108
|
+
serviceName;
|
|
109
|
+
rand;
|
|
110
|
+
console;
|
|
111
|
+
constructor(ctx, wfId, stateServiceApi) {
|
|
112
|
+
super(ctx, wfId, stateServiceApi);
|
|
113
|
+
this.id = ctx.id;
|
|
114
|
+
this.serviceName = ctx.serviceName;
|
|
115
|
+
this.rand = ctx.rand;
|
|
116
|
+
this.console = ctx.console;
|
|
117
|
+
}
|
|
118
|
+
grpcChannel() {
|
|
119
|
+
return this.ctx.grpcChannel();
|
|
120
|
+
}
|
|
121
|
+
set(stateName, value) {
|
|
122
|
+
if (value === undefined || value === null) {
|
|
123
|
+
throw new restate.TerminalError("Cannot set state to null or undefined");
|
|
124
|
+
}
|
|
125
|
+
this.ctx
|
|
126
|
+
.send(this.stateServiceApi)
|
|
127
|
+
.setState(this.wfId, { stateName, value });
|
|
128
|
+
}
|
|
129
|
+
clear(stateName) {
|
|
130
|
+
this.ctx.send(this.stateServiceApi).clearState(this.wfId, stateName);
|
|
131
|
+
}
|
|
132
|
+
stateKeys() {
|
|
133
|
+
return this.ctx.rpc(this.stateServiceApi).stateKeys(this.wfId);
|
|
134
|
+
}
|
|
135
|
+
clearAll() {
|
|
136
|
+
this.ctx.send(this.stateServiceApi).clearAllState(this.wfId);
|
|
137
|
+
}
|
|
138
|
+
sideEffect(fn, retryPolicy) {
|
|
139
|
+
return this.ctx.sideEffect(fn, retryPolicy);
|
|
140
|
+
}
|
|
141
|
+
awakeable() {
|
|
142
|
+
return this.ctx.awakeable();
|
|
143
|
+
}
|
|
144
|
+
resolveAwakeable(id, payload) {
|
|
145
|
+
this.ctx.resolveAwakeable(id, payload);
|
|
146
|
+
}
|
|
147
|
+
rejectAwakeable(id, reason) {
|
|
148
|
+
this.ctx.rejectAwakeable(id, reason);
|
|
149
|
+
}
|
|
150
|
+
sleep(millis) {
|
|
151
|
+
return this.ctx.sleep(millis);
|
|
152
|
+
}
|
|
153
|
+
rpc(opts) {
|
|
154
|
+
return this.ctx.rpc(opts);
|
|
155
|
+
}
|
|
156
|
+
send(opts) {
|
|
157
|
+
return this.ctx.send(opts);
|
|
158
|
+
}
|
|
159
|
+
sendDelayed(opts, delay) {
|
|
160
|
+
return this.ctx.sendDelayed(opts, delay);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
// ----------------------------------------------------------------------------
|
|
164
|
+
// the service that wraps the workflow methods
|
|
165
|
+
// ----------------------------------------------------------------------------
|
|
166
|
+
function createWrapperService(workflow, path, stateServiceApi) {
|
|
167
|
+
const wrapperService = {
|
|
168
|
+
submit: async (ctx, request) => {
|
|
169
|
+
checkRequestAndWorkflowId(request);
|
|
170
|
+
const started = await ctx
|
|
171
|
+
.rpc(stateServiceApi)
|
|
172
|
+
.startWorkflow(request.workflowId);
|
|
173
|
+
if (started === wf.WorkflowStartResult.STARTED) {
|
|
174
|
+
ctx.send(wrapperServiceApi).run(request);
|
|
175
|
+
}
|
|
176
|
+
return started;
|
|
177
|
+
},
|
|
178
|
+
run: async (ctx, request) => {
|
|
179
|
+
checkRequestAndWorkflowId(request);
|
|
180
|
+
const wfCtx = new ExclusiveContextImpl(ctx, request.workflowId, stateServiceApi);
|
|
181
|
+
try {
|
|
182
|
+
const result = await workflow.run(wfCtx, request);
|
|
183
|
+
const resultValue = result !== undefined ? result : {};
|
|
184
|
+
await ctx
|
|
185
|
+
.rpc(stateServiceApi)
|
|
186
|
+
.finishOrFailWorkflow(request.workflowId, { value: resultValue });
|
|
187
|
+
return result;
|
|
188
|
+
}
|
|
189
|
+
catch (err) {
|
|
190
|
+
const msg = stringifyError(err);
|
|
191
|
+
await ctx
|
|
192
|
+
.rpc(stateServiceApi)
|
|
193
|
+
.finishOrFailWorkflow(request.workflowId, { error: msg });
|
|
194
|
+
throw err;
|
|
195
|
+
}
|
|
196
|
+
finally {
|
|
197
|
+
ctx
|
|
198
|
+
.sendDelayed(stateServiceApi, DEFAULT_RETENTION_PERIOD)
|
|
199
|
+
.dispose(request.workflowId);
|
|
200
|
+
}
|
|
201
|
+
},
|
|
202
|
+
waitForResult: async (ctx, request) => {
|
|
203
|
+
checkRequestAndWorkflowId(request);
|
|
204
|
+
const awakeable = ctx.awakeable();
|
|
205
|
+
await ctx
|
|
206
|
+
.rpc(stateServiceApi)
|
|
207
|
+
.subscribeResult(request.workflowId, awakeable.id);
|
|
208
|
+
return awakeable.promise;
|
|
209
|
+
},
|
|
210
|
+
status: async (ctx, request) => {
|
|
211
|
+
checkRequestAndWorkflowId(request);
|
|
212
|
+
return ctx.rpc(stateServiceApi).getStatus(request.workflowId);
|
|
213
|
+
},
|
|
214
|
+
};
|
|
215
|
+
// add all the interaction methods to the wrapper service
|
|
216
|
+
for (const [route, handler] of Object.entries(workflow)) {
|
|
217
|
+
if (typeof handler !== "function" || route === "run") {
|
|
218
|
+
continue;
|
|
219
|
+
}
|
|
220
|
+
if (handler.length < 1 || handler.length > 2) {
|
|
221
|
+
throw new Error("Workflow function does not conform to correct signature: must have at least one argument (SharedWfContext) and at most a second argument (the request parameter)");
|
|
222
|
+
}
|
|
223
|
+
const wrappingHandler = async (ctx, request) => {
|
|
224
|
+
checkRequestAndWorkflowId(request);
|
|
225
|
+
const wfCtx = new SharedContextImpl(ctx, request.workflowId, stateServiceApi);
|
|
226
|
+
// impl. note: we need the extra cast to 'unknown', because the 'run' method is
|
|
227
|
+
// otherwise incompatible with the cast. we exclude that method in the filter above,
|
|
228
|
+
// but the compiler doesn't recognize that.
|
|
229
|
+
return handler(wfCtx, request);
|
|
230
|
+
};
|
|
231
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
232
|
+
wrapperService[route] = wrappingHandler;
|
|
233
|
+
}
|
|
234
|
+
const wrapperServiceRouter = restate.router(wrapperService);
|
|
235
|
+
const wrapperServiceApi = {
|
|
236
|
+
path,
|
|
237
|
+
};
|
|
238
|
+
return wrapperServiceRouter;
|
|
239
|
+
}
|
|
240
|
+
exports.createWrapperService = createWrapperService;
|
|
241
|
+
function checkRequestAndWorkflowId(request) {
|
|
242
|
+
if (request === undefined) {
|
|
243
|
+
throw new restate.TerminalError("Request parameter is undefined");
|
|
244
|
+
}
|
|
245
|
+
if (request.workflowId === undefined) {
|
|
246
|
+
throw new restate.TerminalError("Request is missing property 'workflowId'");
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
function stringifyError(error) {
|
|
250
|
+
if (typeof error === "string") {
|
|
251
|
+
return error;
|
|
252
|
+
}
|
|
253
|
+
if (error instanceof Error) {
|
|
254
|
+
const e = error;
|
|
255
|
+
return `${e.name}: ${e.message}\nStack: ${e.stack}`;
|
|
256
|
+
}
|
|
257
|
+
try {
|
|
258
|
+
return JSON.stringify(error);
|
|
259
|
+
}
|
|
260
|
+
catch (err) {
|
|
261
|
+
return "(cause not stringify-able)";
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
//# sourceMappingURL=workflow_wrapper_service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow_wrapper_service.js","sourceRoot":"","sources":["../../src/workflows/workflow_wrapper_service.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,51 +1,40 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@restatedev/restate-sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"description": "Typescript SDK for Restate",
|
|
5
|
-
"
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
"author": "Restate Developers",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"email": "code@restate.dev",
|
|
8
|
+
"homepage": "https://github.com/restatedev/sdk-typescript#readme",
|
|
8
9
|
"repository": {
|
|
9
10
|
"type": "git",
|
|
10
11
|
"url": "git+https://github.com/restatedev/sdk-typescript.git"
|
|
11
12
|
},
|
|
12
|
-
"
|
|
13
|
-
"
|
|
14
|
-
"pushRepo": "https://github.com/restatedev/sdk-typescript.git"
|
|
15
|
-
},
|
|
16
|
-
"github": {
|
|
17
|
-
"release": true
|
|
18
|
-
},
|
|
19
|
-
"npm": {
|
|
20
|
-
"publish": false
|
|
21
|
-
}
|
|
22
|
-
},
|
|
23
|
-
"publishConfig": {
|
|
24
|
-
"@restatedev:registry": "https://registry.npmjs.org"
|
|
13
|
+
"bugs": {
|
|
14
|
+
"url": "https://github.com/restatedev/sdk-typescript/issues"
|
|
25
15
|
},
|
|
26
16
|
"type": "commonjs",
|
|
27
|
-
"main": "dist/
|
|
17
|
+
"main": "dist/public_api.js",
|
|
28
18
|
"types": "dist/public_api.d.ts",
|
|
29
|
-
"
|
|
30
|
-
|
|
31
|
-
|
|
19
|
+
"files": [
|
|
20
|
+
"dist",
|
|
21
|
+
"src"
|
|
22
|
+
],
|
|
32
23
|
"scripts": {
|
|
33
24
|
"proto": "npx buf mod update && npx buf generate",
|
|
34
25
|
"build": "tsc --noEmitOnError",
|
|
35
|
-
"build-worker": "tsc --emitDeclarationOnly --noEmitOnError && node build-worker.mjs",
|
|
36
26
|
"test": "jest --silent --maxWorkers=1",
|
|
37
|
-
"lint": "eslint --ignore-path .eslintignore --ext .ts .",
|
|
27
|
+
"lint": "eslint --ignore-path .eslintignore --max-warnings=0 --ext .ts .",
|
|
38
28
|
"format": "prettier --ignore-path .eslintignore --write \"**/*.+(js|ts|json)\"",
|
|
39
|
-
"
|
|
29
|
+
"format-check": "prettier --ignore-path .eslintignore --check \"**/*.+(js|ts|json)\"",
|
|
30
|
+
"verify": "npm run format-check && npm run lint && npm run test && npm run build",
|
|
40
31
|
"release": "release-it",
|
|
41
|
-
"example": "RESTATE_DEBUG_LOGGING=
|
|
42
|
-
"grpcexample": "RESTATE_DEBUG_LOGGING=
|
|
43
|
-
"
|
|
44
|
-
"
|
|
32
|
+
"example": "RESTATE_DEBUG_LOGGING=OFF ts-node-dev --transpile-only ./examples/example.ts",
|
|
33
|
+
"grpcexample": "RESTATE_DEBUG_LOGGING=OFF ts-node-dev --transpile-only ./examples/grpc_example.ts",
|
|
34
|
+
"workflowexample": "RESTATE_DEBUG_LOGGING=OFF ts-node-dev --transpile-only ./examples/workflow_example.ts",
|
|
35
|
+
"handlerexample": "RESTATE_DEBUG_LOGGING=OFF ts-node-dev --transpile-only ./examples/handler_example.ts",
|
|
36
|
+
"expressexample": "RESTATE_DEBUG_LOGGING=OFF ts-node-dev --transpile-only ./examples/embedded_example.ts"
|
|
45
37
|
},
|
|
46
|
-
"files": [
|
|
47
|
-
"dist"
|
|
48
|
-
],
|
|
49
38
|
"dependencies": {
|
|
50
39
|
"protobufjs": "^7.2.2",
|
|
51
40
|
"ts-proto": "^1.140.0"
|
|
@@ -54,7 +43,7 @@
|
|
|
54
43
|
"@bufbuild/buf": "^1.15.0",
|
|
55
44
|
"@types/aws-lambda": "^8.10.115",
|
|
56
45
|
"@types/jest": "^29.4.0",
|
|
57
|
-
"@types/node": "^
|
|
46
|
+
"@types/node": "^20.10.4",
|
|
58
47
|
"@typescript-eslint/eslint-plugin": "^5.53.0",
|
|
59
48
|
"@typescript-eslint/parser": "^5.53.0",
|
|
60
49
|
"eslint": "^8.35.0",
|
|
@@ -63,16 +52,27 @@
|
|
|
63
52
|
"ts-jest": "^29.0.5",
|
|
64
53
|
"ts-node-dev": "^2.0.0",
|
|
65
54
|
"typescript": "^4.9.5",
|
|
66
|
-
"express": "*"
|
|
67
|
-
"esbuild": "^0.20.1",
|
|
68
|
-
"@esbuild-plugins/node-globals-polyfill": "^0.2.3"
|
|
55
|
+
"express": "*"
|
|
69
56
|
},
|
|
70
|
-
"
|
|
71
|
-
"
|
|
57
|
+
"engines": {
|
|
58
|
+
"node": ">= 18"
|
|
72
59
|
},
|
|
73
|
-
"homepage": "https://github.com/restatedev/sdk-typescript#readme",
|
|
74
60
|
"directories": {
|
|
75
61
|
"example": "examples",
|
|
76
62
|
"test": "test"
|
|
63
|
+
},
|
|
64
|
+
"publishConfig": {
|
|
65
|
+
"@restatedev:registry": "https://registry.npmjs.org"
|
|
66
|
+
},
|
|
67
|
+
"release-it": {
|
|
68
|
+
"git": {
|
|
69
|
+
"pushRepo": "https://github.com/restatedev/sdk-typescript.git"
|
|
70
|
+
},
|
|
71
|
+
"github": {
|
|
72
|
+
"release": true
|
|
73
|
+
},
|
|
74
|
+
"npm": {
|
|
75
|
+
"publish": false
|
|
76
|
+
}
|
|
77
77
|
}
|
|
78
78
|
}
|