@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.
Files changed (231) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +29 -51
  3. package/dist/clients/workflow_client.d.ts +77 -0
  4. package/dist/clients/workflow_client.d.ts.map +1 -0
  5. package/dist/clients/workflow_client.js +172 -0
  6. package/dist/clients/workflow_client.js.map +1 -0
  7. package/dist/connection/buffered_connection.js +44 -0
  8. package/dist/connection/buffered_connection.js.map +1 -0
  9. package/dist/connection/connection.js +13 -0
  10. package/dist/connection/connection.js.map +1 -0
  11. package/dist/connection/embedded_connection.js +59 -0
  12. package/dist/connection/embedded_connection.js.map +1 -0
  13. package/dist/connection/http_connection.js +203 -0
  14. package/dist/connection/http_connection.js.map +1 -0
  15. package/dist/connection/lambda_connection.js +58 -0
  16. package/dist/connection/lambda_connection.js.map +1 -0
  17. package/dist/{restate_context.d.ts → context.d.ts} +239 -170
  18. package/dist/context.d.ts.map +1 -0
  19. package/dist/context.js +113 -0
  20. package/dist/context.js.map +1 -0
  21. package/dist/{restate_context_impl.d.ts → context_impl.d.ts} +26 -30
  22. package/dist/context_impl.d.ts.map +1 -0
  23. package/dist/context_impl.js +439 -0
  24. package/dist/context_impl.js.map +1 -0
  25. package/dist/embedded/api.d.ts +2 -2
  26. package/dist/embedded/api.d.ts.map +1 -1
  27. package/dist/embedded/api.js +35 -0
  28. package/dist/embedded/api.js.map +1 -0
  29. package/dist/embedded/handler.d.ts +2 -2
  30. package/dist/embedded/handler.d.ts.map +1 -1
  31. package/dist/embedded/handler.js +26 -0
  32. package/dist/embedded/handler.js.map +1 -0
  33. package/dist/embedded/http2_remote.js +91 -0
  34. package/dist/embedded/http2_remote.js.map +1 -0
  35. package/dist/embedded/invocation.d.ts.map +1 -1
  36. package/dist/embedded/invocation.js +94 -0
  37. package/dist/embedded/invocation.js.map +1 -0
  38. package/dist/endpoint/endpoint_impl.d.ts +35 -0
  39. package/dist/endpoint/endpoint_impl.d.ts.map +1 -0
  40. package/dist/endpoint/endpoint_impl.js +405 -0
  41. package/dist/endpoint/endpoint_impl.js.map +1 -0
  42. package/dist/endpoint/http2_handler.d.ts +11 -0
  43. package/dist/endpoint/http2_handler.d.ts.map +1 -0
  44. package/dist/endpoint/http2_handler.js +119 -0
  45. package/dist/endpoint/http2_handler.js.map +1 -0
  46. package/dist/endpoint/lambda_handler.d.ts +15 -0
  47. package/dist/endpoint/lambda_handler.d.ts.map +1 -0
  48. package/dist/endpoint/lambda_handler.js +144 -0
  49. package/dist/endpoint/lambda_handler.js.map +1 -0
  50. package/dist/endpoint.d.ts +161 -0
  51. package/dist/endpoint.d.ts.map +1 -0
  52. package/dist/endpoint.js +22 -0
  53. package/dist/endpoint.js.map +1 -0
  54. package/dist/generated/dev/restate/events.js +371 -0
  55. package/dist/generated/dev/restate/events.js.map +1 -0
  56. package/dist/generated/dev/restate/ext.js +215 -0
  57. package/dist/generated/dev/restate/ext.js.map +1 -0
  58. package/dist/generated/google/protobuf/descriptor.js +6676 -0
  59. package/dist/generated/google/protobuf/descriptor.js.map +1 -0
  60. package/dist/generated/google/protobuf/empty.js +107 -0
  61. package/dist/generated/google/protobuf/empty.js.map +1 -0
  62. package/dist/generated/google/protobuf/struct.js +754 -0
  63. package/dist/generated/google/protobuf/struct.js.map +1 -0
  64. package/dist/generated/proto/discovery.js +364 -0
  65. package/dist/generated/proto/discovery.js.map +1 -0
  66. package/dist/generated/proto/dynrpc.js +668 -0
  67. package/dist/generated/proto/dynrpc.js.map +1 -0
  68. package/dist/generated/proto/javascript.d.ts +13 -0
  69. package/dist/generated/proto/javascript.d.ts.map +1 -1
  70. package/dist/generated/proto/javascript.js +416 -0
  71. package/dist/generated/proto/javascript.js.map +1 -0
  72. package/dist/generated/proto/protocol.d.ts +43 -0
  73. package/dist/generated/proto/protocol.d.ts.map +1 -1
  74. package/dist/generated/proto/protocol.js +2641 -0
  75. package/dist/generated/proto/protocol.js.map +1 -0
  76. package/dist/generated/proto/services.js +1535 -0
  77. package/dist/generated/proto/services.js.map +1 -0
  78. package/dist/generated/proto/test.js +321 -0
  79. package/dist/generated/proto/test.js.map +1 -0
  80. package/dist/invocation.d.ts +4 -1
  81. package/dist/invocation.d.ts.map +1 -1
  82. package/dist/invocation.js +157 -0
  83. package/dist/invocation.js.map +1 -0
  84. package/dist/io/decoder.d.ts +1 -0
  85. package/dist/io/decoder.d.ts.map +1 -1
  86. package/dist/io/decoder.js +140 -0
  87. package/dist/io/decoder.js.map +1 -0
  88. package/dist/io/encoder.d.ts +1 -2
  89. package/dist/io/encoder.d.ts.map +1 -1
  90. package/dist/io/encoder.js +68 -0
  91. package/dist/io/encoder.js.map +1 -0
  92. package/dist/journal.d.ts +13 -4
  93. package/dist/journal.d.ts.map +1 -1
  94. package/dist/journal.js +405 -0
  95. package/dist/journal.js.map +1 -0
  96. package/dist/local_state_store.d.ts +5 -3
  97. package/dist/local_state_store.d.ts.map +1 -1
  98. package/dist/local_state_store.js +82 -0
  99. package/dist/local_state_store.js.map +1 -0
  100. package/dist/logger.d.ts +19 -0
  101. package/dist/logger.d.ts.map +1 -0
  102. package/dist/logger.js +90 -0
  103. package/dist/logger.js.map +1 -0
  104. package/dist/promise_combinator_tracker.d.ts +29 -0
  105. package/dist/promise_combinator_tracker.d.ts.map +1 -0
  106. package/dist/promise_combinator_tracker.js +128 -0
  107. package/dist/promise_combinator_tracker.js.map +1 -0
  108. package/dist/public_api.d.ts +5 -5
  109. package/dist/public_api.d.ts.map +1 -1
  110. package/dist/public_api.js +60 -0
  111. package/dist/public_api.js.map +1 -0
  112. package/dist/state_machine.d.ts +19 -12
  113. package/dist/state_machine.d.ts.map +1 -1
  114. package/dist/state_machine.js +437 -0
  115. package/dist/state_machine.js.map +1 -0
  116. package/dist/types/errors.d.ts +12 -3
  117. package/dist/types/errors.d.ts.map +1 -1
  118. package/dist/types/errors.js +273 -0
  119. package/dist/types/errors.js.map +1 -0
  120. package/dist/types/grpc.d.ts +6 -4
  121. package/dist/types/grpc.d.ts.map +1 -1
  122. package/dist/types/grpc.js +81 -0
  123. package/dist/types/grpc.js.map +1 -0
  124. package/dist/types/protocol.d.ts +9 -5
  125. package/dist/types/protocol.d.ts.map +1 -1
  126. package/dist/types/protocol.js +147 -0
  127. package/dist/types/protocol.js.map +1 -0
  128. package/dist/types/router.d.ts +8 -8
  129. package/dist/types/router.d.ts.map +1 -1
  130. package/dist/types/router.js +36 -0
  131. package/dist/types/router.js.map +1 -0
  132. package/dist/types/types.d.ts +1 -0
  133. package/dist/types/types.d.ts.map +1 -1
  134. package/dist/types/types.js +138 -0
  135. package/dist/types/types.js.map +1 -0
  136. package/dist/utils/{assumpsions.d.ts → assumptions.d.ts} +1 -1
  137. package/dist/utils/{assumpsions.d.ts.map → assumptions.d.ts.map} +1 -1
  138. package/dist/utils/assumptions.js +101 -0
  139. package/dist/utils/assumptions.js.map +1 -0
  140. package/dist/utils/message_logger.d.ts +28 -0
  141. package/dist/utils/message_logger.d.ts.map +1 -0
  142. package/dist/utils/message_logger.js +88 -0
  143. package/dist/utils/message_logger.js.map +1 -0
  144. package/dist/utils/promises.d.ts +15 -0
  145. package/dist/utils/promises.d.ts.map +1 -0
  146. package/dist/utils/promises.js +67 -0
  147. package/dist/utils/promises.js.map +1 -0
  148. package/dist/utils/public_utils.js +49 -0
  149. package/dist/utils/public_utils.js.map +1 -0
  150. package/dist/utils/rand.d.ts +1 -1
  151. package/dist/utils/rand.d.ts.map +1 -1
  152. package/dist/utils/rand.js +114 -0
  153. package/dist/utils/rand.js.map +1 -0
  154. package/dist/utils/utils.d.ts +1 -10
  155. package/dist/utils/utils.d.ts.map +1 -1
  156. package/dist/utils/utils.js +122 -0
  157. package/dist/utils/utils.js.map +1 -0
  158. package/dist/workflows/workflow.d.ts +101 -0
  159. package/dist/workflows/workflow.d.ts.map +1 -0
  160. package/dist/workflows/workflow.js +80 -0
  161. package/dist/workflows/workflow.js.map +1 -0
  162. package/dist/workflows/workflow_state_service.d.ts +35 -0
  163. package/dist/workflows/workflow_state_service.d.ts.map +1 -0
  164. package/dist/workflows/workflow_state_service.js +201 -0
  165. package/dist/workflows/workflow_state_service.js.map +1 -0
  166. package/dist/workflows/workflow_wrapper_service.d.ts +10 -0
  167. package/dist/workflows/workflow_wrapper_service.d.ts.map +1 -0
  168. package/dist/workflows/workflow_wrapper_service.js +264 -0
  169. package/dist/workflows/workflow_wrapper_service.js.map +1 -0
  170. package/package.json +38 -38
  171. package/src/clients/workflow_client.ts +290 -0
  172. package/src/connection/buffered_connection.ts +47 -0
  173. package/src/connection/connection.ts +34 -0
  174. package/src/connection/embedded_connection.ts +62 -0
  175. package/src/connection/http_connection.ts +228 -0
  176. package/src/connection/lambda_connection.ts +69 -0
  177. package/src/context.ts +633 -0
  178. package/src/context_impl.ts +721 -0
  179. package/src/embedded/api.ts +57 -0
  180. package/src/embedded/handler.ts +36 -0
  181. package/src/embedded/http2_remote.ts +103 -0
  182. package/src/embedded/invocation.ts +126 -0
  183. package/src/endpoint/endpoint_impl.ts +623 -0
  184. package/src/endpoint/http2_handler.ts +151 -0
  185. package/src/endpoint/lambda_handler.ts +178 -0
  186. package/src/endpoint.ts +187 -0
  187. package/src/generated/dev/restate/events.ts +430 -0
  188. package/src/generated/dev/restate/ext.ts +238 -0
  189. package/src/generated/google/protobuf/descriptor.ts +7889 -0
  190. package/src/generated/google/protobuf/empty.ts +150 -0
  191. package/src/generated/google/protobuf/struct.ts +878 -0
  192. package/src/generated/proto/discovery.ts +423 -0
  193. package/src/generated/proto/dynrpc.ts +768 -0
  194. package/src/generated/proto/javascript.ts +488 -0
  195. package/src/generated/proto/protocol.ts +3091 -0
  196. package/src/generated/proto/services.ts +1834 -0
  197. package/src/generated/proto/test.ts +387 -0
  198. package/src/invocation.ts +212 -0
  199. package/src/io/decoder.ts +171 -0
  200. package/src/io/encoder.ts +72 -0
  201. package/src/journal.ts +537 -0
  202. package/src/local_state_store.ts +94 -0
  203. package/src/logger.ts +121 -0
  204. package/src/promise_combinator_tracker.ts +191 -0
  205. package/src/public_api.ts +53 -0
  206. package/src/state_machine.ts +635 -0
  207. package/src/types/errors.ts +297 -0
  208. package/src/types/grpc.ts +97 -0
  209. package/src/types/protocol.ts +201 -0
  210. package/src/types/router.ts +118 -0
  211. package/src/types/types.ts +160 -0
  212. package/src/utils/assumptions.ts +131 -0
  213. package/src/utils/message_logger.ts +112 -0
  214. package/src/utils/promises.ts +118 -0
  215. package/src/utils/public_utils.ts +91 -0
  216. package/src/utils/rand.ts +142 -0
  217. package/src/utils/utils.ts +178 -0
  218. package/src/workflows/workflow.ts +178 -0
  219. package/src/workflows/workflow_state_service.ts +299 -0
  220. package/src/workflows/workflow_wrapper_service.ts +314 -0
  221. package/dist/cloudflare_bundle.js +0 -26133
  222. package/dist/restate_context.d.ts.map +0 -1
  223. package/dist/restate_context_impl.d.ts.map +0 -1
  224. package/dist/server/base_restate_server.d.ts +0 -32
  225. package/dist/server/base_restate_server.d.ts.map +0 -1
  226. package/dist/server/restate_lambda_handler.d.ts +0 -104
  227. package/dist/server/restate_lambda_handler.d.ts.map +0 -1
  228. package/dist/server/restate_server.d.ts +0 -97
  229. package/dist/server/restate_server.d.ts.map +0 -1
  230. package/dist/utils/logger.d.ts +0 -60
  231. 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":";AAAA;;;;;;;;;GASG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uDAAyC;AACzC,+CAAiC;AAGjC,MAAM,wBAAwB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,SAAS;AAEnE,+EAA+E;AAC/E,wDAAwD;AACxD,+EAA+E;AAE/E,MAAM,iBAAiB;IAEA;IACA;IACA;IAHrB,YACqB,GAAoB,EACpB,IAAY,EACZ,eAA4C;QAF5C,QAAG,GAAH,GAAG,CAAiB;QACpB,SAAI,GAAJ,IAAI,CAAQ;QACZ,oBAAe,GAAf,eAAe,CAA6B;IAC9D,CAAC;IAEJ,UAAU;QACR,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,GAAG,CAAI,SAAiB;QACtB,OAAO,IAAI,CAAC,GAAG;aACZ,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC;aACzB,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAsB,CAAC;IACzD,CAAC;IAED,OAAO,CAAW,IAAY;QAC5B,mCAAmC;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAK,CAAC;QACpC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE;YAC9D,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,GAAG,CAAC,EAAE;SACd,CAAC,CAAC;QAEH,2CAA2C;QAE3C,MAAM,IAAI,GAAG,KAAK,IAAuB,EAAE;YACzC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG;iBAC1B,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC;iBACzB,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;YAEjD,IAAI,MAAM,KAAK,IAAI,EAAE;gBACnB,OAAO,IAAI,CAAC;aACb;YACD,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE;gBAC9B,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;aAChD;YACD,OAAO,OAAO,CAAC,OAAO,CAAI,MAAM,CAAC,KAAU,CAAC,CAAC;QAC/C,CAAC,CAAC;QAEF,MAAM,OAAO,GAAG,CAAC,KAAQ,EAAE,EAAE;YAC3B,MAAM,YAAY,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;YAExD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE;gBAC7D,WAAW,EAAE,IAAI;gBACjB,UAAU,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE;aACpC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,MAAM,MAAM,GAAG,CAAC,QAAgB,EAAE,EAAE;YAClC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE;gBAC7D,WAAW,EAAE,IAAI;gBACjB,UAAU,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE;aAChC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,OAAO,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE;YAC1C,IAAI,EAAE;gBACJ,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;aACvB;YACD,OAAO,EAAE;gBACP,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;aAC1B;YACD,MAAM,EAAE;gBACN,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;aACzB;SACF,CAAyB,CAAC;IAC7B,CAAC;CACF;AAED,MAAM,oBAAqB,SAAQ,iBAAiB;IAClC,EAAE,CAAS;IACX,WAAW,CAAS;IACpB,IAAI,CAAe;IACnB,OAAO,CAAU;IAEjC,YACE,GAAoB,EACpB,IAAY,EACZ,eAA4C;QAE5C,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC;QAClC,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC;QACjB,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;IAC7B,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;IAChC,CAAC;IAED,GAAG,CAAI,SAAiB,EAAE,KAAQ;QAChC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;YACzC,MAAM,IAAI,OAAO,CAAC,aAAa,CAAC,uCAAuC,CAAC,CAAC;SAC1E;QAED,IAAI,CAAC,GAAG;aACL,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;aAC1B,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,SAAiB;QACrB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACvE,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjE,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/D,CAAC;IAED,UAAU,CACR,EAAoB,EACpB,WAAgD;QAEhD,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;IAC9C,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;IAC9B,CAAC;IACD,gBAAgB,CAAI,EAAU,EAAE,OAAU;QACxC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IACD,eAAe,CAAC,EAAU,EAAE,MAAc;QACxC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,MAAc;QAClB,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,GAAG,CAAI,IAA2B;QAChC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IACD,IAAI,CAAI,IAA2B;QACjC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IACD,WAAW,CACT,IAA2B,EAC3B,KAAa;QAEb,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;CACF;AAED,+EAA+E;AAC/E,4DAA4D;AAC5D,+EAA+E;AAE/E,SAAgB,oBAAoB,CAClC,QAA8B,EAC9B,IAAY,EACZ,eAA4C;IAE5C,MAAM,cAAc,GAAG;QACrB,MAAM,EAAE,KAAK,EACX,GAAoB,EACpB,OAA8B,EACG,EAAE;YACnC,yBAAyB,CAAC,OAAO,CAAC,CAAC;YAEnC,MAAM,OAAO,GAAG,MAAM,GAAG;iBACtB,GAAG,CAAC,eAAe,CAAC;iBACpB,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACrC,IAAI,OAAO,KAAK,EAAE,CAAC,mBAAmB,CAAC,OAAO,EAAE;gBAC9C,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;aAC1C;YACD,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,GAAG,EAAE,KAAK,EACR,GAAoB,EACpB,OAA8B,EAClB,EAAE;YACd,yBAAyB,CAAC,OAAO,CAAC,CAAC;YAEnC,MAAM,KAAK,GAAG,IAAI,oBAAoB,CACpC,GAAG,EACH,OAAO,CAAC,UAAU,EAClB,eAAe,CAChB,CAAC;YACF,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBAClD,MAAM,WAAW,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvD,MAAM,GAAG;qBACN,GAAG,CAAC,eAAe,CAAC;qBACpB,oBAAoB,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;gBACpE,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,GAAG,EAAE;gBACZ,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;gBAChC,MAAM,GAAG;qBACN,GAAG,CAAC,eAAe,CAAC;qBACpB,oBAAoB,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;gBAC5D,MAAM,GAAG,CAAC;aACX;oBAAS;gBACR,GAAG;qBACA,WAAW,CAAC,eAAe,EAAE,wBAAwB,CAAC;qBACtD,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;aAChC;QACH,CAAC;QAED,aAAa,EAAE,KAAK,EAClB,GAAoB,EACpB,OAAoC,EACxB,EAAE;YACd,yBAAyB,CAAC,OAAO,CAAC,CAAC;YAEnC,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,EAAK,CAAC;YACrC,MAAM,GAAG;iBACN,GAAG,CAAC,eAAe,CAAC;iBACpB,eAAe,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;YACrD,OAAO,SAAS,CAAC,OAAO,CAAC;QAC3B,CAAC;QAED,MAAM,EAAE,KAAK,EACX,GAAoB,EACpB,OAAoC,EACP,EAAE;YAC/B,yBAAyB,CAAC,OAAO,CAAC,CAAC;YACnC,OAAO,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAChE,CAAC;KACF,CAAC;IAEF,yDAAyD;IACzD,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QACvD,IAAI,OAAO,OAAO,KAAK,UAAU,IAAI,KAAK,KAAK,KAAK,EAAE;YACpD,SAAS;SACV;QACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5C,MAAM,IAAI,KAAK,CACb,kKAAkK,CACnK,CAAC;SACH;QAED,MAAM,eAAe,GAAG,KAAK,EAC3B,GAAoB,EACpB,OAA+B,EACjB,EAAE;YAChB,yBAAyB,CAAC,OAAO,CAAC,CAAC;YACnC,MAAM,KAAK,GAAG,IAAI,iBAAiB,CACjC,GAAG,EACH,OAAO,CAAC,UAAU,EAClB,eAAe,CAChB,CAAC;YAEF,+EAA+E;YAC/E,oFAAoF;YACpF,2CAA2C;YAC3C,OACE,OACD,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACpB,CAAC,CAAC;QAEF,8DAA8D;QAC7D,cAAsB,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC;KAClD;IAED,MAAM,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAC5D,MAAM,iBAAiB,GAAoD;QACzE,IAAI;KACL,CAAC;IAEF,OAAO,oBAAoB,CAAC;AAC9B,CAAC;AAlHD,oDAkHC;AAED,SAAS,yBAAyB,CAAC,OAAoC;IACrE,IAAI,OAAO,KAAK,SAAS,EAAE;QACzB,MAAM,IAAI,OAAO,CAAC,aAAa,CAAC,gCAAgC,CAAC,CAAC;KACnE;IACD,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE;QACpC,MAAM,IAAI,OAAO,CAAC,aAAa,CAAC,0CAA0C,CAAC,CAAC;KAC7E;AACH,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC7B,OAAO,KAAK,CAAC;KACd;IACD,IAAI,KAAK,YAAY,KAAK,EAAE;QAC1B,MAAM,CAAC,GAAG,KAAc,CAAC;QACzB,OAAO,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,YAAY,CAAC,CAAC,KAAK,EAAE,CAAC;KACrD;IACD,IAAI;QACF,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;KAC9B;IAAC,OAAO,GAAG,EAAE;QACZ,OAAO,4BAA4B,CAAC;KACrC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,51 +1,40 @@
1
1
  {
2
2
  "name": "@restatedev/restate-sdk",
3
- "version": "0.7.2-worker",
3
+ "version": "0.8.0",
4
4
  "description": "Typescript SDK for Restate",
5
- "engines": {
6
- "node": ">= 10"
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
- "release-it": {
13
- "git": {
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/cloudflare_bundle.js",
17
+ "main": "dist/public_api.js",
28
18
  "types": "dist/public_api.d.ts",
29
- "author": "Restate Developers",
30
- "license": "MIT",
31
- "email": "code@restate.dev",
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
- "verify": "npm run format -- --check && npm run test && npm run lint && npm run build",
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=JOURNAL ts-node-dev --respawn --transpile-only ./examples/example.ts",
42
- "grpcexample": "RESTATE_DEBUG_LOGGING=JOURNAL ts-node-dev --respawn --transpile-only ./examples/grpc_example.ts",
43
- "handlerexample": "RESTATE_DEBUG_LOGGING=JOURNAL ts-node-dev --respawn --transpile-only ./examples/handler_example.ts",
44
- "expressexample": "RESTATE_DEBUG_LOGGING=JOURNAL ts-node-dev --respawn --transpile-only ./examples/embedded_example.ts"
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": "^18.14.2",
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
- "bugs": {
71
- "url": "https://github.com/restatedev/sdk-typescript/issues"
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
  }