@dbos-inc/dbos-sdk 1.28.14-preview.g65f6845035 → 1.29.7-preview

Sign up to get free protection for your applications and to get access to all the features.
Files changed (86) hide show
  1. package/dbos-config.schema.json +7 -0
  2. package/dist/src/context.d.ts +36 -0
  3. package/dist/src/context.d.ts.map +1 -1
  4. package/dist/src/context.js +104 -1
  5. package/dist/src/context.js.map +1 -1
  6. package/dist/src/data_validation.d.ts.map +1 -1
  7. package/dist/src/data_validation.js +6 -2
  8. package/dist/src/data_validation.js.map +1 -1
  9. package/dist/src/dbos-executor.d.ts +36 -20
  10. package/dist/src/dbos-executor.d.ts.map +1 -1
  11. package/dist/src/dbos-executor.js +289 -22
  12. package/dist/src/dbos-executor.js.map +1 -1
  13. package/dist/src/dbos-runtime/cli.d.ts +2 -2
  14. package/dist/src/dbos-runtime/cli.d.ts.map +1 -1
  15. package/dist/src/dbos-runtime/cli.js +30 -5
  16. package/dist/src/dbos-runtime/cli.js.map +1 -1
  17. package/dist/src/dbos-runtime/config.d.ts.map +1 -1
  18. package/dist/src/dbos-runtime/config.js +3 -2
  19. package/dist/src/dbos-runtime/config.js.map +1 -1
  20. package/dist/src/dbos-runtime/runtime.d.ts +4 -8
  21. package/dist/src/dbos-runtime/runtime.d.ts.map +1 -1
  22. package/dist/src/dbos-runtime/runtime.js +8 -12
  23. package/dist/src/dbos-runtime/runtime.js.map +1 -1
  24. package/dist/src/dbos-runtime/start.d.ts +3 -0
  25. package/dist/src/dbos-runtime/start.d.ts.map +1 -0
  26. package/dist/src/dbos-runtime/start.js +46 -0
  27. package/dist/src/dbos-runtime/start.js.map +1 -0
  28. package/dist/src/dbos.d.ts +117 -0
  29. package/dist/src/dbos.d.ts.map +1 -0
  30. package/dist/src/dbos.js +638 -0
  31. package/dist/src/dbos.js.map +1 -0
  32. package/dist/src/debugger/debug_workflow.d.ts.map +1 -1
  33. package/dist/src/debugger/debug_workflow.js +5 -1
  34. package/dist/src/debugger/debug_workflow.js.map +1 -1
  35. package/dist/src/decorators.d.ts +11 -2
  36. package/dist/src/decorators.d.ts.map +1 -1
  37. package/dist/src/decorators.js +30 -8
  38. package/dist/src/decorators.js.map +1 -1
  39. package/dist/src/error.d.ts +6 -0
  40. package/dist/src/error.d.ts.map +1 -1
  41. package/dist/src/error.js +20 -2
  42. package/dist/src/error.js.map +1 -1
  43. package/dist/src/eventreceiver.d.ts +6 -2
  44. package/dist/src/eventreceiver.d.ts.map +1 -1
  45. package/dist/src/httpServer/handler.d.ts +0 -1
  46. package/dist/src/httpServer/handler.d.ts.map +1 -1
  47. package/dist/src/httpServer/handler.js +5 -13
  48. package/dist/src/httpServer/handler.js.map +1 -1
  49. package/dist/src/httpServer/middleware.d.ts +13 -2
  50. package/dist/src/httpServer/middleware.d.ts.map +1 -1
  51. package/dist/src/httpServer/middleware.js +101 -1
  52. package/dist/src/httpServer/middleware.js.map +1 -1
  53. package/dist/src/httpServer/server.d.ts +7 -5
  54. package/dist/src/httpServer/server.d.ts.map +1 -1
  55. package/dist/src/httpServer/server.js +52 -33
  56. package/dist/src/httpServer/server.js.map +1 -1
  57. package/dist/src/index.d.ts +2 -1
  58. package/dist/src/index.d.ts.map +1 -1
  59. package/dist/src/index.js +3 -3
  60. package/dist/src/index.js.map +1 -1
  61. package/dist/src/procedure.d.ts +1 -0
  62. package/dist/src/procedure.d.ts.map +1 -1
  63. package/dist/src/procedure.js.map +1 -1
  64. package/dist/src/scheduler/scheduler.d.ts.map +1 -1
  65. package/dist/src/scheduler/scheduler.js +3 -1
  66. package/dist/src/scheduler/scheduler.js.map +1 -1
  67. package/dist/src/system_database.d.ts.map +1 -1
  68. package/dist/src/system_database.js.map +1 -1
  69. package/dist/src/telemetry/logs.d.ts +11 -5
  70. package/dist/src/telemetry/logs.d.ts.map +1 -1
  71. package/dist/src/telemetry/logs.js +8 -11
  72. package/dist/src/telemetry/logs.js.map +1 -1
  73. package/dist/src/testing/testing_runtime.d.ts.map +1 -1
  74. package/dist/src/testing/testing_runtime.js +10 -4
  75. package/dist/src/testing/testing_runtime.js.map +1 -1
  76. package/dist/src/user_database.d.ts +1 -1
  77. package/dist/src/user_database.d.ts.map +1 -1
  78. package/dist/src/wfqueue.d.ts.map +1 -1
  79. package/dist/src/wfqueue.js +17 -2
  80. package/dist/src/wfqueue.js.map +1 -1
  81. package/dist/src/workflow.d.ts +7 -6
  82. package/dist/src/workflow.d.ts.map +1 -1
  83. package/dist/src/workflow.js +10 -187
  84. package/dist/src/workflow.js.map +1 -1
  85. package/dist/tsconfig.build.tsbuildinfo +1 -1
  86. package/package.json +5 -1
@@ -0,0 +1,638 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DBOS = void 0;
4
+ const context_1 = require("./context");
5
+ const dbos_executor_1 = require("./dbos-executor");
6
+ const logs_1 = require("./telemetry/logs");
7
+ const error_1 = require("./error");
8
+ const config_1 = require("./dbos-runtime/config");
9
+ const scheduler_1 = require("./scheduler/scheduler");
10
+ const decorators_1 = require("./decorators");
11
+ const utils_1 = require("./utils");
12
+ const server_1 = require("./httpServer/server");
13
+ const middleware_1 = require("./httpServer/middleware");
14
+ const wfqueue_1 = require("./wfqueue");
15
+ const handlerTypes_1 = require("./httpServer/handlerTypes");
16
+ function httpApiDec(verb, url) {
17
+ return function apidec(target, propertyKey, inDescriptor) {
18
+ const { descriptor, registration } = (0, decorators_1.registerAndWrapContextFreeFunction)(target, propertyKey, inDescriptor);
19
+ const handlerRegistration = registration;
20
+ handlerRegistration.apiURL = url;
21
+ handlerRegistration.apiType = verb;
22
+ return descriptor;
23
+ };
24
+ }
25
+ class DBOS {
26
+ ///////
27
+ // Lifecycle
28
+ ///////
29
+ static adminServer = undefined;
30
+ static setConfig(config, runtimeConfig) {
31
+ DBOS.dbosConfig = config;
32
+ DBOS.runtimeConfig = runtimeConfig;
33
+ }
34
+ static async launch(httpApps) {
35
+ // Do nothing is DBOS is already initialized
36
+ if (dbos_executor_1.DBOSExecutor.globalInstance)
37
+ return;
38
+ // Initialize the DBOS executor
39
+ if (!DBOS.dbosConfig) {
40
+ const [dbosConfig, runtimeConfig] = (0, config_1.parseConfigFile)();
41
+ DBOS.dbosConfig = dbosConfig;
42
+ DBOS.runtimeConfig = runtimeConfig;
43
+ }
44
+ dbos_executor_1.DBOSExecutor.globalInstance = new dbos_executor_1.DBOSExecutor(DBOS.dbosConfig);
45
+ const executor = dbos_executor_1.DBOSExecutor.globalInstance;
46
+ await executor.init();
47
+ dbos_executor_1.DBOSExecutor.globalInstance.scheduler = new scheduler_1.DBOSScheduler(dbos_executor_1.DBOSExecutor.globalInstance);
48
+ dbos_executor_1.DBOSExecutor.globalInstance.scheduler.initScheduler();
49
+ dbos_executor_1.DBOSExecutor.globalInstance.wfqEnded = wfqueue_1.wfQueueRunner.dispatchLoop(dbos_executor_1.DBOSExecutor.globalInstance);
50
+ for (const evtRcvr of dbos_executor_1.DBOSExecutor.globalInstance.eventReceivers) {
51
+ await evtRcvr.initialize(dbos_executor_1.DBOSExecutor.globalInstance);
52
+ }
53
+ // Start the DBOS admin server
54
+ const logger = DBOS.logger;
55
+ if (DBOS.runtimeConfig) {
56
+ const adminApp = server_1.DBOSHttpServer.setupAdminApp(executor);
57
+ await server_1.DBOSHttpServer.checkPortAvailabilityIPv4Ipv6(DBOS.runtimeConfig.admin_port, logger);
58
+ DBOS.adminServer = adminApp.listen(DBOS.runtimeConfig.admin_port, () => {
59
+ this.logger.info(`DBOS Admin Server is running at http://localhost:${DBOS.runtimeConfig?.admin_port}`);
60
+ });
61
+ }
62
+ if (httpApps) {
63
+ if (httpApps.koaApp) {
64
+ DBOS.logger.info("Setting up Koa tracing middleware");
65
+ httpApps.koaApp.use(middleware_1.koaTracingMiddleware);
66
+ }
67
+ if (httpApps.expressApp) {
68
+ DBOS.logger.info("Setting up Express tracing middleware");
69
+ httpApps.expressApp.use(middleware_1.expressTracingMiddleware);
70
+ }
71
+ if (httpApps.fastifyApp) {
72
+ // Fastify can use express or middie under the hood, for middlewares.
73
+ // Middie happens to have the same semantic than express.
74
+ // See https://fastify.dev/docs/latest/Reference/Middleware/
75
+ DBOS.logger.info("Setting up Fastify tracing middleware");
76
+ httpApps.fastifyApp.use(middleware_1.expressTracingMiddleware);
77
+ }
78
+ if (httpApps.nestApp) {
79
+ // Nest.kj can use express or fastify under the hood. With fastify, Nest.js uses middie.
80
+ DBOS.logger.info("Setting up NestJS tracing middleware");
81
+ httpApps.nestApp.use(middleware_1.expressTracingMiddleware);
82
+ }
83
+ }
84
+ }
85
+ static async shutdown() {
86
+ // Stop the admin server
87
+ if (DBOS.adminServer) {
88
+ DBOS.adminServer.close();
89
+ DBOS.adminServer = undefined;
90
+ }
91
+ // Stop the executor
92
+ if (dbos_executor_1.DBOSExecutor.globalInstance) {
93
+ await dbos_executor_1.DBOSExecutor.globalInstance.deactivateEventReceivers();
94
+ await dbos_executor_1.DBOSExecutor.globalInstance.destroy();
95
+ dbos_executor_1.DBOSExecutor.globalInstance = undefined;
96
+ }
97
+ }
98
+ static get executor() {
99
+ if (!dbos_executor_1.DBOSExecutor.globalInstance) {
100
+ throw new error_1.DBOSExecutorNotInitializedError();
101
+ }
102
+ return dbos_executor_1.DBOSExecutor.globalInstance;
103
+ }
104
+ //////
105
+ // Globals
106
+ //////
107
+ static globalLogger;
108
+ static dbosConfig;
109
+ static runtimeConfig = undefined;
110
+ static invokeWrappers = new Map();
111
+ //////
112
+ // Context
113
+ //////
114
+ static get logger() {
115
+ const ctx = (0, context_1.getCurrentDBOSContext)();
116
+ if (ctx)
117
+ return ctx.logger;
118
+ const executor = DBOS.executor;
119
+ if (executor)
120
+ return executor.logger;
121
+ return new logs_1.GlobalLogger();
122
+ }
123
+ static get span() {
124
+ const ctx = (0, context_1.getCurrentDBOSContext)();
125
+ if (ctx)
126
+ return ctx.span;
127
+ return undefined;
128
+ }
129
+ static get request() {
130
+ return (0, context_1.getCurrentDBOSContext)()?.request;
131
+ }
132
+ static get koaContext() {
133
+ return (0, context_1.getCurrentDBOSContext)()?.koaContext;
134
+ }
135
+ static get workflowID() {
136
+ return (0, context_1.getCurrentDBOSContext)()?.workflowUUID;
137
+ }
138
+ static get authenticatedUser() {
139
+ return (0, context_1.getCurrentDBOSContext)()?.authenticatedUser ?? "";
140
+ }
141
+ static get authenticatedRoles() {
142
+ return (0, context_1.getCurrentDBOSContext)()?.authenticatedRoles ?? [];
143
+ }
144
+ static get assumedRole() {
145
+ return (0, context_1.getCurrentDBOSContext)()?.assumedRole ?? "";
146
+ }
147
+ static isInTransaction() {
148
+ return (0, context_1.getCurrentContextStore)()?.curTxFunctionId !== undefined;
149
+ }
150
+ static isInStep() {
151
+ return (0, context_1.getCurrentContextStore)()?.curStepFunctionId !== undefined;
152
+ }
153
+ static isWithinWorkflow() {
154
+ return (0, context_1.getCurrentContextStore)()?.workflowId !== undefined;
155
+ }
156
+ static isInWorkflow() {
157
+ return DBOS.isWithinWorkflow() && !DBOS.isInTransaction() && !DBOS.isInStep();
158
+ }
159
+ // TODO CTX parent workflow ID
160
+ // sql session (various forms)
161
+ static get sqlClient() {
162
+ if (!DBOS.isInTransaction())
163
+ throw new error_1.DBOSInvalidWorkflowTransitionError();
164
+ const ctx = (0, context_1.assertCurrentDBOSContext)();
165
+ return ctx.client;
166
+ }
167
+ static get pgClient() {
168
+ const client = DBOS.sqlClient;
169
+ // TODO CTX check!
170
+ return client;
171
+ }
172
+ static get knexClient() {
173
+ const client = DBOS.sqlClient;
174
+ // TODO CTX check!
175
+ return client;
176
+ }
177
+ static get prismaClient() {
178
+ const client = DBOS.sqlClient;
179
+ // TODO CTX check!
180
+ return client;
181
+ }
182
+ static get typeORMClient() {
183
+ const client = DBOS.sqlClient;
184
+ // TODO CTX check!
185
+ return client;
186
+ }
187
+ static get drizzleClient() {
188
+ const client = DBOS.sqlClient;
189
+ // TODO CTX check!
190
+ return client;
191
+ }
192
+ static getConfig(key, defaultValue) {
193
+ const ctx = (0, context_1.getCurrentDBOSContext)();
194
+ if (ctx && defaultValue)
195
+ return ctx.getConfig(key, defaultValue);
196
+ if (ctx)
197
+ return ctx.getConfig(key);
198
+ if (DBOS.executor)
199
+ return DBOS.executor.getConfig(key, defaultValue);
200
+ return defaultValue;
201
+ }
202
+ //////
203
+ // Workflow and other operations
204
+ //////
205
+ static getWorkflowStatus(workflowID) {
206
+ return DBOS.executor.getWorkflowStatus(workflowID);
207
+ }
208
+ static retrieveWorkflow(workflowID) {
209
+ return DBOS.executor.retrieveWorkflow(workflowID);
210
+ }
211
+ static async getWorkflows(input) {
212
+ return await DBOS.executor.getWorkflows(input);
213
+ }
214
+ static async getWorkflowQueue(input) {
215
+ return await DBOS.executor.getWorkflowQueue(input);
216
+ }
217
+ static async sleepms(durationMS) {
218
+ if (DBOS.isWithinWorkflow()) {
219
+ if (DBOS.isInTransaction() || DBOS.isInStep()) {
220
+ throw new error_1.DBOSInvalidWorkflowTransitionError();
221
+ }
222
+ return (0, context_1.getCurrentDBOSContext)().sleepms(durationMS);
223
+ }
224
+ await (0, utils_1.sleepms)(durationMS);
225
+ }
226
+ static async sleep(durationSec) {
227
+ return this.sleepms(durationSec * 1000);
228
+ }
229
+ static async withNextWorkflowID(wfid, callback) {
230
+ const pctx = (0, context_1.getCurrentContextStore)();
231
+ if (pctx) {
232
+ const pcwfid = pctx.idAssignedForNextWorkflow;
233
+ try {
234
+ pctx.idAssignedForNextWorkflow = wfid;
235
+ return callback();
236
+ }
237
+ finally {
238
+ pctx.idAssignedForNextWorkflow = pcwfid;
239
+ }
240
+ }
241
+ else {
242
+ return (0, context_1.runWithTopContext)({ idAssignedForNextWorkflow: wfid }, callback);
243
+ }
244
+ }
245
+ static async withTracedContext(callerName, span, request, callback) {
246
+ const pctx = (0, context_1.getCurrentContextStore)();
247
+ if (pctx) {
248
+ pctx.operationCaller = callerName;
249
+ pctx.span = span;
250
+ pctx.request = request;
251
+ return callback();
252
+ }
253
+ else {
254
+ return (0, context_1.runWithTopContext)({ span, request }, callback);
255
+ }
256
+ }
257
+ static async withAuthedContext(authedUser, authedRoles, callback) {
258
+ const pctx = (0, context_1.getCurrentContextStore)();
259
+ if (pctx) {
260
+ pctx.authenticatedUser = authedUser;
261
+ pctx.authenticatedRoles = authedRoles;
262
+ return callback();
263
+ }
264
+ else {
265
+ return (0, context_1.runWithTopContext)({ authenticatedUser: authedUser, authenticatedRoles: authedRoles }, callback);
266
+ }
267
+ }
268
+ // This generic setter helps users calling DBOS operation to pass a name, later used in seeding a parent OTel span for the operation.
269
+ static async withNamedContext(callerName, callback) {
270
+ const pctx = (0, context_1.getCurrentContextStore)();
271
+ if (pctx) {
272
+ pctx.operationCaller = callerName;
273
+ return callback();
274
+ }
275
+ else {
276
+ return (0, context_1.runWithTopContext)({ operationCaller: callerName }, callback);
277
+ }
278
+ }
279
+ static async withWorkflowQueue(wfq, callback) {
280
+ const pctx = (0, context_1.getCurrentContextStore)();
281
+ if (pctx) {
282
+ const pcwfq = pctx.queueAssignedForWorkflows;
283
+ try {
284
+ pctx.queueAssignedForWorkflows = wfq;
285
+ return callback();
286
+ }
287
+ finally {
288
+ pctx.queueAssignedForWorkflows = pcwfq;
289
+ }
290
+ }
291
+ else {
292
+ return (0, context_1.runWithTopContext)({ queueAssignedForWorkflows: wfq }, callback);
293
+ }
294
+ }
295
+ static startWorkflow(target) {
296
+ if (typeof target === 'function') {
297
+ return DBOS.proxyInvokeWF(target, null);
298
+ }
299
+ else {
300
+ return DBOS.proxyInvokeWF(target, target);
301
+ }
302
+ }
303
+ static proxyInvokeWF(object, configuredInstance) {
304
+ const ops = (0, decorators_1.getRegisteredOperations)(object);
305
+ const proxy = {};
306
+ const pctx = (0, context_1.getCurrentContextStore)();
307
+ let wfId = pctx?.idAssignedForNextWorkflow;
308
+ // If this is called from within a workflow, this is a child workflow,
309
+ // For OAOO, we will need a consistent ID formed from the parent WF and call number
310
+ if (DBOS.isWithinWorkflow()) {
311
+ const wfctx = (0, context_1.assertCurrentWorkflowContext)();
312
+ const funcId = wfctx.functionIDGetIncrement();
313
+ wfId = wfId || (wfctx.workflowUUID + "-" + funcId);
314
+ const params = {
315
+ workflowUUID: wfId,
316
+ parentCtx: wfctx,
317
+ configuredInstance,
318
+ queueName: pctx?.queueAssignedForWorkflows
319
+ };
320
+ for (const op of ops) {
321
+ proxy[op.name] = op.workflowConfig
322
+ ? (...args) => dbos_executor_1.DBOSExecutor.globalInstance.internalWorkflow(op.registeredFunction, params, wfctx.workflowUUID, funcId, ...args)
323
+ : undefined;
324
+ }
325
+ return proxy;
326
+ }
327
+ // Else, we setup a parent context that includes all the potential metadata the application could have set in DBOSLocalCtx
328
+ let parentCtx = undefined;
329
+ if (pctx) {
330
+ // If pctx has no span, e.g., has not been setup through `withTracedContext`, set up a parent span for the workflow here.
331
+ let span = pctx.span;
332
+ if (!span) {
333
+ span = DBOS.executor.tracer.startSpan(pctx.operationCaller || "startWorkflow", {
334
+ operationUUID: wfId,
335
+ operationType: pctx.operationType,
336
+ authenticatedUser: pctx.authenticatedUser,
337
+ assumedRole: pctx.assumedRole,
338
+ authenticatedRoles: pctx.authenticatedRoles,
339
+ });
340
+ }
341
+ parentCtx = new context_1.DBOSContextImpl(pctx.operationCaller || "startWorkflow", span, DBOS.logger);
342
+ parentCtx.request = pctx.request || {};
343
+ parentCtx.authenticatedUser = pctx.authenticatedUser || "";
344
+ parentCtx.assumedRole = pctx.assumedRole || "";
345
+ parentCtx.authenticatedRoles = pctx.authenticatedRoles || [];
346
+ parentCtx.workflowUUID = wfId || "";
347
+ }
348
+ const wfParams = {
349
+ workflowUUID: wfId,
350
+ queueName: pctx?.queueAssignedForWorkflows,
351
+ configuredInstance,
352
+ parentCtx,
353
+ };
354
+ for (const op of ops) {
355
+ proxy[op.name] = op.workflowConfig
356
+ ? (...args) => DBOS.executor.workflow(op.registeredFunction, wfParams, ...args)
357
+ : undefined;
358
+ }
359
+ // TODO CTX - should we put helpful errors for any function that may have "compiled" but is not a workflow?
360
+ return proxy;
361
+ }
362
+ static invoke(object) {
363
+ const wfctx = (0, context_1.assertCurrentWorkflowContext)();
364
+ if (typeof object === 'function') {
365
+ const ops = (0, decorators_1.getRegisteredOperations)(object);
366
+ const proxy = {};
367
+ for (const op of ops) {
368
+ proxy[op.name] = op.txnConfig
369
+ ? (...args) => dbos_executor_1.DBOSExecutor.globalInstance.callTransactionFunction(op.registeredFunction, null, wfctx, ...args)
370
+ : op.commConfig
371
+ ? (...args) => dbos_executor_1.DBOSExecutor.globalInstance.callStepFunction(op.registeredFunction, null, wfctx, ...args)
372
+ : op.procConfig
373
+ ? (...args) => wfctx.procedure(op.registeredFunction, ...args)
374
+ : undefined;
375
+ }
376
+ return proxy;
377
+ }
378
+ else {
379
+ const targetInst = object;
380
+ const ops = (0, decorators_1.getRegisteredOperations)(targetInst);
381
+ const proxy = {};
382
+ for (const op of ops) {
383
+ proxy[op.name] = op.txnConfig
384
+ ? (...args) => dbos_executor_1.DBOSExecutor.globalInstance.callTransactionFunction(op.registeredFunction, targetInst, wfctx, ...args)
385
+ : op.commConfig
386
+ ? (...args) => dbos_executor_1.DBOSExecutor.globalInstance.callStepFunction(op.registeredFunction, targetInst, wfctx, ...args)
387
+ : undefined;
388
+ }
389
+ return proxy;
390
+ }
391
+ }
392
+ static async send(destinationID, message, topic) {
393
+ if (DBOS.isWithinWorkflow()) {
394
+ if (!DBOS.isInWorkflow()) {
395
+ throw new error_1.DBOSInvalidWorkflowTransitionError();
396
+ }
397
+ return (0, context_1.getCurrentDBOSContext)().send(destinationID, message, topic);
398
+ }
399
+ return DBOS.executor.send(destinationID, message, topic);
400
+ }
401
+ static async recv(topic, timeoutSeconds) {
402
+ if (DBOS.isWithinWorkflow()) {
403
+ if (!DBOS.isInWorkflow()) {
404
+ throw new error_1.DBOSInvalidWorkflowTransitionError();
405
+ }
406
+ return (0, context_1.getCurrentDBOSContext)().recv(topic, timeoutSeconds);
407
+ }
408
+ throw new error_1.DBOSInvalidWorkflowTransitionError(); // Only workflows can recv
409
+ }
410
+ static async setEvent(key, value) {
411
+ if (DBOS.isWithinWorkflow()) {
412
+ if (!DBOS.isInWorkflow()) {
413
+ throw new error_1.DBOSInvalidWorkflowTransitionError();
414
+ }
415
+ return (0, context_1.getCurrentDBOSContext)().setEvent(key, value);
416
+ }
417
+ throw new error_1.DBOSInvalidWorkflowTransitionError(); // Only workflows can set event
418
+ }
419
+ static async getEvent(workflowID, key, timeoutSeconds) {
420
+ if (DBOS.isWithinWorkflow()) {
421
+ if (!DBOS.isInWorkflow()) {
422
+ throw new error_1.DBOSInvalidWorkflowTransitionError();
423
+ }
424
+ return (0, context_1.getCurrentDBOSContext)().getEvent(workflowID, key, timeoutSeconds);
425
+ }
426
+ return DBOS.executor.getEvent(workflowID, key, timeoutSeconds);
427
+ }
428
+ //////
429
+ // Decorators
430
+ //////
431
+ static scheduled(schedulerConfig) {
432
+ function scheddec(target, propertyKey, inDescriptor) {
433
+ const { descriptor, registration } = (0, decorators_1.registerAndWrapContextFreeFunction)(target, propertyKey, inDescriptor);
434
+ const schedRegistration = registration;
435
+ schedRegistration.schedulerConfig = schedulerConfig;
436
+ return descriptor;
437
+ }
438
+ return scheddec;
439
+ }
440
+ static workflow(config = {}) {
441
+ function decorator(target, propertyKey, inDescriptor) {
442
+ const { descriptor, registration } = (0, decorators_1.registerAndWrapContextFreeFunction)(target, propertyKey, inDescriptor);
443
+ registration.workflowConfig = config;
444
+ const invokeWrapper = async function (...rawArgs) {
445
+ const pctx = (0, context_1.getCurrentContextStore)();
446
+ let inst = undefined;
447
+ if (typeof this === 'function') {
448
+ // This is static
449
+ }
450
+ else {
451
+ inst = this;
452
+ if (!("name" in inst)) {
453
+ throw new error_1.DBOSInvalidWorkflowTransitionError();
454
+ }
455
+ }
456
+ let wfId = pctx?.idAssignedForNextWorkflow;
457
+ // If this is called from within a workflow, this is a child workflow,
458
+ // For OAOO, we will need a consistent ID formed from the parent WF and call number
459
+ if (DBOS.isWithinWorkflow()) {
460
+ const wfctx = (0, context_1.assertCurrentWorkflowContext)();
461
+ const funcId = wfctx.functionIDGetIncrement();
462
+ wfId = wfId || (wfctx.workflowUUID + "-" + funcId);
463
+ const params = {
464
+ workflowUUID: wfId,
465
+ parentCtx: wfctx,
466
+ configuredInstance: inst,
467
+ queueName: pctx?.queueAssignedForWorkflows
468
+ };
469
+ const cwfh = await dbos_executor_1.DBOSExecutor.globalInstance.internalWorkflow(registration.registeredFunction, params, wfctx.workflowUUID, funcId, ...rawArgs);
470
+ return await cwfh.getResult();
471
+ }
472
+ // Else, we setup a parent context that includes all the potential metadata the application could have set in DBOSLocalCtx
473
+ let parentCtx = undefined;
474
+ if (pctx) {
475
+ // If pctx has no span, e.g., has not been setup through `withTracedContext`, set up a parent span for the workflow here.
476
+ let span = pctx.span;
477
+ if (!span) {
478
+ span = DBOS.executor.tracer.startSpan(pctx.operationCaller || "workflowCaller", {
479
+ operationUUID: wfId,
480
+ operationType: pctx.operationType,
481
+ authenticatedUser: pctx.authenticatedUser,
482
+ assumedRole: pctx.assumedRole,
483
+ authenticatedRoles: pctx.authenticatedRoles,
484
+ });
485
+ }
486
+ parentCtx = new context_1.DBOSContextImpl(pctx.operationCaller || "workflowCaller", span, DBOS.logger);
487
+ parentCtx.request = pctx.request || {};
488
+ parentCtx.authenticatedUser = pctx.authenticatedUser || "";
489
+ parentCtx.assumedRole = pctx.assumedRole || "";
490
+ parentCtx.authenticatedRoles = pctx.authenticatedRoles || [];
491
+ parentCtx.workflowUUID = wfId || "";
492
+ }
493
+ const wfParams = {
494
+ workflowUUID: wfId,
495
+ queueName: pctx?.queueAssignedForWorkflows,
496
+ configuredInstance: inst,
497
+ parentCtx,
498
+ };
499
+ if (pctx) {
500
+ pctx.idAssignedForNextWorkflow = undefined;
501
+ }
502
+ const handle = await DBOS.executor.workflow(registration.registeredFunction, wfParams, ...rawArgs);
503
+ return await handle.getResult();
504
+ };
505
+ descriptor.value = invokeWrapper;
506
+ registration.wrappedFunction = invokeWrapper;
507
+ Object.defineProperty(invokeWrapper, "name", {
508
+ value: registration.name,
509
+ });
510
+ (0, decorators_1.registerFunctionWrapper)(invokeWrapper, registration);
511
+ // TODO CTX this should not be in here already, or if it is we need to do something different...
512
+ DBOS.invokeWrappers.set(invokeWrapper, registration.registeredFunction);
513
+ return descriptor;
514
+ }
515
+ return decorator;
516
+ }
517
+ static transaction(config = {}) {
518
+ function decorator(target, propertyKey, inDescriptor) {
519
+ const { descriptor, registration } = (0, decorators_1.registerAndWrapContextFreeFunction)(target, propertyKey, inDescriptor);
520
+ registration.txnConfig = config;
521
+ const invokeWrapper = async function (...rawArgs) {
522
+ let inst = undefined;
523
+ if (typeof this === 'function') {
524
+ // This is static
525
+ }
526
+ else {
527
+ inst = this;
528
+ if (!("name" in inst)) {
529
+ throw new error_1.DBOSInvalidWorkflowTransitionError();
530
+ }
531
+ }
532
+ if (DBOS.isWithinWorkflow()) {
533
+ const wfctx = (0, context_1.assertCurrentWorkflowContext)();
534
+ return await dbos_executor_1.DBOSExecutor.globalInstance.callTransactionFunction(registration.registeredFunction, inst ?? null, wfctx, ...rawArgs);
535
+ }
536
+ const wfParams = {
537
+ configuredInstance: inst
538
+ };
539
+ return await DBOS.executor.transaction(registration.registeredFunction, wfParams, ...rawArgs);
540
+ };
541
+ descriptor.value = invokeWrapper;
542
+ registration.wrappedFunction = invokeWrapper;
543
+ Object.defineProperty(invokeWrapper, "name", {
544
+ value: registration.name,
545
+ });
546
+ return descriptor;
547
+ }
548
+ return decorator;
549
+ }
550
+ static step(config = {}) {
551
+ function decorator(target, propertyKey, inDescriptor) {
552
+ const { descriptor, registration } = (0, decorators_1.registerAndWrapContextFreeFunction)(target, propertyKey, inDescriptor);
553
+ registration.commConfig = config;
554
+ const invokeWrapper = async function (...rawArgs) {
555
+ let inst = undefined;
556
+ if (typeof this === 'function') {
557
+ // This is static
558
+ }
559
+ else {
560
+ inst = this;
561
+ if (!("name" in inst)) {
562
+ throw new error_1.DBOSInvalidWorkflowTransitionError();
563
+ }
564
+ }
565
+ if (DBOS.isWithinWorkflow()) {
566
+ const wfctx = (0, context_1.assertCurrentWorkflowContext)();
567
+ return await dbos_executor_1.DBOSExecutor.globalInstance.callStepFunction(registration.registeredFunction, inst ?? null, wfctx, ...rawArgs);
568
+ }
569
+ const wfParams = {
570
+ configuredInstance: inst
571
+ };
572
+ return await DBOS.executor.external(registration.registeredFunction, wfParams, ...rawArgs);
573
+ };
574
+ descriptor.value = invokeWrapper;
575
+ registration.wrappedFunction = invokeWrapper;
576
+ Object.defineProperty(invokeWrapper, "name", {
577
+ value: registration.name,
578
+ });
579
+ return descriptor;
580
+ }
581
+ return decorator;
582
+ }
583
+ static getApi(url) {
584
+ return httpApiDec(handlerTypes_1.APITypes.GET, url);
585
+ }
586
+ static postApi(url) {
587
+ return httpApiDec(handlerTypes_1.APITypes.POST, url);
588
+ }
589
+ static putApi(url) {
590
+ return httpApiDec(handlerTypes_1.APITypes.PUT, url);
591
+ }
592
+ static patchApi(url) {
593
+ return httpApiDec(handlerTypes_1.APITypes.PATCH, url);
594
+ }
595
+ static deleteApi(url) {
596
+ return httpApiDec(handlerTypes_1.APITypes.DELETE, url);
597
+ }
598
+ static defaultRequiredRole(anyOf) {
599
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
600
+ function clsdec(ctor) {
601
+ const clsreg = (0, decorators_1.getOrCreateClassRegistration)(ctor);
602
+ clsreg.requiredRole = anyOf;
603
+ }
604
+ return clsdec;
605
+ }
606
+ static requiredRole(anyOf) {
607
+ function apidec(target, propertyKey, inDescriptor) {
608
+ const { descriptor, registration } = (0, decorators_1.registerAndWrapContextFreeFunction)(target, propertyKey, inDescriptor);
609
+ registration.requiredRole = anyOf;
610
+ return descriptor;
611
+ }
612
+ return apidec;
613
+ }
614
+ /////
615
+ // Registration, etc
616
+ /////
617
+ static configureInstance(cls, name, ...args) {
618
+ return (0, decorators_1.configureInstance)(cls, name, ...args);
619
+ }
620
+ // Function registration
621
+ static registerAndWrapContextFreeFunction(target, propertyKey, descriptor) {
622
+ return (0, decorators_1.registerAndWrapContextFreeFunction)(target, propertyKey, descriptor);
623
+ }
624
+ static async executeWorkflowById(workflowId, startNewWorkflow = false) {
625
+ if (!dbos_executor_1.DBOSExecutor.globalInstance) {
626
+ throw new error_1.DBOSExecutorNotInitializedError();
627
+ }
628
+ return dbos_executor_1.DBOSExecutor.globalInstance.executeWorkflowUUID(workflowId, startNewWorkflow);
629
+ }
630
+ static async recoverPendingWorkflows(executorIDs = ["local"]) {
631
+ if (!dbos_executor_1.DBOSExecutor.globalInstance) {
632
+ throw new error_1.DBOSExecutorNotInitializedError();
633
+ }
634
+ return dbos_executor_1.DBOSExecutor.globalInstance.recoverPendingWorkflows(executorIDs);
635
+ }
636
+ }
637
+ exports.DBOS = DBOS;
638
+ //# sourceMappingURL=dbos.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dbos.js","sourceRoot":"","sources":["../../src/dbos.ts"],"names":[],"mappings":"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"}