@dbos-inc/dbos-sdk 1.29.4-preview → 1.29.7-preview

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 (80) 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/telemetry/logs.d.ts +11 -5
  68. package/dist/src/telemetry/logs.d.ts.map +1 -1
  69. package/dist/src/telemetry/logs.js +8 -11
  70. package/dist/src/telemetry/logs.js.map +1 -1
  71. package/dist/src/testing/testing_runtime.js +3 -3
  72. package/dist/src/testing/testing_runtime.js.map +1 -1
  73. package/dist/src/user_database.d.ts +1 -1
  74. package/dist/src/user_database.d.ts.map +1 -1
  75. package/dist/src/workflow.d.ts +7 -6
  76. package/dist/src/workflow.d.ts.map +1 -1
  77. package/dist/src/workflow.js +10 -187
  78. package/dist/src/workflow.js.map +1 -1
  79. package/dist/tsconfig.build.tsbuildinfo +1 -1
  80. 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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"}